From d3a1cae6aeeb30c46f13108ed956060304c19b08 Mon Sep 17 00:00:00 2001 From: "Rob G. Healey" Date: Thu, 25 Feb 2010 22:28:03 +0000 Subject: [PATCH] Added Vertical and Horizontal Navigation Menus back into NarrativeWeb. Added State, Country, and Lat & Long to the PlacesListPage. svn: r14490 --- src/ReportBase/_Constants.py | 1 + src/data/Web_Alphabet-Vertical.css | 115 +- src/data/Web_Basic-Blue.css | 1581 +++++++++++++++++++++++++ src/plugins/webreport/NarrativeWeb.py | 90 +- 4 files changed, 1654 insertions(+), 133 deletions(-) create mode 100644 src/data/Web_Basic-Blue.css diff --git a/src/ReportBase/_Constants.py b/src/ReportBase/_Constants.py index 30e450271..61c83b86c 100644 --- a/src/ReportBase/_Constants.py +++ b/src/ReportBase/_Constants.py @@ -62,6 +62,7 @@ book_categories = { CSS_FILES = [ # First is used as default selection. [_("Basic-Ash"), 'Web_Basic-Ash.css'], + [_("Basic-Blue"), 'Web_Basic-Blue.css'], [_("Basic-Cypress"), 'Web_Basic-Cypress.css'], [_("Basic-Lilac"), 'Web_Basic-Lilac.css'], [_("Basic-Peach"), 'Web_Basic-Peach.css'], diff --git a/src/data/Web_Alphabet-Vertical.css b/src/data/Web_Alphabet-Vertical.css index 7c138cf82..db62d863f 100755 --- a/src/data/Web_Alphabet-Vertical.css +++ b/src/data/Web_Alphabet-Vertical.css @@ -30,16 +30,7 @@ see . -------------------------------------------------------------------------------------------------- # $Id: $ - Body Element ------------------------------------------------------ */ -body { - font-family: Arial, sans, sans-serif, Helvetica; - color: #000; - background-color: #FFF; - padding: 60px 0px 0px 108px; -} - -/* Header + Header ----------------------------------------------------- */ #header { position: fixed; @@ -49,24 +40,24 @@ body { width: 100%; } -/* Navigation/ SubNavigation +/* Alphabet Navigation ----------------------------------------------------- */ -div#navigation, div#subnavigation { +div#alphabet { position: fixed; - left: 0px; - width: 108px; - height: 500px; + left: 4px; + width: 40px; + height: 326px; overflow-x: auto; border-width: 2px 4px 2px 4px; border-style: solid; } -div#navigation ul, div#subnavigation ul { +div#alphabet ul { display: inline; list-style: none; padding: 0px 9px 0px 9px; margin: 0; } -div#navigation ul li, div#subnavigation ul li { +div#alphabet ul li { font: bold 14px/100% sans; padding: 10px 10px 10px 0px; margin:0; @@ -74,101 +65,17 @@ div#navigation ul li, div#subnavigation ul li { border-width: 0px 0px 2px 0px; border-style: solid; } -div#navigation ul li:first-child, div#subnavigation ul li:first-child { +div#alphabet ul li:first-child { border-top: 0; } -div#navigation ul li:last-child, div#subnavigation ul li:last-child { +div#alphabet ul li:last-child { border-bottom: 0; } -div#navigation ul li a, div#subnavigation ul li a { +div#alphabet ul li a { text-decoration: none; display: block; padding: 10px 0px 6px 10px; } -div#navigation ul li a:hover, div#subnavigation ul li a:hover { - background-color: #C1B398; -} -div#navigation ul li.CurrentSection a, div#subnavigation ul li.CurrentSection a { - font-weight:bold; - font-style: italic; - background-color: #453619; - color: #FFF; -} -div#navigation ul li.CurrentSection a:hover { - background-color: #000; - color: #FFF; -} -div#subnavigation ul li.CurrentSection a { - border-width: 0px 0px 2px 0px; - border-color: #5D835F; -} - -/* Alphabet Navigation ------------------------------------------------------ */ -div#alphabet { - width: 100%; - margin: 0; - padding: 0; -} -div#alphabet ul { - list-style:none; - min-width: 900px; - height: 40px; - margin:0; - padding: 0px 0px 0px 16px; - border-bottom: solid 2px #5D835F; -} -div#alphabet ul li { - float:left; -} -div#alphabet ul li a { - display: block; - padding: 12px 16px 14px 1px; - float:left; - font: .8em bold italic small-caps verdana, serif; - color: #000; - text-decoration:none; - margin:0; -} div#alphabet ul li a:hover { background-color: #C1B398; } - -/* Alphabet Navigation ------------------------------------------------------ */ -div#alphabet { - width: 100%; - margin: 0; - background-color: #6AF364; -} -div#alphabet ul { - list-style:none; - min-width:770px; - height:24px; - margin:0; - padding: 0px 0px 0px 16px; - border-width: 1px 0px 1px 0px; - border-style: solid; - border-color: #5D835F; -} -div#alphabet ul li:after { - content:" |"; -} -div#alphabet ul li { - margin:0; - float:left; -} -div#alphabet ul li a { - display:block; - padding: 4px 8px 4px 8px; - float:left; - font: normal 16px/100% sans; - margin:0; - text-decoration:none; - color: #000; -} -div#alphabet ul li a:hover { - background-color: #000; - color: #FFF; -} - diff --git a/src/data/Web_Basic-Blue.css b/src/data/Web_Basic-Blue.css new file mode 100644 index 000000000..b1c833674 --- /dev/null +++ b/src/data/Web_Basic-Blue.css @@ -0,0 +1,1581 @@ +./* +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright 2008-2009 Rob G. Healey +# Copyright 2009 Stephane Charette +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +************************************************************************************************** +GRAMPS Cascading Style Sheet +Style Name: Visually Impaired Stylesheet +Style Author: Jason M. Simanek (2008) +*************************************************************************************************** + +-------------------------------------------------------------------------------------------------- +Color Palette +-------------------------------------------------------------------------------------------------- +brown dark #453619, #542 +brown light #C1B398 +gray #696969 +green dark #228A22 +green #6AF364, #5D835F +green lighter #D8F3D6 + +===== Ancestor Graph Color Scheme ===== +Males #E5F2FE +Females #FFC0CB +Unknown #000 + +===== Web Graphics ===== +Males Web_Gender_Male.png +Females Web_Gender_Female.png + +# $Id: Web_Visually.css 14483 2010-02-25 15:52:32Z robhealey1 $ + + NarrativeWeb Styles +-------------------------------------------------------------------------------------------- */ + +/* General Elements +----------------------------------------------------- */ +div { + margin:0; + padding:0; +} +table { + border:none; + border-collapse:collapse; +} +th { + font-weight:bold; + text-align:left; + padding:1px 3em 1px 0.5em; +} +td { + vertical-align:top; + padding:0; +} +img { + border:none; + margin:0; +} +.thumbnail a:hover { + background:none; +} +.content { + overflow: auto; + width:965px; + margin:0 auto; + padding-bottom: .2em; +} +.content div.snapshot { + margin: 0; + padding: 0; + background: none; +} +.content div.snapshot div.thumbnail { + margin: 0; + padding: 2em 0 0 0; + background: none; +} +.content div.snapshot div.thumbnail a { + display: block; + width: 96px; + margin: 0 auto; +} +.fullclear { + width:100%; + height:1px; + margin:0; + padding:0; + clear:both; +} + +/* General Text +----------------------------------------------------- */ +h1 { + font:normal 2em/1.2em serif; +} +h2 { + font:bold 2em/1.2em sans; +} +h3 { + font:normal 2em/1.2em serif; + text-align:center; + margin:0; + padding:.5em 20px .2em 20px; + border-bottom: double 4px #5D835F; +} +h4 { + font: normal 1.2em/1.2em serif; + color: #FFF; + margin-top: .3cm; + padding:.2em 0 .2em 20px; + background-color: #453619; + border-width: 4px 0px 4px 0px; + border-style: solid; + border-color: #5D835F; +} +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: #903; + font-size: 36px; + font-weight: bold; + font-style: italic; +} +p a { + color: #FFF; + text-decoration:underline; +} +sup { + line-height:0; +} +ol { + font:normal .9em/1.6em sans-serif; + margin-top:0; + margin-bottom:0; + padding-top:.5em; + padding-bottom:0; +} +ol li a { + text-decoration:none; +} +ol li a:hover { + text-decoration: none; +} +a { + color: #542; +} +a:visited { + color: #542; +} +a:hover { + color: #000; + background-color: #C1B398; + text-decoration: none; +} +span.preposition { + padding-left:1em; + padding-right:1em; +} +.grampsid { + font:normal .8em/1.2em monospace; + color: #000; +} + +/* Header +----------------------------------------------------- */ +div#header { + background-color: #542; + border-bottom: solid 8px #5D835F; + height: 60px; + width: 100%; +} +#SiteTitle { + margin:0; + 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 +----------------------------------------------------- */ +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; +} +div#footer a, div#footer a:visited { + text-decoration:none; + color: #FFF; +} +div#footer a:hover { + color: #000; + text-decoration: none; +} +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; +} +div#footer p#copyright { + float:right; + text-align:right; + 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; + margin:0; + padding:0; +} + +/* Main Table +----------------------------------------------------- */ +table.infolist { + width:100%; + 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; + 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: 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 #5D835F; +} +table.infolist tr td.ColumnLetter { + width:3%; + text-align:center; +} +table.infolist tbody tr td.ColumnBirth { + font-size:.9em; + width:10%; +} +table.infolist tbody tr td.ColumnDeath { + font-size:.9em; + width:10%; +} +table.infolist tbody tr td.ColumnRowLabel { + width:2%; + padding-left:20px; +} +table.infolist tbody tr td.ColumnType { + width:6%; + padding-left:20px; +} +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.ColumnParents { + font-size:.9em; +} +table.infolist tbody tr td.ColumnParents span.father, +table.infolist tbody tr td.ColumnParents span.mother { + display:block; +} +table.infolist tbody tr td.ColumnParents span.mother:before { + content:"+ "; +} + +/* Surnames +----------------------------------------------------- */ +#Surnames { + margin: 0; + padding: 0; +} +#SurnameDetail p#description { + padding-top:0; +} +table.surnamelist thead tr th.ColumnSurname, +#Surnames table.surnamelist tbody tr td.ColumnSurname { + width:50%; +} +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 thead tr th.ColumnLetter { + padding: 0px 10px 0px 20px; +} +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 { + content:" ↓"; +} +table#SortByName tbody tr td.ColumnSurname { + padding:0; +} +table#SortByName tbody tr td.ColumnSurname a { + display:block; + padding:.1em 10px .3em 10px; +} +table.surnamelist tbody tr td.ColumnSurname:hover, + table#SortByName tbody tr td.ColumnSurname:hover { + background-color: #C1B398; +} +table.surname { + border-bottom: solid 1px #5D835F; +} +table.surname thead tr th.ColumnName { + width:20%; + padding-left:20px; +} +table.surname tbody tr td { + border-bottom: dashed 1px #5D835F; + background-color: #D8F3D6; +} +table.surname tbody tr td.ColumnName { + background-color: #FFF; + width:20%; + padding:0; +} +table.surname tbody tr td.ColumnName a { + display:block; + padding:.6em 10px .6em 20px; +} +table.surname tbody tr td.ColumnName a span.grampsid { + color: #000; +} +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%; +} + +/* Individuals +----------------------------------------------------- */ +div#Individuals { + margin: 0; + padding: 0; +} +div#Individuals table.individuallist { + border-bottom: solid 1px #5D835F; +} +div#Individuals table.individuallist tbody tr td { + border-bottom: dashed 1px #5D835F; + background-color: #D8F3D6; +} +div#Individuals table.individuallist tbody tr td 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; +} +div#Individuals table.individuallist tbody tr td.ColumnPartner { + background-color: #FFF; +} +div#Individuals div table.infolist tr td p { + font:normal .9em/1.2em sans-serif; + vertical-align:top; +} +div#Individuals div table.infolist tr td p a { + display:inline; +} +div#IndividualDetail { + padding: 0; + margin: 0; +} +#IndividualDetail div table.infolist tr td { + font:normal .9em/1.2em sans-serif; + vertical-align:top; +} +div#IndividualDetail div table.infolist tr td a { + display:inline; +} +div#IndividualDetail table.infolist tr td a:hover { + text-decoration: none; +} +div#IndividualDetail table.infolist tbody tr td.ColumnAttribute { + width:10%; +} +div#IndividualDetail div.subsection table tr td:first-child { + padding-left:20px; +} + +/* Places +----------------------------------------------------- */ +#Places { + margin: 0; + padding: 0; +} +#Places table.infolist tbody tr td.ColumnLetter { + background-color: #D8F3D6; +} +#Places table.infolist tbody tr td.ColumnLetter a:hover { + background: none; +} +#Places table.infolist tbody tr td.ColumnName { + background-color: #FFF; +} +#Places table.infolist tbody tr td.ColumnName a { + padding:.1em 10px .3em 10px; +} + +/* EventList and EventDetail +----------------------------------------------------- */ +div#EventList, div#EventDetail { + margin: 0; + padding: 0; +} +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 #5D835F; +} +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#EventList table.eventlist tbody tr.BeginName { + border-top: solid 1px #5D835F; +} +div#EventList table.eventlist tbody tr td { + padding: 4px 0px 4px 0px; +} +div#EventList table.alphaevent { + padding: .3em 0 .3em 0; + margin: 0; +} +div#EventList table.alphaevent tbody tr.BeginEvent { + border-top: solid 1px #5D835F; +} +div#EventList table.alphaevent tbody tr td { + background-color: #D8F3D6; + border-bottom: dashed 1px #5D835F; +} +div#EventList table.alphaevent tbody tr td.ColumnType { + width: 15%; +} +div#EventList table.alphaevent tbody tr td.ColumnType a:hover { + background: none; +} +div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID { + background-color: #FFF; + width: 12%; +} +div#EventList table.alphaevent tbody tr td.ColumnDate { + width: 20%; +} +div#EventList table.alphaevent tbody tr td.ColumnPerson { + width: 60%; +} +div#EventList table.alphaevent tbody tr td.ColumnPerson span.father, +div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother { + display:block; +} +div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother:before { + content:"+ "; +} +div#EventDetail h3 { + font-size: 28px; +} +div#EventDetail h3:first-letter { + color: #903; +} +div#EventDetail table.eventlist { + width: 100%; +} +div#EventDetail table.eventlist tbody tr { + border-top: dashed 1px #5D835F; +} +div#EventDetail table.eventlist tbody tr td.ColumnAttribute { + text-transform: uppercase; + width: 20%; +} +div#EventDetail table.eventlist tbody tr td.ColumnDate { + background-color: #D8F3D6; + border-top: solid 1px #5D835F; +} +div#EventDetail table.eventlist tbody tr td.ColumnPerson { + background-color: #D8F3D6; +} + +/* Gallery +----------------------------------------------------- */ +#Gallery { + margin: 0; + padding: 0; +} +#Gallery table.infolist tbody tr td { + background-colo: #D8F3D6; +} +#Gallery table.infolist tbody tr td.ColumnRowLabel { + width: 5%; + padding-bottom: 0; +} +#Gallery table.infolist tbody tr td.ColumnName { + width: 50%; + background-color: #FFF; +} +#Gallery table.infolist tbody tr td.ColumnName a { + display: block; + padding: .2em 10px .4em 10px; +} +#Gallery table.infolist tbody tr td.ColumnDate { + width: 20%; +} +#Gallery table.infolist tbody tr td.ColumnMime { + width: 20%; +} +#Gallery table.gallerylist tbody tr td { + border-bottom: dashed 1px #5D835F; +} +#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 #5D835F; +} +#GalleryNav a#Previous { + padding:.5em .7em .3em .7em; +} +#GalleryNav a#Next { + padding:.5em 1.9em .3em 1.9em; +} +#GalleryPages { + margin:0 1em; +} +#GalleryCurrent { + font:bold 1.2em/1em sans-serif; +} +#GalleryTotal { + font-weight:normal; +} +#GalleryDisplay { + margin:0 auto; + padding:0; + position:relative; + overflow:hidden; + text-align:center; + border: solid 1px #5D835F; +} +#GalleryDisplay img { + margin:0 auto; +} +#GalleryDetail div#summaryarea{ + margin:0; + padding:2em 0 0 0; +} +#GalleryDetail div#summaryarea h3 { + font:normal 1.2em/1.2em serif; + text-align:center; +} +#GalleryDetail div h4 { + margin-top:0; +} +#GalleryDetail div#summaryarea table.gallery { + padding-bottom:0; + margin: 1.5em 0 0 0; + border-style: solid; + border-width: 2px 0 1px 0; + border-color: #5D835F; +} +#GalleryDetail table.exifdata { + margin: .2em 0 .2em 0; + width: 100%; +} +#GalleryDetail table.exifdata tbody tr { + border-top: solid 1px #5D835F; +} +#GalleryDetail table.exifdata tbody tr td.ColumnExifKeys { + width: 60%; +} +#GalleryDetail table.exifdata tbody tr td.ColumnMetaData { + width: 40%; +} + +/* Contact +----------------------------------------------------- */ +#Contact #summaryarea { + background-color: #D8F3D6; + width:500px; + margin:0 auto; + padding:3em; + border: double 4px #5D835F; +} +#Contact #summaryarea img { + float:right; + margin:0; +} +#researcher { + font:normal 1.5em/1.4em serif; + margin-top:.3em; +} +#researcher h3 { + font:normal 1.2em/1.4em serif; + padding:0; + text-align:left; +} +#researcher span { + float:left; + display:block; + font:normal .9em/1.4em serif; + margin-right:.4em; +} +#streetaddress { + width:100%; +} +#city:after { + content:","; +} +#country { + clear:left; +} +#email { + clear:left; +} +#email a { + text-decoration:none; +} + +/* Download +----------------------------------------------------- */ + +div#Download { + margin: 0; + padding: 0px 0px .5em 0px; +} +div#Download table.download { + padding: 0; + margin: .5em 0 .5em 0; + border: solid 1px #5D835F; + width: 100%; +} +div#Download table.download img { + float:center; +} +div#Download table.download tbody tr#Row02 { + border-bottom: solid 2px #5D835F; +} +div#Download table.download tbody tr td { + background-color: #D8F3D6; + border: solid 1px #5D835F; + text-align:left; +} +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%; +} +div#Download table.download td.License { + width:6%; +} +div#Download table.download td.Modified { + width:17%; +} + +/* Sources +----------------------------------------------------- */ +#Sources { } + +div#Sources table.infolist tbody tr td { + background-color: #D8F3D6; +} +div#Sources table.infolist tbody tr td.ColumnRowLabel { + padding-bottom:0; +} +div#Sources table.infolist tbody tr td.ColumnName { + padding:0; + background-color: #FFF; +} +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 +------------------------------------------------------ */ +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; +} + +/* Address Book +------------------------------------------------------ */ +div#AddressBookList, AddressBookDetail { + margin: 0; + padding: 0; +} +div#AddressBookList table.addressbook { + margin: .3em 0 .3em 0; +} +div#AddressBookList table.addressbook tbody tr.Totals { + border: solid 1px #5D835F; +} +div#AddressBookList tble.addressbook tbody tr.Totals td { + text-align: left; + background-color: #D8F3D6; +} +div#AddressBookList table.addressbook tbody tr td { + background-color: #D8F3D6; + text-align: center; + border: solid 1px #5D835F; +} +div#AddressBookList table.addressbook tbody tr td.ColumnRowLabel { + width: 4%; +} +div#AddressBookList table.addressbook tbody tr td.ColumnName { + background-color: #FFF; + text-align: left; + width: 70%; +} +div#AddressBookList table.addressbook tbody tr td.ColumnName a { + display: block; + padding: 6px 0px 6px 0px; +} +div#AddressBookList table.addressbook tbody tr td.ColumnAddress { + width: 8%; +} +div#AddressBookList table.adressbook tbody tr td.ColumnResidence { + width: 8%; +} +div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks { + width: 8%; +} + +/* Subsections +----------------------------------------------------- */ +#Home, #Introduction, #Contact { + padding:2em 0 3em 0; +} +#Home p, #Introduction p { + margin:0 20px 1em 20px; +} +#Home img, #Introduction img { + float:right; + margin:0; + padding:0 20px 3em 2em; +} +div.subsection{ + padding-bottom:.5em; +} +div.subsection h4 { + margin-bottom:.5em; +} +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; +} + +/* Subsections : Events +----------------------------------------------------- */ +div#events { + padding-bottom:0; +} +div#events h4 { + margin-bottom:0; + border:none; +} +#IndividualDetail { + background-color: #FFF; +} +#IndividualDetail div#events table.eventtable { + width:100%; + 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; +} +#IndividualDetail div#events table.infolist tbody tr td { + padding-top:.4em; + padding-bottom:.8em; +} +#IndividualDetail div#events table.infolist tbody tr td.ColumnAttribute { + border-bottom: solid 1px #5D835F; +} +#IndividualDetail div#events table.infolist tbody tr td.ColumnValue { + border-bottom:solid 1px #5D835F +} +table.infolist tbody tr td.ColumnValue p { + font-family:sans-serif; + color: #696969; + margin:.2em 0 0 2em; +} + +/* Subsections : Attributes +----------------------------------------------------- */ +div#attributes { + margin: 0; + padding: 0; +} +table.attrlist { + width: 100%; +} +table.attrlist tbody tr { + border: solid 1px #5D835F; +} +table.attrlist tbody tr td { + background-color: #D8F3D6; +} +table.attrlist tbody tr td.ColumnType { + width: 200px; +} +table.attrlist tbody tr td.ColumnAttribute { + width: 10%; +} +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 +----------------------------------------------------- */ +div#parents table.infolist { + margin-top:.5em; +} +div#parents table.infolist tbody tr td.ColumnAttribute { + width:19%; +} +div#parents table.infolist tbody tr td.ColumnValue ol { + margin:0; + padding-top:0; +} +div#parents table.infolist tbody tr td.ColumnValue ol li { + padding-bottom:.2em; +} + +/* Subsections : Families +----------------------------------------------------- */ +div#families table.infolist { + margin: .3cm 0 .3cm 0; +} +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; +} +div#families table.infolist tbody tr td.ColumnValue ol { + margin:0; + padding-top:0; +} +div#families table.infolist tbody tr td.ColumnValue ol li { + padding-bottom:.2em; +} + +/* Subsection: LDS Ordinance +------------------------------------------------------ */ +div#LDSOrdinance { } + +div#LDSOrdinance table.ldsordlist { + font-size:.35cm; +} +table.ldsordlist { + margin-bottom:.5em; +} +table.ldsordlist tbody tr td { + border-bottom: solid 1px #5D835F; +} +table.ldsordlist tbody tr td.ColumnLDSType { + width:12%; +} +table.ldsordlist tbody tr td.ColumnLDSDate { + width:15%; +} +table.ldsordlist tbody tr td.ColumnLDSTemple { + width:10%; +} +table.ldsordlist tbody tr td.ColumnLDSPlace { + width:35%; +} +table.ldsordlist tbody tr td.ColumnLDSStatus { + width:8; +} +table.ldsordlist tbody tr td.ColumnLDSSealed { + width:25%; +} +table.ldsordlist tbody tr td.ColumnLDSSources { + width:7%; + margin-top:.2cm; +} + +/* Subsections : Addresses +----------------------------------------------------- */ +div#Addresses { + margin: 0; + padding: 0; +} +div#Addresses table.infolist { + font-size: 12px; + background- color: #D8F3D6; +} +div#Addresses table.infolist tbody tr td { + border-bottom: solid 1px #5D835F; +} +div#Addresses table.infolist tbody tr td.ColumnDate { + width: 15%; +} +div#Addresses table.infolist tbody tr td.ColumnStreetAddress { + width: 30%; +} +div#Addresses table.infolist tbody tr td.ColumnCity { + width: 8%; +} +div#Addresses table.infolist tbody tr td.ColumnCounty { + with: 8%; +} +div#Addresses table.infolist tbody tr td.ColumnState { + width: 12%; +} +div#Addresses table.infolist tbody tr td.ColumnCntry { + width: 5%; +} +div#Addresses table.infolist tbody tr td.ColumnPostalcode { + width: 10%; +} +div#Addresses table.infolist tbody tr td.ColumnPhone { + width: 15%; +} + +/* Subsections : Gallery +----------------------------------------------------- */ +#indivgallery h4 { + margin-bottom:1em; +} +#indivgallery .thumbnail { + margin:0; + float:left; + width:130px; + 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 #5D835F; +} +#indivgallery div.thumbnail p { + font:normal .7em/1.4em sans-serif; + text-align:center; + width:80%; + margin:0 auto; + padding:0; +} + +/* Subsections : Narrative +----------------------------------------------------- */ +div#narrative { + padding-bottom:0; +} +#narrative p { + font:normal .9em/1.4em sans-serif; + margin-top:.5em; + margin-bottom:0; + padding:0 20px 1em 20px; +} + +/* Subsections : References +----------------------------------------------------- */ + +/* Subsections : Source References +----------------------------------------------------- */ +div#sourcerefs { + padding: 0; + margin: 0 auto; +} +div#sourcerefs ol { + list-style-type:decimal; +} +div#sourcerefs ol li ol { + list-style-type:lower-alpha; +} + +/* Subsections : Summary Area +----------------------------------------------------- */ +div#summaryarea { + background-color: #FFF; +} +div#summaryarea table.infolist { + margin:0; + padding:0; + background:#FFF; + border-bottom: solid .7em #5D835F; +} +div#summaryarea table.infolist tr td, div#summaryarea table.infolist tr td p { + font:normal .9em/1.2em sans-serif; + vertical-align:top; +} +div#summaryarea table.infolist tr td a, div#summaryarea table.infolist tr td p a { + display:inline; +} +div#summaryarea table.infolist tbody tr td.ColumnAttribute { + width:14%; + color: #696969; + padding-left:20px; +} + +/* Subsections : Weblinks +----------------------------------------------------- */ + +/* Subsections : Pedigree +----------------------------------------------------- */ +div#pedigree { + padding-bottom:1.2em; +} +#pedigree a { + text-decoration:none; + color: #000; +} +#pedigree a:hover { + text-decoration:underline; +} +.pedigreegen { + font:normal .9em/1.2em sans-serif; + list-style:none; + margin:.5em 0 0 0; + padding:0 0 0 20px; +} +.pedigreegen li ol { + list-style:none; + margin-left:.5em; +} +.pedigreegen li ol li ol { + font:normal 1em/1.4em sans-serif; + list-style:decimal; + margin-left:1.6em; +} +.pedigreegen li ol li ol li ol.spouselist { + list-style:none; + margin-left:0; +} +.spouselist li.spouse ol { + list-style:decimal; + margin-left:1.6em; +} +.spouse a { + font-weight:normal; + font-style:normal; + color: #000; +} +.spouse:before { + content: "+ "; +} +.thisperson { + font-weight:bold; +} + +/* Subsections : Ancestors Tree +----------------------------------------------------- */ +#tree { + page-break-before:always; + margin:0; + padding:0; + background:none; +} +#treeContainer { + position:relative; + z-index:1; +} +#treeContainer div.boxbg { + position:absolute; + margin:0; + padding:0; + background:none; +} +#treeContainer div.boxbg a, +#treeContainer div.boxbg span.unlinked { + position:relative; + z-index:10; + display:block; + font:normal .7em/1.4em sans-serif; + text-align:center; + text-decoration:none; + color: #542; + width:118px; + padding:5px 20px 7px 20px; + margin-left:16px; + background-color: #FFF; + border: solid 1px #5D835F +} +#treeContainer div.boxbg a.noThumb, +#treeContainer div.AncCol3 a, +#treeContainer div.AncCol4 a, +#treeContainer div.AncCol3 span.unlinked, +#treeContainer div.AncCol4 span.unlinked { + margin-top:10px; +} +#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 #5D835F; +} +#treeContainer div.boxbg a:hover, +#treeContainer div.AncCol3 a:hover, +#treeContainer div.AncCol4 a:hover { + margin-top:-44px; +} +#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; + margin:0 auto; + padding:4px 0; +} +#treeContainer div.boxbg span.thumbnail img { + height:65px; + margin:0 auto; +} +#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 { + display:none; +} +#treeContainer div.boxbg a:hover span.thumbnail { + display:block; +} +#treeContainer div.male a, +#treeContainer div.male span.unlinked { + background:url(../images/Web_Gender_Male.png) #BCEAF6 no-repeat top right; +} +#treeContainer div.female a, +#treeContainer div.female span.unlinked { + background:url(../images/Web_Gender_Female.png) #FFC0CB no-repeat top right; +} +#treeContainer div.unknown a, +#treeContainer div.unknown span.unlinked { + background-color: #000; + color: #FAFAFA; +} +.shadow { + display:none; +} +#tree div div.bvline { + position:absolute; + z-index:2; + height:1px; + margin:0 0 0 16px; + padding:0; + background-color: #228A22; +} +#tree div div.bhline { + position:absolute; + z-index:2; + width:1px; + margin:0 0 0 16px; + padding:0; + background-color: #228A22; +} +.ghline, .gvline { + display:none; +} + +/* Calendar Styles +-------------------------------------------------------------------------------------------- */ +/* Calendar : General */ +body#WebCal { + background-color: #FFF; +} +.calendar { + empty-cells:show; + width:100%; + font-size:1em; + font-weight:normal; + margin:0; + padding:0; + border:none; + border-collapse:collapse; +} +.calendar thead tr th { + width:14%; + font-weight:normal; + font-size:18px; + line-height:18px; + text-align:center; + text-transform:uppercase; + padding:2px 0; +} +.calendar thead tr th.monthName { + width:100%; + font-size:2em; + line-height:100%; + text-transform:none; + color: #542; + padding:.3em 0 .2em 0; + background-color: #FFF; +} +#CreatorInfo { + float:right; + 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; + color: #000; + background-color: #6AF364; + border: solid 2px #5D835F; +} +.calendar tfoot tr td { + padding:.7em 5% 1em 5%; + border-top:solid 2px #000; + vertical-align:middle; + color: #000; + background-color: #D8F3D6; +} + +/* Calendar : Date Numeral */ +.calendar tbody tr td div.date { + float:right; + display:block; + width:1.8em; + 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 */ +.calendar tbody tr td { + vertical-align:top; + height:10em; + padding:0; + border-width:1px 0 0 1px; + border-style:solid; + border-color: #5D835F; +} +.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 #5D835F; + } +.calendar tbody tr td.sunday { + border-left: solid 1px #5D835F; +} +.calendar tbody tr td:first-child { + border-left: solid 1px #5D835F; +} +.calendar tbody tr:first-child td { + border-top:none; +} + +/* Calendar : Date Detail */ +.calendar tbody tr td ul { + list-style:none; + font-family:sans-serif; + font-size:1em; + margin:2.3em 0 .3em 0; + padding:0; +} +.calendar tbody tr td ul li { + display:block; + width:92%; + margin:0 4%; + padding:.2em 0 .3em 0; + border-top: dashed 1px #5D835F; +} +.calendar tbody tr td ul li:first-child { + border:none; +} + +/* 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: #0A65B5; + background-color: #C2E1FE; +} + +/* Calendar : Previous-Next Month */ +.calendar tbody tr td.previous, +.calendar tbody tr td.next, +.calendar tbody tr td.previous div.date, +.calendar tbody tr td.next div.date { + color: #333; + background-color: #D8F3D6; +} + +/* Calendar : Full Year */ +body#fullyearlinked { + background-color: #FFF; +} +body#fullyearlinked div.content { + width:963px; + margin:0 auto; + padding:15px 0 2px 2px; +} +body#fullyearlinked table.calendar { + float:left; + width:320px; + height:18em; + border:solid 1px #000; +} +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 #5D835F; +} +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/plugins/webreport/NarrativeWeb.py b/src/plugins/webreport/NarrativeWeb.py index b48b9e78e..ee65548ff 100644 --- a/src/plugins/webreport/NarrativeWeb.py +++ b/src/plugins/webreport/NarrativeWeb.py @@ -942,8 +942,8 @@ class BasePage(object): fname = "/".join(["styles", _NARRATIVESCREEN]) url2 = self.report.build_url_fname(fname, None, self.up) - # link to Navigation stylesheet - fname = "/".join(["styles", "Web_Alphabet-Vertical.css"]) + # Link to Navigation stylesheet + fname = "/".join(["styles", "Web_Navigation-Menus.css"]) url5 = self.report.build_url_fname(fname, None, self.up) # Link to _NARRATIVEPRINT stylesheet @@ -957,9 +957,12 @@ class BasePage(object): # create stylesheet and favicon links links = [Html("link", href = url4, type = "image/x-icon", rel = "shortcut icon"), Html("link", href = url1, type = "text/css", media = "screen", rel = "stylesheet"), - Html("link", href = url2, type = "text/css", media = "screen", rel = "stylesheet"), - Html("link", href = url3, type = "text/css", media = 'print', rel = "stylesheet") - ] + Html("link", href = url2, type = "text/css", media = "screen", rel = "stylesheet") ] + + if self.report.css in ["Web_Basic-Blue.css", "Web_Visually.css"]: + links += Html("link", href= url5, type= "text/css", media="screen", rel="stylesheet") + + links += Html("link", href = url3, type = "text/css", media = 'print', rel = "stylesheet") # add additional meta and link tags head += meta @@ -2140,14 +2143,16 @@ class PlaceListPage(BasePage): thead = Html("thead") table += thead - trow = Html("tr") + ( - Html("th", _("Letter"), class_ = "ColumnLetter", inline = True), - Html("th", _("Place name | Name"), class_ = "ColumnName", inline = True), - Html("th", _("State"), class_ = "ColumnState", inline = True), - Html("th", _("Country"), class_ = "ColumnCtry", inline = True), - Html("th", _("Latitude/ Longitude"), class_ = "ColumnCoordinates", inline = True) - ) + trow = Html("tr") thead += trow + trow.extend( Html("th", label, class_ = "Column" + colclass, inline = True) + for label, colclass in [ + [_("Letter"), "Letter"], + [_("Place Name | Name"), "Name"], + [_("State"), "State"], + [_("Country"), "Country"], + [_("Latitude/ Longitude"), "Coordinates"] ] + ) sort = Sort.Sort(db) handle_list = sorted(place_handles, key = sort.by_place_title_key) @@ -2160,12 +2165,9 @@ class PlaceListPage(BasePage): for handle in handle_list: place = db.get_place_from_handle(handle) place_title = ReportUtils.place_name(db, handle) - - if not place_title: - continue + ml = place.get_main_location() letter = first_letter(place_title) - ml = place.get_main_location() trow = Html("tr") tbody += trow @@ -2184,12 +2186,13 @@ class PlaceListPage(BasePage): trow += Html("td", self.place_link(place.handle, place_title, place.gramps_id), class_ = "ColumnName") - trow.extend( Html("td", data, class_ = "Column" + colclass, inline = True) - for (colclass, data) in [ - ["State", ml.state], - ["Country", ml.country], - ["Coordinates", place.lat + "," + place.long] ] - if data or " " ) + trow.extend( Html("td", data, class_ = "Column" + colclass, inline = True) + for colclass, data in [ + ["State", ml.state], + ["Country", ml.country], + ["Coordinates", (place.lat + ", " + place.long)] ] + if data or " " + ) # add clearline for proper styling # add footer section @@ -4918,6 +4921,7 @@ class NavWebReport(Report): self.target_path = self.options['target'] self.ext = self.options['ext'] self.css = self.options['css'] + self.navigation = self.options["navigation"] self.title = self.options['title'] self.inc_gallery = self.options['gallery'] @@ -5129,9 +5133,13 @@ class NavWebReport(Report): fname = os.path.join(const.DATA_DIR, self.css) self.copy_file(fname, _NARRATIVESCREEN, "styles") - # copy Navigation stylesheet - fname = os.path.join(const.DATA_DIR, "Web_Alphabet-Vertical.css") - self.copy_file(fname, "Web_Alphabet-Vertical.css", "styles") + # copy Navigation Menu Layout if Blue or Visually is being used + if self.css == "Web_Basic-Blue.css" or "Web_Visually.css": + if self.navigation == "Horizontal": + fname = os.path.join(const.DATA_DIR, "Web_Alphabet-Horizontal.css") + else: + fname = os.path.join(const.DATA_DIR, "Web_Alphabet-Vertical.css") + self.copy_file(fname, "Web_Navigation-Menus.css", "styles") # copy printer stylesheet fname = os.path.join(const.DATA_DIR, "Web_Print-Default.css") @@ -5665,11 +5673,24 @@ class NavWebOptions(MenuReportOptions): cright.set_help( _("The copyright to be used for the web files")) menu.add_option(category_name, "cright", cright) - css = EnumeratedListOption(_('StyleSheet'), CSS_FILES[0][1]) + self.__css = EnumeratedListOption(_('StyleSheet'), CSS_FILES[0][1]) for style in CSS_FILES: - css.add_item(style[1], style[0]) - css.set_help( _('The stylesheet to be used for the web page')) - menu.add_option(category_name, "css", css) + self.__css.add_item(style[1], style[0]) + self.__css.set_help( _('The stylesheet to be used for the web pages')) + menu.add_option(category_name, "css", self.__css) + self.__css.connect("value-changed", self.__stylesheet_changed) + + _NAVIGATION_OPTS = [ + ["Horizontal", _("Horizontal -- No Change")], + ["Vertical", _("Vertical")] + ] + self.__navigation = EnumeratedListOption(_("Navigation Layout"), _NAVIGATION_OPTS[0][1]) + for layout in _NAVIGATION_OPTS: + self.__navigation.add_item(layout[1], layout[0]) + self.__navigation.set_help(_("Choose which layout for the Navigation Menus.")) + menu.add_option(category_name, "navigation", self.__navigation) + + self.__stylesheet_changed() self.__graph = BooleanOption(_("Include ancestor graph"), True) self.__graph.set_help(_('Whether to include an ancestor graph ' @@ -5919,6 +5940,17 @@ class NavWebOptions(MenuReportOptions): # The rest don't self.__pid.set_available(False) + def __stylesheet_changed(self): + """ + Handles the changing nature of the stylesheet + """ + + css_opts = self.__css.get_value() + if css_opts in ["Web_Basic-Blue.css", "Web_Visually.css"]: + self.__navigation.set_available(True) + else: + self.__navigation.set_available(False) + def __graph_changed(self): """ Handle enabling or disabling the ancestor graph