Added Internet Address Book to NarrativeWeb. Added styles for it and OneDay elements for WebCal. Updated printer stylesheet to current work.

svn: r13503
This commit is contained in:
Rob G. Healey 2009-11-05 18:18:49 +00:00
parent f697451301
commit 1605254b2d
9 changed files with 1108 additions and 285 deletions

View File

@ -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%;
}

View File

@ -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%;
}

View File

@ -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%;
}

View File

@ -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%;
}

View File

@ -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%;
}

View File

@ -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%;
}

File diff suppressed because it is too large Load Diff

View File

@ -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;

View File

@ -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