Narrative web: Some improvements (#931)
* Narrative web: Some improvements - Event type, Date and place in bold - Family events shifted one column on the left - ancestortree css file before narrative-screen to allow modification - Adaptation for all themes Fixes #11393 * Narrative web: forgot a comma during last merge * Allow scrolling if the ancestor tree is too large * Translation of alternate stylesheets name * Crash when using the family map * Translate only the css title, not the file name * Some minor corrections to css files * Narrative web: open layers optimizations * Narrative web: open layers and link in popup * Narrative web: some events missing in popup * Narrative web: Reference date column too large. Allow the place title to use the maximum of width * NarrativeWeb: shift children from one column - adapt the css files to the new table - some inconsistencies between the source and the css * Make the drop down menu button size usable * NarrativeWeb: Incorrect rendering when use of alternate place name * NarWeb: removing the unused image heigth option * Click on image link gives a not found URL. If the image used in home, introduction or contact page is not already associated by a filtered object, we have a 404 error * NarWeb: Index images and thumbnails pages optional * Narweb: Improper Notes subtitle in web pages * Narweb: List index truncated after 999 * Narweb: NarrativeWeb usage enhancements * Narweb: avoid duplicate files in archive. * Narweb: Add an optional news and updates page: When you have a big database and you make intensive updates, it's useful to have a list of the last modified objects. you can select the period to show and how many records to see per object type. * Narweb: forgot to add the module updates.py * Narweb: some minor changes (pylint, img index bug) * Popups don't work with the last openlayers version It only needs to move the scripts at the end of the html body. Use addEventListener instead of onload in the html body statement. * Narweb: some popup problems * Narweb: better score for pylint
This commit is contained in:
parent
5157700da3
commit
fd072528d2
@ -1,14 +1,14 @@
|
|||||||
/*
|
/*
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
Copyright Holder and License
|
Copyright Holder and License
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Basic-Ash Stylesheet
|
Style Name: Basic-Ash Stylesheet
|
||||||
Style Author: Jason M. Simanek (2008)
|
Style Author: Jason M. Simanek (2008)
|
||||||
Note: Adapted from GRAMPS original Modern Style stylesheet
|
Note: Adapted from GRAMPS original Modern Style stylesheet
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||||
|
|
||||||
genealogy program, and a wiki open to all. It is a community project, created,
|
genealogy program, and a wiki open to all. It is a community project, created,
|
||||||
@ -16,7 +16,7 @@ developed and governed by genealogists.
|
|||||||
|
|
||||||
Go to <http://gramps-project.org/> to learn more!
|
Go to <http://gramps-project.org/> to learn more!
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright 2008 Jason M. Simanek
|
Copyright 2008 Jason M. Simanek
|
||||||
Copyright 2009 Stephane Charette
|
Copyright 2009 Stephane Charette
|
||||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||||
@ -36,10 +36,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
You should have received a copy of the GNU General Public License along with
|
||||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Color Palette
|
Color Palette
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
black #000
|
black #000
|
||||||
gray dark #555
|
gray dark #555
|
||||||
@ -47,14 +47,14 @@ gray #999
|
|||||||
gray light #CCC
|
gray light #CCC
|
||||||
gray very light #EEE
|
gray very light #EEE
|
||||||
white #FFF
|
white #FFF
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Characteristic of this style is that it uses the full width of the browser
|
Characteristic of this style is that it uses the full width of the browser
|
||||||
window and that horizontal highlighting bars extend over the full width of
|
window and that horizontal highlighting bars extend over the full width of
|
||||||
the page.
|
the page.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
General Elements
|
General Elements
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -235,7 +235,7 @@ div#alphanav ul li a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive navigation */
|
/* Responsive navigation */
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,11 +282,14 @@ div#nav::after {
|
|||||||
.nav li {display: none;}
|
.nav li {display: none;}
|
||||||
.nav ul {display: none;}
|
.nav ul {display: none;}
|
||||||
|
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
font-size:1.3em;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
|
||||||
float: left;
|
float: left;
|
||||||
|
font-size:2.9em;
|
||||||
|
line-height: 35px;
|
||||||
|
border: 0px;
|
||||||
|
color: #555;
|
||||||
|
background-color: #EEE;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||||
@ -393,18 +396,41 @@ table#SortByCount thead th.ColumnQuantity a:after {
|
|||||||
table.surname td.ColumnName {
|
table.surname td.ColumnName {
|
||||||
background-color: #EEE;
|
background-color: #EEE;
|
||||||
}
|
}
|
||||||
|
table#SortByName tr:hover td.ColumnSurname,
|
||||||
|
table#SortByCount tr:hover td.ColumnQuantity {
|
||||||
|
background-color: #DDE;
|
||||||
|
}
|
||||||
|
table#SortByName tr:hover,
|
||||||
|
table#SortByCount tr:hover,
|
||||||
|
table#SortByName tr:hover td.ColumnQuantity,
|
||||||
|
table#SortByCount tr:hover td.ColumnSurname {
|
||||||
|
background-color: #DDE;
|
||||||
|
}
|
||||||
|
table.surname tr:hover,
|
||||||
|
table.surname tr:hover td.ColumnName {
|
||||||
|
background-color: #DDE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Individuals
|
/* Individuals
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
table.IndividualList td.ColumnSurname {
|
table.IndividualList td.ColumnSurname {
|
||||||
background-color: #EEE;
|
background-color: #EEE;
|
||||||
}
|
}
|
||||||
|
#parents table.infolist tr:hover,
|
||||||
|
table.IndividualList tr:hover,
|
||||||
|
table.IndividualList tr:hover td.ColumnSurname {
|
||||||
|
background-color: #DDE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Places
|
/* Places
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#Places table.infolist td.ColumnName {
|
#Places table.infolist td.ColumnName {
|
||||||
background-color: #EEE;
|
background-color: #EEE;
|
||||||
}
|
}
|
||||||
|
#Places table.infolist tr:hover,
|
||||||
|
#Places table.infolist tr:hover td.ColumnName {
|
||||||
|
background-color: #DDE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Events
|
/* Events
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -420,6 +446,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventList td.ColumnPerson a {
|
#EventList td.ColumnPerson a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
#EventList table.infolist tr:hover,
|
||||||
|
#EventList table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #DDE;
|
||||||
|
}
|
||||||
#EventList td.ColumnPerson span.person:after,
|
#EventList td.ColumnPerson span.person:after,
|
||||||
#EventList td.ColumnPerson span.father:after,
|
#EventList td.ColumnPerson span.father:after,
|
||||||
#EventList td.ColumnPerson span.mother:after,
|
#EventList td.ColumnPerson span.mother:after,
|
||||||
@ -440,10 +470,33 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
table.eventlist tbody tr td:first-child,
|
||||||
|
table.eventlist thead tr th:first-child {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
table.eventlist tbody tr td.ColumnSources {
|
table.eventlist tbody tr td.ColumnSources {
|
||||||
width: 5%;
|
width: 5%;
|
||||||
}
|
}
|
||||||
|
table.eventlist tbody tr td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
table.eventlist td.ColumnEvent,
|
||||||
|
table.eventlist td.ColumnDate,
|
||||||
|
table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnSources {
|
||||||
|
width: 5%;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#WebLinks table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Gallery
|
/* Gallery
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -495,6 +548,10 @@ table.eventlist tbody tr td.ColumnSources {
|
|||||||
div#SourceDetail {
|
div#SourceDetail {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
#Sources table.infolist tr:hover,
|
||||||
|
#Sources table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #DDE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Contact
|
/* Contact
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -564,18 +621,32 @@ div#SourceDetail {
|
|||||||
|
|
||||||
/* Subsection : Families
|
/* Subsection : Families
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||||
|
table.relationships tr:hover {
|
||||||
|
background-color: #DDE;
|
||||||
|
}
|
||||||
|
|
||||||
div#families table.fixed_subtables table.eventlist {
|
div#families table.fixed_subtables table.eventlist {
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
div#families table.fixed_subtables table.eventlist th:first-child {
|
div#families table.fixed_subtables table.eventlist th:first-child {
|
||||||
width: 9em;
|
width: 9em;
|
||||||
}
|
}
|
||||||
div#families table.fixed_subtables table.eventlist th:last-child {
|
div#families table.fixed_subtables table.eventlist th.ColumnDate {
|
||||||
|
width: 12%;
|
||||||
|
}
|
||||||
|
div#families table.fixed_subtables table.eventlist th.ColumnSources {
|
||||||
width: 5em;
|
width: 5em;
|
||||||
}
|
}
|
||||||
div#families table.attrlist td.ColumnType {
|
div#families table.attrlist td.ColumnType {
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
div#families table.fixed_subtables .Child table.eventlist .ColumnName {
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
div#families table.fixed_subtables .Child table.eventlist .ColumnDate {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Subsection : Gallery
|
/* Subsection : Gallery
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -615,7 +686,6 @@ div#families table.attrlist td.ColumnType {
|
|||||||
}
|
}
|
||||||
#gallery div.indexno {
|
#gallery div.indexno {
|
||||||
float: right;
|
float: right;
|
||||||
width: 1.8em;
|
|
||||||
font-size: large;
|
font-size: large;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #CCC;
|
background-color: #CCC;
|
||||||
@ -663,11 +733,15 @@ div.snapshot div.thumbnail {
|
|||||||
h4 + div.grampsstylednote, a.familymap {
|
h4 + div.grampsstylednote, a.familymap {
|
||||||
margin: 1em 15px;
|
margin: 1em 15px;
|
||||||
}
|
}
|
||||||
|
i.NoteType {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
i + div.grampsstylednote p {
|
i + div.grampsstylednote p {
|
||||||
margin: 0 0 0.3em 0;
|
margin: 0 0 0.3em 0;
|
||||||
}
|
}
|
||||||
div.grampsstylednote p {
|
div.grampsstylednote p {
|
||||||
margin-bottom: 0.5em;
|
padding-bottom: 0.6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsection : Family Map
|
/* Subsection : Family Map
|
||||||
@ -676,6 +750,12 @@ a.familymap {
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Subsection : References
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#references ol {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
/* Subsection : Source References
|
/* Subsection : Source References
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#sourcerefs ol li ol {
|
#sourcerefs ol li ol {
|
||||||
@ -736,10 +816,16 @@ a.familymap {
|
|||||||
padding-right: 15px;
|
padding-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updates
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Updates table.list td.date {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Overwritten
|
/* Overwritten
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
body#FamilyMap {
|
body#FamilyMap {
|
||||||
background-color: #EEE ! important;
|
background-color: #EEE !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar Styles
|
/* Calendar Styles
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
# the Free Software Foundation; either version 2 of the License, or
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
@ -139,7 +139,6 @@ h1 {
|
|||||||
h2 {
|
h2 {
|
||||||
font: bold 1em sans-serif;
|
font: bold 1em sans-serif;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
float: center;
|
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
font: bold italic 1.6em serif;
|
font: bold italic 1.6em serif;
|
||||||
@ -349,7 +348,7 @@ div#footer p#copyright img {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive navigation */
|
/* Responsive navigation */
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -359,6 +358,12 @@ div#header::after {
|
|||||||
display: table;
|
display: table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updates
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Updates table.list td.date {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Alphabet Navigation
|
/* Alphabet Navigation
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
div#alphanav {
|
div#alphanav {
|
||||||
@ -432,11 +437,14 @@ div#nav::after {
|
|||||||
.nav li {display: none;}
|
.nav li {display: none;}
|
||||||
.nav ul {display: none;}
|
.nav ul {display: none;}
|
||||||
|
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
font-size:1.3em;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
|
||||||
float: left;
|
float: left;
|
||||||
|
font-size:2.9em;
|
||||||
|
line-height: 60px;
|
||||||
|
border: 0px;
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #00029D;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||||
@ -506,13 +514,12 @@ table.infolist tr td.ColumnRowLabel a {
|
|||||||
}
|
}
|
||||||
table.infolist tr td.ColumnType {
|
table.infolist tr td.ColumnType {
|
||||||
width: 6%;
|
width: 6%;
|
||||||
padding-left: 20px;
|
|
||||||
}
|
}
|
||||||
table.infolist tr td.ColumnAttribute {
|
table.infolist tr td.ColumnAttribute {
|
||||||
width: 10%;
|
width: 10%;
|
||||||
}
|
}
|
||||||
table.infolist tr td.ColumnValue {
|
table.infolist tr td.ColumnValue {
|
||||||
width: 40%;
|
width: 30%;
|
||||||
}
|
}
|
||||||
table.infolist tr td.ColumnName {
|
table.infolist tr td.ColumnName {
|
||||||
width: 30%;
|
width: 30%;
|
||||||
@ -527,7 +534,7 @@ table.infolist tr td.ColumnPartner {
|
|||||||
table.infolist tr td.ColumnParents {
|
table.infolist tr td.ColumnParents {
|
||||||
width: 30%;
|
width: 30%;
|
||||||
}
|
}
|
||||||
table.infolist tbody tr td.ColumnParents span.father,
|
table.infolist tbody tr td.ColumnParents span.father,
|
||||||
table.infolist tbody tr td.ColumnParents span.mother {
|
table.infolist tbody tr td.ColumnParents span.mother {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
@ -595,11 +602,11 @@ div#IndividualDetail table.infolist tbody tr td.ColumnAttribute {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
table.surnamelist thead tr th.ColumnSurname,
|
table.surnamelist thead tr th.ColumnSurname,
|
||||||
#Surnames table.surnamelist tbody tr td.ColumnSurname {
|
#Surnames table.surnamelist tbody tr td.ColumnSurname {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
table#SortByName thead tr th.ColumnSurname,
|
table#SortByName thead tr th.ColumnSurname,
|
||||||
table#SortByCount thead tr th.ColumnQuantity {
|
table#SortByCount thead tr th.ColumnQuantity {
|
||||||
background-color: #00029D;
|
background-color: #00029D;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
@ -610,7 +617,7 @@ table.surnamelist thead tr th.ColumnSurname a {
|
|||||||
table.surnamelist thead tr th.ColumnSurname a:hover {
|
table.surnamelist thead tr th.ColumnSurname a:hover {
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
table#SortByName thead tr th.ColumnSurname a:after,
|
table#SortByName thead tr th.ColumnSurname a:after,
|
||||||
table#SortByCount thead tr th.ColumnQuantity a:after {
|
table#SortByCount thead tr th.ColumnQuantity a:after {
|
||||||
content: " ↓";
|
content: " ↓";
|
||||||
}
|
}
|
||||||
@ -661,11 +668,9 @@ div#Places table.infolist tbody tr td.ColumnLongitude {
|
|||||||
}
|
}
|
||||||
div#PlaceDetail h5 {
|
div#PlaceDetail h5 {
|
||||||
font: bold .7cm serif;
|
font: bold .7cm serif;
|
||||||
float: center;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-bottom: double 4px #13A926;
|
border-bottom: double 4px #13A926;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* EventList and EventDetail
|
/* EventList and EventDetail
|
||||||
------------------------------------------------------ */
|
------------------------------------------------------ */
|
||||||
@ -676,18 +681,40 @@ div#EventList, div#EventDetail {
|
|||||||
table.eventlist tbody tr td.ColumnEvent {
|
table.eventlist tbody tr td.ColumnEvent {
|
||||||
width: 10%;
|
width: 10%;
|
||||||
}
|
}
|
||||||
table.eventlist tbody tr td.ColumnPlace {
|
|
||||||
width: 25%;
|
|
||||||
}
|
|
||||||
table.eventlist tbody tr td.ColumnNotes {
|
|
||||||
width: 20%;
|
|
||||||
}
|
|
||||||
table.eventlist tbody tr td.ColumnSources {
|
table.eventlist tbody tr td.ColumnSources {
|
||||||
|
vertical-align: top;
|
||||||
width: 5%;
|
width: 5%;
|
||||||
}
|
}
|
||||||
table.eventlist tbody tr td.ColumnPerson {
|
table.eventlist tbody tr td.ColumnPerson {
|
||||||
width: 35%;
|
width: 35%;
|
||||||
}
|
}
|
||||||
|
table.eventlist th.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
table.eventlist td.ColumnEvent,
|
||||||
|
table.eventlist td.ColumnDate,
|
||||||
|
table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnSources {
|
||||||
|
width: 5%;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#WebLinks table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#families table.infolist th.ColumnEvent {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
#families table.infolist td.ColumnAttribute {
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
div#IndividualDetail div#families table.eventlist tr td {
|
div#IndividualDetail div#families table.eventlist tr td {
|
||||||
border-bottom: dashed 1px #000;
|
border-bottom: dashed 1px #000;
|
||||||
}
|
}
|
||||||
@ -719,7 +746,7 @@ div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
|||||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||||
display:block;
|
display:block;
|
||||||
}
|
}
|
||||||
@ -751,7 +778,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
|||||||
#EventDetail table.infolist tr td a {
|
#EventDetail table.infolist tr td a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
#EventList table.infolist tr td span.father,
|
#EventList table.infolist tr td span.father,
|
||||||
#EventList table.infolist tr td span.mother,
|
#EventList table.infolist tr td span.mother,
|
||||||
#EventDetail table.infolist tr td span.father,
|
#EventDetail table.infolist tr td span.father,
|
||||||
#EventDetail table.infolist tr td span.mother {
|
#EventDetail table.infolist tr td span.mother {
|
||||||
@ -863,7 +890,6 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
|||||||
}
|
}
|
||||||
#GalleryDetail div#summaryarea table.gallery {
|
#GalleryDetail div#summaryarea table.gallery {
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
margin: 1 .5em 0 0;
|
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-width: 2px 0 1px 0;
|
border-width: 2px 0 1px 0;
|
||||||
border-color: #000;
|
border-color: #000;
|
||||||
@ -949,9 +975,9 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Download
|
/* Download
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
div#Download {
|
div#Download {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
@ -965,7 +991,7 @@ div#Download table.download {
|
|||||||
div#Download table.download tbody tr#Row02 {
|
div#Download table.download tbody tr#Row02 {
|
||||||
border-bottom: solid 2px #000;
|
border-bottom: solid 2px #000;
|
||||||
}
|
}
|
||||||
div#Download table.download tbody tr td {
|
div#Download table.download tbody tr td {
|
||||||
border: solid 1px #000;
|
border: solid 1px #000;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
@ -989,6 +1015,9 @@ div#Download table.download td.ColumnModified {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
#Sources table.infolist tr td.ColumnName {
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
div#SourceDetail {
|
div#SourceDetail {
|
||||||
min-height: 900px
|
min-height: 900px
|
||||||
}
|
}
|
||||||
@ -1097,8 +1126,14 @@ div#events h4 {
|
|||||||
#IndividualDetail div#events table.eventtable {
|
#IndividualDetail div#events table.eventtable {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
table.eventlist tbody tr td.ColumnEvent {
|
#families table.eventlist tbody tr td.ColumnEvent {
|
||||||
width: 12%;
|
vertical-align: top;
|
||||||
|
width: 8%;
|
||||||
|
}
|
||||||
|
div#RelationshipDetail table.infolist tbody tr td.ColumnAttribute,
|
||||||
|
div#IndividualDetail table.infolist tbody tr td.ColumnAttribute {
|
||||||
|
vertical-align: top;
|
||||||
|
width: 10%;
|
||||||
}
|
}
|
||||||
#IndividualDetail div#events table.infolist tbody tr td {
|
#IndividualDetail div#events table.infolist tbody tr td {
|
||||||
padding-top: .4em;
|
padding-top: .4em;
|
||||||
@ -1185,6 +1220,10 @@ div#Families table.infolist tbody tr td.ColumnAttribute {
|
|||||||
}
|
}
|
||||||
div#families table.infolist tbody tr td.ColumnValue p {
|
div#families table.infolist tbody tr td.ColumnValue p {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
div#families table.infolist tbody tr td.ColumnValue {
|
||||||
|
width: 70%;
|
||||||
}
|
}
|
||||||
div#families table.infolist tbody tr td.ColumnValue ol {
|
div#families table.infolist tbody tr td.ColumnValue ol {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@ -1199,6 +1238,22 @@ div#families table.infolist tbody tr td.ColumnValue ol li a {
|
|||||||
div#families table.fixed_subtables table.eventlist {
|
div#families table.fixed_subtables table.eventlist {
|
||||||
table-layout:fixed;
|
table-layout:fixed;
|
||||||
}
|
}
|
||||||
|
div#families table.fixed_subtables table.eventlist th.ColumnDate {
|
||||||
|
width: 12%;
|
||||||
|
}
|
||||||
|
div#families table.fixed_subtables table.eventlist th.ColumnSources {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
div#families table.fixed_subtables .Child table.eventlist .ColumnName {
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
div#families table.fixed_subtables .Child table.eventlist .ColumnDate {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
div#families table.fixed_subtables .BeginFamily .ColumnType {
|
||||||
|
width: 7em;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
/* Subsection: Families: Attributes
|
/* Subsection: Families: Attributes
|
||||||
------------------------------------------------- */
|
------------------------------------------------- */
|
||||||
@ -1215,17 +1270,14 @@ SourcesType {
|
|||||||
div#families table.infolist tbody tr td.Value {
|
div#families table.infolist tbody tr td.Value {
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
div#families table.infolist tr td.Notes {
|
|
||||||
width: 40%;
|
|
||||||
}
|
|
||||||
div#families table.infolist tbody tr td.Sources {
|
div#families table.infolist tbody tr td.Sources {
|
||||||
width: 15%;
|
width: 5%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsection: Families: LDS Ordinance
|
/* Subsection: Families: LDS Ordinance
|
||||||
------------------------------------------------------ */
|
------------------------------------------------------ */
|
||||||
div#families table.infolist {
|
div#families table.infolist {
|
||||||
font: normal .8em sans;
|
font: normal .9em sans;
|
||||||
}
|
}
|
||||||
div#families table.infolist tbody tr.BeginOrdinance {
|
div#families table.infolist tbody tr.BeginOrdinance {
|
||||||
border-top: solid 1px #000;
|
border-top: solid 1px #000;
|
||||||
@ -1366,7 +1418,6 @@ div.Residence table.infolist tr td {
|
|||||||
}
|
}
|
||||||
#gallery div.indexno {
|
#gallery div.indexno {
|
||||||
float: right;
|
float: right;
|
||||||
width: 1.8em;
|
|
||||||
font-size: large;
|
font-size: large;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #CCC;
|
background-color: #CCC;
|
||||||
@ -1411,9 +1462,22 @@ div.narrative {
|
|||||||
font: normal .9em/1.4em sans-serif;
|
font: normal .9em/1.4em sans-serif;
|
||||||
margin: 0.1em 0 0.2em 0;
|
margin: 0.1em 0 0.2em 0;
|
||||||
}
|
}
|
||||||
|
i.NoteType {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
i + div.grampsstylednote p {
|
i + div.grampsstylednote p {
|
||||||
margin: 0.1em 0 0.2em 0;
|
margin: 0.1em 0 0.2em 0;
|
||||||
}
|
}
|
||||||
|
div.grampsstylednote p {
|
||||||
|
padding-bottom: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Subsection : References
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#references ol {
|
||||||
|
margin-left: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
/* Subsections : References
|
/* Subsections : References
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -1453,6 +1517,9 @@ div#summaryarea table.infolist tr td, div#summaryarea table.infolist tr td p {
|
|||||||
font: normal .9em/1.2em sans-serif;
|
font: normal .9em/1.2em sans-serif;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
div#summaryarea table.infolist tr td.ColumnValue {
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
div#summaryarea table.infolist tr td a, div#summaryarea table.infolist tr td p a {
|
div#summaryarea table.infolist tr td a, div#summaryarea table.infolist tr td p a {
|
||||||
display:inline;
|
display:inline;
|
||||||
}
|
}
|
||||||
@ -1482,7 +1549,7 @@ table.WebLinks tbody tr td.ColumnPath {
|
|||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
table.weblinks tbody tr td.ColumnDescription {
|
table.weblinks tbody tr td.ColumnDescription {
|
||||||
width: 30%;
|
width: 80%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsections : Pedigree
|
/* Subsections : Pedigree
|
||||||
@ -1568,7 +1635,7 @@ div#pedigree {
|
|||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
height: 2em;
|
height: 2em;
|
||||||
}
|
}
|
||||||
.calendar thead tr th.weekend,
|
.calendar thead tr th.weekend,
|
||||||
.calendar thead tr th.weekday {
|
.calendar thead tr th.weekday {
|
||||||
font-style:italic;
|
font-style:italic;
|
||||||
color: #000;
|
color: #000;
|
||||||
@ -1655,9 +1722,9 @@ div#pedigree {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar : Previous-Next Month */
|
/* Calendar : Previous-Next Month */
|
||||||
.calendar tbody tr td.previous,
|
.calendar tbody tr td.previous,
|
||||||
.calendar tbody tr td.next,
|
.calendar tbody tr td.next,
|
||||||
.calendar tbody tr td.previous div.date,
|
.calendar tbody tr td.previous div.date,
|
||||||
.calendar tbody tr td.next div.date {
|
.calendar tbody tr td.next div.date {
|
||||||
color: #333;
|
color: #333;
|
||||||
background-color: #D8F3D6;
|
background-color: #D8F3D6;
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
Copyright Holder and License
|
Copyright Holder and License
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Basic - Cypress
|
Style Name: Basic - Cypress
|
||||||
Style Author: Jason Simanek (2008)
|
Style Author: Jason Simanek (2008)
|
||||||
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the original 'Tranquil' stylesheet
|
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the
|
||||||
**************************************************************************************************
|
original 'Tranquil' stylesheet
|
||||||
|
*******************************************************************************
|
||||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||||
|
|
||||||
genealogy program, and a wiki open to all. It is a community project, created,
|
genealogy program, and a wiki open to all. It is a community project, created,
|
||||||
@ -16,7 +17,7 @@ developed and governed by genealogists.
|
|||||||
|
|
||||||
Go to <http://gramps-project.org/> to learn more!
|
Go to <http://gramps-project.org/> to learn more!
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright 2008 Jason M. Simanek
|
Copyright 2008 Jason M. Simanek
|
||||||
Copyright 2009 Stephane Charette
|
Copyright 2009 Stephane Charette
|
||||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||||
@ -36,10 +37,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
You should have received a copy of the GNU General Public License along with
|
||||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Color Palette
|
Color Palette
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
black #000
|
black #000
|
||||||
slate dark #454
|
slate dark #454
|
||||||
@ -47,14 +48,14 @@ slate #7C8F7C
|
|||||||
slate light #9DBF9D
|
slate light #9DBF9D
|
||||||
slate very light #E0E6E0
|
slate very light #E0E6E0
|
||||||
white #FFF
|
white #FFF
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Characteristic of this style is that it uses the full width of the browser
|
Characteristic of this style is that it uses the full width of the browser
|
||||||
window and that horizontal highlighting bars extend over the full width of
|
window and that horizontal highlighting bars extend over the full width of
|
||||||
the page.
|
the page.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
General Elements
|
General Elements
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -239,7 +240,7 @@ div#alphanav ul li a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive navigation */
|
/* Responsive navigation */
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -286,11 +287,14 @@ div#nav::after {
|
|||||||
.nav li {display: none;}
|
.nav li {display: none;}
|
||||||
.nav ul {display: none;}
|
.nav ul {display: none;}
|
||||||
|
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
font-size:1.3em;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
|
||||||
float: left;
|
float: left;
|
||||||
|
font-size:2.9em;
|
||||||
|
line-height: 35px;
|
||||||
|
border: 0px;
|
||||||
|
color: #E0E6E0;
|
||||||
|
background-color: #454;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||||
@ -373,9 +377,6 @@ td.ColumnLetter, td.ColumnRowLabel {
|
|||||||
td.ColumnEvent, td.ColumnDate {
|
td.ColumnEvent, td.ColumnDate {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
td.ColumnPlace, td.ColumnDescription {
|
|
||||||
width: 20%
|
|
||||||
}
|
|
||||||
/* end of customizations by Stephane */
|
/* end of customizations by Stephane */
|
||||||
td.ColumnBirth, td.ColumnDeath, td.ColumnPartner, td.ColumnParents {
|
td.ColumnBirth, td.ColumnDeath, td.ColumnPartner, td.ColumnParents {
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
@ -434,12 +435,31 @@ table.surname td.ColumnName {
|
|||||||
table.surname td.ColumnName > a {
|
table.surname td.ColumnName > a {
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
}
|
}
|
||||||
|
table#SortByName tr:hover td.ColumnSurname,
|
||||||
|
table#SortByCount tr:hover td.ColumnQuantity {
|
||||||
|
background-color: #9DBF9D;
|
||||||
|
}
|
||||||
|
table#SortByName tr:hover,
|
||||||
|
table#SortByCount tr:hover,
|
||||||
|
table#SortByName tr:hover td.ColumnQuantity,
|
||||||
|
table#SortByCount tr:hover td.ColumnSurname {
|
||||||
|
background-color: #9DBF9D;
|
||||||
|
}
|
||||||
|
table.surname tr:hover,
|
||||||
|
table.surname tr:hover td.ColumnName {
|
||||||
|
background-color: #9DBF9D;
|
||||||
|
}
|
||||||
|
|
||||||
/* Individuals
|
/* Individuals
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
table.IndividualList td.ColumnSurname {
|
table.IndividualList td.ColumnSurname {
|
||||||
background-color: #E0E6E0;
|
background-color: #E0E6E0;
|
||||||
}
|
}
|
||||||
|
#parents table.infolist tr:hover,
|
||||||
|
table.IndividualList tr:hover,
|
||||||
|
table.IndividualList tr:hover td.ColumnSurname {
|
||||||
|
background-color: #9DBF9D;
|
||||||
|
}
|
||||||
|
|
||||||
/* Places
|
/* Places
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -453,6 +473,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#Places table.infolist td.ColumnName > a {
|
#Places table.infolist td.ColumnName > a {
|
||||||
padding-left: 1ex;
|
padding-left: 1ex;
|
||||||
}
|
}
|
||||||
|
#Places table.infolist tr:hover,
|
||||||
|
#Places table.infolist tr:hover td.ColumnName {
|
||||||
|
background-color: #9DBF9D;
|
||||||
|
}
|
||||||
|
|
||||||
/* Events
|
/* Events
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -468,6 +492,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventList td.ColumnPerson a {
|
#EventList td.ColumnPerson a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
#EventList table.infolist tr:hover,
|
||||||
|
#EventList table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #9DBF9D;
|
||||||
|
}
|
||||||
#EventList td.ColumnPerson span.person:after,
|
#EventList td.ColumnPerson span.person:after,
|
||||||
#EventList td.ColumnPerson span.father:after,
|
#EventList td.ColumnPerson span.father:after,
|
||||||
#EventList td.ColumnPerson span.mother:after,
|
#EventList td.ColumnPerson span.mother:after,
|
||||||
@ -488,10 +516,49 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
table.eventlist tbody tr td:first-child,
|
||||||
|
table.eventlist thead tr th:first-child {
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnValue {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnSources {
|
||||||
|
width: 5%;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#WebLinks table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#events table.eventlist td.ColumnDate {
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td:first-child,
|
||||||
|
#families table.eventlist thead tr th:first-child {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td.ColumnDate,
|
||||||
|
#families table.eventlist tbody tr td.ColumnNotes {
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
table.eventlist tbody tr td.ColumnSources {
|
table.eventlist tbody tr td.ColumnSources {
|
||||||
width: 5%;
|
width: 5%;
|
||||||
}
|
}
|
||||||
|
table.eventlist th.ColumnDate {
|
||||||
|
padding-left: 15px;
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
table.eventlist td.ColumnEvent,
|
||||||
|
table.eventlist td.ColumnDate,
|
||||||
|
table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
/* Gallery
|
/* Gallery
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -546,6 +613,10 @@ table.eventlist tbody tr td.ColumnSources {
|
|||||||
div#SourceDetail {
|
div#SourceDetail {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
#Sources table.infolist tr:hover,
|
||||||
|
#Sources table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #9DBF9D;
|
||||||
|
}
|
||||||
|
|
||||||
/* Contact
|
/* Contact
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -615,6 +686,10 @@ div#SourceDetail {
|
|||||||
|
|
||||||
/* Subsection : Families
|
/* Subsection : Families
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||||
|
table.relationships tr:hover {
|
||||||
|
background-color: #9DBF9D;
|
||||||
|
}
|
||||||
div#families table.fixed_subtables table.eventlist {
|
div#families table.fixed_subtables table.eventlist {
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
@ -666,7 +741,6 @@ div#families table.attrlist td.ColumnType {
|
|||||||
}
|
}
|
||||||
#gallery div.indexno {
|
#gallery div.indexno {
|
||||||
float: right;
|
float: right;
|
||||||
width: 1.8em;
|
|
||||||
font-size: large;
|
font-size: large;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #CCC;
|
background-color: #CCC;
|
||||||
@ -714,11 +788,21 @@ div.snapshot div.thumbnail {
|
|||||||
h4 + div.grampsstylednote, a.familymap {
|
h4 + div.grampsstylednote, a.familymap {
|
||||||
margin: 1em 15px;
|
margin: 1em 15px;
|
||||||
}
|
}
|
||||||
|
i.NoteType {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
i + div.grampsstylednote p {
|
i + div.grampsstylednote p {
|
||||||
margin: 0 0 0.3em 0;
|
margin: 0 0 0.3em 0;
|
||||||
}
|
}
|
||||||
div.grampsstylednote p {
|
div.grampsstylednote p {
|
||||||
margin-bottom: 0.5em;
|
padding-bottom: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Subsection : References
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#references ol {
|
||||||
|
margin-left: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsection : Family Map
|
/* Subsection : Family Map
|
||||||
@ -791,10 +875,16 @@ a.familymap {
|
|||||||
padding-right: 15px;
|
padding-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updates
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Updates table.list td.date {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Overwritten
|
/* Overwritten
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
body#FamilyMap {
|
body#FamilyMap {
|
||||||
background-color: #454 ! important;
|
background-color: #454 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar Styles
|
/* Calendar Styles
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
Copyright Holder and License
|
Copyright Holder and License
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Basic - Lilac
|
Style Name: Basic - Lilac
|
||||||
Style Author: Jason M. Simanek (2008)
|
Style Author: Jason M. Simanek (2008)
|
||||||
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the original 'Business' stylesheet
|
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the
|
||||||
**************************************************************************************************
|
original 'Business' stylesheet
|
||||||
|
*******************************************************************************
|
||||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||||
|
|
||||||
genealogy program, and a wiki open to all. It is a community project, created,
|
genealogy program, and a wiki open to all. It is a community project, created,
|
||||||
@ -16,7 +17,7 @@ developed and governed by genealogists.
|
|||||||
|
|
||||||
Go to <http://gramps-project.org/> to learn more!
|
Go to <http://gramps-project.org/> to learn more!
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright 2008 Jason M. Simanek
|
Copyright 2008 Jason M. Simanek
|
||||||
Copyright 2009 Stephane Charette
|
Copyright 2009 Stephane Charette
|
||||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||||
@ -36,10 +37,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
You should have received a copy of the GNU General Public License along with
|
||||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Color Palette
|
Color Palette
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
black #000
|
black #000
|
||||||
lilac dark #2E2E61
|
lilac dark #2E2E61
|
||||||
@ -47,14 +48,14 @@ lilac #669
|
|||||||
lilac light #B4B4CB
|
lilac light #B4B4CB
|
||||||
lilac very light #E0E0E9
|
lilac very light #E0E0E9
|
||||||
white #FAFAFF
|
white #FAFAFF
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Characteristic of this style is that it uses the full width of the browser
|
Characteristic of this style is that it uses the full width of the browser
|
||||||
window and that horizontal highlighting bars extend over the full width of
|
window and that horizontal highlighting bars extend over the full width of
|
||||||
the page.
|
the page.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
General Elements
|
General Elements
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -237,7 +238,7 @@ div#alphanav ul li a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive navigation */
|
/* Responsive navigation */
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,11 +285,14 @@ div#nav::after {
|
|||||||
.nav li {display: none;}
|
.nav li {display: none;}
|
||||||
.nav ul {display: none;}
|
.nav ul {display: none;}
|
||||||
|
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
font-size:1.3em;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
|
||||||
float: left;
|
float: left;
|
||||||
|
font-size:2.9em;
|
||||||
|
line-height: 35px;
|
||||||
|
border: 0px;
|
||||||
|
color: #2E2E61;
|
||||||
|
background-color: #E0E0E9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||||
@ -419,12 +423,31 @@ table.surname td.ColumnName {
|
|||||||
table.surname td.ColumnName > a {
|
table.surname td.ColumnName > a {
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
}
|
}
|
||||||
|
table#SortByName tr:hover td.ColumnSurname,
|
||||||
|
table#SortByCount tr:hover td.ColumnQuantity {
|
||||||
|
background-color: #B4B4CB;
|
||||||
|
}
|
||||||
|
table#SortByName tr:hover,
|
||||||
|
table#SortByCount tr:hover,
|
||||||
|
table#SortByName tr:hover td.ColumnQuantity,
|
||||||
|
table#SortByCount tr:hover td.ColumnSurname {
|
||||||
|
background-color: #B4B4CB;
|
||||||
|
}
|
||||||
|
table.surname tr:hover,
|
||||||
|
table.surname tr:hover td.ColumnName {
|
||||||
|
background-color: #B4B4CB;
|
||||||
|
}
|
||||||
|
|
||||||
/* Individuals
|
/* Individuals
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
table.IndividualList td.ColumnSurname {
|
table.IndividualList td.ColumnSurname {
|
||||||
background-color: #E0E0E9;
|
background-color: #E0E0E9;
|
||||||
}
|
}
|
||||||
|
#parents table.infolist tr:hover,
|
||||||
|
table.IndividualList tr:hover,
|
||||||
|
table.IndividualList tr:hover td.ColumnSurname {
|
||||||
|
background-color: #B4B4CB;
|
||||||
|
}
|
||||||
|
|
||||||
/* Places
|
/* Places
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -441,6 +464,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#Places table.infolist td.ColumnName > a {
|
#Places table.infolist td.ColumnName > a {
|
||||||
padding-left: 1ex;
|
padding-left: 1ex;
|
||||||
}
|
}
|
||||||
|
#Places table.infolist tr:hover,
|
||||||
|
#Places table.infolist tr:hover td.ColumnName {
|
||||||
|
background-color: #B4B4CB;
|
||||||
|
}
|
||||||
|
|
||||||
/* Events
|
/* Events
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -456,6 +483,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventList td.ColumnPerson a {
|
#EventList td.ColumnPerson a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
#EventList table.infolist tr:hover,
|
||||||
|
#EventList table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #B4B4CB;
|
||||||
|
}
|
||||||
#EventList td.ColumnPerson span.person:after,
|
#EventList td.ColumnPerson span.person:after,
|
||||||
#EventList td.ColumnPerson span.father:after,
|
#EventList td.ColumnPerson span.father:after,
|
||||||
#EventList td.ColumnPerson span.mother:after,
|
#EventList td.ColumnPerson span.mother:after,
|
||||||
@ -476,9 +507,54 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
#attributes table.infolist td.ColumnType {
|
||||||
table.eventlist tbody tr td.ColumnSources {
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnValue {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnSources {
|
||||||
width: 5%;
|
width: 5%;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#WebLinks table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#events table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td:first-child,
|
||||||
|
#families table.eventlist thead tr th:first-child {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td.ColumnDate,
|
||||||
|
#families table.eventlist tbody tr td.ColumnNotes {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
table.eventlist tbody tr td:first-child,
|
||||||
|
table.eventlist thead tr th:first-child {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
table.eventlist tbody tr td.ColumnSources {
|
||||||
|
padding-left: 20px;
|
||||||
|
width: 5%;
|
||||||
|
}
|
||||||
|
#families table.eventlist th.ColumnDate {
|
||||||
|
padding-left: 20px;
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
table.eventlist td.ColumnEvent,
|
||||||
|
table.eventlist td.ColumnDate,
|
||||||
|
table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Gallery
|
/* Gallery
|
||||||
@ -534,6 +610,10 @@ table.eventlist tbody tr td.ColumnSources {
|
|||||||
div#SourceDetail {
|
div#SourceDetail {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
#Sources table.infolist tr:hover,
|
||||||
|
#Sources table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #B4B4CB;
|
||||||
|
}
|
||||||
|
|
||||||
/* Contact
|
/* Contact
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -603,6 +683,10 @@ div#SourceDetail {
|
|||||||
|
|
||||||
/* Subsection : Families
|
/* Subsection : Families
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||||
|
table.relationships tr:hover {
|
||||||
|
background-color: #B4B4CB;
|
||||||
|
}
|
||||||
div#families table.fixed_subtables table.eventlist {
|
div#families table.fixed_subtables table.eventlist {
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
@ -654,7 +738,6 @@ div#families table.attrlist td.ColumnType {
|
|||||||
}
|
}
|
||||||
#gallery div.indexno {
|
#gallery div.indexno {
|
||||||
float: right;
|
float: right;
|
||||||
width: 1.8em;
|
|
||||||
font-size: large;
|
font-size: large;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #CCC;
|
background-color: #CCC;
|
||||||
@ -702,11 +785,21 @@ div.snapshot div.thumbnail {
|
|||||||
h4 + div.grampsstylednote, a.familymap {
|
h4 + div.grampsstylednote, a.familymap {
|
||||||
margin: 1em 15px;
|
margin: 1em 15px;
|
||||||
}
|
}
|
||||||
|
i.NoteType {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
i + div.grampsstylednote p {
|
i + div.grampsstylednote p {
|
||||||
margin: 0 0 0.3em 0;
|
margin: 0 0 0.3em 0;
|
||||||
}
|
}
|
||||||
div.grampsstylednote p {
|
div.grampsstylednote p {
|
||||||
margin-bottom: 0.5em;
|
padding-bottom: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Subsection : References
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#references ol {
|
||||||
|
margin-left: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsection : Family Map
|
/* Subsection : Family Map
|
||||||
@ -778,10 +871,16 @@ a.familymap {
|
|||||||
background-color: #B4B4CB;
|
background-color: #B4B4CB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updates
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Updates table.list td.date {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Overwritten
|
/* Overwritten
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
body#FamilyMap {
|
body#FamilyMap {
|
||||||
background-color: #E0E0E9 ! important;
|
background-color: #E0E0E9 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar Styles
|
/* Calendar Styles
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
Copyright Holder and License
|
Copyright Holder and License
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Basic-Peach Stylesheet
|
Style Name: Basic-Peach Stylesheet
|
||||||
Style Author: Jason M. Simanek (2008)
|
Style Author: Jason M. Simanek (2008)
|
||||||
Note: Adapted from GRAMPS original Modern Style stylesheet with a new orange color scheme.
|
Note: Adapted from GRAMPS original Modern Style stylesheet with a new orange
|
||||||
**************************************************************************************************
|
color scheme.
|
||||||
|
*******************************************************************************
|
||||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||||
|
|
||||||
genealogy program, and a wiki open to all. It is a community project, created,
|
genealogy program, and a wiki open to all. It is a community project, created,
|
||||||
@ -16,7 +17,7 @@ developed and governed by genealogists.
|
|||||||
|
|
||||||
Go to <http://gramps-project.org/> to learn more!
|
Go to <http://gramps-project.org/> to learn more!
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright 2008 Jason M. Simanek
|
Copyright 2008 Jason M. Simanek
|
||||||
Copyright 2009 Stephane Charette
|
Copyright 2009 Stephane Charette
|
||||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||||
@ -36,10 +37,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
You should have received a copy of the GNU General Public License along with
|
||||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Color Palette
|
Color Palette
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
black #36220B
|
black #36220B
|
||||||
brown #8C581C
|
brown #8C581C
|
||||||
@ -47,14 +48,14 @@ orange dark #EA8414
|
|||||||
orange #FFC35E
|
orange #FFC35E
|
||||||
orange light #FFE09F
|
orange light #FFE09F
|
||||||
yellow light #FFFBE7
|
yellow light #FFFBE7
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Characteristic of this style is that it uses the full width of the browser
|
Characteristic of this style is that it uses the full width of the browser
|
||||||
window and that horizontal highlighting bars extend over the full width of
|
window and that horizontal highlighting bars extend over the full width of
|
||||||
the page.
|
the page.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
General Elements
|
General Elements
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -237,7 +238,7 @@ div#alphanav ul li a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive navigation */
|
/* Responsive navigation */
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,11 +285,14 @@ div#nav::after {
|
|||||||
.nav li {display: none;}
|
.nav li {display: none;}
|
||||||
.nav ul {display: none;}
|
.nav ul {display: none;}
|
||||||
|
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
font-size:1.3em;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
|
||||||
float: left;
|
float: left;
|
||||||
|
font-size:2.9em;
|
||||||
|
line-height: 35px;
|
||||||
|
border: 0px;
|
||||||
|
color: #EA8414;
|
||||||
|
background-color: #FFE09F;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||||
@ -419,12 +423,31 @@ table.surname td.ColumnName {
|
|||||||
table.surname td.ColumnName > a {
|
table.surname td.ColumnName > a {
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
}
|
}
|
||||||
|
table#SortByName tr:hover td.ColumnSurname,
|
||||||
|
table#SortByCount tr:hover td.ColumnQuantity {
|
||||||
|
background-color: #FFC35E;
|
||||||
|
}
|
||||||
|
table#SortByName tr:hover,
|
||||||
|
table#SortByCount tr:hover,
|
||||||
|
table#SortByName tr:hover td.ColumnQuantity,
|
||||||
|
table#SortByCount tr:hover td.ColumnSurname {
|
||||||
|
background-color: #FFC35E;
|
||||||
|
}
|
||||||
|
table.surname tr:hover,
|
||||||
|
table.surname tr:hover td.ColumnName {
|
||||||
|
background-color: #FFC35E;
|
||||||
|
}
|
||||||
|
|
||||||
/* Individuals
|
/* Individuals
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
table.IndividualList td.ColumnSurname {
|
table.IndividualList td.ColumnSurname {
|
||||||
background-color: #FFE09F;
|
background-color: #FFE09F;
|
||||||
}
|
}
|
||||||
|
#parents table.infolist tr:hover,
|
||||||
|
table.IndividualList tr:hover,
|
||||||
|
table.IndividualList tr:hover td.ColumnSurname {
|
||||||
|
background-color: #FFC35E;
|
||||||
|
}
|
||||||
|
|
||||||
/* Places
|
/* Places
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -441,6 +464,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#Places table.infolist td.ColumnName > a {
|
#Places table.infolist td.ColumnName > a {
|
||||||
padding-left: 1ex;
|
padding-left: 1ex;
|
||||||
}
|
}
|
||||||
|
#Places table.infolist tr:hover,
|
||||||
|
#Places table.infolist tr:hover td.ColumnName {
|
||||||
|
background-color: #FFC35E;
|
||||||
|
}
|
||||||
|
|
||||||
/* Events
|
/* Events
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -456,6 +483,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventList td.ColumnPerson a {
|
#EventList td.ColumnPerson a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
#EventList table.infolist tr:hover,
|
||||||
|
#EventList table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #FFC35E;
|
||||||
|
}
|
||||||
#EventList td.ColumnPerson span.person:after,
|
#EventList td.ColumnPerson span.person:after,
|
||||||
#EventList td.ColumnPerson span.father:after,
|
#EventList td.ColumnPerson span.father:after,
|
||||||
#EventList td.ColumnPerson span.mother:after,
|
#EventList td.ColumnPerson span.mother:after,
|
||||||
@ -476,10 +507,57 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
#attributes table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnValue {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnSources {
|
||||||
|
width: 5%;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#WebLinks table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#events table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist th.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
#families table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td:first-child,
|
||||||
|
#families table.eventlist thead tr th:first-child {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td.ColumnDate,
|
||||||
|
#families table.eventlist tbody tr td.ColumnNotes {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
table.eventlist tbody tr td:first-child,
|
||||||
|
table.eventlist thead tr th:first-child {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
table.eventlist tbody tr td.ColumnSources {
|
table.eventlist tbody tr td.ColumnSources {
|
||||||
width: 5%;
|
width: 5%;
|
||||||
}
|
}
|
||||||
|
table.eventlist th.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
table.eventlist td.ColumnEvent,
|
||||||
|
table.eventlist td.ColumnDate,
|
||||||
|
table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
/* Gallery
|
/* Gallery
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -533,6 +611,10 @@ table.eventlist tbody tr td.ColumnSources {
|
|||||||
div#SourceDetail {
|
div#SourceDetail {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
#Sources table.infolist tr:hover,
|
||||||
|
#Sources table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #FFC35E;
|
||||||
|
}
|
||||||
|
|
||||||
/* Contact
|
/* Contact
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -602,6 +684,10 @@ div#SourceDetail {
|
|||||||
|
|
||||||
/* Subsection : Families
|
/* Subsection : Families
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||||
|
table.relationships tr:hover {
|
||||||
|
background-color: #FFC35E;
|
||||||
|
}
|
||||||
div#families table.fixed_subtables table.eventlist {
|
div#families table.fixed_subtables table.eventlist {
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
@ -653,7 +739,6 @@ div#families table.attrlist td.ColumnType {
|
|||||||
}
|
}
|
||||||
#gallery div.indexno {
|
#gallery div.indexno {
|
||||||
float: right;
|
float: right;
|
||||||
width: 1.8em;
|
|
||||||
font-size: large;
|
font-size: large;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #CCC;
|
background-color: #CCC;
|
||||||
@ -701,11 +786,21 @@ div.snapshot div.thumbnail {
|
|||||||
h4 + div.grampsstylednote, a.familymap {
|
h4 + div.grampsstylednote, a.familymap {
|
||||||
margin: 1em 15px;
|
margin: 1em 15px;
|
||||||
}
|
}
|
||||||
|
i.NoteType {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
i + div.grampsstylednote p {
|
i + div.grampsstylednote p {
|
||||||
margin: 0 0 0.3em 0;
|
margin: 0 0 0.3em 0;
|
||||||
}
|
}
|
||||||
div.grampsstylednote p {
|
div.grampsstylednote p {
|
||||||
margin-bottom: 0.5em;
|
padding-bottom: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Subsection : References
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#references ol {
|
||||||
|
margin-left: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsection : Family Map
|
/* Subsection : Family Map
|
||||||
@ -777,11 +872,17 @@ a.familymap {
|
|||||||
background-color: #FFC35E;
|
background-color: #FFC35E;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updates
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Updates table.list td.date {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Overwritten
|
/* Overwritten
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
button#drop {
|
button#drop {
|
||||||
background-color: #FFE09F;
|
background-color: #FFE09F;
|
||||||
border: solid 1px #EA8414 ! important;
|
border: solid 1px #EA8414 !important;
|
||||||
}
|
}
|
||||||
button#drop:hover {
|
button#drop:hover {
|
||||||
background-color: #FFC35E;
|
background-color: #FFC35E;
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
Copyright Holder and License
|
Copyright Holder and License
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Basic-Spruce Stylesheet
|
Style Name: Basic-Spruce Stylesheet
|
||||||
Style Author: Jason M. Simanek (2008)
|
Style Author: Jason M. Simanek (2008)
|
||||||
Note: Adapted from GRAMPS original Modern Style stylesheet with a new blue color scheme.
|
Note: Adapted from GRAMPS original Modern Style stylesheet with a new blue
|
||||||
**************************************************************************************************
|
color scheme.
|
||||||
|
*******************************************************************************
|
||||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||||
|
|
||||||
genealogy program, and a wiki open to all. It is a community project, created,
|
genealogy program, and a wiki open to all. It is a community project, created,
|
||||||
@ -16,7 +17,7 @@ developed and governed by genealogists.
|
|||||||
|
|
||||||
Go to <http://gramps-project.org/> to learn more!
|
Go to <http://gramps-project.org/> to learn more!
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright 2008 Jason M. Simanek
|
Copyright 2008 Jason M. Simanek
|
||||||
Copyright 2009 Stephane Charette
|
Copyright 2009 Stephane Charette
|
||||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||||
@ -37,10 +38,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
You should have received a copy of the GNU General Public License along with
|
||||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Color Palette
|
Color Palette
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
black #000
|
black #000
|
||||||
blue dark #204D91
|
blue dark #204D91
|
||||||
@ -48,14 +49,14 @@ blue #7CA3DD
|
|||||||
blue light #BFD0EA
|
blue light #BFD0EA
|
||||||
blue very light #EAEEF4
|
blue very light #EAEEF4
|
||||||
white #FFF
|
white #FFF
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Characteristic of this style is that it uses the full width of the browser
|
Characteristic of this style is that it uses the full width of the browser
|
||||||
window and that horizontal highlighting bars extend over the full width of
|
window and that horizontal highlighting bars extend over the full width of
|
||||||
the page.
|
the page.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
General Elements
|
General Elements
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -238,7 +239,7 @@ div#alphanav ul li a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive navigation */
|
/* Responsive navigation */
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -285,11 +286,14 @@ div#nav::after {
|
|||||||
.nav li {display: none;}
|
.nav li {display: none;}
|
||||||
.nav ul {display: none;}
|
.nav ul {display: none;}
|
||||||
|
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
font-size:1.3em;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
|
||||||
float: left;
|
float: left;
|
||||||
|
font-size:2.9em;
|
||||||
|
line-height: 35px;
|
||||||
|
border: 0px;
|
||||||
|
color: #204D91;
|
||||||
|
background-color: #EAEEF4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||||
@ -420,12 +424,31 @@ table.surname td.ColumnName {
|
|||||||
table.surname td.ColumnName > a {
|
table.surname td.ColumnName > a {
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
}
|
}
|
||||||
|
table#SortByName tr:hover td.ColumnSurname,
|
||||||
|
table#SortByCount tr:hover td.ColumnQuantity {
|
||||||
|
background-color: #BFD0EA;
|
||||||
|
}
|
||||||
|
table#SortByName tr:hover,
|
||||||
|
table#SortByCount tr:hover,
|
||||||
|
table#SortByName tr:hover td.ColumnQuantity,
|
||||||
|
table#SortByCount tr:hover td.ColumnSurname {
|
||||||
|
background-color: #BFD0EA;
|
||||||
|
}
|
||||||
|
table.surname tr:hover,
|
||||||
|
table.surname tr:hover td.ColumnName {
|
||||||
|
background-color: #BFD0EA;
|
||||||
|
}
|
||||||
|
|
||||||
/* Individuals
|
/* Individuals
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
table.IndividualList td.ColumnSurname {
|
table.IndividualList td.ColumnSurname {
|
||||||
background-color: #EAEEF4;
|
background-color: #EAEEF4;
|
||||||
}
|
}
|
||||||
|
#parents table.infolist tr:hover,
|
||||||
|
table.IndividualList tr:hover,
|
||||||
|
table.IndividualList tr:hover td.ColumnSurname {
|
||||||
|
background-color: #EAEEF4;
|
||||||
|
}
|
||||||
|
|
||||||
/* Places
|
/* Places
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -442,6 +465,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#Places table.infolist td.ColumnName > a {
|
#Places table.infolist td.ColumnName > a {
|
||||||
padding-left: 1ex;
|
padding-left: 1ex;
|
||||||
}
|
}
|
||||||
|
#Places table.infolist tr:hover,
|
||||||
|
#Places table.infolist tr:hover td.ColumnName {
|
||||||
|
background-color: #BFD0EA;
|
||||||
|
}
|
||||||
|
|
||||||
/* Events
|
/* Events
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -457,6 +484,10 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventList td.ColumnPerson a {
|
#EventList td.ColumnPerson a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
#EventList table.infolist tr:hover,
|
||||||
|
#EventList table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #BFD0EA;
|
||||||
|
}
|
||||||
#EventList td.ColumnPerson span.person:after,
|
#EventList td.ColumnPerson span.person:after,
|
||||||
#EventList td.ColumnPerson span.father:after,
|
#EventList td.ColumnPerson span.father:after,
|
||||||
#EventList td.ColumnPerson span.mother:after,
|
#EventList td.ColumnPerson span.mother:after,
|
||||||
@ -477,10 +508,57 @@ table.IndividualList td.ColumnSurname {
|
|||||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
#attributes table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnValue {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnSources {
|
||||||
|
width: 5%;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#WebLinks table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#events table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist th.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
#families table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td:first-child,
|
||||||
|
#families table.eventlist thead tr th:first-child {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td.ColumnDate,
|
||||||
|
#families table.eventlist tbody tr td.ColumnNotes {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
table.eventlist tbody tr td:first-child,
|
||||||
|
table.eventlist thead tr th:first-child {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
table.eventlist tbody tr td.ColumnSources {
|
table.eventlist tbody tr td.ColumnSources {
|
||||||
width: 5%;
|
width: 5%;
|
||||||
}
|
}
|
||||||
|
table.eventlist th.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
table.eventlist td.ColumnEvent,
|
||||||
|
table.eventlist td.ColumnDate,
|
||||||
|
table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
/* Gallery
|
/* Gallery
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -534,6 +612,10 @@ table.eventlist tbody tr td.ColumnSources {
|
|||||||
div#SourceDetail {
|
div#SourceDetail {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
#Sources table.infolist tr:hover,
|
||||||
|
#Sources table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #BFD0EA;
|
||||||
|
}
|
||||||
|
|
||||||
/* Contact
|
/* Contact
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -603,6 +685,10 @@ div#SourceDetail {
|
|||||||
|
|
||||||
/* Subsection : Families
|
/* Subsection : Families
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||||
|
table.relationships tr:hover {
|
||||||
|
background-color: #BFD0EA;
|
||||||
|
}
|
||||||
div#families table.fixed_subtables table.eventlist {
|
div#families table.fixed_subtables table.eventlist {
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
@ -654,7 +740,6 @@ div#families table.attrlist td.ColumnType {
|
|||||||
}
|
}
|
||||||
#gallery div.indexno {
|
#gallery div.indexno {
|
||||||
float: right;
|
float: right;
|
||||||
width: 1.8em;
|
|
||||||
font-size: large;
|
font-size: large;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #CCC;
|
background-color: #CCC;
|
||||||
@ -702,11 +787,21 @@ div.snapshot div.thumbnail {
|
|||||||
h4 + div.grampsstylednote, a.familymap {
|
h4 + div.grampsstylednote, a.familymap {
|
||||||
margin: 1em 15px;
|
margin: 1em 15px;
|
||||||
}
|
}
|
||||||
|
i.NoteType {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
i + div.grampsstylednote p {
|
i + div.grampsstylednote p {
|
||||||
margin: 0 0 0.3em 0;
|
margin: 0 0 0.3em 0;
|
||||||
}
|
}
|
||||||
div.grampsstylednote p {
|
div.grampsstylednote p {
|
||||||
margin-bottom: 0.5em;
|
padding-bottom: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Subsection : References
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#references ol {
|
||||||
|
margin-left: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsection : Family Map
|
/* Subsection : Family Map
|
||||||
@ -778,10 +873,16 @@ a.familymap {
|
|||||||
background-color: #BFD0EA;
|
background-color: #BFD0EA;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updates
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Updates table.list td.date {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Overwritten
|
/* Overwritten
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
body#FamilyMap {
|
body#FamilyMap {
|
||||||
background-color: #EAEEF4 ! important;
|
background-color: #EAEEF4 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar Styles
|
/* Calendar Styles
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# the Free Software Foundation; either version 2 of the License, or
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# the Free Software Foundation; either version 2 of the License, or
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
@ -77,8 +77,7 @@ ul#dropmenu li:hover > a {
|
|||||||
color: #fafafa
|
color: #fafafa
|
||||||
}
|
}
|
||||||
|
|
||||||
*html ul#dropmenu li a:hover /* IE6 */
|
*html ul#dropmenu li a:hover /* IE6 */ {
|
||||||
{
|
|
||||||
color: #fafafa
|
color: #fafafa
|
||||||
}
|
}
|
||||||
ul#dropmenu li:hover > ul {
|
ul#dropmenu li:hover > ul {
|
||||||
@ -129,13 +128,11 @@ ul#dropmenu ul a {
|
|||||||
float: none;
|
float: none;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
}
|
}
|
||||||
*html ul#dropmenu ul a /* IE6 */
|
*html ul#dropmenu ul a /* IE6 */ {
|
||||||
{
|
|
||||||
height: 10px;
|
height: 10px;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
}
|
}
|
||||||
*:first-child+html ul#dropmenu ul a /* IE7 */
|
*:first-child+html ul#dropmenu ul a /* IE7 */ {
|
||||||
{
|
|
||||||
height: 10px;
|
height: 10px;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# the Free Software Foundation; either version 2 of the License, or
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# the Free Software Foundation; either version 2 of the License, or
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
@ -58,7 +58,7 @@ Middle Light images/Web_Mainz_MidLight.png
|
|||||||
|
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
--------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
|
|
||||||
General Elements
|
General Elements
|
||||||
-----------------------------------------------------------------*/
|
-----------------------------------------------------------------*/
|
||||||
@ -150,7 +150,8 @@ a {
|
|||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
a[href]:hover, a[href]:active {
|
a[href]:hover, a[href]:active {
|
||||||
background-color: #FFFFE7;
|
background-color: #D8C19F;
|
||||||
|
font-style: italic;
|
||||||
}
|
}
|
||||||
.grampsid {
|
.grampsid {
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
@ -167,7 +168,7 @@ a[href]:hover, a[href]:active {
|
|||||||
/* Navigation
|
/* Navigation
|
||||||
-----------------------------------------------------------------*/
|
-----------------------------------------------------------------*/
|
||||||
div#nav, #subnavigation {
|
div#nav, #subnavigation {
|
||||||
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6 repeat;
|
background: url(../images/Web_Mainz_Mid.png) repeat-x top left;
|
||||||
}
|
}
|
||||||
div#nav ul, #subnavigation ul {
|
div#nav ul, #subnavigation ul {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
@ -233,7 +234,7 @@ div#alphanav ul li a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive navigation */
|
/* Responsive navigation */
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,11 +281,14 @@ div#nav::after {
|
|||||||
.nav li {display: none;}
|
.nav li {display: none;}
|
||||||
.nav ul {display: none;}
|
.nav ul {display: none;}
|
||||||
|
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
font-size:1.3em;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
|
||||||
float: left;
|
float: left;
|
||||||
|
font-size:2.9em;
|
||||||
|
line-height: 80px;
|
||||||
|
border: 0px;
|
||||||
|
color: #7D5925;
|
||||||
|
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||||
@ -380,12 +384,40 @@ table#SortByName thead th.ColumnSurname a:after,
|
|||||||
table#SortByCount thead th.ColumnQuantity a:after {
|
table#SortByCount thead th.ColumnQuantity a:after {
|
||||||
content: " \2193";
|
content: " \2193";
|
||||||
}
|
}
|
||||||
|
table#SortByName tr:hover td.ColumnSurname,
|
||||||
|
table#SortByCount tr:hover td.ColumnQuantity {
|
||||||
|
background-color: #D8C19F;
|
||||||
|
}
|
||||||
|
table#SortByName tbody tr:hover,
|
||||||
|
table#SortByCount tbody tr:hover,
|
||||||
|
table#SortByName tr:hover td.ColumnQuantity,
|
||||||
|
table#SortByCount tr:hover td.ColumnSurname {
|
||||||
|
background-color: #D8C19F;
|
||||||
|
}
|
||||||
|
table.surname tbody tr:hover,
|
||||||
|
table.surname tr:hover td.ColumnName {
|
||||||
|
background-color: #D8C19F;
|
||||||
|
}
|
||||||
#SurnameDetail h3 {
|
#SurnameDetail h3 {
|
||||||
border-bottom-width: 0px;
|
border-bottom-width: 0px;
|
||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Individuals
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#parents table.infolist tbody tr:hover,
|
||||||
|
table.IndividualList tbody tr:hover,
|
||||||
|
table.IndividualList tr:hover td.ColumnSurname {
|
||||||
|
background-color: #D8C19F;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Places
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Places table.infolist tbody tr:hover,
|
||||||
|
#Places table.infolist tr:hover td.ColumnName {
|
||||||
|
background-color: #D8C19F;
|
||||||
|
}
|
||||||
/* Events
|
/* Events
|
||||||
-----------------------------------------------------------------*/
|
-----------------------------------------------------------------*/
|
||||||
#EventList tr.BeginType td {
|
#EventList tr.BeginType td {
|
||||||
@ -399,6 +431,10 @@ table#SortByCount thead th.ColumnQuantity a:after {
|
|||||||
#EventList td.ColumnPerson a {
|
#EventList td.ColumnPerson a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
#EventList table.infolist tbody tr:hover,
|
||||||
|
#EventList table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #D8C19F;
|
||||||
|
}
|
||||||
/* Family events, put mother on next line */
|
/* Family events, put mother on next line */
|
||||||
#EventList td.ColumnPerson span.father,
|
#EventList td.ColumnPerson span.father,
|
||||||
#EventList td.ColumnPerson span.mother,
|
#EventList td.ColumnPerson span.mother,
|
||||||
@ -422,9 +458,57 @@ table#SortByCount thead th.ColumnQuantity a:after {
|
|||||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
#attributes table.infolist td.ColumnType {
|
||||||
table.eventlist tbody tr td.ColumnSources {
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnValue {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnSources {
|
||||||
width: 5%;
|
width: 5%;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#WebLinks table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#events table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist th.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
#families table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td:first-child,
|
||||||
|
#families table.eventlist thead tr th:first-child {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td.ColumnDate,
|
||||||
|
#families table.eventlist tbody tr td.ColumnNotes {
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnEvent {
|
||||||
|
padding-right: 0px;
|
||||||
|
width: 8%;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnSources {
|
||||||
|
width: 5%;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnDate {
|
||||||
|
padding-right: 0px;
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnEvent,
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnDate,
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Gallery
|
/* Gallery
|
||||||
@ -485,6 +569,10 @@ table.eventlist tbody tr td.ColumnSources {
|
|||||||
div#SourceDetail {
|
div#SourceDetail {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
#Sources table.infolist tbody tr:hover,
|
||||||
|
#Sources table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color: #D8C19F;
|
||||||
|
}
|
||||||
|
|
||||||
/* Contact
|
/* Contact
|
||||||
-----------------------------------------------------------------*/
|
-----------------------------------------------------------------*/
|
||||||
@ -551,6 +639,10 @@ div#SourceDetail {
|
|||||||
|
|
||||||
/* SubSection : Families
|
/* SubSection : Families
|
||||||
-----------------------------------------------------------------*/
|
-----------------------------------------------------------------*/
|
||||||
|
#families table.infolist td.ColumnValue.Child table.infolist tbody tr:hover,
|
||||||
|
table.relationships tr:hover td {
|
||||||
|
background-color: #D8C19F;
|
||||||
|
}
|
||||||
div#families table.fixed_subtables table.eventlist {
|
div#families table.fixed_subtables table.eventlist {
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
@ -569,9 +661,6 @@ div#families .infolist h4 {
|
|||||||
#gallery {
|
#gallery {
|
||||||
background-color: green;
|
background-color: green;
|
||||||
}
|
}
|
||||||
#indivgallery {
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
#gallery .gallerycell {
|
#gallery .gallerycell {
|
||||||
float: left;
|
float: left;
|
||||||
width: 130px;
|
width: 130px;
|
||||||
@ -596,7 +685,6 @@ div#families .infolist h4 {
|
|||||||
font-size: smaller;
|
font-size: smaller;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 0.5em;
|
margin: 0.5em;
|
||||||
background-color: white;
|
|
||||||
}
|
}
|
||||||
#indivgallery img {
|
#indivgallery img {
|
||||||
border: solid 1px #7D5925;
|
border: solid 1px #7D5925;
|
||||||
@ -607,7 +695,6 @@ div#families .infolist h4 {
|
|||||||
}
|
}
|
||||||
#gallery div.indexno {
|
#gallery div.indexno {
|
||||||
float: right;
|
float: right;
|
||||||
width: 1.8em;
|
|
||||||
font-size: large;
|
font-size: large;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #CCC;
|
background-color: #CCC;
|
||||||
@ -649,11 +736,21 @@ h4 + div.grampsstylednote, a.familymap {
|
|||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
i.NoteType {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
i + div.grampsstylednote p {
|
i + div.grampsstylednote p {
|
||||||
margin: 0 0 0.3em 0;
|
margin: 0 0 0.3em 0;
|
||||||
}
|
}
|
||||||
div.grampsstylednote p {
|
div.grampsstylednote p {
|
||||||
margin-bottom: 0.5em;
|
padding-bottom: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Subsection : References
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#references ol {
|
||||||
|
margin-left: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SubSection : Source References
|
/* SubSection : Source References
|
||||||
@ -721,16 +818,22 @@ div.grampsstylednote p {
|
|||||||
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6;
|
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updates
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Updates table.list td.date {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Overwritten
|
/* Overwritten
|
||||||
-----------------------------------------------------------------*/
|
-----------------------------------------------------------------*/
|
||||||
button#drop {
|
button#drop {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
color: #FFF2C6;
|
color: #FFF2C6;
|
||||||
background: url(../images/Web_Mainz_Bkgd.png) #7D5925 repeat;
|
background: url(../images/Web_Mainz_Bkgd.png) #7D5925 repeat;
|
||||||
border: outset 3px black ! important;
|
border: outset 3px black !important;
|
||||||
}
|
}
|
||||||
div#map_canvas {
|
div#map_canvas {
|
||||||
border-color: #7D5925 ! important;
|
border-color: #7D5925 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar Styles
|
/* Calendar Styles
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
/*
|
/*
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
Copyright Holder and License
|
Copyright Holder and License
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Nebraska Default Stylesheet
|
Style Name: Nebraska Default Stylesheet
|
||||||
Style Author: Jason M. Simanek (2008)
|
Style Author: Jason M. Simanek (2008)
|
||||||
|
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||||
genealogy program, and a wiki open to all. It is a community project, created,
|
genealogy program, and a wiki open to all. It is a community project, created,
|
||||||
developed and governed by genealogists.
|
developed and governed by genealogists.
|
||||||
|
|
||||||
Go to <http://gramps-project.org/> to learn more!
|
Go to <http://gramps-project.org/> to learn more!
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright 2008 Jason M. Simanek
|
Copyright 2008 Jason M. Simanek
|
||||||
Copyright 2009 Stephane Charette
|
Copyright 2009 Stephane Charette
|
||||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||||
@ -34,10 +34,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
You should have received a copy of the GNU General Public License along with
|
||||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Color Palette
|
Color Palette
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
brown darkest #453619
|
brown darkest #453619
|
||||||
brown dark #542
|
brown dark #542
|
||||||
brown #A97
|
brown #A97
|
||||||
@ -45,14 +45,14 @@ brown light #C1B398
|
|||||||
brown lightest #F6F2EE
|
brown lightest #F6F2EE
|
||||||
gray #696969
|
gray #696969
|
||||||
green #5D835F
|
green #5D835F
|
||||||
--------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
--------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
General Elements
|
General Elements
|
||||||
----------------------------------------------------- */
|
---------------------------------------------------------------------------- */
|
||||||
|
|
||||||
body {
|
body {
|
||||||
color:#000;
|
color:#000;
|
||||||
@ -172,7 +172,7 @@ p#description {
|
|||||||
background-color:#FFF;
|
background-color:#FFF;
|
||||||
}
|
}
|
||||||
p a {
|
p a {
|
||||||
color:#FFF;
|
color:#542;
|
||||||
text-decoration:underline;
|
text-decoration:underline;
|
||||||
}
|
}
|
||||||
sup {
|
sup {
|
||||||
@ -284,7 +284,7 @@ div#subnavigation ul li.CurrentSection a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Responsive navigation */
|
/* Responsive navigation */
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
display: none;
|
display: none;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
}
|
}
|
||||||
@ -332,12 +332,14 @@ div#nav::after {
|
|||||||
.nav li {display: none;}
|
.nav li {display: none;}
|
||||||
.nav ul {display: none;}
|
.nav ul {display: none;}
|
||||||
|
|
||||||
a.navIcon {
|
button.navIcon {
|
||||||
font-size:1.3em;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
|
||||||
float: left;
|
float: left;
|
||||||
color: #FFF;
|
font-size:2.9em;
|
||||||
|
line-height: 70px;
|
||||||
|
border: 0px;
|
||||||
|
background-color: #542;
|
||||||
|
color: #FFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||||
@ -456,6 +458,20 @@ table.surnamelist tr th a, table.surnamelist tr th a:visited {
|
|||||||
table.surnamelist tr th:hover {
|
table.surnamelist tr th:hover {
|
||||||
background-color:#C1B398;
|
background-color:#C1B398;
|
||||||
}
|
}
|
||||||
|
table#SortByName tr:hover td.ColumnSurname,
|
||||||
|
table#SortByCount tr:hover td.ColumnQuantity {
|
||||||
|
background-color:#C1B398;
|
||||||
|
}
|
||||||
|
table#SortByName tr:hover,
|
||||||
|
table#SortByCount tr:hover,
|
||||||
|
table#SortByName tr:hover td.ColumnQuantity,
|
||||||
|
table#SortByCount tr:hover td.ColumnSurname {
|
||||||
|
background-color:#C1B398;
|
||||||
|
}
|
||||||
|
table.surname tr:hover,
|
||||||
|
table.surname tr:hover td.ColumnName {
|
||||||
|
background-color:#C1B398;
|
||||||
|
}
|
||||||
table.surnamelist thead tr th.ColumnLetter {
|
table.surnamelist thead tr th.ColumnLetter {
|
||||||
padding-left:20px;
|
padding-left:20px;
|
||||||
padding-right:10px;
|
padding-right:10px;
|
||||||
@ -511,6 +527,11 @@ table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents
|
|||||||
|
|
||||||
/* Individuals
|
/* Individuals
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#parents table.infolist tr:hover,
|
||||||
|
table.IndividualList tr:hover,
|
||||||
|
table.IndividualList tr:hover td.ColumnSurname {
|
||||||
|
background-color:#C1B398;
|
||||||
|
}
|
||||||
#Individuals { }
|
#Individuals { }
|
||||||
#Individuals table.IndividualList {
|
#Individuals table.IndividualList {
|
||||||
border-bottom:solid 1px #A97;
|
border-bottom:solid 1px #A97;
|
||||||
@ -554,6 +575,7 @@ table.IndividualList tbody tr td.ColumnName a:hover {
|
|||||||
#IndividualDetail div table.infolist tr td {
|
#IndividualDetail div table.infolist tr td {
|
||||||
font:normal .9em/1.2em sans-serif;
|
font:normal .9em/1.2em sans-serif;
|
||||||
vertical-align:top;
|
vertical-align:top;
|
||||||
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
#IndividualDetail div table.infolist tr td a {
|
#IndividualDetail div table.infolist tr td a {
|
||||||
display:inline;
|
display:inline;
|
||||||
@ -566,6 +588,7 @@ table.IndividualList tbody tr td.ColumnName a:hover {
|
|||||||
color:#696969;
|
color:#696969;
|
||||||
}
|
}
|
||||||
#IndividualDetail div.subsection table tr td:first-child {
|
#IndividualDetail div.subsection table tr td:first-child {
|
||||||
|
color:#696969;
|
||||||
padding-left:20px;
|
padding-left:20px;
|
||||||
}
|
}
|
||||||
#familymap a.familymap {
|
#familymap a.familymap {
|
||||||
@ -603,6 +626,10 @@ table.attrlist tbody tr td.ColumnSources {
|
|||||||
|
|
||||||
/* Sources
|
/* Sources
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#Sources table.infolist tr:hover,
|
||||||
|
#Sources table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color:#C1B398;
|
||||||
|
}
|
||||||
#Sources { }
|
#Sources { }
|
||||||
#Sources table.infolist tbody tr td.ColumnRowLabel {
|
#Sources table.infolist tbody tr td.ColumnRowLabel {
|
||||||
padding-bottom:0;
|
padding-bottom:0;
|
||||||
@ -651,6 +678,10 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
|||||||
#Places table.infolist tbody tr td.ColumnName {
|
#Places table.infolist tbody tr td.ColumnName {
|
||||||
padding:0;
|
padding:0;
|
||||||
}
|
}
|
||||||
|
#Places table.infolist tr:hover,
|
||||||
|
#Places table.infolist tr:hover td.ColumnName {
|
||||||
|
background-color:#C1B398;
|
||||||
|
}
|
||||||
#Places table.infolist tbody tr td.ColumnName a {
|
#Places table.infolist tbody tr td.ColumnName a {
|
||||||
padding:.1em 10px .3em 10px;
|
padding:.1em 10px .3em 10px;
|
||||||
}
|
}
|
||||||
@ -670,7 +701,11 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
|||||||
#EventDetail table.infolist tr td a {
|
#EventDetail table.infolist tr td a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
#EventList table.infolist tr td span.father,
|
#EventList table.infolist tr:hover,
|
||||||
|
#EventList table.infolist tr:hover td.ColumnType {
|
||||||
|
background-color:#C1B398;
|
||||||
|
}
|
||||||
|
#EventList table.infolist tr td span.father,
|
||||||
#EventList table.infolist tr td span.mother,
|
#EventList table.infolist tr td span.mother,
|
||||||
#EventDetail table.infolist tr td span.father,
|
#EventDetail table.infolist tr td span.father,
|
||||||
#EventDetail table.infolist tr td span.mother {
|
#EventDetail table.infolist tr td span.mother {
|
||||||
@ -692,10 +727,27 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
|||||||
#EventDetail table.infolist tr td span.mother:last-child:after {
|
#EventDetail table.infolist tr td span.mother:last-child:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
#IndividualDetail div table.eventlist tbody tr td:first-child,
|
||||||
table.eventlist tbody tr td.ColumnSources {
|
#IndividualDetail div table.eventlist thead tr th:first-child {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist tbody tr td.ColumnSources {
|
||||||
|
padding-left: 5px;
|
||||||
width: 5%;
|
width: 5%;
|
||||||
}
|
}
|
||||||
|
#IndividualDetail div table.eventlist tbody tr td.ColumnEvent {
|
||||||
|
padding-right: 0px;
|
||||||
|
width: 8%;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist tbody tr td.ColumnDate {
|
||||||
|
padding-left: 10px;
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnEvent,
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnDate,
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
/* Gallery
|
/* Gallery
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -847,9 +899,9 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
|||||||
text-decoration:underline;
|
text-decoration:underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Download
|
/* Download
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#Download {
|
#Download {
|
||||||
padding:1cm;
|
padding:1cm;
|
||||||
height:396px;
|
height:396px;
|
||||||
}
|
}
|
||||||
@ -869,7 +921,7 @@ table.download thead tr th {
|
|||||||
table.download tbody tr#Row02 {
|
table.download tbody tr#Row02 {
|
||||||
border-bottom:solid 2px #000;
|
border-bottom:solid 2px #000;
|
||||||
}
|
}
|
||||||
table.download thead tr th, table.download tbody tr td {
|
table.download thead tr th, table.download tbody tr td {
|
||||||
padding-left:10px;
|
padding-left:10px;
|
||||||
padding-top:20px;
|
padding-top:20px;
|
||||||
border-style:solid;
|
border-style:solid;
|
||||||
@ -972,9 +1024,6 @@ div#events h4 {
|
|||||||
padding-bottom:4px;
|
padding-bottom:4px;
|
||||||
background-color:#A97;
|
background-color:#A97;
|
||||||
}
|
}
|
||||||
#IndividualDetail div#events table.infolist thead tr th:first-child {
|
|
||||||
padding-left:20px;
|
|
||||||
}
|
|
||||||
#IndividualDetail div#events table.infolist tbody tr td {
|
#IndividualDetail div#events table.infolist tbody tr td {
|
||||||
padding-top:.4em;
|
padding-top:.4em;
|
||||||
padding-bottom:.8em;
|
padding-bottom:.8em;
|
||||||
@ -990,6 +1039,51 @@ table.infolist tbody tr td.ColumnValue p {
|
|||||||
color:#696969;
|
color:#696969;
|
||||||
margin:.2em 0 0 2em;
|
margin:.2em 0 0 2em;
|
||||||
}
|
}
|
||||||
|
#attributes table.infolist td.ColumnType {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnValue {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#attributes table.infolist td.ColumnSources {
|
||||||
|
width: 5%;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#WebLinks table.weblinks tbody tr td:first-child {
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
|
#WebLinks table.weblinks td.ColumnType,
|
||||||
|
#WebLinks table.weblinks td.ColumnDescription {
|
||||||
|
}
|
||||||
|
#events table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist th.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#families table.eventlist td.ColumnEvent,
|
||||||
|
#families table.eventlist td.ColumnDate,
|
||||||
|
#families table.eventlist td.ColumnPlace,
|
||||||
|
#families table.eventlist td.ColumnDescription,
|
||||||
|
#families table.eventlist td.ColumnSources {
|
||||||
|
padding-top:.4em;
|
||||||
|
padding-bottom:.8em;
|
||||||
|
}
|
||||||
|
#families table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
#families table.eventlist td.ColumnNotes {
|
||||||
|
font:normal 1.1em/1.4em sans-serif;
|
||||||
|
}
|
||||||
|
#families table.eventlist tbody tr td:first-child,
|
||||||
|
#families table.eventlist thead tr th:first-child {
|
||||||
|
width: 10%;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Subsections : Attributes
|
/* Subsections : Attributes
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -1012,10 +1106,15 @@ div#parents table.infolist tbody tr td.ColumnValue ol li {
|
|||||||
|
|
||||||
/* Subsections : Families
|
/* Subsections : Families
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||||
|
table.relationships tr:hover {
|
||||||
|
background-color:#C1B398;
|
||||||
|
}
|
||||||
div#families table.infolist {
|
div#families table.infolist {
|
||||||
margin-top:.5em;
|
margin-top:.5em;
|
||||||
}
|
}
|
||||||
div#families table.infolist tbody tr td.ColumnValue p {
|
div#families table.infolist tbody tr td.ColumnValue p {
|
||||||
|
margin-left:0;
|
||||||
margin-top:0;
|
margin-top:0;
|
||||||
}
|
}
|
||||||
div#families table.infolist tbody tr td.ColumnValue ol {
|
div#families table.infolist tbody tr td.ColumnValue ol {
|
||||||
@ -1063,9 +1162,6 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
|||||||
#gallery {
|
#gallery {
|
||||||
background-color: green;
|
background-color: green;
|
||||||
}
|
}
|
||||||
#indivgallery {
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
#gallery .gallerycell {
|
#gallery .gallerycell {
|
||||||
float: left;
|
float: left;
|
||||||
width: 130px;
|
width: 130px;
|
||||||
@ -1088,11 +1184,10 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
|||||||
float:left;
|
float:left;
|
||||||
width:130px;
|
width:130px;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
background-color: white;
|
background-color: #F6F2EE;
|
||||||
}
|
}
|
||||||
#gallery div.indexno {
|
#gallery div.indexno {
|
||||||
float: right;
|
float: right;
|
||||||
width: 1.8em;
|
|
||||||
font-size: large;
|
font-size: large;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #CCC;
|
background-color: #CCC;
|
||||||
@ -1155,16 +1250,26 @@ div.snapshot div.thumbnail {
|
|||||||
div.narrative {
|
div.narrative {
|
||||||
padding-bottom:0;
|
padding-bottom:0;
|
||||||
}
|
}
|
||||||
|
i.NoteType {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
i + div.grampsstylednote p {
|
i + div.grampsstylednote p {
|
||||||
margin: 0.1em 0 0.2em 0;
|
margin: 0.1em 0 0.2em 0;
|
||||||
}
|
}
|
||||||
|
div.grampsstylednote p {
|
||||||
|
padding-bottom: 0.6em;
|
||||||
|
}
|
||||||
.narrative p {
|
.narrative p {
|
||||||
margin: 0.1em 0 0.2em 0;
|
margin: 0.1em 0 0.2em 0;
|
||||||
font:normal .9em/1.4em sans-serif;
|
font:normal .9em/1.4em sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsections : References
|
/* Subsection : References
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
#references ol {
|
||||||
|
margin-left: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
/* Subsections : Source References
|
/* Subsections : Source References
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -1306,6 +1411,12 @@ div#pedigree {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updates
|
||||||
|
----------------------------------------------------- */
|
||||||
|
#Updates table.list td.date {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Calendar Styles
|
/* Calendar Styles
|
||||||
-------------------------------------------------------------------------------------------- */
|
-------------------------------------------------------------------------------------------- */
|
||||||
/* Calendar : General */
|
/* Calendar : General */
|
||||||
@ -1343,12 +1454,12 @@ body#WebCal {
|
|||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
height: 2em;
|
height: 2em;
|
||||||
}
|
}
|
||||||
.calendar thead tr th.weekend,
|
.calendar thead tr th.weekend,
|
||||||
.calendar thead tr th.weekday {
|
.calendar thead tr th.weekday {
|
||||||
color:#542;
|
color:#542;
|
||||||
background-color:#A97;
|
background-color:#A97;
|
||||||
}
|
}
|
||||||
.calendar thead tr th.saturday,
|
.calendar thead tr th.saturday,
|
||||||
.calendar thead tr th.sunday { }
|
.calendar thead tr th.sunday { }
|
||||||
.calendar tfoot tr td {
|
.calendar tfoot tr td {
|
||||||
padding:.7em 5% 1em 5%;
|
padding:.7em 5% 1em 5%;
|
||||||
@ -1434,9 +1545,9 @@ body#WebCal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar : Previous-Next Month */
|
/* Calendar : Previous-Next Month */
|
||||||
.calendar tbody tr td.previous,
|
.calendar tbody tr td.previous,
|
||||||
.calendar tbody tr td.next,
|
.calendar tbody tr td.next,
|
||||||
.calendar tbody tr td.previous div.date,
|
.calendar tbody tr td.previous div.date,
|
||||||
.calendar tbody tr td.next div.date {
|
.calendar tbody tr td.next div.date {
|
||||||
color:#A97;
|
color:#A97;
|
||||||
background-color:#F6F2EE;
|
background-color:#F6F2EE;
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
/*
|
/*
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
Copyright Holder and License
|
Copyright Holder and License
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Print Style Sheet
|
Style Name: Print Style Sheet
|
||||||
Style Author: Jason M. Simanek (2008)
|
Style Author: Jason M. Simanek (2008)
|
||||||
Modified by Rob G. Healey, July 2008
|
Modified by Rob G. Healey, July 2008
|
||||||
|
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||||
genealogy program, and a wiki open to all. It is a community project, created,
|
genealogy program, and a wiki open to all. It is a community project, created,
|
||||||
developed and governed by genealogists.
|
developed and governed by genealogists.
|
||||||
|
|
||||||
'Go to <http://gramps-project.org/> to learn more!
|
'Go to <http://gramps-project.org/> to learn more!
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||||
|
|
||||||
This file is part of the GRAMPS program.
|
This file is part of the GRAMPS program.
|
||||||
@ -31,21 +31,21 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
You should have received a copy of the GNU General Public License along with
|
||||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Color Palette
|
Color Palette
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
gray #A7A7A7
|
gray #A7A7A7
|
||||||
red #520
|
red #520
|
||||||
black #000
|
black #000
|
||||||
white #FFF
|
white #FFF
|
||||||
---------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
--------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
General Elements
|
General Elements
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
|
||||||
body {
|
body {
|
||||||
@ -419,7 +419,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
|||||||
width: 90%;
|
width: 90%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Contact
|
/* Contact
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#researcher {
|
#researcher {
|
||||||
margin:16pt 0 0 0;
|
margin:16pt 0 0 0;
|
||||||
@ -456,13 +456,13 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
|||||||
clear:left;
|
clear:left;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsections
|
/* Subsections
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#Home, #Introduction, #Download, #Contact {
|
#Home, #Introduction, #Download, #Contact {
|
||||||
padding:3em 20px;
|
padding:3em 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsections : Events
|
/* Subsections : Events
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#IndividualDetail .ColumnValue {
|
#IndividualDetail .ColumnValue {
|
||||||
padding:4pt 0;
|
padding:4pt 0;
|
||||||
@ -472,7 +472,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
|||||||
margin:1pt 0 0 18pt;
|
margin:1pt 0 0 18pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsections : Gallery
|
/* Subsections : Gallery
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#indivgallery h4 {
|
#indivgallery h4 {
|
||||||
margin-bottom:1em;
|
margin-bottom:1em;
|
||||||
@ -532,7 +532,7 @@ table.attrlist tbody tr td.ColumnSources {
|
|||||||
width: 10%;
|
width: 10%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsections : Pedigree
|
/* Subsections : Pedigree
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#pedigree a {
|
#pedigree a {
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
@ -574,7 +574,7 @@ table.attrlist tbody tr td.ColumnSources {
|
|||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subsections : Ancestors Tree
|
/* Subsections : Ancestors Tree
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#tree {
|
#tree {
|
||||||
page-break-before:always;
|
page-break-before:always;
|
||||||
@ -674,7 +674,7 @@ p#createdate {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar Styles
|
/* Calendar Styles
|
||||||
-------------------------------------------------------------------------------------------- */
|
-------------------------------------------------------------------------------------------- */
|
||||||
/* Calendar : General */
|
/* Calendar : General */
|
||||||
body#WebCal h1#SiteTitle {
|
body#WebCal h1#SiteTitle {
|
||||||
@ -791,9 +791,9 @@ body#WebCal a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar : Previous-Next Month */
|
/* Calendar : Previous-Next Month */
|
||||||
.calendar tbody tr td.previous,
|
.calendar tbody tr td.previous,
|
||||||
.calendar tbody tr td.next,
|
.calendar tbody tr td.next,
|
||||||
.calendar tbody tr td.previous div.date,
|
.calendar tbody tr td.previous div.date,
|
||||||
.calendar tbody tr td.next div.date {
|
.calendar tbody tr td.next div.date {
|
||||||
font-weight:normal;
|
font-weight:normal;
|
||||||
font-size:12pt;
|
font-size:12pt;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# the Free Software Foundation; either version 2 of the License, or
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
@ -20,17 +20,18 @@
|
|||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
#
|
#
|
||||||
|
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Web_Navigation-Vertical.css Stylesheet
|
Style Name: Web_Navigation-Vertical.css Stylesheet
|
||||||
***************************************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
# $Id: Web_Navigation-Vertical.css 15241 2010-04-19 11:07:00Z robhealey1 $
|
# $Id: Web_Navigation-Vertical.css 15241 2010-04-19 11:07:00Z robhealey1 $
|
||||||
|
|
||||||
Body Element
|
Body Element
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
body { background: -webkit-gradient
|
body {
|
||||||
(linear, left top, left bottom, from(#ccc), to(#fff));
|
background: -webkit-gradient (linear, left top, left bottom,
|
||||||
|
from(#ccc), to(#fff));
|
||||||
color: #000;
|
color: #000;
|
||||||
padding: 60px 0px 0px 146px;
|
padding: 60px 0px 0px 146px;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# the Free Software Foundation; either version 2 of the License, or
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
@ -20,15 +20,15 @@
|
|||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
#
|
#
|
||||||
|
|
||||||
**************************************************************************************************
|
*******************************************************************************
|
||||||
GRAMPS Cascading Style Sheet
|
GRAMPS Cascading Style Sheet
|
||||||
Style Name: Visually Impaired Stylesheet
|
Style Name: Visually Impaired Stylesheet
|
||||||
Style Author: Jason M. Simanek (2008)
|
Style Author: Jason M. Simanek (2008)
|
||||||
***************************************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Color Palette
|
Color Palette
|
||||||
--------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
brown dark #453619, #542
|
brown dark #453619, #542
|
||||||
brown light #C1B398
|
brown light #C1B398
|
||||||
gray #696969
|
gray #696969
|
||||||
@ -47,7 +47,7 @@ Females Web_Gender_Female.png
|
|||||||
|
|
||||||
|
|
||||||
NarrativeWeb Styles
|
NarrativeWeb Styles
|
||||||
-------------------------------------------------------------------------------------------- */
|
---------------------------------------------------------------------------- */
|
||||||
div#alphabet ul li {
|
div#alphabet ul li {
|
||||||
background-color: #6AF364;
|
background-color: #6AF364;
|
||||||
}
|
}
|
||||||
@ -96,8 +96,6 @@ img {
|
|||||||
background:none;
|
background:none;
|
||||||
}
|
}
|
||||||
.content {
|
.content {
|
||||||
overflow: auto;
|
|
||||||
width:965px;
|
|
||||||
margin:0 auto;
|
margin:0 auto;
|
||||||
padding-bottom: .2em;
|
padding-bottom: .2em;
|
||||||
}
|
}
|
||||||
@ -349,7 +347,7 @@ table.infolist tbody tr td.ColumnPartner a {
|
|||||||
table.infolist tbody tr td.ColumnParents {
|
table.infolist tbody tr td.ColumnParents {
|
||||||
font-size:.9em;
|
font-size:.9em;
|
||||||
}
|
}
|
||||||
table.infolist tbody tr td.ColumnParents span.father,
|
table.infolist tbody tr td.ColumnParents span.father,
|
||||||
table.infolist tbody tr td.ColumnParents span.mother {
|
table.infolist tbody tr td.ColumnParents span.mother {
|
||||||
display:block;
|
display:block;
|
||||||
}
|
}
|
||||||
@ -366,7 +364,7 @@ table.infolist tbody tr td.ColumnParents span.mother:before {
|
|||||||
#SurnameDetail p#description {
|
#SurnameDetail p#description {
|
||||||
padding-top:0;
|
padding-top:0;
|
||||||
}
|
}
|
||||||
table.surnamelist thead tr th.ColumnSurname,
|
table.surnamelist thead tr th.ColumnSurname,
|
||||||
#Surnames table.surnamelist tbody tr td.ColumnSurname {
|
#Surnames table.surnamelist tbody tr td.ColumnSurname {
|
||||||
width:50%;
|
width:50%;
|
||||||
}
|
}
|
||||||
@ -391,11 +389,11 @@ table.surnamelist tbody tr td.ColumnLetter a {
|
|||||||
table.surnamelist tbody tr td.ColumnSurname {
|
table.surnamelist tbody tr td.ColumnSurname {
|
||||||
background-color: #FFF;
|
background-color: #FFF;
|
||||||
}
|
}
|
||||||
table#SortByName thead tr th.ColumnSurname,
|
table#SortByName thead tr th.ColumnSurname,
|
||||||
table#SortByCount thead tr th.ColumnQuantity {
|
table#SortByCount thead tr th.ColumnQuantity {
|
||||||
background-color: #C1B398;
|
background-color: #C1B398;
|
||||||
}
|
}
|
||||||
table#SortByName thead tr th.ColumnSurname a:after,
|
table#SortByName thead tr th.ColumnSurname a:after,
|
||||||
table#SortByCount thead tr th.ColumnQuantity a:after {
|
table#SortByCount thead tr th.ColumnQuantity a:after {
|
||||||
content:" ↓";
|
content:" ↓";
|
||||||
}
|
}
|
||||||
@ -443,7 +441,7 @@ table.surname tbody tr td.ColumnPartner a {
|
|||||||
display:block;
|
display:block;
|
||||||
padding:.6em 10px .6em 0px;
|
padding:.6em 10px .6em 0px;
|
||||||
}
|
}
|
||||||
table.surname thead tr th.ColumnParents,
|
table.surname thead tr th.ColumnParents,
|
||||||
table.surname tbody tr td.ColumnParents {
|
table.surname tbody tr td.ColumnParents {
|
||||||
width:25%;
|
width:25%;
|
||||||
}
|
}
|
||||||
@ -465,7 +463,7 @@ div#Individuals table.IndividualList tbody tr td a {
|
|||||||
display: block;
|
display: block;
|
||||||
padding: .6em 10px;
|
padding: .6em 10px;
|
||||||
}
|
}
|
||||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
|
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
|
||||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
|
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
|
||||||
cursor:default;
|
cursor:default;
|
||||||
color: #000;
|
color: #000;
|
||||||
@ -666,7 +664,7 @@ div#EventList table.alphaevent tbody tr td.ColumnDate {
|
|||||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||||
width: 60%;
|
width: 60%;
|
||||||
}
|
}
|
||||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||||
display:block;
|
display:block;
|
||||||
}
|
}
|
||||||
@ -696,7 +694,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
|||||||
div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
||||||
background-color: #D8F3D6;
|
background-color: #D8F3D6;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Events
|
/* Events
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#EventList table.infolist tr.BeginType td {
|
#EventList table.infolist tr.BeginType td {
|
||||||
@ -709,7 +707,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
|||||||
#EventDetail table.infolist tr td a {
|
#EventDetail table.infolist tr td a {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
#EventList table.infolist tr td span.father,
|
#EventList table.infolist tr td span.father,
|
||||||
#EventList table.infolist tr td span.mother,
|
#EventList table.infolist tr td span.mother,
|
||||||
#EventDetail table.infolist tr td span.father,
|
#EventDetail table.infolist tr td span.father,
|
||||||
#EventDetail table.infolist tr td span.mother {
|
#EventDetail table.infolist tr td span.mother {
|
||||||
@ -731,6 +729,20 @@ div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
|||||||
#EventDetail table.infolist tr td span.mother:last-child:after {
|
#EventDetail table.infolist tr td span.mother:last-child:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnSources {
|
||||||
|
width: 5%;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnDate {
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnEvent {
|
||||||
|
width: 8%;
|
||||||
|
}
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnEvent,
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnDate,
|
||||||
|
#IndividualDetail div table.eventlist td.ColumnPlace {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
/* Gallery
|
/* Gallery
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
@ -899,7 +911,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
|||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Download
|
/* Download
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
div#Download {
|
div#Download {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@ -912,7 +924,7 @@ div#Download table.download {
|
|||||||
div#Download table.download tbody tr#Row02 {
|
div#Download table.download tbody tr#Row02 {
|
||||||
border-bottom: solid 1px #000;
|
border-bottom: solid 1px #000;
|
||||||
}
|
}
|
||||||
div#Download table.download tbody tr td {
|
div#Download table.download tbody tr td {
|
||||||
border: solid 1px #000;
|
border: solid 1px #000;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding: 5px 0px 5px 0px;
|
padding: 5px 0px 5px 0px;
|
||||||
@ -1197,6 +1209,7 @@ div#families table.infolist tbody tr td.ColumnValue {
|
|||||||
}
|
}
|
||||||
div#families table.infolist tbody tr td.ColumnValue p {
|
div#families table.infolist tbody tr td.ColumnValue p {
|
||||||
margin-top:0;
|
margin-top:0;
|
||||||
|
margin-left:0;
|
||||||
}
|
}
|
||||||
div#families table.infolist tbody tr td.ColumnValue ol {
|
div#families table.infolist tbody tr td.ColumnValue ol {
|
||||||
margin:0;
|
margin:0;
|
||||||
@ -1489,7 +1502,7 @@ body#WebCal {
|
|||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
height: 2em;
|
height: 2em;
|
||||||
}
|
}
|
||||||
.calendar thead tr th.weekend,
|
.calendar thead tr th.weekend,
|
||||||
.calendar thead tr th.weekday {
|
.calendar thead tr th.weekday {
|
||||||
font-style:italic;
|
font-style:italic;
|
||||||
color: #000;
|
color: #000;
|
||||||
@ -1581,9 +1594,9 @@ body#WebCal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Calendar : Previous-Next Month */
|
/* Calendar : Previous-Next Month */
|
||||||
.calendar tbody tr td.previous,
|
.calendar tbody tr td.previous,
|
||||||
.calendar tbody tr td.next,
|
.calendar tbody tr td.next,
|
||||||
.calendar tbody tr td.previous div.date,
|
.calendar tbody tr td.previous div.date,
|
||||||
.calendar tbody tr td.next div.date {
|
.calendar tbody tr td.next div.date {
|
||||||
color: #333;
|
color: #333;
|
||||||
background-color: #D8F3D6;
|
background-color: #D8F3D6;
|
||||||
|
@ -33,13 +33,14 @@ Unknown #000
|
|||||||
===== Web Graphics =====
|
===== Web Graphics =====
|
||||||
Males Web_Gender_Male.png
|
Males Web_Gender_Male.png
|
||||||
Females Web_Gender_Female.png
|
Females Web_Gender_Female.png
|
||||||
# -------------------------------------------------------------------------- #
|
# -------------------------------------------------------------------------- */
|
||||||
/* Subsections : Ancestors Tree -------------------------------------------- */
|
/* Subsections : Ancestors Tree -------------------------------------------- */
|
||||||
#tree {
|
#tree {
|
||||||
page-break-before:always;
|
page-break-before:always;
|
||||||
margin:0;
|
margin:0;
|
||||||
padding:0;
|
padding:0;
|
||||||
background:none;
|
background:none;
|
||||||
|
overflow-x:auto;
|
||||||
}
|
}
|
||||||
#treeContainer {
|
#treeContainer {
|
||||||
position:relative;
|
position:relative;
|
||||||
|
@ -64,13 +64,13 @@ div#FamilyMapDetail div#references table.infolist {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
div#FamilyMapDetail div#references table.infolist tbody tr td.ColumnPlace {
|
div#FamilyMapDetail div#references table.infolist tbody tr td.ColumnPlace {
|
||||||
width: 40%;
|
width: 70%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Subsection: popup
|
/* Subsection: popup
|
||||||
------------------------------------------------------ */
|
------------------------------------------------------ */
|
||||||
.ol-popup {
|
#map_canvas .ol-popup {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
-webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
|
-webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
|
||||||
@ -82,7 +82,7 @@ div#FamilyMapDetail div#references table.infolist tbody tr td.ColumnPlace {
|
|||||||
left: -50px;
|
left: -50px;
|
||||||
min-width: 450px;
|
min-width: 450px;
|
||||||
}
|
}
|
||||||
.ol-popup:after, .ol-popup:before {
|
#map_canvas .ol-popup:after, #map_canvas .ol-popup:before {
|
||||||
top: 100%;
|
top: 100%;
|
||||||
border: solid transparent;
|
border: solid transparent;
|
||||||
height: 0;
|
height: 0;
|
||||||
@ -90,24 +90,64 @@ div#FamilyMapDetail div#references table.infolist tbody tr td.ColumnPlace {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
.ol-popup:after {
|
#map_canvas .ol-popup:after {
|
||||||
border-top-color: white;
|
border-top-color: white;
|
||||||
border-width: 10px;
|
border-width: 10px;
|
||||||
left: 48px;
|
left: 48px;
|
||||||
margin-left: -10px;
|
margin-left: -10px;
|
||||||
}
|
}
|
||||||
.ol-popup:before {
|
#map_canvas .ol-popup:before {
|
||||||
border-top-color: #cccccc;
|
border-top-color: #cccccc;
|
||||||
border-width: 11px;
|
border-width: 11px;
|
||||||
left: 48px;
|
left: 48px;
|
||||||
margin-left: -11px;
|
margin-left: -11px;
|
||||||
}
|
}
|
||||||
.ol-popup-closer {
|
#map_canvas .ol-popup-closer {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
right: 8px;
|
right: 8px;
|
||||||
}
|
}
|
||||||
.ol-popup-closer:after {
|
#map_canvas .ol-popup-closer:after {
|
||||||
content: "✖";
|
content: "✖";
|
||||||
}
|
}
|
||||||
|
#popup-content {
|
||||||
|
max-height: 250px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
#map_canvas .ol-control {
|
||||||
|
position: absolute;
|
||||||
|
background-color: rgba(255,255,255,0.1);
|
||||||
|
bottom: .1em;
|
||||||
|
left: .1em;
|
||||||
|
height: 4%;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 1px;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
padding-left: 1px;
|
||||||
|
}
|
||||||
|
#map_canvas .ol-rotate {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#map_canvas .ol-zoom, #map_canvas .ol-zoom-in, #map_canvas .ol-zoom-out {
|
||||||
|
top: .5em;
|
||||||
|
left: .5em;
|
||||||
|
border-left-width: 1px;
|
||||||
|
padding-left: 1px;
|
||||||
|
padding-right: 1px;
|
||||||
|
}
|
||||||
|
#map_canvas .ol-attribution ul {
|
||||||
|
list-style-type: none;
|
||||||
|
font-size:0.8em;
|
||||||
|
float: left;
|
||||||
|
margin-top: 1px;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#map_canvas .ol-attribution li {
|
||||||
|
float: left;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
#map_canvas .ol-attribution button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
@ -60,6 +60,7 @@ import logging
|
|||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
from gramps.gen.lib import (FamilyRelType, NoteType, NameType, Person,
|
from gramps.gen.lib import (FamilyRelType, NoteType, NameType, Person,
|
||||||
UrlType, Name, PlaceType, EventRoleType,
|
UrlType, Name, PlaceType, EventRoleType,
|
||||||
|
Source, Attribute, Media, Repository, Event,
|
||||||
Family, Citation, Place, Date)
|
Family, Citation, Place, Date)
|
||||||
from gramps.gen.lib.date import Today
|
from gramps.gen.lib.date import Today
|
||||||
from gramps.gen.const import PROGRAM_NAME, URL_HOMEPAGE
|
from gramps.gen.const import PROGRAM_NAME, URL_HOMEPAGE
|
||||||
@ -130,6 +131,8 @@ class BasePage: # pylint: disable=C1001
|
|||||||
self.create_media = report.options['gallery']
|
self.create_media = report.options['gallery']
|
||||||
self.create_unused_media = report.options['unused']
|
self.create_unused_media = report.options['unused']
|
||||||
self.create_thumbs_only = report.options['create_thumbs_only']
|
self.create_thumbs_only = report.options['create_thumbs_only']
|
||||||
|
self.create_images_index = report.options['create_images_index']
|
||||||
|
self.create_thumbs_index = report.options['create_thumbs_index']
|
||||||
self.inc_families = report.options['inc_families']
|
self.inc_families = report.options['inc_families']
|
||||||
self.inc_events = report.options['inc_events']
|
self.inc_events = report.options['inc_events']
|
||||||
self.usecms = report.options['usecms']
|
self.usecms = report.options['usecms']
|
||||||
@ -351,10 +354,9 @@ class BasePage: # pylint: disable=C1001
|
|||||||
if family_events:
|
if family_events:
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
Html("td", " ", class_="ColumnType", inline=True),
|
Html("td", " ", class_="ColumnType", inline=True),
|
||||||
Html("td", " ", class_="ColumnAttribute", inline=True),
|
|
||||||
Html("td", self.format_family_events(family_events,
|
Html("td", self.format_family_events(family_events,
|
||||||
place_lat_long),
|
place_lat_long),
|
||||||
class_="ColumnValue")
|
class_="ColumnValue", colspan=2)
|
||||||
)
|
)
|
||||||
table = trow
|
table = trow
|
||||||
|
|
||||||
@ -377,13 +379,13 @@ class BasePage: # pylint: disable=C1001
|
|||||||
childlist = family.get_child_ref_list()
|
childlist = family.get_child_ref_list()
|
||||||
if childlist:
|
if childlist:
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
Html("td", " ", class_="ColumnType", inline=True),
|
|
||||||
Html("td", self._("Children"), class_="ColumnAttribute",
|
Html("td", self._("Children"), class_="ColumnAttribute",
|
||||||
inline=True)
|
inline=True)
|
||||||
)
|
)
|
||||||
table = table + trow if table is not None else trow
|
table = table + trow if table is not None else trow
|
||||||
|
|
||||||
tcell = Html("td", class_="ColumnValue", close=False)
|
tcell = Html("td", class_="ColumnValue Child", close=False,
|
||||||
|
colspan=2)
|
||||||
trow += tcell
|
trow += tcell
|
||||||
|
|
||||||
with Html("table", class_="infolist eventlist") as table2:
|
with Html("table", class_="infolist eventlist") as table2:
|
||||||
@ -517,7 +519,8 @@ class BasePage: # pylint: disable=C1001
|
|||||||
for (data, colclass) in [
|
for (data, colclass) in [
|
||||||
(str(attr.get_type()), "ColumnType"),
|
(str(attr.get_type()), "ColumnType"),
|
||||||
(attr.get_value(), "ColumnValue"),
|
(attr.get_value(), "ColumnValue"),
|
||||||
(self.dump_notes(attr.get_note_list()), "ColumnNotes"),
|
(self.dump_notes(attr.get_note_list(), Attribute),
|
||||||
|
"ColumnNotes"),
|
||||||
(self.get_citation_links(attr.get_citation_list()),
|
(self.get_citation_links(attr.get_citation_list()),
|
||||||
"ColumnSources")
|
"ColumnSources")
|
||||||
]
|
]
|
||||||
@ -610,7 +613,7 @@ class BasePage: # pylint: disable=C1001
|
|||||||
htmllist.extend(Html('p') + linelist)
|
htmllist.extend(Html('p') + linelist)
|
||||||
return htmllist
|
return htmllist
|
||||||
|
|
||||||
def dump_notes(self, notelist):
|
def dump_notes(self, notelist, parent=None):
|
||||||
"""
|
"""
|
||||||
dump out of list of notes with very little elements of its own
|
dump out of list of notes with very little elements of its own
|
||||||
|
|
||||||
@ -621,11 +624,24 @@ class BasePage: # pylint: disable=C1001
|
|||||||
|
|
||||||
# begin unordered list
|
# begin unordered list
|
||||||
notesection = Html("div")
|
notesection = Html("div")
|
||||||
|
idx = 0
|
||||||
for notehandle in notelist:
|
for notehandle in notelist:
|
||||||
this_note = self.r_db.get_note_from_handle(notehandle)
|
this_note = self.r_db.get_note_from_handle(notehandle)
|
||||||
|
title = self._(this_note.type.xml_str())
|
||||||
if this_note is not None:
|
if this_note is not None:
|
||||||
notesection.extend(Html("i", self._(this_note.type.xml_str()),
|
idx += 1
|
||||||
class_="NoteType"))
|
if len(notelist) > 1:
|
||||||
|
if self.default_note(parent, int(this_note.type)):
|
||||||
|
title_text = self._("Note: %s") % str(idx)
|
||||||
|
else:
|
||||||
|
title = " (" + title + ")"
|
||||||
|
title_text = self._("Note: %s") % str(idx) + title
|
||||||
|
else:
|
||||||
|
if self.default_note(parent, int(this_note.type)):
|
||||||
|
title_text = self._("Note")
|
||||||
|
else:
|
||||||
|
title_text = title
|
||||||
|
notesection.extend(Html("i", title_text, class_="NoteType"))
|
||||||
notesection.extend(self.get_note_format(this_note, True))
|
notesection.extend(self.get_note_format(this_note, True))
|
||||||
return notesection
|
return notesection
|
||||||
|
|
||||||
@ -682,7 +698,7 @@ class BasePage: # pylint: disable=C1001
|
|||||||
etype,
|
etype,
|
||||||
event_gid,
|
event_gid,
|
||||||
uplink) if hyperlink else etype
|
uplink) if hyperlink else etype
|
||||||
trow += Html("td", event_hyper, class_="ColumnEvent")
|
trow += Html("td", event_hyper, class_="ColumnEvent", rowspan=2)
|
||||||
|
|
||||||
# get event data
|
# get event data
|
||||||
event_data = self.get_event_data(event, event_ref, uplink)
|
event_data = self.get_event_data(event, event_ref, uplink)
|
||||||
@ -694,7 +710,6 @@ class BasePage: # pylint: disable=C1001
|
|||||||
)
|
)
|
||||||
|
|
||||||
trow2 = Html("tr")
|
trow2 = Html("tr")
|
||||||
trow2 += Html("td", "", class_="ColumnEvent")
|
|
||||||
# get event source references
|
# get event source references
|
||||||
srcrefs = self.get_citation_links(event.get_citation_list()) or " "
|
srcrefs = self.get_citation_links(event.get_citation_list()) or " "
|
||||||
trow += Html("td", srcrefs, class_="ColumnSources", rowspan=2)
|
trow += Html("td", srcrefs, class_="ColumnSources", rowspan=2)
|
||||||
@ -703,7 +718,7 @@ class BasePage: # pylint: disable=C1001
|
|||||||
notelist = event.get_note_list()[:] # we don't want to modify
|
notelist = event.get_note_list()[:] # we don't want to modify
|
||||||
# cached original
|
# cached original
|
||||||
notelist.extend(event_ref.get_note_list())
|
notelist.extend(event_ref.get_note_list())
|
||||||
htmllist = self.dump_notes(notelist)
|
htmllist = self.dump_notes(notelist, Event)
|
||||||
|
|
||||||
# if the event or event reference has an attribute attached to it,
|
# if the event or event reference has an attribute attached to it,
|
||||||
# get the text and format it correctly?
|
# get the text and format it correctly?
|
||||||
@ -720,7 +735,7 @@ class BasePage: # pylint: disable=C1001
|
|||||||
#also output notes attached to the attributes
|
#also output notes attached to the attributes
|
||||||
notelist = attr.get_note_list()
|
notelist = attr.get_note_list()
|
||||||
if notelist:
|
if notelist:
|
||||||
htmllist.extend(self.dump_notes(notelist))
|
htmllist.extend(self.dump_notes(notelist, Event))
|
||||||
|
|
||||||
trow2 += Html("td", htmllist, class_="ColumnNotes", colspan=3)
|
trow2 += Html("td", htmllist, class_="ColumnNotes", colspan=3)
|
||||||
|
|
||||||
@ -1387,9 +1402,9 @@ class BasePage: # pylint: disable=C1001
|
|||||||
del page[0]
|
del page[0]
|
||||||
|
|
||||||
# Header constants
|
# Header constants
|
||||||
_meta1 = 'name ="viewport" content="width=device-width; '
|
_meta1 = 'name ="viewport" content="width=device-width, '
|
||||||
_meta1 += 'height=device-height; initial-scale=1.0; '
|
_meta1 += 'height=device-height, initial-scale=1.0, '
|
||||||
_meta1 += 'minimum-scale=0.5; maximum-scale=10.0; user-scalable=yes"'
|
_meta1 += 'minimum-scale=0.5, maximum-scale=10.0, user-scalable=yes"'
|
||||||
_meta2 = 'name ="apple-mobile-web-app-capable" content="yes"'
|
_meta2 = 'name ="apple-mobile-web-app-capable" content="yes"'
|
||||||
_meta3 = 'name="generator" content="%s %s %s"' % (
|
_meta3 = 'name="generator" content="%s %s %s"' % (
|
||||||
PROGRAM_NAME, VERSION, URL_HOMEPAGE)
|
PROGRAM_NAME, VERSION, URL_HOMEPAGE)
|
||||||
@ -1417,13 +1432,21 @@ class BasePage: # pylint: disable=C1001
|
|||||||
|
|
||||||
# create stylesheet and favicon links
|
# create stylesheet and favicon links
|
||||||
links = Html("link", type="image/x-icon",
|
links = Html("link", type="image/x-icon",
|
||||||
href=url4, rel="shortcut icon") + (
|
href=url4, rel="shortcut icon")
|
||||||
Html("link", type="text/css", href=url3,
|
# attach the ancestortree style sheet if ancestor
|
||||||
media='print', rel="stylesheet", indent=False),
|
# graph is being created?
|
||||||
Html("link", type="text/css", href=url2,
|
if self.report.options["ancestortree"]:
|
||||||
media="screen", title=self._("Default"),
|
if self.usecms:
|
||||||
rel="stylesheet", indent=False),
|
fname = "/".join([self.target_uri, "css", "ancestortree.css"])
|
||||||
)
|
else:
|
||||||
|
fname = "/".join(["css", "ancestortree.css"])
|
||||||
|
url5 = self.report.build_url_fname(fname, None, self.uplink)
|
||||||
|
links += Html("link", type="text/css", href=url5,
|
||||||
|
media="screen", rel="stylesheet", indent=False)
|
||||||
|
links += Html("link", type="text/css", href=url3,
|
||||||
|
media='print', rel="stylesheet", indent=False)
|
||||||
|
links += Html("link", type="text/css", href=url2,
|
||||||
|
media="screen", rel="stylesheet", indent=False)
|
||||||
# create all alternate stylesheets
|
# create all alternate stylesheets
|
||||||
# Cannot use it on local files (file://)
|
# Cannot use it on local files (file://)
|
||||||
for css_f in CSS:
|
for css_f in CSS:
|
||||||
@ -1435,7 +1458,7 @@ class BasePage: # pylint: disable=C1001
|
|||||||
urlx = self.report.build_url_fname(fname, None,
|
urlx = self.report.build_url_fname(fname, None,
|
||||||
self.uplink)
|
self.uplink)
|
||||||
links += Html("link", rel="alternate stylesheet",
|
links += Html("link", rel="alternate stylesheet",
|
||||||
title=css_f, indent=False,
|
title=self._(css_f), indent=False,
|
||||||
media="screen", type="text/css",
|
media="screen", type="text/css",
|
||||||
href=urlx)
|
href=urlx)
|
||||||
|
|
||||||
@ -1463,13 +1486,11 @@ class BasePage: # pylint: disable=C1001
|
|||||||
body += outerwrapperdiv
|
body += outerwrapperdiv
|
||||||
|
|
||||||
# begin header section
|
# begin header section
|
||||||
#headerdiv = Html("div", id='header') + (
|
|
||||||
headerdiv = Html("div", id='header') + (
|
headerdiv = Html("div", id='header') + (
|
||||||
Html("<a href=\"javascript:void(0);\" class=\"navIcon\""
|
Html("<button href=\"javascript:void(0);\" class=\"navIcon\""
|
||||||
" onclick=\"navFunction()\">≡</a>")) + (
|
" onclick=\"navFunction()\">≡</button>"))
|
||||||
Html("h1", html_escape(self.title_str),
|
headerdiv += Html("h1", html_escape(self.title_str),
|
||||||
id="SiteTitle", inline=True)
|
id="SiteTitle", inline=True)
|
||||||
)
|
|
||||||
outerwrapperdiv += headerdiv
|
outerwrapperdiv += headerdiv
|
||||||
|
|
||||||
header_note = self.report.options['headernote']
|
header_note = self.report.options['headernote']
|
||||||
@ -1544,12 +1565,15 @@ class BasePage: # pylint: disable=C1001
|
|||||||
('places', self._("Places"), self.report.inc_places),
|
('places', self._("Places"), self.report.inc_places),
|
||||||
('sources', self._("Sources"), self.report.inc_sources),
|
('sources', self._("Sources"), self.report.inc_sources),
|
||||||
('repositories', self._("Repositories"), inc_repos),
|
('repositories', self._("Repositories"), inc_repos),
|
||||||
('media', self._("Media"), _create_media_link),
|
('media', self._("Media"), self.create_images_index and
|
||||||
('thumbnails', self._("Thumbnails"), self.create_media),
|
self.report.inc_gallery and not self.report.create_thumbs_only),
|
||||||
|
('thumbnails', self._("Thumbnails"), self.create_thumbs_index and
|
||||||
|
self.report.inc_gallery),
|
||||||
('download', self._("Download"), self.report.inc_download),
|
('download', self._("Download"), self.report.inc_download),
|
||||||
("addressbook", self._("Address Book"),
|
("addressbook", self._("Address Book"),
|
||||||
self.report.inc_addressbook),
|
self.report.inc_addressbook),
|
||||||
('contact', self._("Contact"), self.report.use_contact),
|
('contact', self._("Contact"), self.report.use_contact),
|
||||||
|
('updates', self._("Updates"), self.report.inc_updates),
|
||||||
('statistics', self._("Statistics"), self.report.inc_stats),
|
('statistics', self._("Statistics"), self.report.inc_stats),
|
||||||
(self.target_cal_uri, self._("Web Calendar"), self.usecal)
|
(self.target_cal_uri, self._("Web Calendar"), self.usecal)
|
||||||
]
|
]
|
||||||
@ -2009,10 +2033,12 @@ class BasePage: # pylint: disable=C1001
|
|||||||
|
|
||||||
# Begin hyperlink. Description is given only for
|
# Begin hyperlink. Description is given only for
|
||||||
# the purpose of the alt tag in img element
|
# the purpose of the alt tag in img element
|
||||||
snapshot += self.media_link(photo_handle, newpath,
|
if self.create_images_index:
|
||||||
descr,
|
snapshot += self.media_link(photo_handle,
|
||||||
uplink=self.uplink,
|
newpath,
|
||||||
usedescr=False)
|
descr,
|
||||||
|
uplink=self.uplink,
|
||||||
|
usedescr=False)
|
||||||
|
|
||||||
except (IOError, OSError) as msg:
|
except (IOError, OSError) as msg:
|
||||||
self.r_user.warn(_("Could not add photo to page"),
|
self.r_user.warn(_("Could not add photo to page"),
|
||||||
@ -2099,11 +2125,39 @@ class BasePage: # pylint: disable=C1001
|
|||||||
# return indivgallery division to its caller
|
# return indivgallery division to its caller
|
||||||
return section
|
return section
|
||||||
|
|
||||||
def display_note_list(self, notelist=None):
|
def default_note(self, parent, notetype):
|
||||||
|
"""
|
||||||
|
return true if the notetype is the same as the parent
|
||||||
|
|
||||||
|
@param: parent -- The object (Person, Family, Media,...)
|
||||||
|
@param: notetype -- The type for the current note
|
||||||
|
"""
|
||||||
|
if parent == Person and notetype == NoteType.PERSON:
|
||||||
|
return True
|
||||||
|
elif parent == Family and notetype == NoteType.FAMILY:
|
||||||
|
return True
|
||||||
|
elif parent == Media and notetype == NoteType.MEDIA:
|
||||||
|
return True
|
||||||
|
elif parent == Repository and notetype == NoteType.REPO:
|
||||||
|
return True
|
||||||
|
elif parent == Source and notetype == NoteType.SOURCE:
|
||||||
|
return True
|
||||||
|
elif parent == Event and notetype == NoteType.EVENT:
|
||||||
|
return True
|
||||||
|
elif parent == Place and notetype == NoteType.PLACE:
|
||||||
|
return True
|
||||||
|
elif parent == Citation and notetype == NoteType.CITATION:
|
||||||
|
return True
|
||||||
|
elif parent == Attribute and notetype == NoteType.ATTRIBUTE:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def display_note_list(self, notelist=None, parent=None):
|
||||||
"""
|
"""
|
||||||
Display note list
|
Display note list
|
||||||
|
|
||||||
@param: notelist -- The list of notes
|
@param: notelist -- The list of notes
|
||||||
|
@param: parent -- The parent associated to these notes
|
||||||
"""
|
"""
|
||||||
if not notelist:
|
if not notelist:
|
||||||
return None
|
return None
|
||||||
@ -2111,14 +2165,27 @@ class BasePage: # pylint: disable=C1001
|
|||||||
# begin narrative division
|
# begin narrative division
|
||||||
with Html("div", class_="subsection narrative") as section:
|
with Html("div", class_="subsection narrative") as section:
|
||||||
|
|
||||||
|
idx = 0
|
||||||
for notehandle in notelist:
|
for notehandle in notelist:
|
||||||
note = self.r_db.get_note_from_handle(notehandle)
|
note = self.r_db.get_note_from_handle(notehandle)
|
||||||
|
title = self._(note.type.xml_str())
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
note_text = self.get_note_format(note, True)
|
note_text = self.get_note_format(note, True)
|
||||||
|
idx += 1
|
||||||
|
if len(notelist) > 1:
|
||||||
|
if self.default_note(parent, int(note.type)):
|
||||||
|
title_text = self._("Note: %s") % str(idx)
|
||||||
|
else:
|
||||||
|
title = " (" + title + ")"
|
||||||
|
title_text = self._("Note: %s") % str(idx) + title
|
||||||
|
else:
|
||||||
|
if self.default_note(parent, int(note.type)):
|
||||||
|
title_text = self._("Note")
|
||||||
|
else:
|
||||||
|
title_text = title
|
||||||
# add section title
|
# add section title
|
||||||
section += Html("h4", self._("Narrative"), inline=True)
|
section += Html("h4", title_text, inline=True)
|
||||||
|
|
||||||
# attach note
|
# attach note
|
||||||
section += note_text
|
section += note_text
|
||||||
@ -2681,47 +2748,6 @@ class BasePage: # pylint: disable=C1001
|
|||||||
tbody += trow
|
tbody += trow
|
||||||
tbody += Html("tr") + Html("td", " ", colspan=2)
|
tbody += Html("tr") + Html("td", " ", colspan=2)
|
||||||
|
|
||||||
# encloses
|
|
||||||
with Html("div", class_='subsection encloses') as encloses:
|
|
||||||
tbody += encloses
|
|
||||||
encloses += Html("h4", self._("Place Encloses"), inline=True)
|
|
||||||
with Html("table", class_="infolist place") as table:
|
|
||||||
encloses += table
|
|
||||||
visited = [place.handle]
|
|
||||||
for link in self.r_db.find_backlink_handles(
|
|
||||||
place.handle, include_classes=['Place']):
|
|
||||||
if link[1] in visited:
|
|
||||||
continue
|
|
||||||
visited.append(link[1])
|
|
||||||
c_place = self.r_db.get_place_from_handle(link[1])
|
|
||||||
placeref = None
|
|
||||||
for placeref in c_place.get_placeref_list():
|
|
||||||
if placeref.ref == place.handle:
|
|
||||||
gpfh = self.r_db.get_place_from_handle
|
|
||||||
eplace = gpfh(placeref.ref)
|
|
||||||
if not eplace:
|
|
||||||
continue
|
|
||||||
place_name = c_place.get_name().get_value()
|
|
||||||
table += Html("tr") + Html("td", place_name)
|
|
||||||
|
|
||||||
# enclosed by
|
|
||||||
with Html("div", class_='subsection encloses') as encloses:
|
|
||||||
tbody += encloses
|
|
||||||
encloses += Html("h4", self._("Enclosed By"), inline=True)
|
|
||||||
with Html("table", class_="infolist place") as table:
|
|
||||||
encloses += table
|
|
||||||
visited = [place.handle]
|
|
||||||
placeref = None
|
|
||||||
for placeref in place.get_placeref_list():
|
|
||||||
if placeref.ref in visited:
|
|
||||||
continue
|
|
||||||
visited.append(placeref.ref)
|
|
||||||
pplace = self.r_db.get_place_from_handle(placeref.ref)
|
|
||||||
if not pplace:
|
|
||||||
continue
|
|
||||||
place_name = pplace.get_name().get_value()
|
|
||||||
table += Html("tr") + Html("td", place_name)
|
|
||||||
|
|
||||||
# enclosed by
|
# enclosed by
|
||||||
tbody += Html("tr") + Html("td", " ")
|
tbody += Html("tr") + Html("td", " ")
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
@ -2740,7 +2766,7 @@ class BasePage: # pylint: disable=C1001
|
|||||||
else:
|
else:
|
||||||
place_hyper = place_name
|
place_hyper = place_name
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
Html("td", place_hyper, class_="ColumnValue",
|
Html("td", place_hyper, class_="ColumnPlace",
|
||||||
inline=True))
|
inline=True))
|
||||||
tbody += trow
|
tbody += trow
|
||||||
|
|
||||||
@ -2766,7 +2792,7 @@ class BasePage: # pylint: disable=C1001
|
|||||||
place_hyper = place_name
|
place_hyper = place_name
|
||||||
trow = Html("tr") + (
|
trow = Html("tr") + (
|
||||||
Html("td", place_hyper,
|
Html("td", place_hyper,
|
||||||
class_="ColumnValue", inline=True))
|
class_="ColumnPlace", inline=True))
|
||||||
tbody += trow
|
tbody += trow
|
||||||
|
|
||||||
# return place table to its callers
|
# return place table to its callers
|
||||||
|
@ -57,14 +57,14 @@ HTTPS = "https://"
|
|||||||
GOOGLE_MAPS = 'https://maps.googleapis.com/maps/'
|
GOOGLE_MAPS = 'https://maps.googleapis.com/maps/'
|
||||||
# javascript code for marker path
|
# javascript code for marker path
|
||||||
MARKER_PATH = """
|
MARKER_PATH = """
|
||||||
var marker_png = '%s'
|
var marker_png = '%s';
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# javascript code for Google's FamilyLinks...
|
# javascript code for Google's FamilyLinks...
|
||||||
FAMILYLINKS = """
|
FAMILYLINKS = """
|
||||||
var tracelife = %s
|
var tracelife = %s;
|
||||||
|
|
||||||
function initialize() {
|
window.addEventListener("load", function() {
|
||||||
var myLatLng = new google.maps.LatLng(%s, %s);
|
var myLatLng = new google.maps.LatLng(%s, %s);
|
||||||
|
|
||||||
var mapOptions = {
|
var mapOptions = {
|
||||||
@ -86,18 +86,19 @@ FAMILYLINKS = """
|
|||||||
});
|
});
|
||||||
|
|
||||||
flightPath.setMap(map);
|
flightPath.setMap(map);
|
||||||
}"""
|
});
|
||||||
|
"""
|
||||||
|
|
||||||
# javascript for Google's Drop Markers...
|
# javascript for Google's Drop Markers...
|
||||||
DROPMASTERS = """
|
DROPMASTERS = """
|
||||||
var markers = [];
|
var markers = [];
|
||||||
var iterator = 0;
|
var iterator = 0;
|
||||||
|
|
||||||
var tracelife = %s
|
var tracelife = %s;
|
||||||
var map;
|
var map;
|
||||||
var myLatLng = new google.maps.LatLng(%s, %s);
|
var myLatLng = new google.maps.LatLng(%s, %s);
|
||||||
|
|
||||||
function initialize() {
|
window.addEventListener("load", function() {
|
||||||
var mapOptions = {
|
var mapOptions = {
|
||||||
scaleControl: true,
|
scaleControl: true,
|
||||||
zoomControl: true,
|
zoomControl: true,
|
||||||
@ -107,7 +108,7 @@ DROPMASTERS = """
|
|||||||
};
|
};
|
||||||
map = new google.maps.Map(document.getElementById("map_canvas"),
|
map = new google.maps.Map(document.getElementById("map_canvas"),
|
||||||
mapOptions);
|
mapOptions);
|
||||||
};
|
});
|
||||||
|
|
||||||
function drop() {
|
function drop() {
|
||||||
for (var i = 0; i < tracelife.length; i++) {
|
for (var i = 0; i < tracelife.length; i++) {
|
||||||
@ -144,11 +145,11 @@ DROPMASTERS = """
|
|||||||
|
|
||||||
# javascript for Google's Markers...
|
# javascript for Google's Markers...
|
||||||
MARKERS = """
|
MARKERS = """
|
||||||
var tracelife = %s
|
var tracelife = %s;
|
||||||
var map;
|
var map;
|
||||||
var myLatLng = new google.maps.LatLng(%s, %s);
|
var myLatLng = new google.maps.LatLng(%s, %s);
|
||||||
|
|
||||||
function initialize() {
|
window.addEventListener("load", function() {
|
||||||
var mapOptions = {
|
var mapOptions = {
|
||||||
scaleControl: true,
|
scaleControl: true,
|
||||||
panControl: true,
|
panControl: true,
|
||||||
@ -160,7 +161,7 @@ MARKERS = """
|
|||||||
map = new google.maps.Map(document.getElementById("map_canvas"),
|
map = new google.maps.Map(document.getElementById("map_canvas"),
|
||||||
mapOptions);
|
mapOptions);
|
||||||
addMarkers();
|
addMarkers();
|
||||||
}
|
});
|
||||||
|
|
||||||
function addMarkers() {
|
function addMarkers() {
|
||||||
var bounds = new google.maps.LatLngBounds();
|
var bounds = new google.maps.LatLngBounds();
|
||||||
@ -189,7 +190,6 @@ MARKERS = """
|
|||||||
infoWindow.open(map, marker);
|
infoWindow.open(map, marker);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# javascript for OpenStreetMap's markers...
|
# javascript for OpenStreetMap's markers...
|
||||||
@ -198,9 +198,9 @@ https://openlayers.org/en/latest/examples/
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
OSM_MARKERS = """
|
OSM_MARKERS = """
|
||||||
function initialize(){
|
window.addEventListener("load", function() {
|
||||||
var map;
|
var map;
|
||||||
var tracelife = %s
|
var tracelife = %s;
|
||||||
var iconStyle = new ol.style.Style({
|
var iconStyle = new ol.style.Style({
|
||||||
image: new ol.style.Icon(({
|
image: new ol.style.Icon(({
|
||||||
anchor: [0.2, 48],
|
anchor: [0.2, 48],
|
||||||
@ -241,9 +241,9 @@ OSM_MARKERS = """
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
STAMEN_MARKERS = """
|
STAMEN_MARKERS = """
|
||||||
function initialize(){
|
window.addEventListener("load", function() {
|
||||||
var map;
|
var map;
|
||||||
var tracelife = %s
|
var tracelife = %s;
|
||||||
var layer = '%s';
|
var layer = '%s';
|
||||||
var iconStyle = new ol.style.Style({
|
var iconStyle = new ol.style.Style({
|
||||||
image: new ol.style.Icon(({
|
image: new ol.style.Icon(({
|
||||||
@ -292,23 +292,20 @@ OPENLAYER = """
|
|||||||
var closer = document.getElementById('popup-closer');
|
var closer = document.getElementById('popup-closer');
|
||||||
var tip = document.getElementById('tooltip');
|
var tip = document.getElementById('tooltip');
|
||||||
var tipcontent = document.getElementById('tooltip-content');
|
var tipcontent = document.getElementById('tooltip-content');
|
||||||
|
|
||||||
var tooltip = new ol.Overlay({
|
var tooltip = new ol.Overlay({
|
||||||
element: tip,
|
element: tip,
|
||||||
positioning: 'bottom-center',
|
positioning: 'bottom-center',
|
||||||
offset: [10, 0],
|
offset: [10, 0],
|
||||||
});
|
});
|
||||||
map.addOverlay(tooltip);
|
map.addOverlay(tooltip);
|
||||||
|
|
||||||
var popup = new ol.Overlay({
|
var popup = new ol.Overlay({
|
||||||
element: element,
|
element: element,
|
||||||
positioning: 'bottom-center',
|
positioning: 'bottom-center',
|
||||||
autoPan: true,
|
autoPan: true,
|
||||||
autoPanAnimation: { duration: 500 },
|
autoPanAnimation: { duration: 500 },
|
||||||
stopEvent: false
|
stopEvent: true
|
||||||
});
|
});
|
||||||
map.addOverlay(popup);
|
map.addOverlay(popup);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a click handler to hide the popup.
|
* Add a click handler to hide the popup.
|
||||||
* @return {boolean} Don't follow the href.
|
* @return {boolean} Don't follow the href.
|
||||||
@ -318,7 +315,6 @@ OPENLAYER = """
|
|||||||
closer.blur();
|
closer.blur();
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
map.on('pointermove', function(evt) {
|
map.on('pointermove', function(evt) {
|
||||||
evt.preventDefault()
|
evt.preventDefault()
|
||||||
var feature = this.forEachFeatureAtPixel(evt.pixel,
|
var feature = this.forEachFeatureAtPixel(evt.pixel,
|
||||||
@ -338,10 +334,9 @@ OPENLAYER = """
|
|||||||
} else {
|
} else {
|
||||||
tooltip.setPosition(undefined);
|
tooltip.setPosition(undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
map.on('singleclick', function(evt) {
|
map.on('singleclick', function(evt) {
|
||||||
evt.preventDefault()
|
evt.preventDefault();
|
||||||
var feature = map.forEachFeatureAtPixel(evt.pixel,
|
var feature = map.forEachFeatureAtPixel(evt.pixel,
|
||||||
function(feature, layer) {
|
function(feature, layer) {
|
||||||
return feature;
|
return feature;
|
||||||
@ -355,8 +350,7 @@ OPENLAYER = """
|
|||||||
popup.setPosition(undefined);
|
popup.setPosition(undefined);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
};
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# variables for alphabet_navigation()
|
# variables for alphabet_navigation()
|
||||||
|
@ -413,7 +413,7 @@ class EventPages(BasePage):
|
|||||||
|
|
||||||
# Narrative subsection
|
# Narrative subsection
|
||||||
notelist = event.get_note_list()
|
notelist = event.get_note_list()
|
||||||
notelist = self.display_note_list(notelist)
|
notelist = self.display_note_list(notelist, Event)
|
||||||
if notelist is not None:
|
if notelist is not None:
|
||||||
eventdetail += notelist
|
eventdetail += notelist
|
||||||
|
|
||||||
|
@ -367,7 +367,7 @@ class FamilyPages(BasePage):
|
|||||||
# Narrative subsection
|
# Narrative subsection
|
||||||
notelist = family.get_note_list()
|
notelist = family.get_note_list()
|
||||||
if notelist:
|
if notelist:
|
||||||
relationshipdetail += self.display_note_list(notelist)
|
relationshipdetail += self.display_note_list(notelist, Family)
|
||||||
|
|
||||||
# display family LDS ordinance...
|
# display family LDS ordinance...
|
||||||
family_lds_ordinance_list = family.get_lds_ord_list()
|
family_lds_ordinance_list = family.get_lds_ord_list()
|
||||||
|
@ -97,6 +97,7 @@ class MediaPages(BasePage):
|
|||||||
self.media_dict = defaultdict(set)
|
self.media_dict = defaultdict(set)
|
||||||
self.unused_media_handles = []
|
self.unused_media_handles = []
|
||||||
self.cur_fname = None
|
self.cur_fname = None
|
||||||
|
self.create_images_index = self.report.options['create_images_index']
|
||||||
|
|
||||||
def display_pages(self, title):
|
def display_pages(self, title):
|
||||||
"""
|
"""
|
||||||
@ -190,7 +191,8 @@ class MediaPages(BasePage):
|
|||||||
"""
|
"""
|
||||||
BasePage.__init__(self, report, title)
|
BasePage.__init__(self, report, title)
|
||||||
|
|
||||||
output_file, sio = self.report.create_file("media")
|
if self.create_images_index:
|
||||||
|
output_file, sio = self.report.create_file("media")
|
||||||
# save the media file name in case we create unused media pages
|
# save the media file name in case we create unused media pages
|
||||||
self.cur_fname = self.report.cur_fname
|
self.cur_fname = self.report.cur_fname
|
||||||
result = self.write_header(self._('Media'))
|
result = self.write_header(self._('Media'))
|
||||||
@ -314,7 +316,8 @@ class MediaPages(BasePage):
|
|||||||
# send page out for processing
|
# send page out for processing
|
||||||
# and close the file
|
# and close the file
|
||||||
self.report.cur_fname = self.cur_fname
|
self.report.cur_fname = self.cur_fname
|
||||||
self.xhtml_writer(medialistpage, output_file, sio, ldatec)
|
if self.create_images_index:
|
||||||
|
self.xhtml_writer(medialistpage, output_file, sio, ldatec)
|
||||||
|
|
||||||
def media_ref_link(self, handle, name, uplink=False):
|
def media_ref_link(self, handle, name, uplink=False):
|
||||||
"""
|
"""
|
||||||
@ -577,7 +580,7 @@ class MediaPages(BasePage):
|
|||||||
table += trow
|
table += trow
|
||||||
|
|
||||||
# get media notes
|
# get media notes
|
||||||
notelist = self.display_note_list(media.get_note_list())
|
notelist = self.display_note_list(media.get_note_list(), Media)
|
||||||
if notelist is not None:
|
if notelist is not None:
|
||||||
mediadetail += notelist
|
mediadetail += notelist
|
||||||
|
|
||||||
@ -649,7 +652,9 @@ class MediaPages(BasePage):
|
|||||||
try:
|
try:
|
||||||
mtime = os.stat(fullpath).st_mtime
|
mtime = os.stat(fullpath).st_mtime
|
||||||
if self.report.archive:
|
if self.report.archive:
|
||||||
self.report.archive.add(fullpath, str(newpath))
|
if str(newpath) not in self.report.archive.getnames():
|
||||||
|
# The current file not already archived.
|
||||||
|
self.report.archive.add(fullpath, str(newpath))
|
||||||
else:
|
else:
|
||||||
to_dir = os.path.join(self.html_dir, to_dir)
|
to_dir = os.path.join(self.html_dir, to_dir)
|
||||||
if not os.path.isdir(to_dir):
|
if not os.path.isdir(to_dir):
|
||||||
|
@ -97,6 +97,7 @@ from gramps.plugins.webreport.surnamelist import SurnameListPage
|
|||||||
from gramps.plugins.webreport.surname import SurnamePage
|
from gramps.plugins.webreport.surname import SurnamePage
|
||||||
from gramps.plugins.webreport.thumbnail import ThumbnailPreviewPage
|
from gramps.plugins.webreport.thumbnail import ThumbnailPreviewPage
|
||||||
from gramps.plugins.webreport.statistics import StatisticsPage
|
from gramps.plugins.webreport.statistics import StatisticsPage
|
||||||
|
from gramps.plugins.webreport.updates import UpdatesPage
|
||||||
from gramps.plugins.webreport.home import HomePage
|
from gramps.plugins.webreport.home import HomePage
|
||||||
from gramps.plugins.webreport.contact import ContactPage
|
from gramps.plugins.webreport.contact import ContactPage
|
||||||
from gramps.plugins.webreport.download import DownloadPage
|
from gramps.plugins.webreport.download import DownloadPage
|
||||||
@ -163,6 +164,8 @@ class NavWebReport(Report):
|
|||||||
self.inc_gallery = self.options['gallery']
|
self.inc_gallery = self.options['gallery']
|
||||||
self.inc_unused_gallery = self.options['unused']
|
self.inc_unused_gallery = self.options['unused']
|
||||||
self.create_thumbs_only = self.options['create_thumbs_only']
|
self.create_thumbs_only = self.options['create_thumbs_only']
|
||||||
|
self.create_thumbs_index = self.options['create_thumbs_index']
|
||||||
|
self.create_images_index = self.options['create_images_index']
|
||||||
|
|
||||||
self.opts = self.options
|
self.opts = self.options
|
||||||
self.inc_contact = self.opts['contactnote'] or self.opts['contactimg']
|
self.inc_contact = self.opts['contactnote'] or self.opts['contactimg']
|
||||||
@ -202,6 +205,7 @@ class NavWebReport(Report):
|
|||||||
self.use_home = self.options['homenote'] or self.options['homeimg']
|
self.use_home = self.options['homenote'] or self.options['homeimg']
|
||||||
self.use_contact = self.opts['contactnote'] or self.opts['contactimg']
|
self.use_contact = self.opts['contactnote'] or self.opts['contactimg']
|
||||||
self.inc_stats = self.opts['inc_stats']
|
self.inc_stats = self.opts['inc_stats']
|
||||||
|
self.inc_updates = self.opts['updates']
|
||||||
self.create_unused_media = self.opts['unused']
|
self.create_unused_media = self.opts['unused']
|
||||||
|
|
||||||
# Do we need to include this in a cms ?
|
# Do we need to include this in a cms ?
|
||||||
@ -218,6 +222,9 @@ class NavWebReport(Report):
|
|||||||
self.usecal = self.options['usecal']
|
self.usecal = self.options['usecal']
|
||||||
self.target_cal_uri = self.options['caluri']
|
self.target_cal_uri = self.options['caluri']
|
||||||
|
|
||||||
|
# Do we need to include news and updates page ?
|
||||||
|
self.inc_updates = self.options['updates']
|
||||||
|
|
||||||
# either include the gender graphics or not?
|
# either include the gender graphics or not?
|
||||||
self.ancestortree = self.options['ancestortree']
|
self.ancestortree = self.options['ancestortree']
|
||||||
|
|
||||||
@ -400,6 +407,31 @@ class NavWebReport(Report):
|
|||||||
|
|
||||||
self._build_obj_dict()
|
self._build_obj_dict()
|
||||||
|
|
||||||
|
#################################################
|
||||||
|
#
|
||||||
|
# Add images for home, contact and introduction pages
|
||||||
|
# if they are not associated to any used objects.
|
||||||
|
#
|
||||||
|
#################################################
|
||||||
|
if self.use_home:
|
||||||
|
img = self.options['homeimg']
|
||||||
|
if img:
|
||||||
|
media = self._db.get_media_from_gramps_id(img)
|
||||||
|
if media:
|
||||||
|
self._add_media(media.handle, Media, media.handle)
|
||||||
|
if self.inc_contact:
|
||||||
|
img = self.options['contactimg']
|
||||||
|
if img:
|
||||||
|
media = self._db.get_media_from_gramps_id(img)
|
||||||
|
if media:
|
||||||
|
self._add_media(media.handle, Media, media.handle)
|
||||||
|
if self.use_intro:
|
||||||
|
img = self.options['introimg']
|
||||||
|
if img:
|
||||||
|
media = self._db.get_media_from_gramps_id(img)
|
||||||
|
if media:
|
||||||
|
self._add_media(media.handle, Media, media.handle)
|
||||||
|
|
||||||
#################################################
|
#################################################
|
||||||
#
|
#
|
||||||
# Pass 2 Generate the web pages
|
# Pass 2 Generate the web pages
|
||||||
@ -451,6 +483,10 @@ class NavWebReport(Report):
|
|||||||
if self.inc_stats:
|
if self.inc_stats:
|
||||||
self.statistics_preview_page(self.title)
|
self.statistics_preview_page(self.title)
|
||||||
|
|
||||||
|
# build classes Updates
|
||||||
|
if self.inc_updates:
|
||||||
|
self.updates_preview_page(self.title)
|
||||||
|
|
||||||
# copy all of the neccessary files
|
# copy all of the neccessary files
|
||||||
self.copy_narrated_files()
|
self.copy_narrated_files()
|
||||||
|
|
||||||
@ -1193,6 +1229,15 @@ class NavWebReport(Report):
|
|||||||
1) as step:
|
1) as step:
|
||||||
StatisticsPage(self, title, step)
|
StatisticsPage(self, title, step)
|
||||||
|
|
||||||
|
def updates_preview_page(self, title):
|
||||||
|
"""
|
||||||
|
creates the statistics preview page
|
||||||
|
"""
|
||||||
|
with self.user.progress(_("Narrated Web Site Report"),
|
||||||
|
_("Creating updates page..."),
|
||||||
|
1):
|
||||||
|
UpdatesPage(self, title)
|
||||||
|
|
||||||
def addressbook_pages(self, ind_list):
|
def addressbook_pages(self, ind_list):
|
||||||
"""
|
"""
|
||||||
Create a webpage with a list of address availability for each person
|
Create a webpage with a list of address availability for each person
|
||||||
@ -1241,7 +1286,7 @@ class NavWebReport(Report):
|
|||||||
|
|
||||||
def base_pages(self):
|
def base_pages(self):
|
||||||
"""
|
"""
|
||||||
creates HomePage, ContactPage, DownloadPage, and IntroductionPage
|
creates HomePage, ContactPage, DownloadPage and IntroductionPage
|
||||||
if requested by options in plugin
|
if requested by options in plugin
|
||||||
"""
|
"""
|
||||||
if self.use_home:
|
if self.use_home:
|
||||||
@ -1454,15 +1499,17 @@ class NavWebReport(Report):
|
|||||||
when we use rsync.
|
when we use rsync.
|
||||||
"""
|
"""
|
||||||
if self.archive:
|
if self.archive:
|
||||||
output_file.flush()
|
if self.cur_fname not in self.archive.getnames():
|
||||||
tarinfo = tarfile.TarInfo(self.cur_fname)
|
# The current file not already archived.
|
||||||
tarinfo.size = len(string_io.getvalue())
|
output_file.flush()
|
||||||
tarinfo.mtime = date if date != 0 else time.time()
|
tarinfo = tarfile.TarInfo(self.cur_fname)
|
||||||
if not win():
|
tarinfo.size = len(string_io.getvalue())
|
||||||
tarinfo.uid = os.getuid()
|
tarinfo.mtime = date if date != 0 else time.time()
|
||||||
tarinfo.gid = os.getgid()
|
if not win():
|
||||||
string_io.seek(0)
|
tarinfo.uid = os.getuid()
|
||||||
self.archive.addfile(tarinfo, string_io)
|
tarinfo.gid = os.getgid()
|
||||||
|
string_io.seek(0)
|
||||||
|
self.archive.addfile(tarinfo, string_io)
|
||||||
output_file.close()
|
output_file.close()
|
||||||
else:
|
else:
|
||||||
output_file.close()
|
output_file.close()
|
||||||
@ -1513,7 +1560,9 @@ class NavWebReport(Report):
|
|||||||
return tarinfo
|
return tarinfo
|
||||||
|
|
||||||
dest = os.path.join(to_dir, to_fname)
|
dest = os.path.join(to_dir, to_fname)
|
||||||
self.archive.add(from_fname, dest, filter=set_mtime)
|
if dest not in self.archive.getnames():
|
||||||
|
# The current file not already archived.
|
||||||
|
self.archive.add(from_fname, dest, filter=set_mtime)
|
||||||
else:
|
else:
|
||||||
dest = os.path.join(self.html_dir, to_dir, to_fname)
|
dest = os.path.join(self.html_dir, to_dir, to_fname)
|
||||||
|
|
||||||
@ -1577,13 +1626,15 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
self.__usecal = None
|
self.__usecal = None
|
||||||
self.__calendar_uri = None
|
self.__calendar_uri = None
|
||||||
self.__create_thumbs_only = None
|
self.__create_thumbs_only = None
|
||||||
|
self.__create_images_index = None
|
||||||
|
self.__create_thumbs_index = None
|
||||||
self.__mapservice = None
|
self.__mapservice = None
|
||||||
self.__maxinitialimageheight = None
|
|
||||||
self.__maxinitialimagewidth = None
|
self.__maxinitialimagewidth = None
|
||||||
self.__citationreferents = None
|
self.__citationreferents = None
|
||||||
self.__incdownload = None
|
self.__incdownload = None
|
||||||
self.__placemappages = None
|
self.__placemappages = None
|
||||||
self.__familymappages = None
|
self.__familymappages = None
|
||||||
|
self.__stamenopts = None
|
||||||
self.__googleopts = None
|
self.__googleopts = None
|
||||||
self.__googlemapkey = None
|
self.__googlemapkey = None
|
||||||
self.__ancestortree = None
|
self.__ancestortree = None
|
||||||
@ -1592,6 +1643,9 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
self.__dl_descr2 = None
|
self.__dl_descr2 = None
|
||||||
self.__down_fname2 = None
|
self.__down_fname2 = None
|
||||||
self.__gallery = None
|
self.__gallery = None
|
||||||
|
self.__updates = None
|
||||||
|
self.__maxdays = None
|
||||||
|
self.__maxupdates = None
|
||||||
self.__unused = None
|
self.__unused = None
|
||||||
self.__down_fname1 = None
|
self.__down_fname1 = None
|
||||||
self.__navigation = None
|
self.__navigation = None
|
||||||
@ -1885,6 +1939,14 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
addopt("gallery", self.__gallery)
|
addopt("gallery", self.__gallery)
|
||||||
self.__gallery.connect('value-changed', self.__gallery_changed)
|
self.__gallery.connect('value-changed', self.__gallery_changed)
|
||||||
|
|
||||||
|
self.__create_images_index = BooleanOption(
|
||||||
|
_("Create the images index"), False)
|
||||||
|
self.__create_images_index.set_help(
|
||||||
|
_("This option allows you to create the images index"))
|
||||||
|
addopt("create_images_index", self.__create_images_index)
|
||||||
|
self.__create_images_index.connect("value-changed",
|
||||||
|
self.__gallery_changed)
|
||||||
|
|
||||||
self.__unused = BooleanOption(
|
self.__unused = BooleanOption(
|
||||||
_("Include unused images and media objects"), True)
|
_("Include unused images and media objects"), True)
|
||||||
self.__unused.set_help(_('Whether to include unused or unreferenced'
|
self.__unused.set_help(_('Whether to include unused or unreferenced'
|
||||||
@ -1902,6 +1964,14 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
self.__create_thumbs_only.connect("value-changed",
|
self.__create_thumbs_only.connect("value-changed",
|
||||||
self.__gallery_changed)
|
self.__gallery_changed)
|
||||||
|
|
||||||
|
self.__create_thumbs_index = BooleanOption(
|
||||||
|
_("Create the thumbnail index"), False)
|
||||||
|
self.__create_thumbs_index.set_help(
|
||||||
|
_("This option allows you to create the thumbnail index"))
|
||||||
|
addopt("create_thumbs_index", self.__create_thumbs_index)
|
||||||
|
self.__create_thumbs_index.connect("value-changed",
|
||||||
|
self.__gallery_changed)
|
||||||
|
|
||||||
self.__maxinitialimagewidth = NumberOption(
|
self.__maxinitialimagewidth = NumberOption(
|
||||||
_("Max width of initial image"), _DEFAULT_MAX_IMG_WIDTH, 0, 2000)
|
_("Max width of initial image"), _DEFAULT_MAX_IMG_WIDTH, 0, 2000)
|
||||||
self.__maxinitialimagewidth.set_help(
|
self.__maxinitialimagewidth.set_help(
|
||||||
@ -1909,13 +1979,6 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
"of the image shown on the media page. Set to 0 for no limit."))
|
"of the image shown on the media page. Set to 0 for no limit."))
|
||||||
addopt("maxinitialimagewidth", self.__maxinitialimagewidth)
|
addopt("maxinitialimagewidth", self.__maxinitialimagewidth)
|
||||||
|
|
||||||
self.__maxinitialimageheight = NumberOption(
|
|
||||||
_("Max height of initial image"), _DEFAULT_MAX_IMG_HEIGHT, 0, 2000)
|
|
||||||
self.__maxinitialimageheight.set_help(
|
|
||||||
_("This allows you to set the maximum height "
|
|
||||||
"of the image shown on the media page. Set to 0 for no limit."))
|
|
||||||
addopt("maxinitialimageheight", self.__maxinitialimageheight)
|
|
||||||
|
|
||||||
self.__gallery_changed()
|
self.__gallery_changed()
|
||||||
|
|
||||||
def __add_download_options(self, menu):
|
def __add_download_options(self, menu):
|
||||||
@ -2164,6 +2227,37 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
addopt("caluri", self.__calendar_uri)
|
addopt("caluri", self.__calendar_uri)
|
||||||
|
|
||||||
self.__calendar_uri_changed()
|
self.__calendar_uri_changed()
|
||||||
|
self.__graph_changed()
|
||||||
|
|
||||||
|
self.__updates = BooleanOption(_("Include the news and updates page"),
|
||||||
|
True)
|
||||||
|
self.__updates.set_help(_('Whether to include '
|
||||||
|
'a page with the last updates'))
|
||||||
|
self.__updates.connect('value-changed', self.__updates_changed)
|
||||||
|
addopt("updates", self.__updates)
|
||||||
|
|
||||||
|
self.__maxdays = NumberOption(_("Max days for updates"), 1, 1, 300)
|
||||||
|
self.__maxdays.set_help(_("You want to see the last updates on how"
|
||||||
|
" many days ?"))
|
||||||
|
addopt("maxdays", self.__maxdays)
|
||||||
|
|
||||||
|
self.__maxupdates = NumberOption(_("Max number of updates per object"
|
||||||
|
" to show"), 1, 1, 100)
|
||||||
|
self.__maxupdates.set_help(_("How many updates do you want to see max"
|
||||||
|
))
|
||||||
|
addopt("maxupdates", self.__maxupdates)
|
||||||
|
|
||||||
|
def __updates_changed(self):
|
||||||
|
"""
|
||||||
|
Update the change of storage: archive or directory
|
||||||
|
"""
|
||||||
|
_updates_option = self.__updates.get_value()
|
||||||
|
if _updates_option:
|
||||||
|
self.__maxupdates.set_available(True)
|
||||||
|
self.__maxdays.set_available(True)
|
||||||
|
else:
|
||||||
|
self.__maxupdates.set_available(False)
|
||||||
|
self.__maxdays.set_available(False)
|
||||||
|
|
||||||
def __cms_uri_changed(self):
|
def __cms_uri_changed(self):
|
||||||
"""
|
"""
|
||||||
@ -2257,23 +2351,25 @@ class NavWebOptions(MenuReportOptions):
|
|||||||
if _gallery_option:
|
if _gallery_option:
|
||||||
self.__create_thumbs_only.set_available(True)
|
self.__create_thumbs_only.set_available(True)
|
||||||
self.__maxinitialimagewidth.set_available(True)
|
self.__maxinitialimagewidth.set_available(True)
|
||||||
self.__maxinitialimageheight.set_available(True)
|
self.__create_images_index.set_available(True)
|
||||||
|
self.__create_thumbs_index.set_available(True)
|
||||||
|
self.__unused.set_available(True)
|
||||||
|
|
||||||
# thumbnail-sized images only...
|
# thumbnail-sized images only...
|
||||||
if _create_thumbs_only_option:
|
if _create_thumbs_only_option:
|
||||||
self.__maxinitialimagewidth.set_available(False)
|
self.__maxinitialimagewidth.set_available(False)
|
||||||
self.__maxinitialimageheight.set_available(False)
|
|
||||||
|
|
||||||
# full- sized images and Media Pages will be created...
|
# full- sized images and Media Pages will be created...
|
||||||
else:
|
else:
|
||||||
self.__maxinitialimagewidth.set_available(True)
|
self.__maxinitialimagewidth.set_available(True)
|
||||||
self.__maxinitialimageheight.set_available(True)
|
|
||||||
|
|
||||||
# no images or media objects are to be used...
|
# no images or media objects are to be used...
|
||||||
else:
|
else:
|
||||||
self.__create_thumbs_only.set_available(False)
|
self.__create_thumbs_only.set_available(False)
|
||||||
self.__maxinitialimagewidth.set_available(False)
|
self.__maxinitialimagewidth.set_available(False)
|
||||||
self.__maxinitialimageheight.set_available(False)
|
self.__create_images_index.set_available(False)
|
||||||
|
self.__create_thumbs_index.set_available(False)
|
||||||
|
self.__unused.set_available(False)
|
||||||
|
|
||||||
def __download_changed(self):
|
def __download_changed(self):
|
||||||
"""
|
"""
|
||||||
|
@ -52,7 +52,7 @@ import logging
|
|||||||
#------------------------------------------------
|
#------------------------------------------------
|
||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
from gramps.gen.lib import (ChildRefType, Date, Name, Person, EventRoleType,
|
from gramps.gen.lib import (ChildRefType, Date, Name, Person, EventRoleType,
|
||||||
Event, EventType)
|
Family, Event, EventType)
|
||||||
from gramps.gen.lib.date import Today
|
from gramps.gen.lib.date import Today
|
||||||
from gramps.gen.plug.report import Bibliography
|
from gramps.gen.plug.report import Bibliography
|
||||||
from gramps.gen.plug.report import utils
|
from gramps.gen.plug.report import utils
|
||||||
@ -469,18 +469,7 @@ class PersonPages(BasePage):
|
|||||||
output_file, sio = self.report.create_file(person.get_handle(), "ppl")
|
output_file, sio = self.report.create_file(person.get_handle(), "ppl")
|
||||||
self.uplink = True
|
self.uplink = True
|
||||||
result = self.write_header(self.sort_name)
|
result = self.write_header(self.sort_name)
|
||||||
indivdetpage, head, dummy_body, outerwrapper = result
|
indivdetpage, dummy_head, dummy_body, outerwrapper = result
|
||||||
|
|
||||||
# attach the ancestortree style sheet if ancestor
|
|
||||||
# graph is being created?
|
|
||||||
if self.report.options["ancestortree"]:
|
|
||||||
if self.usecms:
|
|
||||||
fname = "/".join([self.target_uri, "css", "ancestortree.css"])
|
|
||||||
else:
|
|
||||||
fname = "/".join(["css", "ancestortree.css"])
|
|
||||||
url = self.report.build_url_fname(fname, None, self.uplink)
|
|
||||||
head += Html("link", href=url, type="text/css", media="screen",
|
|
||||||
rel="stylesheet")
|
|
||||||
|
|
||||||
# begin individualdetail division
|
# begin individualdetail division
|
||||||
with Html("div", class_="content",
|
with Html("div", class_="content",
|
||||||
@ -496,7 +485,7 @@ class PersonPages(BasePage):
|
|||||||
if self.report.options['notes']:
|
if self.report.options['notes']:
|
||||||
# display Narrative Notes
|
# display Narrative Notes
|
||||||
notelist = person.get_note_list()
|
notelist = person.get_note_list()
|
||||||
sect8 = self.display_note_list(notelist)
|
sect8 = self.display_note_list(notelist, Person)
|
||||||
if sect8 is not None:
|
if sect8 is not None:
|
||||||
individualdetail += sect8
|
individualdetail += sect8
|
||||||
|
|
||||||
@ -564,7 +553,7 @@ class PersonPages(BasePage):
|
|||||||
if not self.report.options['notes']:
|
if not self.report.options['notes']:
|
||||||
# display Narrative Notes
|
# display Narrative Notes
|
||||||
notelist = person.get_note_list()
|
notelist = person.get_note_list()
|
||||||
sect8 = self.display_note_list(notelist)
|
sect8 = self.display_note_list(notelist, Person)
|
||||||
if sect8 is not None:
|
if sect8 is not None:
|
||||||
individualdetail += sect8
|
individualdetail += sect8
|
||||||
|
|
||||||
@ -652,7 +641,7 @@ class PersonPages(BasePage):
|
|||||||
else:
|
else:
|
||||||
tracelife += """
|
tracelife += """
|
||||||
[%f, %f, \'%s\', %s],""" % (float(longitude), float(latitude),
|
[%f, %f, \'%s\', %s],""" % (float(longitude), float(latitude),
|
||||||
placetitle.replace("'", "\\'"), links)
|
placetitle.replace("'", "\\'"), links)
|
||||||
return tracelife
|
return tracelife
|
||||||
|
|
||||||
def __create_family_map(self, person, place_lat_long):
|
def __create_family_map(self, person, place_lat_long):
|
||||||
@ -769,9 +758,9 @@ class PersonPages(BasePage):
|
|||||||
seq_ = 0
|
seq_ = 0
|
||||||
|
|
||||||
old_place_title = ""
|
old_place_title = ""
|
||||||
oldevent = None
|
|
||||||
links = ""
|
links = ""
|
||||||
ln_str = "<a href='%s' title='%s' target='_self'>%s</a>"
|
ln_str = "<a href='%s' title='%s' target='_self'>%s</a>"
|
||||||
|
ppl_lnk = ""
|
||||||
for index in range(0, number_markers):
|
for index in range(0, number_markers):
|
||||||
(latitude, longitude, placetitle, handle,
|
(latitude, longitude, placetitle, handle,
|
||||||
event) = place_lat_long[index]
|
event) = place_lat_long[index]
|
||||||
@ -783,19 +772,29 @@ class PersonPages(BasePage):
|
|||||||
if bkref_list:
|
if bkref_list:
|
||||||
for ref in bkref_list:
|
for ref in bkref_list:
|
||||||
(bkref_class, bkref_hdle, role) = ref
|
(bkref_class, bkref_hdle, role) = ref
|
||||||
if role == "Primary":
|
if bkref_class == Family and role == "Primary":
|
||||||
|
url = url_fct(bkref_hdle,
|
||||||
|
"fam", self.uplink)
|
||||||
|
fam_fct = self.r_db.get_family_from_handle
|
||||||
|
fam = fam_fct(bkref_hdle)
|
||||||
|
fam_name = self.report.get_family_name(fam)
|
||||||
|
ppl_lnk = ln_str % (url,
|
||||||
|
fam.get_gramps_id(),
|
||||||
|
fam_name)
|
||||||
|
if bkref_class == Person and role == "Primary":
|
||||||
url = url_fct(bkref_hdle,
|
url = url_fct(bkref_hdle,
|
||||||
"ppl", self.uplink)
|
"ppl", self.uplink)
|
||||||
ppl_fct = self.r_db.get_person_from_handle
|
ppl_fct = self.r_db.get_person_from_handle
|
||||||
person = ppl_fct(bkref_hdle)
|
pers = ppl_fct(bkref_hdle)
|
||||||
ppl_lnk = ln_str % (url,
|
ppl_lnk = ln_str % (url,
|
||||||
person.get_gramps_id(),
|
pers.get_gramps_id(),
|
||||||
self.get_name(person))
|
self.get_name(pers))
|
||||||
url = self.report.build_url_fname_html(event.get_handle(),
|
url = self.report.build_url_fname_html(event.get_handle(),
|
||||||
"evt", self.uplink)
|
"evt", self.uplink)
|
||||||
evt_type = self._(str(event.get_type()))
|
evt_type = self._(str(event.get_type()))
|
||||||
evt_date = self.rlocale.get_date(event.get_date_object())
|
evt_date = self.rlocale.get_date(event.get_date_object())
|
||||||
evt_lnk = ln_str % (url, evt_date, evt_type)
|
evt_lnk = ln_str % (url, evt_date, evt_type)
|
||||||
|
evt_lnk += " (" + evt_date + ")"
|
||||||
|
|
||||||
links += ' + "</br>%s"' % (ppl_lnk + self._(":") + evt_lnk)
|
links += ' + "</br>%s"' % (ppl_lnk + self._(":") + evt_lnk)
|
||||||
if index == number_markers - 1:
|
if index == number_markers - 1:
|
||||||
@ -808,8 +807,8 @@ class PersonPages(BasePage):
|
|||||||
break
|
break
|
||||||
continue
|
continue
|
||||||
elif old_place_title != "" and index != 0:
|
elif old_place_title != "" and index != 0:
|
||||||
(lat, lng, plcetitle, handle_,
|
(lat, lng, plcetitle, dummy_handle,
|
||||||
event_) = place_lat_long[index-1]
|
dummy_event) = place_lat_long[index-1]
|
||||||
tracelife = self._create_family_tracelife(tracelife,
|
tracelife = self._create_family_tracelife(tracelife,
|
||||||
plcetitle,
|
plcetitle,
|
||||||
lat,
|
lat,
|
||||||
@ -824,24 +823,33 @@ class PersonPages(BasePage):
|
|||||||
if bkref_list:
|
if bkref_list:
|
||||||
for ref in bkref_list:
|
for ref in bkref_list:
|
||||||
(bkref_class, bkref_hdle, role) = ref
|
(bkref_class, bkref_hdle, role) = ref
|
||||||
if role == "Primary":
|
if bkref_class == Family and role == "Primary":
|
||||||
|
url = url_fct(bkref_hdle,
|
||||||
|
"fam", self.uplink)
|
||||||
|
fam_fct = self.r_db.get_family_from_handle
|
||||||
|
fam = fam_fct(bkref_hdle)
|
||||||
|
fam_name = self.report.get_family_name(fam)
|
||||||
|
ppl_lnk = ln_str % (url,
|
||||||
|
fam.get_gramps_id(),
|
||||||
|
fam_name)
|
||||||
|
if bkref_class == Person and role == "Primary":
|
||||||
url = url_fct(bkref_hdle,
|
url = url_fct(bkref_hdle,
|
||||||
"ppl", self.uplink)
|
"ppl", self.uplink)
|
||||||
ppl_fct = self.r_db.get_person_from_handle
|
ppl_fct = self.r_db.get_person_from_handle
|
||||||
person = ppl_fct(bkref_hdle)
|
pers = ppl_fct(bkref_hdle)
|
||||||
ppl_lnk = ln_str % (url,
|
ppl_lnk = ln_str % (url,
|
||||||
person.get_gramps_id(),
|
pers.get_gramps_id(),
|
||||||
self.get_name(person))
|
self.get_name(pers))
|
||||||
url = self.report.build_url_fname_html(event.handle,
|
url = self.report.build_url_fname_html(event.handle,
|
||||||
"evt",
|
"evt",
|
||||||
self.uplink)
|
self.uplink)
|
||||||
evt_type = self._(str(event.get_type()))
|
evt_type = self._(str(event.get_type()))
|
||||||
evt_date = self.rlocale.get_date(event.get_date_object())
|
date = self.rlocale.get_date(event.get_date_object())
|
||||||
evt_lnk = ln_str % (url, evt_date, evt_type)
|
evt_lnk = ln_str % (url, date, evt_type)
|
||||||
|
evt_lnk += " (" + date + ")"
|
||||||
|
|
||||||
links = '"</br>%s"' % (ppl_lnk + self._(":") +
|
links = '"</br>%s"' % (ppl_lnk + self._(":") + evt_lnk)
|
||||||
evt_lnk)
|
elif index == number_markers-1:
|
||||||
elif index == number_markers:
|
|
||||||
tracelife = self._create_family_tracelife(tracelife,
|
tracelife = self._create_family_tracelife(tracelife,
|
||||||
placetitle,
|
placetitle,
|
||||||
latitude,
|
latitude,
|
||||||
@ -855,23 +863,45 @@ class PersonPages(BasePage):
|
|||||||
if bkref_list:
|
if bkref_list:
|
||||||
for ref in bkref_list:
|
for ref in bkref_list:
|
||||||
(bkref_class, bkref_hdle, role) = ref
|
(bkref_class, bkref_hdle, role) = ref
|
||||||
if role == "Primary":
|
if bkref_class == Family and role == "Primary":
|
||||||
|
url = url_fct(bkref_hdle,
|
||||||
|
"fam", self.uplink)
|
||||||
|
fam_fct = self.r_db.get_family_from_handle
|
||||||
|
fam = fam_fct(bkref_hdle)
|
||||||
|
fam_name = self.report.get_family_name(fam)
|
||||||
|
ppl_lnk = ln_str % (url,
|
||||||
|
fam.get_gramps_id(),
|
||||||
|
fam_name)
|
||||||
|
if bkref_class == Person and role == "Primary":
|
||||||
url = url_fct(bkref_hdle,
|
url = url_fct(bkref_hdle,
|
||||||
"ppl", self.uplink)
|
"ppl", self.uplink)
|
||||||
ppl_fct = self.r_db.get_person_from_handle
|
ppl_fct = self.r_db.get_person_from_handle
|
||||||
person = ppl_fct(bkref_hdle)
|
pers = ppl_fct(bkref_hdle)
|
||||||
ppl_lnk = ln_str % (url,
|
ppl_lnk = ln_str % (url,
|
||||||
person.get_gramps_id(),
|
pers.get_gramps_id(),
|
||||||
self.get_name(person))
|
self.get_name(pers))
|
||||||
url = self.report.build_url_fname_html(event.handle,
|
url = self.report.build_url_fname_html(event.handle,
|
||||||
"evt",
|
"evt",
|
||||||
self.uplink)
|
self.uplink)
|
||||||
evt_type = self._(str(event.get_type()))
|
evt_type = self._(str(event.get_type()))
|
||||||
|
date = self.rlocale.get_date(event.get_date_object())
|
||||||
evt_lnk = ln_str % (url, evt_type, evt_type)
|
evt_lnk = ln_str % (url, evt_type, evt_type)
|
||||||
links = '"<p>%s"' % (ppl_lnk + self._(":") + evt_lnk)
|
evt_lnk += " (" + date + ")"
|
||||||
|
if "<p>" in links:
|
||||||
|
links += '"</br>%s"' % (ppl_lnk+self._(":") + evt_lnk)
|
||||||
|
else:
|
||||||
|
links = '"<p>%s"' % (ppl_lnk + self._(":") + evt_lnk)
|
||||||
old_place_title = placetitle
|
old_place_title = placetitle
|
||||||
seq_ += 1
|
seq_ += 1
|
||||||
|
|
||||||
|
(lat, lng, plcetitle, dummy_handle,
|
||||||
|
dummy_event) = place_lat_long[number_markers-1]
|
||||||
|
tracelife = self._create_family_tracelife(tracelife,
|
||||||
|
plcetitle,
|
||||||
|
lat,
|
||||||
|
lng,
|
||||||
|
seq_,
|
||||||
|
links)
|
||||||
tracelife += "];"
|
tracelife += "];"
|
||||||
# begin MapDetail division...
|
# begin MapDetail division...
|
||||||
with Html("div", class_="content", id="FamilyMapDetail") as mapdetail:
|
with Html("div", class_="content", id="FamilyMapDetail") as mapdetail:
|
||||||
@ -899,82 +929,6 @@ class PersonPages(BasePage):
|
|||||||
with Html("div", id="map_canvas") as canvas:
|
with Html("div", id="map_canvas") as canvas:
|
||||||
mapdetail += canvas
|
mapdetail += canvas
|
||||||
|
|
||||||
# begin javascript inline code...
|
|
||||||
with Html("script", deter="deter",
|
|
||||||
style='width =100%; height =100%;',
|
|
||||||
type="text/javascript", indent=False) as jsc:
|
|
||||||
head += jsc
|
|
||||||
|
|
||||||
# Link to Gramps marker
|
|
||||||
fname = "/".join(['images', 'marker.png'])
|
|
||||||
marker_path = self.report.build_url_image("marker.png",
|
|
||||||
"images",
|
|
||||||
self.uplink)
|
|
||||||
|
|
||||||
jsc += MARKER_PATH % marker_path
|
|
||||||
# are we using Google?
|
|
||||||
if self.mapservice == "Google":
|
|
||||||
|
|
||||||
# are we creating Family Links?
|
|
||||||
if self.googleopts == "FamilyLinks":
|
|
||||||
if midy_ is None:
|
|
||||||
jsc += FAMILYLINKS % (tracelife, latitude,
|
|
||||||
longitude, int(10))
|
|
||||||
else:
|
|
||||||
jsc += FAMILYLINKS % (tracelife, midx_, midy_,
|
|
||||||
zoomlevel)
|
|
||||||
|
|
||||||
# are we creating Drop Markers?
|
|
||||||
elif self.googleopts == "Drop":
|
|
||||||
if midy_ is None:
|
|
||||||
jsc += DROPMASTERS % (tracelife, latitude,
|
|
||||||
longitude, int(10))
|
|
||||||
else:
|
|
||||||
jsc += DROPMASTERS % (tracelife, midx_, midy_,
|
|
||||||
zoomlevel)
|
|
||||||
|
|
||||||
# we are creating Markers only...
|
|
||||||
else:
|
|
||||||
if midy_ is None:
|
|
||||||
jsc += MARKERS % (tracelife, latitude,
|
|
||||||
longitude, int(10))
|
|
||||||
else:
|
|
||||||
jsc += MARKERS % (tracelife, midx_, midy_,
|
|
||||||
zoomlevel)
|
|
||||||
|
|
||||||
# we are using OpenStreetMap
|
|
||||||
elif self.mapservice == "OpenStreetMap":
|
|
||||||
if midy_ is None:
|
|
||||||
jsc += OSM_MARKERS % (tracelife,
|
|
||||||
longitude,
|
|
||||||
latitude, 10)
|
|
||||||
else:
|
|
||||||
jsc += OSM_MARKERS % (tracelife, midy_, midx_,
|
|
||||||
zoomlevel)
|
|
||||||
jsc += OPENLAYER
|
|
||||||
# we are using StamenMap
|
|
||||||
elif self.mapservice == "StamenMap":
|
|
||||||
if midy_ is None:
|
|
||||||
jsc += STAMEN_MARKERS % (tracelife,
|
|
||||||
self.stamenopts,
|
|
||||||
longitude,
|
|
||||||
latitude,
|
|
||||||
10,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
jsc += STAMEN_MARKERS % (tracelife,
|
|
||||||
self.stamenopts,
|
|
||||||
midy_, midx_,
|
|
||||||
zoomlevel,
|
|
||||||
)
|
|
||||||
jsc += OPENLAYER
|
|
||||||
|
|
||||||
# if Google and Drop Markers are selected,
|
|
||||||
# then add "Drop Markers" button?
|
|
||||||
if self.mapservice == "Google" and self.googleopts == "Drop":
|
|
||||||
mapdetail += Html("button", _("Drop Markers"),
|
|
||||||
id="drop", onclick="drop()", inline=True)
|
|
||||||
|
|
||||||
# add div for popups.
|
# add div for popups.
|
||||||
if self.mapservice == "Google":
|
if self.mapservice == "Google":
|
||||||
with Html("div", id="popup", inline=True) as popup:
|
with Html("div", id="popup", inline=True) as popup:
|
||||||
@ -1020,7 +974,7 @@ class PersonPages(BasePage):
|
|||||||
# being sorted by date
|
# being sorted by date
|
||||||
place_lat_long = sorted(place_lat_long,
|
place_lat_long = sorted(place_lat_long,
|
||||||
key=lambda evt:
|
key=lambda evt:
|
||||||
evt[4].get_date_object())
|
evt[4].get_date_object())
|
||||||
for (latitude, longitude, placetitle, handle,
|
for (latitude, longitude, placetitle, handle,
|
||||||
event) in place_lat_long:
|
event) in place_lat_long:
|
||||||
trow = Html("tr")
|
trow = Html("tr")
|
||||||
@ -1038,8 +992,84 @@ class PersonPages(BasePage):
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# begin javascript inline code...
|
||||||
|
with Html("script", deter="deter",
|
||||||
|
style='width =100%; height =100%;',
|
||||||
|
type="text/javascript", indent=False) as jsc:
|
||||||
|
mapdetail += jsc
|
||||||
|
|
||||||
|
# Link to Gramps marker
|
||||||
|
fname = "/".join(['images', 'marker.png'])
|
||||||
|
marker_path = self.report.build_url_image("marker.png",
|
||||||
|
"images",
|
||||||
|
self.uplink)
|
||||||
|
|
||||||
|
jsc += MARKER_PATH % marker_path
|
||||||
|
# are we using Google?
|
||||||
|
if self.mapservice == "Google":
|
||||||
|
|
||||||
|
# are we creating Family Links?
|
||||||
|
if self.googleopts == "FamilyLinks":
|
||||||
|
if midy_ is None:
|
||||||
|
jsc += FAMILYLINKS % (tracelife, latitude,
|
||||||
|
longitude, int(10))
|
||||||
|
else:
|
||||||
|
jsc += FAMILYLINKS % (tracelife, midx_, midy_,
|
||||||
|
zoomlevel)
|
||||||
|
|
||||||
|
# are we creating Drop Markers?
|
||||||
|
elif self.googleopts == "Drop":
|
||||||
|
if midy_ is None:
|
||||||
|
jsc += DROPMASTERS % (tracelife, latitude,
|
||||||
|
longitude, int(10))
|
||||||
|
else:
|
||||||
|
jsc += DROPMASTERS % (tracelife, midx_, midy_,
|
||||||
|
zoomlevel)
|
||||||
|
|
||||||
|
# we are creating Markers only...
|
||||||
|
else:
|
||||||
|
if midy_ is None:
|
||||||
|
jsc += MARKERS % (tracelife, latitude,
|
||||||
|
longitude, int(10))
|
||||||
|
else:
|
||||||
|
jsc += MARKERS % (tracelife, midx_, midy_,
|
||||||
|
zoomlevel)
|
||||||
|
|
||||||
|
# we are using OpenStreetMap
|
||||||
|
elif self.mapservice == "OpenStreetMap":
|
||||||
|
if midy_ is None:
|
||||||
|
jsc += OSM_MARKERS % (tracelife,
|
||||||
|
longitude,
|
||||||
|
latitude, 10)
|
||||||
|
else:
|
||||||
|
jsc += OSM_MARKERS % (tracelife, midy_, midx_,
|
||||||
|
zoomlevel)
|
||||||
|
jsc += OPENLAYER
|
||||||
|
# we are using StamenMap
|
||||||
|
elif self.mapservice == "StamenMap":
|
||||||
|
if midy_ is None:
|
||||||
|
jsc += STAMEN_MARKERS % (tracelife,
|
||||||
|
self.stamenopts,
|
||||||
|
longitude,
|
||||||
|
latitude,
|
||||||
|
10,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
jsc += STAMEN_MARKERS % (tracelife,
|
||||||
|
self.stamenopts,
|
||||||
|
midy_, midx_,
|
||||||
|
zoomlevel,
|
||||||
|
)
|
||||||
|
jsc += OPENLAYER
|
||||||
|
|
||||||
|
# if Google and Drop Markers are selected,
|
||||||
|
# then add "Drop Markers" button?
|
||||||
|
if self.mapservice == "Google" and self.googleopts == "Drop":
|
||||||
|
mapdetail += Html("button", _("Drop Markers"),
|
||||||
|
id="drop", onclick="drop()", inline=True)
|
||||||
|
|
||||||
# add body id for this page...
|
# add body id for this page...
|
||||||
body.attr = 'id ="FamilyMap" onload ="initialize()"'
|
body.attr = 'id ="FamilyMap"'
|
||||||
|
|
||||||
# add clearline for proper styling
|
# add clearline for proper styling
|
||||||
# add footer section
|
# add footer section
|
||||||
@ -1392,7 +1422,7 @@ class PersonPages(BasePage):
|
|||||||
for data in [
|
for data in [
|
||||||
person_lnk,
|
person_lnk,
|
||||||
person_ref.get_relation(),
|
person_ref.get_relation(),
|
||||||
self.dump_notes(person_ref.get_note_list()),
|
self.dump_notes(person_ref.get_note_list(), Person),
|
||||||
self.get_citation_links(
|
self.get_citation_links(
|
||||||
person_ref.get_citation_list()),
|
person_ref.get_citation_list()),
|
||||||
]:
|
]:
|
||||||
|
@ -101,6 +101,7 @@ class PlacePages(BasePage):
|
|||||||
self.person = None
|
self.person = None
|
||||||
self.familymappages = None
|
self.familymappages = None
|
||||||
self.googlemapkey = None
|
self.googlemapkey = None
|
||||||
|
self.stamenopts = None
|
||||||
|
|
||||||
# Place needs to display coordinates?
|
# Place needs to display coordinates?
|
||||||
self.display_coordinates = report.options["coordinates"]
|
self.display_coordinates = report.options["coordinates"]
|
||||||
@ -301,7 +302,8 @@ class PlacePages(BasePage):
|
|||||||
output_file, sio = self.report.create_file(place_handle, "plc")
|
output_file, sio = self.report.create_file(place_handle, "plc")
|
||||||
self.uplink = True
|
self.uplink = True
|
||||||
self.page_title = place_name
|
self.page_title = place_name
|
||||||
placepage, head, body, outerwrapper = self.write_header(_("Places"))
|
(placepage, head, dummy_body,
|
||||||
|
outerwrapper) = self.write_header(_("Places"))
|
||||||
|
|
||||||
self.placemappages = self.report.options['placemappages']
|
self.placemappages = self.report.options['placemappages']
|
||||||
self.mapservice = self.report.options['mapservice']
|
self.mapservice = self.report.options['mapservice']
|
||||||
@ -341,7 +343,7 @@ class PlacePages(BasePage):
|
|||||||
placedetail += placegallery
|
placedetail += placegallery
|
||||||
|
|
||||||
# place notes
|
# place notes
|
||||||
notelist = self.display_note_list(place.get_note_list())
|
notelist = self.display_note_list(place.get_note_list(), Place)
|
||||||
if notelist is not None:
|
if notelist is not None:
|
||||||
placedetail += notelist
|
placedetail += notelist
|
||||||
|
|
||||||
@ -358,9 +360,6 @@ class PlacePages(BasePage):
|
|||||||
|
|
||||||
if self.placemappages:
|
if self.placemappages:
|
||||||
if place and (place.lat and place.long):
|
if place and (place.lat and place.long):
|
||||||
latitude, longitude = conv_lat_lon(place.get_latitude(),
|
|
||||||
place.get_longitude(),
|
|
||||||
"D.D8")
|
|
||||||
placetitle = place_name
|
placetitle = place_name
|
||||||
|
|
||||||
# add narrative-maps CSS...
|
# add narrative-maps CSS...
|
||||||
@ -406,49 +405,21 @@ class PlacePages(BasePage):
|
|||||||
with Html("div", id="map_canvas", inline=True) as canvas:
|
with Html("div", id="map_canvas", inline=True) as canvas:
|
||||||
placedetail += canvas
|
placedetail += canvas
|
||||||
|
|
||||||
# Begin inline javascript code because jsc is a
|
|
||||||
# docstring, it does NOT have to be properly indented
|
|
||||||
if self.mapservice == "Google":
|
|
||||||
with Html("script", type="text/javascript",
|
|
||||||
indent=False) as jsc:
|
|
||||||
head += jsc
|
|
||||||
|
|
||||||
# Google adds Latitude/ Longitude to its maps...
|
|
||||||
plce = placetitle.replace("'", "\\'")
|
|
||||||
jsc += MARKER_PATH % marker_path
|
|
||||||
jsc += MARKERS % ([[plce,
|
|
||||||
latitude,
|
|
||||||
longitude,
|
|
||||||
1,""]],
|
|
||||||
latitude, longitude,
|
|
||||||
10)
|
|
||||||
|
|
||||||
elif self.mapservice == "OpenStreetMap":
|
|
||||||
with Html("script", type="text/javascript") as jsc:
|
|
||||||
canvas += jsc
|
|
||||||
jsc += MARKER_PATH % marker_path
|
|
||||||
jsc += OSM_MARKERS % ([[float(longitude),
|
|
||||||
float(latitude),
|
|
||||||
placetitle,""]],
|
|
||||||
longitude, latitude, 10)
|
|
||||||
jsc += OPENLAYER
|
|
||||||
else: # STAMEN
|
|
||||||
with Html("script", type="text/javascript") as jsc:
|
|
||||||
canvas += jsc
|
|
||||||
jsc += MARKER_PATH % marker_path
|
|
||||||
jsc += STAMEN_MARKERS % ([[float(longitude),
|
|
||||||
float(latitude),
|
|
||||||
placetitle,""]],
|
|
||||||
self.stamenopts,
|
|
||||||
longitude, latitude, 10)
|
|
||||||
jsc += OPENLAYER
|
|
||||||
|
|
||||||
# add javascript function call to body element
|
|
||||||
body.attr += ' onload = "initialize();" '
|
|
||||||
|
|
||||||
# add div for popups.
|
# add div for popups.
|
||||||
with Html("div", id="popup", inline=True) as popup:
|
if self.mapservice == "Google":
|
||||||
placedetail += popup
|
with Html("div", id="popup", inline=True) as popup:
|
||||||
|
placedetail += popup
|
||||||
|
else:
|
||||||
|
with Html("div", id="popup", class_="ol-popup",
|
||||||
|
inline=True) as popup:
|
||||||
|
placedetail += popup
|
||||||
|
popup += Html("a", href="#", id="popup-closer",
|
||||||
|
class_="ol-popup-closer")
|
||||||
|
popup += Html("div", id="popup-content")
|
||||||
|
with Html("div", id="tooltip", class_="ol-popup",
|
||||||
|
inline=True) as tooltip:
|
||||||
|
placedetail += tooltip
|
||||||
|
tooltip += Html("div", id="tooltip-content")
|
||||||
|
|
||||||
# source references
|
# source references
|
||||||
srcrefs = self.display_ind_sources(place)
|
srcrefs = self.display_ind_sources(place)
|
||||||
@ -460,6 +431,48 @@ class PlacePages(BasePage):
|
|||||||
if ref_list is not None:
|
if ref_list is not None:
|
||||||
placedetail += ref_list
|
placedetail += ref_list
|
||||||
|
|
||||||
|
# Begin inline javascript code because jsc is a
|
||||||
|
# docstring, it does NOT have to be properly indented
|
||||||
|
if self.placemappages:
|
||||||
|
if place and (place.lat and place.long):
|
||||||
|
latitude, longitude = conv_lat_lon(place.get_latitude(),
|
||||||
|
place.get_longitude(),
|
||||||
|
"D.D8")
|
||||||
|
scripts = Html()
|
||||||
|
if self.mapservice == "Google":
|
||||||
|
with Html("script", type="text/javascript",
|
||||||
|
indent=False) as jsc:
|
||||||
|
scripts += jsc
|
||||||
|
# Google adds Latitude/ Longitude to its maps...
|
||||||
|
plce = placetitle.replace("'", "\\'")
|
||||||
|
jsc += MARKER_PATH % marker_path
|
||||||
|
jsc += MARKERS % ([[plce,
|
||||||
|
latitude,
|
||||||
|
longitude,
|
||||||
|
1, ""]],
|
||||||
|
latitude, longitude,
|
||||||
|
10)
|
||||||
|
elif self.mapservice == "OpenStreetMap":
|
||||||
|
with Html("script", type="text/javascript") as jsc:
|
||||||
|
scripts += jsc
|
||||||
|
jsc += MARKER_PATH % marker_path
|
||||||
|
jsc += OSM_MARKERS % ([[float(longitude),
|
||||||
|
float(latitude),
|
||||||
|
placetitle, ""]],
|
||||||
|
longitude, latitude, 10)
|
||||||
|
jsc += OPENLAYER
|
||||||
|
else: # STAMEN
|
||||||
|
with Html("script", type="text/javascript") as jsc:
|
||||||
|
scripts += jsc
|
||||||
|
jsc += MARKER_PATH % marker_path
|
||||||
|
jsc += STAMEN_MARKERS % ([[float(longitude),
|
||||||
|
float(latitude),
|
||||||
|
placetitle, ""]],
|
||||||
|
self.stamenopts,
|
||||||
|
longitude, latitude, 10)
|
||||||
|
jsc += OPENLAYER
|
||||||
|
placedetail += scripts
|
||||||
|
|
||||||
# add clearline for proper styling
|
# add clearline for proper styling
|
||||||
# add footer section
|
# add footer section
|
||||||
footer = self.write_footer(ldatec)
|
footer = self.write_footer(ldatec)
|
||||||
|
@ -271,7 +271,7 @@ class RepositoryPages(BasePage):
|
|||||||
repositorydetail += urllist
|
repositorydetail += urllist
|
||||||
|
|
||||||
# reposity: notelist
|
# reposity: notelist
|
||||||
notelist = self.display_note_list(repo.get_note_list())
|
notelist = self.display_note_list(repo.get_note_list(), Repository)
|
||||||
if notelist is not None:
|
if notelist is not None:
|
||||||
repositorydetail += notelist
|
repositorydetail += notelist
|
||||||
|
|
||||||
|
@ -273,7 +273,7 @@ class SourcePages(BasePage):
|
|||||||
tbody += trow
|
tbody += trow
|
||||||
|
|
||||||
# Source notes
|
# Source notes
|
||||||
notelist = self.display_note_list(source.get_note_list())
|
notelist = self.display_note_list(source.get_note_list(), Source)
|
||||||
if notelist is not None:
|
if notelist is not None:
|
||||||
sourcedetail += notelist
|
sourcedetail += notelist
|
||||||
|
|
||||||
|
@ -76,6 +76,7 @@ class ThumbnailPreviewPage(BasePage):
|
|||||||
"""
|
"""
|
||||||
BasePage.__init__(self, report, title)
|
BasePage.__init__(self, report, title)
|
||||||
self.create_thumbs_only = report.options['create_thumbs_only']
|
self.create_thumbs_only = report.options['create_thumbs_only']
|
||||||
|
self.create_thumbs_index = self.report.options['create_thumbs_index']
|
||||||
# bug 8950 : it seems it's better to sort on desc + gid.
|
# bug 8950 : it seems it's better to sort on desc + gid.
|
||||||
def sort_by_desc_and_gid(obj):
|
def sort_by_desc_and_gid(obj):
|
||||||
"""
|
"""
|
||||||
@ -108,7 +109,8 @@ class ThumbnailPreviewPage(BasePage):
|
|||||||
media_list.sort(key=lambda x: self.rlocale.sort_key(x[0]))
|
media_list.sort(key=lambda x: self.rlocale.sort_key(x[0]))
|
||||||
|
|
||||||
# Create thumbnail preview page...
|
# Create thumbnail preview page...
|
||||||
output_file, sio = self.report.create_file("thumbnails")
|
if self.create_thumbs_index:
|
||||||
|
output_file, sio = self.report.create_file("thumbnails")
|
||||||
result = self.write_header(self._("Thumbnails"))
|
result = self.write_header(self._("Thumbnails"))
|
||||||
thumbnailpage, dummy_head, body, outerwrapper = result
|
thumbnailpage, dummy_head, body, outerwrapper = result
|
||||||
|
|
||||||
@ -197,7 +199,8 @@ class ThumbnailPreviewPage(BasePage):
|
|||||||
|
|
||||||
# send page out for processing
|
# send page out for processing
|
||||||
# and close the file
|
# and close the file
|
||||||
self.xhtml_writer(thumbnailpage, output_file, sio, 0)
|
if self.create_thumbs_index:
|
||||||
|
self.xhtml_writer(thumbnailpage, output_file, sio, 0)
|
||||||
|
|
||||||
|
|
||||||
def thumbnail_link(self, name, index):
|
def thumbnail_link(self, name, index):
|
||||||
|
241
gramps/plugins/webreport/updates.py
Normal file
241
gramps/plugins/webreport/updates.py
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# Gramps - a GTK+/GNOME based genealogy program
|
||||||
|
#
|
||||||
|
# Copyright (C) 2000-2007 Donald N. Allingham
|
||||||
|
# Copyright (C) 2019- Serge Noiraud
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
|
||||||
|
"""
|
||||||
|
Narrative Web Page generator.
|
||||||
|
|
||||||
|
Classe:
|
||||||
|
UpdatesPage
|
||||||
|
"""
|
||||||
|
#------------------------------------------------
|
||||||
|
# python modules
|
||||||
|
#------------------------------------------------
|
||||||
|
from decimal import getcontext
|
||||||
|
import logging
|
||||||
|
from time import (strftime, time, localtime)
|
||||||
|
|
||||||
|
#------------------------------------------------
|
||||||
|
# Gramps module
|
||||||
|
#------------------------------------------------
|
||||||
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
|
from gramps.plugins.lib.libhtml import Html
|
||||||
|
|
||||||
|
#------------------------------------------------
|
||||||
|
# specific narrative web import
|
||||||
|
#------------------------------------------------
|
||||||
|
from gramps.plugins.webreport.basepage import BasePage
|
||||||
|
from gramps.gen.display.place import displayer as _pd
|
||||||
|
from gramps.plugins.webreport.common import (FULLCLEAR, _EVENTMAP)
|
||||||
|
from gramps.gen.lib import (Person, Family, Event, Place, Source, Repository,
|
||||||
|
Media)
|
||||||
|
from gramps.gen.lib.date import Date
|
||||||
|
|
||||||
|
_ = glocale.translation.sgettext
|
||||||
|
LOG = logging.getLogger(".NarrativeWeb")
|
||||||
|
getcontext().prec = 8
|
||||||
|
|
||||||
|
class UpdatesPage(BasePage):
|
||||||
|
"""
|
||||||
|
This class is responsible for displaying information about the Home page.
|
||||||
|
"""
|
||||||
|
def __init__(self, report, title):
|
||||||
|
"""
|
||||||
|
@param: report -- The instance of the main report class for
|
||||||
|
this report
|
||||||
|
@param: title -- Is the title of the web page
|
||||||
|
"""
|
||||||
|
BasePage.__init__(self, report, title)
|
||||||
|
ldatec = 0
|
||||||
|
|
||||||
|
output_file, sio = self.report.create_file("updates")
|
||||||
|
result = self.write_header(self._('New and updated objects'))
|
||||||
|
homepage, dummy_head, dummy_body, outerwrapper = result
|
||||||
|
self.days = self.report.options['maxdays']
|
||||||
|
self.nbr = self.report.options['maxupdates']
|
||||||
|
cur_time = int(time())
|
||||||
|
self.maxdays = cur_time - (86400 * self.days)
|
||||||
|
|
||||||
|
# begin updates division
|
||||||
|
with Html("div", class_="content", id="Updates") as section:
|
||||||
|
outerwrapper += section
|
||||||
|
description = ("This page contains the last updated objects in the"
|
||||||
|
" database in the last %(days)d days and for a "
|
||||||
|
"maximum of %(nb)d objects per object type." % {
|
||||||
|
'days' : self.days,
|
||||||
|
'nb' : self.nbr
|
||||||
|
}
|
||||||
|
)
|
||||||
|
section += Html("p", description)
|
||||||
|
|
||||||
|
header = self._("People")
|
||||||
|
section += Html("h4", header)
|
||||||
|
people = self.list_people_changed(Person)
|
||||||
|
if people is not None:
|
||||||
|
section += people
|
||||||
|
|
||||||
|
if self.report.options['inc_families']:
|
||||||
|
header = self._("Families")
|
||||||
|
section += Html("h4", header)
|
||||||
|
families = self.list_people_changed(Family)
|
||||||
|
if families is not None:
|
||||||
|
section += families
|
||||||
|
|
||||||
|
if self.report.options['inc_events']:
|
||||||
|
header = self._("Events")
|
||||||
|
section += Html("h4", header)
|
||||||
|
events = self.list_people_changed(Event)
|
||||||
|
if events is not None:
|
||||||
|
section += events
|
||||||
|
|
||||||
|
if self.report.options['inc_places']:
|
||||||
|
header = self._("Places")
|
||||||
|
section += Html("h4", header)
|
||||||
|
places = self.list_people_changed(Place)
|
||||||
|
if places is not None:
|
||||||
|
section += places
|
||||||
|
|
||||||
|
if self.report.options['inc_sources']:
|
||||||
|
header = self._("Sources")
|
||||||
|
section += Html("h4", header)
|
||||||
|
sources = self.list_people_changed(Source)
|
||||||
|
if sources is not None:
|
||||||
|
section += sources
|
||||||
|
|
||||||
|
if self.report.options['inc_repository']:
|
||||||
|
header = self._("Repositories")
|
||||||
|
section += Html("h4", header)
|
||||||
|
repos = self.list_people_changed(Repository)
|
||||||
|
if repos is not None:
|
||||||
|
section += repos
|
||||||
|
|
||||||
|
if (self.report.options['gallery'] and not
|
||||||
|
self.report.options['create_thumbs_only']):
|
||||||
|
header = self._("Media")
|
||||||
|
section += Html("h4", header)
|
||||||
|
media = self.list_people_changed(Media)
|
||||||
|
if media is not None:
|
||||||
|
section += media
|
||||||
|
|
||||||
|
# create clear line for proper styling
|
||||||
|
# create footer section
|
||||||
|
footer = self.write_footer(ldatec)
|
||||||
|
outerwrapper += (FULLCLEAR, footer)
|
||||||
|
|
||||||
|
# send page out for processing
|
||||||
|
# and close the file
|
||||||
|
self.xhtml_writer(homepage, output_file, sio, ldatec)
|
||||||
|
|
||||||
|
def list_people_changed(self, object_type):
|
||||||
|
"""
|
||||||
|
List all records with last change date
|
||||||
|
"""
|
||||||
|
nb_items = 0
|
||||||
|
|
||||||
|
def sort_on_change(handle):
|
||||||
|
""" sort records based on the last change time """
|
||||||
|
obj = fct(handle)
|
||||||
|
timestamp = obj.get_change_time()
|
||||||
|
return timestamp
|
||||||
|
|
||||||
|
if object_type == Person:
|
||||||
|
fct = self.report.database.get_person_from_handle
|
||||||
|
fct_link = self.new_person_link
|
||||||
|
elif object_type == Family:
|
||||||
|
fct = self.report.database.get_family_from_handle
|
||||||
|
fct_link = self.family_link
|
||||||
|
elif object_type == Event:
|
||||||
|
fct = self.report.database.get_event_from_handle
|
||||||
|
elif object_type == Place:
|
||||||
|
fct = self.report.database.get_place_from_handle
|
||||||
|
fct_link = self.place_link
|
||||||
|
elif object_type == Source:
|
||||||
|
fct = self.report.database.get_place_from_handle
|
||||||
|
fct_link = self.source_link
|
||||||
|
elif object_type == Repository:
|
||||||
|
fct = self.report.database.get_place_from_handle
|
||||||
|
fct_link = self.repository_link
|
||||||
|
elif object_type == Media:
|
||||||
|
fct = self.report.database.get_place_from_handle
|
||||||
|
obj_list = sorted(self.report.obj_dict[object_type],
|
||||||
|
key=sort_on_change, reverse=True)
|
||||||
|
with Html("table", class_="list", id="list") as section:
|
||||||
|
for handle in obj_list:
|
||||||
|
row = Html("tr")
|
||||||
|
section += row
|
||||||
|
date = obj = None
|
||||||
|
name = ""
|
||||||
|
obj = fct(handle)
|
||||||
|
if object_type == Person:
|
||||||
|
name = fct_link(handle)
|
||||||
|
elif object_type == Family:
|
||||||
|
name = self.report.get_family_name(obj)
|
||||||
|
name = fct_link(handle, name)
|
||||||
|
elif object_type == Event:
|
||||||
|
otype = obj.get_type()
|
||||||
|
date = obj.get_date_object()
|
||||||
|
if int(otype) in _EVENTMAP:
|
||||||
|
handle_list = set(
|
||||||
|
self.report.database.find_backlink_handles(
|
||||||
|
handle,
|
||||||
|
include_classes=['Family', 'Person']))
|
||||||
|
else:
|
||||||
|
handle_list = set(
|
||||||
|
self.report.database.find_backlink_handles(
|
||||||
|
handle,
|
||||||
|
include_classes=['Person']))
|
||||||
|
if handle_list:
|
||||||
|
name = Html("span", self._(otype.xml_str())+" ")
|
||||||
|
for obj_t, r_handle in handle_list:
|
||||||
|
if obj_t == 'Person':
|
||||||
|
name += self.new_person_link(r_handle)
|
||||||
|
else:
|
||||||
|
srbd = self.report.database
|
||||||
|
fam = srbd.get_family_from_handle(r_handle)
|
||||||
|
srgfn = self.report.get_family_name
|
||||||
|
name += self.family_link(r_handle, srgfn(fam))
|
||||||
|
elif object_type == Place:
|
||||||
|
name = _pd.display(self.report.database, obj)
|
||||||
|
name = fct_link(handle, name)
|
||||||
|
elif object_type == Source:
|
||||||
|
name = obj.get_title()
|
||||||
|
name = fct_link(handle, name)
|
||||||
|
elif object_type == Repository:
|
||||||
|
name = obj.get_name()
|
||||||
|
name = fct_link(handle, name)
|
||||||
|
elif object_type == Media:
|
||||||
|
name = obj.get_description()
|
||||||
|
url = self.report.build_url_fname_html(handle, "img")
|
||||||
|
name = Html("a", name, href=url, title=name)
|
||||||
|
if obj:
|
||||||
|
timestamp = obj.get_change_time()
|
||||||
|
if timestamp - self.maxdays > 0:
|
||||||
|
nb_items += 1
|
||||||
|
if nb_items > self.nbr:
|
||||||
|
break
|
||||||
|
tims = localtime(timestamp)
|
||||||
|
odat = Date(tims.tm_year, tims.tm_mon, tims.tm_mday)
|
||||||
|
date = self.rlocale.date_displayer.display(odat)
|
||||||
|
date += strftime(' %X', tims)
|
||||||
|
row += Html("td", date, class_="date")
|
||||||
|
row += Html("td", name)
|
||||||
|
return section
|
Loading…
Reference in New Issue
Block a user