diff --git a/src/data/Web_Basic-Ash.css b/src/data/Web_Basic-Ash.css index 121b9f94e..c9696d771 100644 --- a/src/data/Web_Basic-Ash.css +++ b/src/data/Web_Basic-Ash.css @@ -777,6 +777,33 @@ div#RepositoryList table.repolist tbody tr td.ColumnName { background-color: #FFF; } +/* Internet Address Book +------------------------------------------------------ */ +div#InternetAddressBook { + margin: 0; + padding: 0; +} +div#InternetAddressBook table.addressbook { + margin: .3em 0 .3em 0; +} +div#InternetAddressBook table.addressbook tbody tr.BeginName { + border-top: solid 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnType { + background-color: #CCC; + width: 15%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnName { + width: 30%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnLink { + width: 70%; +} + /* Subsections ----------------------------------------------------- */ #Home, #Introduction, #Contact { @@ -1317,3 +1344,27 @@ body#fullyearlinked table.calendar thead tr th.monthName { body#fullyearlinked table.calendar tbody tr td { height:3em; } + +/* Calendar: OneDay +--------------------------------------------------------------------------------- */ +body#OneDay h3 { + color: #000; + font-weight: bold; + text-align: center; +} +table.oneday { + margin: .3em 0 .3em 0; + padding: 0; +} +table.oneday tbody tr td { + border-bottom: dashed 1px #000; +} +table.oneday tbody tr td.ColumnRowLabel { + width: 5%; +} +table.oneday tbody tr td.ColumnText { + width: 85%; +} +table.oneday tbody tr td.ColumnEvent { + width; 10%; +} diff --git a/src/data/Web_Basic-Cypress.css b/src/data/Web_Basic-Cypress.css index ead07b9ea..d920f77d5 100644 --- a/src/data/Web_Basic-Cypress.css +++ b/src/data/Web_Basic-Cypress.css @@ -784,8 +784,10 @@ table.download td.Modified { /* Repositories ------------------------------------------------------ */ -div#RepositoryList { } - +div#RepositoryList { + margin: 0; + padding: 0; +} div#RepositoryList table.repolist tbody tr td { } div#RepositoryList table.repolist tbody tr td a { @@ -802,6 +804,33 @@ div#RepositoryList table.repolist tbody tr td.ColumnName { background-color: #FFF; } +/* Internet Address Book +------------------------------------------------------ */ +div#InternetAddressBook { + margin: 0; + padding: 0; +} +div#InternetAddressBook table.addressbook { + margin: .3em 0 .3em 0; +} +div#InternetAddressBook table.addressbook tbody tr.BeginName { + border-top: solid 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnType { + background-color: #E0E6E0; + width: 15%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnName { + width: 30%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnLink { + width: 70%; +} + /* Subsections ----------------------------------------------------- */ #Home, #Introduction, { @@ -1324,3 +1353,27 @@ body#WebCal #CreatorInfo a, body#WebCal #CreatorInfo a:hover { color:#9DBF9D; background-color:#E0E6E0; } + +/* Calendar: OneDay +--------------------------------------------------------------------------------- */ +body#OneDay h3 { + color: #000; + font-weight: bold; + text-align: center; +} +table.oneday { + margin: .3em 0 .3em 0; + padding: 0; +} +table.oneday tbody tr td { + border-bottom: dashed 1px #000; +} +table.oneday tbody tr td.ColumnRowLabel { + width: 5%; +} +table.oneday tbody tr td.ColumnText { + width: 85%; +} +table.oneday tbody tr td.ColumnEvent { + width; 10%; +} diff --git a/src/data/Web_Basic-Lilac.css b/src/data/Web_Basic-Lilac.css index 1090b100a..5c0764253 100644 --- a/src/data/Web_Basic-Lilac.css +++ b/src/data/Web_Basic-Lilac.css @@ -733,8 +733,10 @@ table.download td.Modified { /* Repositories ------------------------------------------------------ */ -div#RepositoryList { } - +div#RepositoryList { + margin: 0; + padding: 0; +} div#RepositoryList table.repolist tbody tr td { background-color: #D8F3D6; } @@ -752,6 +754,33 @@ div#RepositoryList table.repolist tbody tr td.ColumnName { background-color: #FFF; } +/* Internet Address Book +------------------------------------------------------ */ +div#InternetAddressBook { + margin: 0; + padding: 0; +} +div#InternetAddressBook table.addressbook { + margin: .3em 0 .3em 0; +} +div#InternetAddressBook table.addressbook tbody tr.BeginName { + border-top: solid 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnType { + background-color: #E0E0E9; + width: 15%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnName { + width: 30%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnLink { + width: 70%; +} + /* Subsections ----------------------------------------------------- */ #Home, #Introduction, #Contact { @@ -1344,3 +1373,27 @@ body#fullyearlinked table.calendar thead tr th.monthName { body#fullyearlinked table.calendar tbody tr td { height:3em; } + +/* Calendar: OneDay +--------------------------------------------------------------------------------- */ +body#OneDay h3 { + color: #000; + font-weight: bold; + text-align: center; +} +table.oneday { + margin: .3em 0 .3em 0; + padding: 0; +} +table.oneday tbody tr td { + border-bottom: dashed 1px #000; +} +table.oneday tbody tr td.ColumnRowLabel { + width: 5%; +} +table.oneday tbody tr td.ColumnText { + width: 85%; +} +table.oneday tbody tr td.ColumnEvent { + width; 10%; +} diff --git a/src/data/Web_Basic-Peach.css b/src/data/Web_Basic-Peach.css index d835e1525..4ec0b85f7 100644 --- a/src/data/Web_Basic-Peach.css +++ b/src/data/Web_Basic-Peach.css @@ -733,8 +733,10 @@ table.download td.Modified { /* Repositories ------------------------------------------------------ */ -div#RepositoryList { } - +div#RepositoryList { + margin: 0; + padding: 0; +} div#RepositoryList table.repolist tbody tr td { background-color: #FFE09F; } @@ -752,6 +754,33 @@ div#RepositoryList table.repolist tbody tr td.ColumnName { background-color: #FFF; } +/* Internet Address Book +------------------------------------------------------ */ +div#InternetAddressBook { + margin: 0; + padding: 0; +} +div#InternetAddressBook table.addressbook { + margin: .3em 0 .3em 0; +} +div#InternetAddressBook table.addressbook tbody tr.BeginName { + border-top: solid 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnType { + background-color: #FFFBE7; + width: 15%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnName { + width: 30%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnLink { + width: 70%; +} + /* Subsections ----------------------------------------------------- */ #Home, #Introduction, #Contact { @@ -1344,3 +1373,27 @@ body#fullyearlinked table.calendar thead tr th.monthName { body#fullyearlinked table.calendar tbody tr td { height:3em; } + +/* Calendar: OneDay +--------------------------------------------------------------------------------- */ +body#OneDay h3 { + color: #000; + font-weight: bold; + text-align: center; +} +table.oneday { + margin: .3em 0 .3em 0; + padding: 0; +} +table.oneday tbody tr td { + border-bottom: dashed 1px #000; +} +table.oneday tbody tr td.ColumnRowLabel { + width: 5%; +} +table.oneday tbody tr td.ColumnText { + width: 85%; +} +table.oneday tbody tr td.ColumnEvent { + width; 10%; +} diff --git a/src/data/Web_Basic-Spruce.css b/src/data/Web_Basic-Spruce.css index afe2c7478..eb5590582 100644 --- a/src/data/Web_Basic-Spruce.css +++ b/src/data/Web_Basic-Spruce.css @@ -733,8 +733,10 @@ table.download td.Modified { /* Repositories ------------------------------------------------------ */ -div#RepositoryList { } - +div#RepositoryList { + margin: 0; + padding: 0; +} div#RepositoryList table.repolist tbody tr td { background-color: #EAFFE4; } @@ -752,6 +754,33 @@ div#RepositoryList table.repolist tbody tr td.ColumnName { background-color: #FFF; } +/* Internet Address Book +------------------------------------------------------ */ +div#InternetAddressBook { + margin: 0; + padding: 0; +} +div#InternetAddressBook table.addressbook { + margin: .3em 0 .3em 0; +} +div#InternetAddressBook table.addressbook tbody tr.BeginName { + border-top: solid 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnType { + background-color: #EAEEF4; + width: 15%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnName { + width: 30%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnLink { + width: 70%; +} + /* Subsections ----------------------------------------------------- */ #Home, #Introduction, #Contact { @@ -1344,3 +1373,27 @@ body#fullyearlinked table.calendar thead tr th.monthName { body#fullyearlinked table.calendar tbody tr td { height:3em; } + +/* Calendar: OneDay +--------------------------------------------------------------------------------- */ +body#OneDay h3 { + color: #000; + font-weight: bold; + text-align: center; +} +table.oneday { + margin: .3em 0 .3em 0; + padding: 0; +} +table.oneday tbody tr td { + border-bottom: dashed 1px #000; +} +table.oneday tbody tr td.ColumnRowLabel { + width: 5%; +} +table.oneday tbody tr td.ColumnText { + width: 85%; +} +table.oneday tbody tr td.ColumnEvent { + width; 10%; +} diff --git a/src/data/Web_Nebraska.css b/src/data/Web_Nebraska.css index 660f75418..fb5cb08d9 100644 --- a/src/data/Web_Nebraska.css +++ b/src/data/Web_Nebraska.css @@ -772,6 +772,56 @@ table.download td.Modified { font-weight:bold; } +/* Repositories +------------------------------------------------------ */ +div#RepositoryList { + margin: 0; + padding: 0; +} +div#RepositoryList table.repolist tbody tr td { + background-color: #C1B398; +} +div#RepositoryList table.repolist tbody tr td a { + display: block; + padding: .3em 10px; +} +div#RepositoryList table.repolist tbody tr td.ColumnRowLabel { + width: 9%; +} +div#RepositoryList table.repolist tbody tr td.ColumnType { + width: 15%; +} +div#RepositoryList table.repolist tbody tr td.ColumnName { + background-color: #FFF; +} + +/* Internet Address Book +------------------------------------------------------ */ +div#InternetAddressBook { + margin: 0; + padding: 0; +} +div#InternetAddressBook table.addressbook { + margin: .3em 0 .3em 0; +} +div#InternetAddressBook table.addressbook tbody tr.BeginName { + border-top: solid 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnType { + background-color: #F6F2EE; + width: 15%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnName { + width: 30%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnLink { + width: 70%; +} + /* Subsections ----------------------------------------------------- */ #Home, #Introduction, #Contact { @@ -1367,3 +1417,27 @@ body#fullyearlinked table.calendar thead tr th.monthName { body#fullyearlinked table.calendar tbody tr td { height:3em; } + +/* Calendar: OneDay +--------------------------------------------------------------------------------- */ +body#OneDay h3 { + color: #000; + font-weight: bold; + text-align: center; +} +table.oneday { + margin: .3em 0 .3em 0; + padding: 0; +} +table.oneday tbody tr td { + border-bottom: dashed 1px #000; +} +table.oneday tbody tr td.ColumnRowLabel { + width: 5%; +} +table.oneday tbody tr td.ColumnText { + width: 85%; +} +table.oneday tbody tr td.ColumnEvent { + width; 10%; +} diff --git a/src/data/Web_Print-Default.css b/src/data/Web_Print-Default.css index bcbb99d41..003c5dc2c 100644 --- a/src/data/Web_Print-Default.css +++ b/src/data/Web_Print-Default.css @@ -1,9 +1,9 @@ -/* +./* ************************************************************************************************** Copyright Holder and License ************************************************************************************************** GRAMPS Cascading Style Sheet -Style Name: Printer Default +Style Name: Visually Impaired Stylesheet Style Author: Jason M. Simanek (2008) ************************************************************************************************** This website was created with GRAMPS @@ -32,8 +32,12 @@ see <http://www.gnu.org/licenses/>. -------------------------------------------------------------------------------------------------- Color Palette -------------------------------------------------------------------------------------------------- -black #000 -white #FFF +brown dark #542 +brown light #C1B398 +gray #696969 +green dark #228A22 +green #6AF364, #5D835F +green lighter #D8F3D6 ===== Ancestor Graph Color Scheme ===== Males #E5F2FE @@ -47,17 +51,21 @@ Females Web_Gender_Female.png # $Id$ NarrativeWeb Styles --------------------------------------------------------------------------------------------- - - General Elements ------------------------------------------------------ */ - +-------------------------------------------------------------------------------------------- */ body { - color:#000; - margin:0; - padding:0; - background-color:#FFF; + font-family: Arial, sans, sans-serif, Helvetica; + color: #000; + background-color: #FFF; } +body#NarrativeWeb_Horizontal { + padding: 158px 0px 0px 0px; +} +body#NarrativeWeb_Vertical { + padding: 128px 0px 0px 44px; +} + +/* General Elements +----------------------------------------------------- */ div { margin:0; padding:0; @@ -83,6 +91,7 @@ img { background:none; } .content { + overflow: auto; width:965px; margin:0 auto; padding-bottom:.5em; @@ -127,28 +136,28 @@ h3 { } h4 { font:normal 1.2em/1.2em serif; - color:#000; - margin:0; + color: #FFF; + margin-top: .3cm; padding:.2em 0 .2em 20px; - background-color:#FFF; - border-bottom:solid 2px #000; + background-color: #228A22; + border-bottom:solid 4px #A97; } h5, h6 { font:normal 1em/1.2em serif; font-style:italic; margin:1.3em 0 .5em 1em; } - p#description { max-width:800px; margin:0; padding:1em 20px; } p#description:first-letter { - color:#000; + color: #228A22; font-size:xx-large; } p a { + color: #FFF; text-decoration:underline; } sup { @@ -164,11 +173,19 @@ ol { ol li a { text-decoration:none; } +ol li a:hover { + text-decoration:underline; +} a { - color:#000; + color: #542; } a:visited { - color:#000; + color: #542; +} +a:hover { + color: #000; + background-color: #C1B398; + text-decoration:underline; } span.preposition { padding-left:1em; @@ -176,60 +193,79 @@ span.preposition { } .grampsid { font:normal .8em/1.2em monospace; - color:#000; + color: #000; } /* Header ----------------------------------------------------- */ -#header { - margin:0; - height:1.5cm; - padding:0 0 .9em 0; - border-bottom:solid 2px #000; +div#header { + background-color: #542; + border-bottom: solid 8px #5D835F; + height: 60px; + width: 100%; } #SiteTitle { margin:0; - padding:.5em 0 0 20px; - font-style:italic; + padding:.5em 0 0.5em 10px; + font-size: 28px; + color: #FFF; + font-style: italic; } p#user_header { font-size:1.3em; text-align:left; + color: #6AF364; margin:0; padding:.2em 0 .6em 20px; } /* Footer ----------------------------------------------------- */ -#footer { - clear:both; - height:1.5cm; - width:100%; - font-size:12px; - line-height:130%; - font-family:sans-serif; - margin:0; - padding:0; - border-top:solid 2px #000; +div#footer { + width: 100%; + height: 60px; + overflow: auto; + clear: both; + font-size: 12px; + margin: 0; + color: #FFF; + background-color: #542; + border-top: solid 8px #5D835F; } -#footer img { - display:none; +div#footer a, div#footer a:visited { + text-decoration:none; + color: #FFF; } -#footer p#createdate { +div#footer a:hover { + color: #000; + text-decoration:underline; +} +div#footer img { + border:0; + margin:0 auto; + vertical-align:middle; +} +div#footer p#createdate { float:left; width:60%; text-align:left; margin-left:10px; } -#footer p#copyright { +div#footer p#copyright { float:right; text-align:right; - margin-top:10px; + color: #FFF; + margin: 10px 10px 0px 0px; +} +div#footer p#copyright img { + float:right; + margin-right: 10px; } #user_footer { width:70%; float:left; margin:1em; + color: #6AF364; } #user_footer p { font:normal 1em/1.2em serif; @@ -237,36 +273,52 @@ p#user_header { padding:0; } -/* Alphabet Navigation ------------------------------------------------------ */ -div#alphabet, div#navigation, div#subnavigation { - display:none; -} - /* Navigation ----------------------------------------------------- */ +div#navigation, div#subnavigation { + display: none; +} + +/* Alphabet Navigation +----------------------------------------------------- */ +div#alphabet { + display: none; +} /* Main Table ----------------------------------------------------- */ table.infolist { width:100%; - margin:0; - padding:0; - background-color:#FFF; + margin: 0; + padding: 0; + font-size: 12px; } table.infolist thead tr th { font:normal 1.1em/1.2em serif; + color: #000; margin:0; padding:.2em 10px; - border-bottom:solid 1px #000; + background-color: #6AF364; + border: solid 1px #5D835F; +} +table.infolist thead tr th a { + color: #000; +} +table.infolist thead tr th a:hover { + background-color: #C1B398; } table.infolist tr td { font:normal 1.1em/1.4em serif; vertical-align:middle; - padding:.1em 10px; + padding: 6px 0 6px 10px; +} +table.infolist tr td a { + display:block; + text-decoration:none; + color: #000; } table.infolist tr.BeginLetter td, table.infolist tr.BeginSurname td { - border-top:solid 1px #000; + border-top:solid 1px #228A22; } table.infolist tr td.ColumnLetter { width:3%; @@ -290,7 +342,15 @@ table.infolist tbody tr td.ColumnType { } table.infolist tbody tr td.ColumnPartner { font-size:.9em; + background-color: #FFF; } +table.infolist tbody tr td.ColumnPartner a { + display:block; + padding:.6em 10px; + vertical-align:middle; +} +table.infolist tbody tr td.ColumnPartner a:hover { } + table.infolist tbody tr td.ColumnParents { font-size:.9em; } @@ -316,14 +376,30 @@ table.surnamelist thead tr th.ColumnSurname, table.surnamelist thead tr th { padding:0; } +table.surnamelist thead tr th a, table.surnamelist thead tr th a:visited { + display:block; + text-align:left; + text-decoration:none; + padding:.2em 10px; +} +table.surnamelist tr th:hover { } + table.surnamelist thead tr th.ColumnLetter { padding-left:20px; padding-right:10px; } -table.surnamelist tbody tr td.ColumnSurname { } - +table.surnamelist tbody tr td { + background-color: #D8F3D6; +} +table.surnamelist tbody tr td.ColumnLetter a { + background: none; +} +table.surnamelist tbody tr td.ColumnSurname { + background-color: #FFF; +} table#SortByName thead tr th.ColumnSurname, table#SortByCount thead tr th.ColumnQuantity { + background-color: #C1B398; } table#SortByName thead tr th.ColumnSurname a:after, table#SortByCount thead tr th.ColumnQuantity a:after { @@ -338,17 +414,23 @@ table#SortByName tbody tr td.ColumnSurname a { } table#SortByCount tbody tr td.ColumnQuantity { } +table.surnamelist tbody tr td.ColumnSurname:hover, + table#SortByName tbody tr td.ColumnSurname:hover { + background-color: #C1B398; +} table.surname { border-bottom:solid 1px #000; } -table.surname tbody tr td { - border-bottom:dashed 1px #000; -} table.surname thead tr th.ColumnName { width:20%; padding-left:20px; } +table.surname tbody tr td { + border-bottom:dashed 1px #000; + background-color: #D8F3D6; +} table.surname tbody tr td.ColumnName { + background-color: #FFF; width:20%; padding:0; } @@ -358,6 +440,16 @@ table.surname tbody tr td.ColumnName a { } table.surname tbody tr td.ColumnName a span.grampsid { } +table.surname tbody tr td.ColumnName:hover { + background-color: #C1B398; +} +table.surname tbody tr td.ColumnPartner { + background-color: #FFF; +} +table.surname tbody tr td.ColumnPartner a { + display:block; + padding:.6em 10px .6em 0px; +} table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents { width:25%; @@ -365,55 +457,58 @@ table.surname tbody tr td.ColumnParents { /* Individuals ----------------------------------------------------- */ -#Individuals { } +div#Individuals { } -#Individuals table.individuallist { - border-bottom:solid 1px #000; +div#Individuals table.individuallist { + border-bottom: solid 1px #5D835F; } -#Individuals table.individuallist tbody tr td { - border-bottom:dashed 1px #000; +div#Individuals table.individuallist tbody tr td { + border-bottom: dashed 1px #5D835F; + background-color: #D8F3D6; } -table.individuallist tbody tr td.ColumnName { - padding:0; - background-color:#FFF; +div#Individuals table.individuallist tbody tr td a { + display: block; + padding: .6em 10px; } -table.individuallist tbody tr td.ColumnName a { - display:block; - padding:.6em 10px; +div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover, +div#Individuals table.individuallist tbody tr td.ColumnSurname a:active { + cursor:default; + color: #000; + background:none; +} +div#Individuals table.individuallist tbody tr td.ColumnName { + background-color: #FFF; +} +div#Individuals table.individuallist tbody tr td.ColumnName a { vertical-align:middle; } -table.individuallist tbody tr td.ColumnPartner { - padding:0; - background-color:#FFF; +div#Individuals table.individuallist tbody tr td.ColumnPartner { + background-color: #FFF; } -table.individuallist tbody tr td.ColumnPartner a { - display:block; - padding:.6em 10px; - vertical-align:middle; -} -#Individuals div table.infolist tr td p { +div#Individuals div table.infolist tr td p { font:normal .9em/1.2em sans-serif; vertical-align:top; } -#Individuals div table.infolist tr td p a { +div#Individuals div table.infolist tr td p a { display:inline; } -/* IndividualDetail ------------------------------------------------------- */ -#IndividualDetail { } +div#IndividualDetail { } #IndividualDetail div table.infolist tr td { font:normal .9em/1.2em sans-serif; vertical-align:top; } -#IndividualDetail div table.infolist tr td a { +div#IndividualDetail div table.infolist tr td a { display:inline; } -#IndividualDetail table.infolist tbody tr td.ColumnAttribute { +div#IndividualDetail table.infolist tr td a:hover { + text-decoration:underline; +} +div#IndividualDetail table.infolist tbody tr td.ColumnAttribute { width:10%; } -#IndividualDetail div.subsection table tr td:first-child { +div#IndividualDetail div.subsection table tr td:first-child { padding-left:20px; } @@ -421,33 +516,128 @@ table.individuallist tbody tr td.ColumnPartner a { ----------------------------------------------------- */ #Places { } +#Places table.infolist tbody tr td.ColumnLetter { + background-color: #D8F3D6; +} #Places table.infolist tbody tr td.ColumnName { padding:0; + background-color: #FFF; } #Places table.infolist tbody tr td.ColumnName a { padding:.1em 10px .3em 10px; } +/* EventList and EventDetail +----------------------------------------------------- */ +div#EventList, div#EventDetail { } + +div#events table.eventlist { + margin-top: .3cm; +} +div#events table.eventlist tbody tr td.ColumnEvent a { + padding: 2px 100px 2px 10px; +} +div#events table.eventlist tbody tr td.ColumnPlace a { + padding: 2px 70px 2px 0px; +} +table.eventlist tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +table.eventlist tbody tr td.ColumnEvent { + width: 20%; +} +table.eventlist tbody tr td.ColumnDate { + background-color: #D8F3D6; + width: 16%; +} +table.eventlist tbody tr td.ColumnPlace { + background-color: #FFF; + width: 35%; +} +table.eventlist tbody tr td.ColumnSources { + background-color: #FFF; + width: 12%; +} +table.eventlist tbody tr td.ColumnNotes { + background-color: #D8F3D6; + width: 25%; +} +table.eventlist tbody tr td.ColumnPerson { + width: 35%; +} +table.eventlist tbody tr td.ColumnPartner { + width: 35%; +} +div#families table.eventlist { + margin: 0; + padding: 0; +} +div#EventList table.eventlist tbody tr.BeginName { + border-top: solid 1px #000; +} +div#EventList table.eventlist tbody tr td { + padding: 4px 0px 4px 0px; +} +div#EventList table.eventlist tbody tr td.ColumnEvent a, +div#EventList table.eventlist tbody tr td.ColumnPerson a, +div#EventList table.eventlist tbody tr td.ColumnPartner a { + display: block; + padding: 4px 0px 4px 10px; +} +div#EventDetail h3 { + font-size: xxx-large; +} +div#EventDetail h3:first-lettr { + color: #5D835F; +} +div#EventDetail table.eventlist { + margin: .5cm 0 .3cm 1.5cm; + width: 800px; +} +div#EventDetail table.eventlist tbody tr td.ColumnAttribute { + border-top: solid 1px #5D835F; + font-weight: bold; + text-transform: uppercase; + width: 20%; +} +div#EventDetail table.eventlist tbody tr td.ColumnEvent { + background-color: #D8F3D6; + border-top: solid 1px #5D835F; +} + /* Gallery ----------------------------------------------------- */ #Gallery { } #Gallery table.infolist tbody tr td.ColumnRowLabel, #Gallery table.infolist tbody tr td.ColumnDate { + background-color: #D8F3D6; padding-bottom:0; } #Gallery table.infolist tbody tr td.ColumnName { padding:0; + background-color: #FFF; } #Gallery table.infolist tbody tr td.ColumnName a { padding:.1em 10px .3em 10px; } +#Gallery table.gallerylist tbody tr td { + border-bottom: dashed 1px #000; +} #GalleryNav { font:normal 1em/1em sans-serif; margin:1em 0 0 0; padding:1.2em 0 1.4em 0; text-align:center; } +#GalleryNav a { + font-weight:bold; + text-decoration:none; + border:solid 1px #228A22; +} +#GalleryNav a:hover { } + #GalleryNav a#Previous { padding:.5em .7em .3em .7em; } @@ -469,7 +659,7 @@ table.individuallist tbody tr td.ColumnPartner a { position:relative; overflow:hidden; text-align:center; - border:solid 1px #000; + border:solid 1px #228A22; } #GalleryDisplay img { margin:0 auto; @@ -491,7 +681,7 @@ table.individuallist tbody tr td.ColumnPartner a { margin-bottom:0; border-style:solid; border-width:2px 0 1px 0; - border-color:#000; + border-color: #000; } table.exifdata tr td.ColumnAttribute { border-top:solid 1px #000; @@ -505,6 +695,7 @@ table.exiflist tr td.ColumnValue { /* Contact ----------------------------------------------------- */ #Contact #summaryarea { + background-color: #D8F3D7; width:500px; margin:0 auto; padding:3em; @@ -541,75 +732,131 @@ table.exiflist tr td.ColumnValue { #email { clear:left; } +#email a { + text-decoration:none; +} +#email a:hover { + text-decoration:underline; +} /* Download ----------------------------------------------------- */ -#Download { - padding-bottom:2cm; - padding-left:.5cm; - padding-right:.5cm; - height:390px; + +div#Download { + margin: 0; + padding: 0px 0px .5em 0px; } -table.download { - padding-top:2cm; - border:solid 2px #000; - width:100%; +div#Download table.download { + padding: 0; + margin: .5em 0 .5em 0; + border: solid 1px #5D835F; + width: 100%; } -table.download img { +div#Download table.download img { float:center; } -table.download thead tr th { - text-transform:uppercase; - padding-left:20px; - padding-top:15px; - border-style:solid; - border-color:#000; - border-width:0 2px 2px 2px; - text-align:left; -} -table.download tbody tr#Row02 { +div#Download table.download tbody tr#Row02 { border-bottom:solid 2px #000; } -table.download tbody tr td { - padding-left:20px; - padding-top:15px; - border-style:solid; - border-color:#000; - border-width:0 2px 2px 2px; +div#Download table.download tbody tr td { + background-color: #D8F3D6; + border: solid 1px #000; text-align:left; } -table.download td.ColumnDescription { +div#Download table.download td.Filename { + width:30%; + background-color: #FFF; +} +div#Download table.download td.Filename a { + display: block; + padding: 10px 10px 14px 6px; + font-weight:bold; + font-style: italic; + text-decoration:none; +} +div#Download table.download td.Description { width:45%; } -table.download td.ColumnLicense { +div#Download table.download td.License { width:6%; - padding-left:20px; } -table.download td.ColumnFilename { - width:30%; -} -table.download td.ColumnModified { +div#Download table.download td.Modified { width:17%; - font-weight:bold; } /* Sources ----------------------------------------------------- */ #Sources { } -#Sources table.infolist tbody tr td.ColumnRowLabel { +div#Sources table.infolist tbody tr td { + background-color: #D8F3D6; +} +div#Sources table.infolist tbody tr td.ColumnRowLabel { padding-bottom:0; } -#Sources table.infolist tbody tr td.ColumnName { +div#Sources table.infolist tbody tr td.ColumnName { padding:0; + background-color: #FFF; } -#SourceDetail div#references ol li { +div#Sources table.infolist tbody tr td.ColumnName a { + font-size:.9em; + padding:.1em 10px .3em 10px; +} +div#Sources table.infolist tbody tr td.ColumnName a:hover { } + +div#SourceDetail div#references ol li { padding-bottom:.5em; } + /* Repositories ------------------------------------------------------ */ -#RepositoryList table.repolist tbody tr td.ColumnName { +div#RepositoryList { + margin: 0; + padding: 0; +} +div#RepositoryList table.repolist tbody tr td { + background-color: #D8F3D6; +} +div#RepositoryList table.repolist tbody tr td a { + display: block; + padding: .3em 10px; +} +div#RepositoryList table.repolist tbody tr td.ColumnRowLabel { + width: 9%; +} +div#RepositoryList table.repolist tbody tr td.ColumnType { + width: 15%; +} +div#RepositoryList table.repolist tbody tr td.ColumnName { + background-color: #FFF; +} + +/* Internet Address Book +------------------------------------------------------ */ +div#InternetAddressBook { + margin: 0; + padding: 0; +} +div#InternetAddressBook table.addressbook { + margin: .3em 0 .3em 0; +} +div#InternetAddressBook table.addressbook tbody tr.BeginName { + border-top: solid 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnType { + background-color: #D8F3D6; + width: 15%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnName { + width: 30%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnLink { + width: 70%; } /* Subsections @@ -634,6 +881,12 @@ div.subsection h4 { div.subsection table, div.subsection ol, div.subsection p { font-size:.9em; } +div.subsection a { + text-decoration:none; +} +div.subsection a:hover { + text-decoration:underline; +} div.subsection table.infolist { width:100%; margin:0; @@ -649,19 +902,20 @@ div#events h4 { border:none; } #IndividualDetail { -} -#IndividualDetail div#events table.infolist thead tr th { - font-weight:bold; - font-size:12px; - line-height:12px; - font-family:sans-serif; - text-transform:uppercase; - padding-top:6px; - padding-bottom:4px; + background-color: #FFF; } #IndividualDetail div#events table.eventtable { width:100%; - padding-bottom:15px; + padding-top:15px; +} +#IndividualDetail div#events table.infolist thead tr th { + font-weight:bold; + font-size:10px; + line-height:12px; + text-transform:uppercase; + color: #542; + padding-top:6px 0 4px 0; + background-color: #6AF364; } #IndividualDetail div#events table.infolist thead tr th:first-child { padding-left:20px; @@ -671,61 +925,50 @@ div#events h4 { padding-bottom:.8em; } #IndividualDetail div#events table.infolist tbody tr td.ColumnAttribute { - border-bottom:solid 1px #000; + border-bottom:solid 1px #228A22; } #IndividualDetail div#events table.infolist tbody tr td.ColumnValue { border-bottom:solid 1px #000; } table.infolist tbody tr td.ColumnValue p { font-family:sans-serif; - color:#696969; + color: #696969; margin:.2em 0 0 2em; } -table.eventtable thead tr th { - color:#000; -} -table.eventtable tbody tr td { - border-bottom:solid 1px #000; -} -div#events table.attrlist { - margin-top:.3cm; - margin-left:.78cm; - width:880px; -} -table.attrlist thead tr th { - color:#000; -} -div#events table.attrlist tbody tr td { - border-bottom:dashed 2px #000; -} -div#events table.attrlist tbody tr td.ColumnType { - width:100px; -} -div#events table.attrlist tbody tr td.ColumnValue { - width:200px; -} -div#events table.attrlist tbody tr td.ColumnSource { - width:80px; -} -div#events table.attrlist tbody tr td.ColumnNote { - width:450px; -} /* Subsections : Attributes ----------------------------------------------------- */ div#attributes { } -div#attributes table.attrlist tbody tr td { - border-bottom:solid 1px #000; +table.attrlist { + width: 100%; } -div#attributes table.attrlist tbody tr td.ColumnType { - width:20%; +table.attrlist thead tr th { + font-weight: bold; + text-transform: uppercase; } -div#attributes table.attrlist tbody tr td.ColumnValue { - width:60%; +table.attrlist tbody tr { + border: solid 1px #5D835F; } -div#attributes table.attrlist tbody tr td.ColumnSources { - width:20%; +table.attrlist tbody tr td { + background-color: #D8F3D6; +} +table.attrlist tbody tr td.ColumnType { + width: 200px; +} +table.attrlist tbody tr td.ColumnValue { + width: 250px; +} +table.attrlist tbody tr td.ColumnSources { + background-color: #FFF; + width: 100px; +} +table.attrlist tbody tr td.ColumnNotes { + width: 400px; +} +div#attributes table.attrlist tbody tr td.ColumnNotes { + width: 400px; + background-color: #D8F3D6; } /* Subsections : Parents @@ -747,9 +990,12 @@ div#parents table.infolist tbody tr td.ColumnValue ol li { /* Subsections : Families ----------------------------------------------------- */ div#families table.infolist { - margin-top:.5em; + margin: .3cm 0 .3cm 0; } -div#Families table.infolist tbody tr td { +div#Families table.infolist tbody tr td { } + +div#families table.infolist tbody tr td.ColumnValue { + background-color: #FFF; } div#families table.infolist tbody tr td.ColumnValue p { margin-top:0; @@ -805,6 +1051,7 @@ div#Addresses { } div#Addresses table.infolist { font-size:.35cm; + background-color: #FFF; } div#Addresses table.infolist tbody tr td { border-bottom:solid 1px #000; @@ -848,6 +1095,17 @@ div#Addresses table.infolist tbody tr td.ColumnPhone { height:150px; text-align:center; } +#indivgallery div.thumbnail a { + display:block; + margin:0; + padding:0; + background:none; +} +#indivgallery div.thumbnail a img { + margin-bottom:.5cm; + padding:0; + border:solid 1px #000; +} #indivgallery div.thumbnail p { font:normal .7em/1.4em sans-serif; text-align:center; @@ -887,12 +1145,13 @@ div#sourcerefs ol li ol { /* Subsections : Summary Area ----------------------------------------------------- */ div#summaryarea { + background-color: #FFF; } div#summaryarea table.infolist { margin:0; padding:0; background:#FFF; - border-bottom:solid .7em #000; + border-bottom:solid .7em #FFF; } div#summaryarea table.infolist tr td, div#summaryarea table.infolist tr td p { font:normal .9em/1.2em sans-serif; @@ -903,6 +1162,7 @@ div#summaryarea table.infolist tr td a, div#summaryarea table.infolist tr td p a } div#summaryarea table.infolist tbody tr td.ColumnAttribute { width:14%; + color: #696969; padding-left:20px; } @@ -916,7 +1176,7 @@ div#pedigree { } #pedigree a { text-decoration:none; - color:#000; + color: #000; } #pedigree a:hover { text-decoration:underline; @@ -947,7 +1207,7 @@ div#pedigree { .spouse a { font-weight:normal; font-style:normal; - color:#000; + color: #000; } .spouse:before { content: "+ "; @@ -982,11 +1242,29 @@ div#pedigree { font:normal .7em/1.4em sans-serif; text-align:center; text-decoration:none; + color: #542; width:118px; padding:5px 20px 7px 20px; margin-top:-25px; margin-left:16px; - border:solid 1px #000; + background-color: #FFF; + border:solid 1px #228A22; +} +#treeContainer div.boxbg a:hover { + position:relative; + z-index:999; + font-size:1em; + text-decoration:none; + color: #542; + width:190px; + margin-left:-20px; + padding:10px 25px 12px 25px; + border:solid 2px #228A22; +} +#treeContainer div.boxbg a:hover, +#treeContainer div.AncCol3 a:hover, +#treeContainer div.AncCol4 a:hover { + margin-top:-44px; } #treeContainer div.boxbg a.noThumb, #treeContainer div.AncCol3 a, @@ -998,6 +1276,12 @@ div#pedigree { #treeContainer div.boxbg a.noThumb:hover { margin-top:0; } +#treeContainer div.AncCol0 a:hover { + margin-left:12px; +} +#treeContainer div.AncCol4 a:hover { + margin-left:-60px; +} #treeContainer div.boxbg span.thumbnail { display:block; height:65px; @@ -1008,12 +1292,10 @@ div#pedigree { height:65px; margin:0 auto; } -#treeContainer div.boxbg a:hover span.thumbnail, -#treeContainer div.boxbg a:hover span.thumbnail img { +#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img { height:80px; } -#treeContainer div.AncCol3 span.thumbnail, -#treeContainer div.AncCol4 span.thumbnail { +#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail { display:none; } #treeContainer div.boxbg a:hover span.thumbnail { @@ -1029,6 +1311,8 @@ div#pedigree { } #treeContainer div.unknown a, #treeContainer div.unknown span.unlinked { + background-color: #000; + color: #FAFAFA; } .shadow { display:none; @@ -1039,7 +1323,7 @@ div#pedigree { height:1px; margin:0 0 0 16px; padding:0; - background-color:#000; + background-color: #228A22; } #tree div div.bhline { position:absolute; @@ -1047,7 +1331,7 @@ div#pedigree { width:1px; margin:0 0 0 16px; padding:0; - background-color:#000; + background-color: #228A22; } .ghline, .gvline { display:none; @@ -1057,7 +1341,7 @@ div#pedigree { -------------------------------------------------------------------------------------------- */ /* Calendar : General */ body#WebCal { - padding:0 14px; + background-color: #FFF; } .calendar { empty-cells:show; @@ -1083,22 +1367,34 @@ body#WebCal { font-size:2em; line-height:100%; text-transform:none; + color: #542; padding:.3em 0 .2em 0; + background-color: #FFF; } #CreatorInfo { float:right; - color:#FFF; + color: #FFF; margin:-24px 10px 0 0; } +#CreatorInfo a { + color: #FFF; +} +#CreatorInfo a:hover { + color: #FFF; +} .calendar thead tr th.weekend, .calendar thead tr th.weekday { font-style:italic; - border:solid 2px #000; + color: #000; + background-color: #6AF364; + border:solid 2px #228A22; } .calendar tfoot tr td { padding:.7em 5% 1em 5%; border-top:solid 2px #000; vertical-align:middle; + color: #228A22; + background-color: #D8F3D6; } /* Calendar : Date Numeral */ @@ -1109,8 +1405,10 @@ body#WebCal { font-size:1.2em; line-height:100%; text-align:center; + color: #542; margin:0 0 0 .5em; padding:.2em 0; + background-color: #D8F3D6; } /* Calendar : Date Container */ @@ -1120,20 +1418,22 @@ body#WebCal { padding:0; border-width:1px 0 0 1px; border-style:solid; - border-color:#000; + border-color: #228A22; } .calendar tbody tr td.weekday { + background-color: #FFF; } .calendar tbody tr td.weekend { + background-color: #D8F3D6; } .calendar tbody tr td.saturday { - border-right:solid 1px #000; + border-right:solid 1px #228A22; } .calendar tbody tr td.sunday { - border-left:solid 1px #000; + border-left:solid 1px #228A22; } .calendar tbody tr td:first-child { - border-left:solid 1px #000; + border-left:solid 1px #228A22; } .calendar tbody tr:first-child td { border-top:none; @@ -1152,7 +1452,7 @@ body#WebCal { width:92%; margin:0 4%; padding:.2em 0 .3em 0; - border-top:dashed 1px #000; + border-top:dashed 1px #228A22; } .calendar tbody tr td ul li:first-child { border:none; @@ -1161,13 +1461,16 @@ body#WebCal { /* Calendar : Birthday, Anniversary, Highlight */ .calendar tbody tr td ul li em { font-style:normal; + color: #0A65B5; } .calendar tbody tr td ul li span.yearsmarried em { + color: #228A22; } .calendar tbody tr td.highlight { } .calendar tbody tr td.highlight div.date { - color:#000; + color: #0A65B5; + background-color: #C2E1FE; } /* Calendar : Previous-Next Month */ @@ -1175,10 +1478,14 @@ body#WebCal { .calendar tbody tr td.next, .calendar tbody tr td.previous div.date, .calendar tbody tr td.next div.date { - color:#000; + color: #333; + background-color: #D8F3D6; } /* Calendar : Full Year */ +body#fullyearlinked { + background-color: #FFF; +} body#fullyearlinked div.content { width:963px; margin:0 auto; @@ -1192,17 +1499,48 @@ body#fullyearlinked table.calendar { } body#fullyearlinked table.calendar thead tr th { height:2em; + border-width: 1px 1px 0px 0px; + border-color: #000; + text-align: center; } body#fullyearlinked table.calendar thead tr th.monthName { font-size:1.2em; padding:2px 0; + border-bottom: solid 1px #000; } body#fullyearlinked table.calendar tbody tr td { height:3em; } +body#fullyearlinked table.calendar tbody tr td.emptyDays { + background-color: #FFF; +} body#fullyearlinked table.calendar tbody tr td.saturday { border-right:solid 2px #000; } body#fullyearlinked able.calendar tbody tr td.sunday { border:solid 2px #000; } + +/* Calendar: OneDay +--------------------------------------------------------------------------------- */ +body#OneDay h3 { + color: #228A22; + font-weight: bold; + text-align: center; +} +table.oneday { + margin: .3em 0 .3em 0; + padding: 0; +} +table.oneday tbody tr td { + border-bottom: dashed 1px #228A22; +} +table.oneday tbody tr td.ColumnRowLabel { + width: 5%; +} +table.oneday tbody tr td.ColumnText { + width: 85%; +} +table.oneday tbody tr td.ColumnEvent { + width; 10%; +} diff --git a/src/data/Web_Visually.css b/src/data/Web_Visually.css index 6e3ce0e93..dca8893e7 100644 --- a/src/data/Web_Visually.css +++ b/src/data/Web_Visually.css @@ -280,10 +280,10 @@ div#navigation, div#subnavigation { } div#navigation ul, div#subnavigation ul { list-style:none; - min-width:770px; - height: 50px; + min-width: 900px; + height: 40px; margin:0; - padding: 0px 0px 0px 20px; + padding: 0px 0px 0px 6px; border-bottom: solid 2px #5D835F; } div#navigation ul li, div#subnavigation ul li { @@ -291,9 +291,9 @@ div#navigation ul li, div#subnavigation ul li { } div#navigation ul li a, div#subnavigation ul li a { display: block; - padding: 12px 10px 14px 1px; + padding: 12px 6px 14px 1px; float:left; - font: 1em/1.5em bold italic small-caps verdana, serif; + font: .8em bold italic small-caps verdana, serif; color: #000; text-decoration:none; margin:0; @@ -878,10 +878,13 @@ div#SourceDetail div#references ol li { padding-bottom:.5em; } + /* Repositories ------------------------------------------------------ */ -div#RepositoryList { } - +div#RepositoryList { + margin: 0; + padding: 0; +} div#RepositoryList table.repolist tbody tr td { background-color: #D8F3D6; } @@ -899,6 +902,33 @@ div#RepositoryList table.repolist tbody tr td.ColumnName { background-color: #FFF; } +/* Internet Address Book +------------------------------------------------------ */ +div#InternetAddressBook { + margin: 0; + padding: 0; +} +div#InternetAddressBook table.addressbook { + margin: .3em 0 .3em 0; +} +div#InternetAddressBook table.addressbook tbody tr.BeginName { + border-top: solid 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td { + background-color: #FFF; + border-bottom: dashed 1px #000; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnType { + background-color: #D8F3D6; + width: 15%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnName { + width: 30%; +} +div#InternetAddressBook table.addressbook tbody tr td.ColumnLink { + width: 70%; +} + /* Subsections ----------------------------------------------------- */ #Home, #Introduction, #Contact { @@ -1561,7 +1591,7 @@ body#fullyearlinked able.calendar tbody tr td.sunday { border:solid 2px #000; } -/* Calendar: OneDay +/* Calendar: OneDay --------------------------------------------------------------------------------- */ body#OneDay h3 { color: #228A22; diff --git a/src/plugins/webreport/NarrativeWeb.py b/src/plugins/webreport/NarrativeWeb.py index 07676480a..93485489f 100644 --- a/src/plugins/webreport/NarrativeWeb.py +++ b/src/plugins/webreport/NarrativeWeb.py @@ -529,14 +529,14 @@ class BasePage(object): def event_link(self, eventtype, handle, gid = None, up = False): """ createsa hyperlink for an event based on its type """ - url = self.report.build_url_fname_html(handle, 'evt', up) + url = self.report.build_url_fname_html(handle, "evt", up) # if event pages are being created, then hyperlink the event type if self.inc_events: evt_hyper = Html("a", eventtype, href = url, title = eventtype) if not self.noid and gid: - evt_hyper += Html("span", " [%s] " % gid, class_ = "grampsid", + evt_hyper += Html("span", " [%s]" % gid, class_ = "grampsid", inline = True) # return event hyper link to its callers @@ -682,7 +682,7 @@ class BasePage(object): def source_link(self, handle, hyper_name, name, gid = None, up = False): - url = self.report.build_url_fname_html(handle, 'src', up) + url = self.report.build_url_fname_html(handle, "src", up) # begin hyperlink hyper = Html("a", html_escape(name), href = url, title = html_escape(name)) @@ -917,7 +917,7 @@ class BasePage(object): if home_person: home_person_url = self.report.build_url_fname_html( home_person.handle, - 'ppl', + "ppl", self.up) home_person_name = self.get_name(home_person) @@ -1042,17 +1042,18 @@ class BasePage(object): inc_repos = False navs = [ - (self.report.index_fname, _("Html|Home"), self.report.use_home), - (self.report.intro_fname, _("Introduction"), self.report.use_intro), - (self.report.surname_fname, _("Surnames"), True), - ('individuals', _("Individuals"), True), - ('places', _("Places"), True), - ('events', _("Events"), self.report.inc_events), - ('media', _("Media"), self.create_media), - ('download', _("Download"), self.report.inc_download), - ('contact', _("Contact"), self.report.use_contact), - ('sources', SHEAD, True), - ('repositories', _("Repositories"), inc_repos), + (self.report.index_fname, _("Html|Home"), self.report.use_home), + (self.report.intro_fname, _("Introduction"), self.report.use_intro), + (self.report.surname_fname, _("Surnames"), True), + ('individuals', _("Individuals"), True), + ('places', _("Places"), True), + ('events', _("Events"), self.report.inc_events), + ('media', _("Media"), self.create_media), + ('download', _("Download"), self.report.inc_download), + ('contact', _("Contact"), self.report.use_contact), + ('sources', SHEAD, True), + ('repositories', _("Repositories"), inc_repos), + ("Internet_Address_Book", _("Internet Address Book"), self.report.add_book) ] navigation = Html("div", id = 'navigation') @@ -1090,11 +1091,14 @@ class BasePage(object): if "plc" in self.report.cur_fname: cs = True elif nav_text == _("Events"): - if 'evt' in self.report.cur_fname: + if "evt" in self.report.cur_fname: cs = True elif nav_text == _("Media"): if "img" in self.report.cur_fname: cs = True + elif nav_text == _("Internet Address Book"): + if "iab" in self.report.cur_fname: + cs = True cs = cs and 'class="CurrentSection"' or '' ul += (Html("li", attr = cs, inline = True) + @@ -1254,8 +1258,7 @@ class BasePage(object): with Html("div", class_ = "subsection", id = "weblinks") as section: # begin web title - title = Html("h4", _("Web Links"), inline = True) - section += title + section += Html("h4", _("Web Links"), inline = True) # ordered list ordered = Html("ol") @@ -1463,22 +1466,19 @@ class BasePage(object): return hyper def place_link(self, handle, name, gid = None, up = False): - url = self.report.build_url_fname_html(handle, 'plc', up) + url = self.report.build_url_fname_html(handle, "plc", up) hyper = Html("a", html_escape(name), href = url, title = name) if not self.noid and gid: - hyper += Html("span", " [%s] " % gid, class_ = "grampsid", inline = True) + hyper += Html("span", " [%s]" % gid, class_ = "grampsid", inline = True) # return hyperlink to its callers return hyper # --------------------------------------------------------------------------------------- -# # # Web Page Fortmatter and writer -# # --------------------------------------------------------------------------------------- - - def mywriter(self, htmlinstance, of): + def XHTMLWriter(self, htmlinstance, of): """ Will format, write, and close the file @@ -1578,7 +1578,7 @@ class IndividualListPage(BasePage): first = False # firstname column - url = self.report.build_url_fname_html(person.handle, 'ppl') + url = self.report.build_url_fname_html(person.handle, "ppl") trow += Html("td", self.person_link(url, person, False, gid = person.gramps_id), class_ = "ColumnName") @@ -1634,7 +1634,7 @@ class IndividualListPage(BasePage): if not first_family: tcell += ", " if partner_handle in report_handle_list: - url = self.report.build_url_fname_html(partner_handle, 'ppl') + url = self.report.build_url_fname_html(partner_handle, "ppl") tcell += self.person_link(url, partner, True, gid = partner.gramps_id) else: tcell += partner_name @@ -1678,9 +1678,12 @@ class IndividualListPage(BasePage): # send page out for processing # and close the file - self.mywriter(indlistpage, of) + self.XHTMLWriter(indlistpage, of) class SurnamePage(BasePage): + """ + This will create a list of individuals with the same surname + """ def __init__(self, report, title, surname, person_handle_list, report_handle_list): BasePage.__init__(self, report, title) @@ -1692,7 +1695,7 @@ class SurnamePage(BasePage): showpartner = report.options['showpartner'] showparents = report.options['showparents'] - of = self.report.create_file(name_to_md5(surname), 'srn') + of = self.report.create_file(name_to_md5(surname), "srn") self.up = True surnamepage, body = self.write_header("%s - %s" % (_("Surname"), surname)) @@ -1743,7 +1746,7 @@ class SurnamePage(BasePage): tbody += trow # firstname column - url = self.report.build_url_fname_html(person.handle, 'ppl', True) + url = self.report.build_url_fname_html(person.handle, "ppl", True) trow += Html("td", self.person_link(url, person, False, gid = person.gramps_id), class_ = "ColumnName") @@ -1795,7 +1798,7 @@ class SurnamePage(BasePage): if not first_family: tcell += ',' if partner_handle in report_handle_list: - url = self.report.build_url_fname_html(partner_handle, 'ppl', True) + url = self.report.build_url_fname_html(partner_handle, "ppl", True) tcell += self.person_link(url, partner, True, gid = partner.gramps_id) else: tcell += partner_name @@ -1838,7 +1841,7 @@ class SurnamePage(BasePage): # send page out for processing # and close the file - self.mywriter(surnamepage, of) + self.XHTMLWriter(surnamepage, of) class PlaceListPage(BasePage): @@ -1920,7 +1923,7 @@ class PlaceListPage(BasePage): # send page out for processing # and close the file - self.mywriter(placelistpage, of) + self.XHTMLWriter(placelistpage, of) class PlacePage(BasePage): @@ -1931,7 +1934,7 @@ class PlacePage(BasePage): BasePage.__init__(self, report, title, place.gramps_id) self.src_list = src_list # TODO verify that this is correct - of = self.report.create_file(place.get_handle(), 'plc') + of = self.report.create_file(place.get_handle(), "plc") self.up = True self.page_title = ReportUtils.place_name(db, place_handle) placepage, body = self.write_header(_("Places")) @@ -2016,7 +2019,7 @@ class PlacePage(BasePage): # send page out for processing # and close the file - self.mywriter(placepage, of) + self.XHTMLWriter(placepage, of) class EventListPage(BasePage): @@ -2079,7 +2082,7 @@ class EventListPage(BasePage): # send page ut for processing # and close the file - self.mywriter(eventslistpage, of) + self.XHTMLWriter(eventslistpage, of) def write_event_row(self, person, partner, evt_type, evt, evt_ref, first): """ @@ -2101,7 +2104,7 @@ class EventListPage(BasePage): trow.attr = 'class = "BeginName"' # get person's hyperlink - url = self.report.build_url_fname_html(person.handle, 'ppl', subdirs) + url = self.report.build_url_fname_html(person.handle, "ppl", subdirs) person_hyper = self.person_link(url, person, True, first, gid = person.gramps_id) # get event data @@ -2129,7 +2132,7 @@ class EventListPage(BasePage): if partner is not None: # get partner hyperlink - url = self.report.build_url_fname_html(partner.handle, 'ppl', subdirs) + url = self.report.build_url_fname_html(partner.handle, "ppl", subdirs) partner_hyper = self.person_link(url, partner, True, gid = partner.gramps_id) # determine if same row or not? @@ -2148,7 +2151,7 @@ class EventPage(BasePage): db = report.database subdirs = True - of = self.report.create_file(evt_ref.ref, 'evt') + of = self.report.create_file(evt_ref.ref, "evt") eventpage, body = self.write_header(_("Events")) # start event page division @@ -2197,7 +2200,7 @@ class EventPage(BasePage): tbody += trow # get person hyperlink - url = self.report.build_url_fname_html(person.handle, 'ppl', self.up) + url = self.report.build_url_fname_html(person.handle, "ppl", self.up) person_hyper = self.person_link(url, person, True, gid = person.gramps_id) trow = [ Html("tr"), Html("td", _('Person'), class_ = "ColumnAttribute", inline = True), @@ -2207,7 +2210,7 @@ class EventPage(BasePage): # display partner if type is either Marriage or Divorce if partner is not None: - url = self.report.build_url_fname_html(partner.handle, 'ppl', self.up) + url = self.report.build_url_fname_html(partner.handle, "ppl", self.up) partner_hyper = self.person_link(url, partner, True, gid = partner.gramps_id) trow = [ Html("tr"), Html("td", _('Partner'), class_ = "ColumnAttribute", inline = True), @@ -2233,7 +2236,7 @@ class EventPage(BasePage): # send page out for processing # and close the page - self.mywriter(eventpage, of) + self.XHTMLWriter(eventpage, of) class MediaPage(BasePage): @@ -2272,7 +2275,7 @@ class MediaPage(BasePage): _name = _obj.get_primary_name().get_call_name() if not _name or _name == "": _name = _obj.get_primary_name().get_first_name() - _linkurl = report.build_url_fname_html(_obj.handle, 'ppl', True) + _linkurl = report.build_url_fname_html(_obj.handle, "ppl", True) elif classname == "Event": _obj = db.get_event_from_handle( newhandle ) _name = _obj.get_description() @@ -2555,7 +2558,7 @@ class MediaPage(BasePage): # send page out for processing # and close the file - self.mywriter(mediapage, of) + self.XHTMLWriter(mediapage, of) def gallery_nav_link(self, handle, name, up = False): @@ -2734,10 +2737,10 @@ class SurnameListPage(BasePage): # send page out for processing # and close the file - self.mywriter(surnamelistpage, of) + self.XHTMLWriter(surnamelistpage, of) def surname_link(self, fname, name, opt_val = None, up = False): - url = self.report.build_url_fname_html(fname, 'srn', up) + url = self.report.build_url_fname_html(fname, "srn", up) hyper = Html("a", name, href = url, title = name, inline = True) if opt_val is not None: hyper += opt_val @@ -2780,7 +2783,7 @@ class IntroductionPage(BasePage): # send page out for processing # and close the file - self.mywriter(intropage, of) + self.XHTMLWriter(intropage, of) class HomePage(BasePage): """ @@ -2817,7 +2820,7 @@ class HomePage(BasePage): # send page out for processing # and close the file - self.mywriter(homepage, of) + self.XHTMLWriter(homepage, of) class SourceListPage(BasePage): @@ -2885,7 +2888,7 @@ class SourceListPage(BasePage): # send page out for processing # and close the file - self.mywriter(sourcelistpage, of) + self.XHTMLWriter(sourcelistpage, of) class SourcePage(BasePage): @@ -2895,7 +2898,7 @@ class SourcePage(BasePage): source = db.get_source_from_handle(handle) BasePage.__init__(self, report, title, source.gramps_id) - of = self.report.create_file(source.get_handle(), 'src') + of = self.report.create_file(source.get_handle(), "src") self.up = True sourcepage, body = self.write_header(_('Sources')) @@ -2956,7 +2959,7 @@ class SourcePage(BasePage): # send page out for processing # and close the file - self.mywriter(sourcepage, of) + self.XHTMLWriter(sourcepage, of) class MediaListPage(BasePage): @@ -3025,7 +3028,7 @@ class MediaListPage(BasePage): # send page out for processing # and close the file - self.mywriter(medialistpage, of) + self.XHTMLWriter(medialistpage, of) def media_ref_link(self, handle, name, up = False): @@ -3168,7 +3171,7 @@ class DownloadPage(BasePage): # send page out for processing # and close the file - self.mywriter(downloadpage, of) + self.XHTMLWriter(downloadpage, of) class ContactPage(BasePage): @@ -3233,7 +3236,7 @@ class ContactPage(BasePage): # send page out for porcessing # and close the file - self.mywriter(contactpage, of) + self.XHTMLWriter(contactpage, of) class IndividualPage(BasePage): """ @@ -3257,7 +3260,7 @@ class IndividualPage(BasePage): self.attribute_list = attribute_list db = report.database - of = self.report.create_file(person.handle, 'ppl') + of = self.report.create_file(person.handle, "ppl") self.up = True indivdetpage, body = self.write_header(self.sort_name) @@ -3362,7 +3365,7 @@ class IndividualPage(BasePage): # send page out for processing # and close the file - self.mywriter(indivdetpage, of) + self.XHTMLWriter(indivdetpage, of) def draw_box(self, center, col, person): db = self.report.database @@ -3395,7 +3398,7 @@ class IndividualPage(BasePage): thumbnailUrl = "/".join(['..']*3 + [thumbnailUrl]) if ( Utils.win ): thumbnailUrl = thumbnailUrl.replace('\\',"/") - url = self.report.build_url_fname_html(person.handle, 'ppl', True) + url = self.report.build_url_fname_html(person.handle, "ppl", True) boxbg += self.person_link(url, person, name_style = True, thumbnailUrl=thumbnailUrl) else: @@ -3875,7 +3878,7 @@ class IndividualPage(BasePage): gid = child.gramps_id list = Html("li") if child_handle in self.ind_list: - url = self.report.build_url_fname_html(child_handle, 'ppl', True) + url = self.report.build_url_fname_html(child_handle, "ppl", True) list += self.person_link(url, child, True, gid = gid) else: @@ -3896,7 +3899,7 @@ class IndividualPage(BasePage): gid = person.gramps_id if handle in self.ind_list: - url = self.report.build_url_fname_html(handle, 'ppl', True) + url = self.report.build_url_fname_html(handle, "ppl", True) tcell2 += self.person_link(url, person, True, gid = gid) else: person_name = self.get_name(person) @@ -4248,7 +4251,7 @@ class IndividualPage(BasePage): # display partner's name if partner_handle: if partner_handle in self.ind_list: - url = self.report.build_url_fname_html(partner_handle, 'ppl', True) + url = self.report.build_url_fname_html(partner_handle, "ppl", True) tcell += self.person_link(url, partner, True, gid = partner.gramps_id) else: tcell += partner_name @@ -4273,7 +4276,7 @@ class IndividualPage(BasePage): person_name = self.get_name(person) if person.handle in self.ind_list: - url = self.report.build_url_fname_html(person.handle, 'ppl', True) + url = self.report.build_url_fname_html(person.handle, "ppl", True) hyper = self.person_link(url, person, name_style = True) else: hyper = person_name @@ -4396,8 +4399,8 @@ class RepositoryListPage(BasePage): BasePage.__init__(self, report, title) db = report.database - of = self.report.create_file('repositories') - repolistpage, body = self.write_header(_('Repositories')) + of = self.report.create_file("repositories") + repolistpage, body = self.write_header(_("Repositories")) # begin RepositoryList division with Html("div", class_ = "content", id = "RepositoryList") as repositorylist: @@ -4462,14 +4465,14 @@ class RepositoryListPage(BasePage): # send page out for processing # and close the file - self.mywriter(repolistpage, of) + self.XHTMLWriter(repolistpage, of) class RepositoryPage(BasePage): """ will create the individual Repository Pages """ - def __init__(self, report, title, repo, handle): + def __init__(self, report, title, repo, handle, gid = None): BasePage.__init__(self, report, title) db = report.database @@ -4495,11 +4498,11 @@ class RepositoryPage(BasePage): ] table += trow - if not self.noid: + if not self.noid and gid: # repo gramps id trow = [ Html("tr"), Html("td", _("GRAMPS ID"), class_ = "ColumnType", inline = True), - Html("td", repo.gramps_id, class_ = "ColumnAttribute", inline = True) + Html("td", gid, class_ = "ColumnAttribute", inline = True) ] table += trow @@ -4525,7 +4528,107 @@ class RepositoryPage(BasePage): # send page out for processing # and close the file - self.mywriter(repositorypage, of) + self.XHTMLWriter(repositorypage, of) + +class InternetAddressBook(BasePage): + """ + Will Create an Internet Address Book of people's web sites and email addresses + """ + + def __init__(self, report, title, ind_list): + BasePage.__init__(self, report, title) + db = report.database + + # Name the file, and create it + of = self.report.create_file("Internet_Address_Book") + + # Add xml, doctype, meta and stylesheets + iabpage, body = self.write_header(_("Internet Address Book")) + + # begin page division + with Html("div", class_ = "content", id = "InternetAddressBook") as addbook: + body += addbook + + # Internet Address Book Page message + msg = _("This page contains an index of all the individuals in the " + "database, sorted by their GRAMPS ID. Selecting the person’s " + "name will take you to that person’s individual page. " + "Selecting a link will take you to their website or e-mail address.") + addbook += Html("p", msg, id = "description") + + # begin Address Book table + with Html("table", class_ = "infolist addressbook") as table: + addbook += table + + thead = Html("thead") + table += thead + + trow = Html("tr") + ( + Html("th", THEAD, class_ = "ColumnType", inline = True), + Html("th", _("Name"), class_ = "ColumnName", inline = True), + Html("th", _("Link"), class_ = "ColumnLink", inline = True) + ) + thead += trow + + tbody = Html("tbody") + table += tbody + + for person_handle in ind_list: + + person = db.get_person_from_handle(person_handle) + urllist = person.get_url_list() + + first = True + for url in urllist: + + trow = Html("tr") + tbody += trow + + # Internet link type + trow += Html("td", str(url.get_type() ), class_ = "ColumnType", inline = True) + + if first: + trow.attr = 'class = "BeginName"' + + person_url = self.report.build_url_fname_html(person.handle, "ppl", False) + person_hyper = self.person_link(person_url, person, True, gid = person.gramps_id) + else: + person_hyper = " " + first = False + + trow += Html("td", person_hyper, class_ = "ColumnName") + + uri = url.get_path() + descr = url.get_description() + if not descr: + descr = uri + + if url.get_type() == UrlType.EMAIL and not uri.startswith("mailto:"): + trow += Html("td", class_ = "ColumnLink") + ( + Html("a",descr, href = 'mailto: %s' % url) + ) + + elif url.get_type() == UrlType.WEB_HOME and not uri.startswith("http://"): + trow += Html("td", class_ = "ColumnLink") + ( + Html("a", descr, href = 'http://%s' % url) + ) + + elif url.get_type() == UrlType.WEB_FTP and not uri.startswith("ftp://"): + trow += Html("td", class_ = "ColumnLink") + ( + Html("a", descr, href = 'ftp://%s' % url) + ) + + else: + trow += Html("td", class_ = "ColumnLink") + ( + Html("a", descr, href = url) + ) + + # Add footer and clearline + footer = self.write_footer() + body += (fullclear, footer) + + # write the file and close it + self.XHTMLWriter(iabpage, of) class NavWebReport(Report): @@ -4610,6 +4713,9 @@ class NavWebReport(Report): # whether to display children in birthorder or entry order? self.birthorder = self.options['birthorder'] + # get option for Internet Address Book + self.add_book = self.options["add_book"] + if self.use_home: self.index_fname = "index" self.surname_fname = "surnames" @@ -4731,6 +4837,11 @@ class NavWebReport(Report): if len(repolist): self.repository_pages(repolist) + + # build class InternetAddressBook + if self.add_book: + self.address_book_page(ind_list) + # if an archive is being used, close it? if self.archive: self.archive.close() @@ -4937,7 +5048,7 @@ class NavWebReport(Report): * field 6: date of death or burial (optional) * field 7: place of death or burial (optional) """ - url = self.build_url_fname_html(person.handle, 'ppl') + url = self.build_url_fname_html(person.handle, "ppl") surname = person.get_primary_name().get_surname() fullname = person.get_primary_name().get_gedcom_name() @@ -5069,15 +5180,18 @@ class NavWebReport(Report): # RepositoryListPage Class RepositoryListPage(self, self.title, repos_dict, keys) - index = 0 for index, key in enumerate(keys): (repo, handle) = repos_dict[key] # RepositoryPage Class - RepositoryPage(self, self.title, repo, handle) + RepositoryPage(self, self.title, repo, handle, repo.gramps_id) self.progress.step() + def address_book_page(self, ind_list): + + InternetAddressBook(self, self.title, ind_list) + def add_image(self, option_name, height=0): pic_id = self.options[option_name] if pic_id: @@ -5562,6 +5676,10 @@ class NavWebOptions(MenuReportOptions): inc_gendex.set_help(_('Whether to include a GENDEX file or not')) menu.add_option(category_name, 'inc_gendex', inc_gendex) + add_book = BooleanOption(_("Include an Internet Address Book Page"), True) + add_book.set_help(_("Whether to add an Internet Address Book or not?")) + menu.add_option(category_name, "add_book", add_book) + def __archive_changed(self): """ Update the change of storage: archive or directory