0006009: Media objects attached to Marriage events and Sources are not included in Narrative Web Site
* restructure the families index so families are indexed under both spouses, and the family name is normalised * separate out Families section in individual and families pages so individual page links to the family page and family page links to both people * normalise links to families so the link is only displayed if the family page is present, and the gid is included when appropriate * remove highlighting of media subregions except in the media pages (it was confusing and not very well implemented) * include people whose surname is absent in the individual, surname and families indexes * html_escape names and surnames * always display media thumbnails for first image in Gallery list (in some cases they were suppressed if they had been displayed at the top of the page) * change partner and parent columns in families index to improve the layout of the HTML and put the comma between multiple partners in the right place * use event description (where present) instead of just event type in back references * fix bug in the way obj_dict and bkref_dict were initialised * fix missing document.png for missing media svn: r20794
This commit is contained in:
parent
a4b1518a04
commit
5a2b0ce910
@ -382,6 +382,7 @@ TEMPLE = _("Temple")
|
|||||||
VHEAD = _("Value")
|
VHEAD = _("Value")
|
||||||
ALT_LOCATIONS = _("Alternate Locations")
|
ALT_LOCATIONS = _("Alternate Locations")
|
||||||
_UNKNOWN = _("Unknown")
|
_UNKNOWN = _("Unknown")
|
||||||
|
_ABSENT = _("<absent>")
|
||||||
|
|
||||||
# Events that are usually a family event
|
# Events that are usually a family event
|
||||||
_EVENTMAP = set(
|
_EVENTMAP = set(
|
||||||
@ -643,8 +644,6 @@ class BasePage(object):
|
|||||||
@param: place_lat_long -- for use in Family Map Pages. This will be None
|
@param: place_lat_long -- for use in Family Map Pages. This will be None
|
||||||
if called from Family pages, which do not create a Family Map
|
if called from Family pages, which do not create a Family Map
|
||||||
"""
|
"""
|
||||||
birthorder = self.report.options["birthorder"]
|
|
||||||
|
|
||||||
family_list = individual.get_family_handle_list()
|
family_list = individual.get_family_handle_list()
|
||||||
if not family_list:
|
if not family_list:
|
||||||
return None
|
return None
|
||||||
@ -661,68 +660,144 @@ class BasePage(object):
|
|||||||
for family_handle in family_list:
|
for family_handle in family_list:
|
||||||
family = self.dbase_.get_family_from_handle(family_handle)
|
family = self.dbase_.get_family_from_handle(family_handle)
|
||||||
if family:
|
if family:
|
||||||
self.display_spouse(family, table, place_lat_long)
|
link = self.family_link(
|
||||||
|
family_handle,
|
||||||
|
self.report.obj_dict[Family][family_handle][1],
|
||||||
|
gid=family.get_gramps_id(), uplink=True)
|
||||||
|
trow = Html("tr", class_ ="BeginFamily") + (
|
||||||
|
Html("td", " ", class_ ="ColumnType", inline =True),
|
||||||
|
Html("td", " ", class_ ="ColumnAttribute", inline =True),
|
||||||
|
Html("td", link, class_ ="ColumnValue", inline =True)
|
||||||
|
)
|
||||||
|
table += trow
|
||||||
|
# find the spouse of the principal individual and
|
||||||
|
# display that person
|
||||||
|
spouse_handle = ReportUtils.find_spouse(individual, family)
|
||||||
|
if spouse_handle:
|
||||||
|
spouse = self.dbase_.get_person_from_handle(spouse_handle)
|
||||||
|
if spouse:
|
||||||
|
table += self.display_spouse(spouse, family,
|
||||||
|
place_lat_long)
|
||||||
|
|
||||||
childlist = family.get_child_ref_list()
|
details = self.display_family_details(family, place_lat_long)
|
||||||
if childlist:
|
if details is not None:
|
||||||
trow = Html("tr") + (
|
table += details
|
||||||
Html("td", " ", class_ = "ColumnType", inline = True),
|
|
||||||
Html("td", _("Children"), class_ = "ColumnAttribute", inline = True)
|
|
||||||
)
|
|
||||||
table += trow
|
|
||||||
|
|
||||||
tcell = Html("td", class_ = "ColumnValue")
|
|
||||||
trow += tcell
|
|
||||||
|
|
||||||
ordered = Html("ol")
|
|
||||||
tcell += ordered
|
|
||||||
childlist = [child_ref.ref for child_ref in childlist]
|
|
||||||
|
|
||||||
# add individual's children event places to family map...
|
|
||||||
if self.familymappages:
|
|
||||||
for handle in childlist:
|
|
||||||
child = self.dbase_.get_person_from_handle(handle)
|
|
||||||
if child:
|
|
||||||
self._get_event_place(child, place_lat_long)
|
|
||||||
|
|
||||||
children = add_birthdate(self.dbase_, childlist)
|
|
||||||
if birthorder:
|
|
||||||
children = sorted(children)
|
|
||||||
|
|
||||||
ordered.extend(
|
|
||||||
(Html("li") +
|
|
||||||
self.display_child_link(chandle))
|
|
||||||
for birth_date, chandle in children
|
|
||||||
)
|
|
||||||
|
|
||||||
# family LDS ordinance list
|
|
||||||
family_lds_ordinance_list = family.get_lds_ord_list()
|
|
||||||
if family_lds_ordinance_list:
|
|
||||||
trow = Html("tr") + (
|
|
||||||
Html("td", " ", class_ = "ColumnType", inline = True),
|
|
||||||
Html("td", _("LDS Ordinance"), class_ = "ColumnAttribute", inline = True),
|
|
||||||
Html("td", self.dump_ordinance(family, "Family"), class_ = "ColumnValue")
|
|
||||||
)
|
|
||||||
table += trow
|
|
||||||
|
|
||||||
# Family Attribute list
|
|
||||||
family_attribute_list = family.get_attribute_list()
|
|
||||||
if family_attribute_list:
|
|
||||||
trow = Html("tr") + (
|
|
||||||
Html("td", " ", class_ ="ColumnType", inline =True),
|
|
||||||
Html("td", _("Attributes"), class_ ="ColumnAttribute", inline =True)
|
|
||||||
)
|
|
||||||
table += trow
|
|
||||||
|
|
||||||
tcell = Html("td", class_ = "ColumnValue")
|
|
||||||
trow += tcell
|
|
||||||
|
|
||||||
# we do not need the section variable for this instance of Attributes...
|
|
||||||
dummy, attrtable = self.display_attribute_header()
|
|
||||||
tcell += attrtable
|
|
||||||
self.display_attr_list(family_attribute_list, attrtable)
|
|
||||||
return section
|
return section
|
||||||
|
|
||||||
|
def display_family_relationships(self, family, place_lat_long):
|
||||||
|
"""
|
||||||
|
Displays a family's relationships ...
|
||||||
|
|
||||||
|
@param: family -- the family to be displayed
|
||||||
|
@param: place_lat_long -- for use in Family Map Pages. This will be None
|
||||||
|
if called from Family pages, which do not create a Family Map
|
||||||
|
"""
|
||||||
|
with Html("div", class_ ="subsection", id ="families") as section:
|
||||||
|
section += Html("h4", _("Families"), inline =True)
|
||||||
|
|
||||||
|
table_class = "infolist"
|
||||||
|
with Html("table", class_ = table_class) as table:
|
||||||
|
section += table
|
||||||
|
for person_handle in [family.get_father_handle(), family.get_mother_handle()]:
|
||||||
|
person = self.dbase_.get_person_from_handle(person_handle)
|
||||||
|
if person:
|
||||||
|
table += self.display_spouse(person, family, place_lat_long)
|
||||||
|
|
||||||
|
details = self.display_family_details(family, place_lat_long)
|
||||||
|
if details is not None:
|
||||||
|
table += details
|
||||||
|
return section
|
||||||
|
|
||||||
|
def display_family_details(self, family, place_lat_long):
|
||||||
|
"""
|
||||||
|
Display details about one family: family events, children, family LDS
|
||||||
|
ordinances, family attributes
|
||||||
|
"""
|
||||||
|
table = None
|
||||||
|
birthorder = self.report.options["birthorder"]
|
||||||
|
# display family events; such as marriage and divorce...
|
||||||
|
family_events = family.get_event_ref_list()
|
||||||
|
if family_events:
|
||||||
|
trow = Html("tr") + (
|
||||||
|
Html("td", " ", class_ = "ColumnType", inline = True),
|
||||||
|
Html("td", " ", class_ = "ColumnAttribute", inline = True),
|
||||||
|
Html("td", self.format_family_events(family_events, place_lat_long), class_ = "ColumnValue")
|
||||||
|
)
|
||||||
|
table = trow
|
||||||
|
|
||||||
|
# If the families pages are not output, display family notes
|
||||||
|
if not self.inc_families:
|
||||||
|
notelist = family.get_note_list()
|
||||||
|
for notehandle in notelist:
|
||||||
|
note = self.dbase_.get_note_from_handle(notehandle)
|
||||||
|
if note:
|
||||||
|
trow = Html("tr") + (
|
||||||
|
Html("td", " ", class_ = "ColumnType", inline = True),
|
||||||
|
Html("td", "Narrative", class_ = "ColumnAttribute", inline = True),
|
||||||
|
Html("td", self.get_note_format(note, True), class_ = "ColumnValue")
|
||||||
|
)
|
||||||
|
table = table + trow if table is not None else trow
|
||||||
|
|
||||||
|
childlist = family.get_child_ref_list()
|
||||||
|
if childlist:
|
||||||
|
trow = Html("tr") + (
|
||||||
|
Html("td", " ", class_ = "ColumnType", inline = True),
|
||||||
|
Html("td", _("Children"), class_ = "ColumnAttribute", inline = True)
|
||||||
|
)
|
||||||
|
table = table + trow if table is not None else trow
|
||||||
|
|
||||||
|
tcell = Html("td", class_ = "ColumnValue")
|
||||||
|
trow += tcell
|
||||||
|
|
||||||
|
ordered = Html("ol")
|
||||||
|
tcell += ordered
|
||||||
|
childlist = [child_ref.ref for child_ref in childlist]
|
||||||
|
|
||||||
|
# add individual's children event places to family map...
|
||||||
|
if self.familymappages:
|
||||||
|
for handle in childlist:
|
||||||
|
child = self.dbase_.get_person_from_handle(handle)
|
||||||
|
if child:
|
||||||
|
self._get_event_place(child, place_lat_long)
|
||||||
|
|
||||||
|
children = add_birthdate(self.dbase_, childlist)
|
||||||
|
if birthorder:
|
||||||
|
children = sorted(children)
|
||||||
|
|
||||||
|
ordered.extend(
|
||||||
|
(Html("li") +
|
||||||
|
self.display_child_link(chandle))
|
||||||
|
for birth_date, chandle in children
|
||||||
|
)
|
||||||
|
|
||||||
|
# family LDS ordinance list
|
||||||
|
family_lds_ordinance_list = family.get_lds_ord_list()
|
||||||
|
if family_lds_ordinance_list:
|
||||||
|
trow = Html("tr") + (
|
||||||
|
Html("td", " ", class_ = "ColumnType", inline = True),
|
||||||
|
Html("td", _("LDS Ordinance"), class_ = "ColumnAttribute", inline = True),
|
||||||
|
Html("td", self.dump_ordinance(family, "Family"), class_ = "ColumnValue")
|
||||||
|
)
|
||||||
|
table = table + trow if table is not None else trow
|
||||||
|
|
||||||
|
# Family Attribute list
|
||||||
|
family_attribute_list = family.get_attribute_list()
|
||||||
|
if family_attribute_list:
|
||||||
|
trow = Html("tr") + (
|
||||||
|
Html("td", " ", class_ ="ColumnType", inline =True),
|
||||||
|
Html("td", _("Attributes"), class_ ="ColumnAttribute", inline =True)
|
||||||
|
)
|
||||||
|
table = table + trow if table is not None else trow
|
||||||
|
|
||||||
|
tcell = Html("td", class_ = "ColumnValue")
|
||||||
|
trow += tcell
|
||||||
|
|
||||||
|
# we do not need the section variable for this instance of Attributes...
|
||||||
|
dummy, attrtable = self.display_attribute_header()
|
||||||
|
tcell += attrtable
|
||||||
|
self.display_attr_list(family_attribute_list, attrtable)
|
||||||
|
return table
|
||||||
|
|
||||||
def complete_people(self, tcell, first_person, handle_list, up =True):
|
def complete_people(self, tcell, first_person, handle_list, up =True):
|
||||||
"""
|
"""
|
||||||
completes the person column for classes EventListPage and EventPage
|
completes the person column for classes EventListPage and EventPage
|
||||||
@ -1027,12 +1102,19 @@ class BasePage(object):
|
|||||||
create the url and link for FamilyPage
|
create the url and link for FamilyPage
|
||||||
"""
|
"""
|
||||||
name = html_escape(name)
|
name = html_escape(name)
|
||||||
url = self.report.build_url_fname_html(family_handle, "fam", up = uplink)
|
|
||||||
|
|
||||||
hyper = Html("a", name, href = url, title = name)
|
|
||||||
|
|
||||||
if not self.noid and gid:
|
if not self.noid and gid:
|
||||||
hyper += Html("span", " [%s]" % gid, class_ = "grampsid", inline = True)
|
gid_html = Html("span", " [%s]" % gid, class_ = "grampsid", inline = True)
|
||||||
|
else:
|
||||||
|
gid_html = ""
|
||||||
|
|
||||||
|
result = self.report.obj_dict.get(Family).get(family_handle)
|
||||||
|
if result is None:
|
||||||
|
# the family is not included in the webreport
|
||||||
|
return name + str(gid_html)
|
||||||
|
|
||||||
|
url = self.report.build_url_fname(result[0], up = uplink)
|
||||||
|
hyper = Html("a", name, href = url, title = name)
|
||||||
|
hyper += gid_html
|
||||||
return hyper
|
return hyper
|
||||||
|
|
||||||
def get_family_string(self, family):
|
def get_family_string(self, family):
|
||||||
@ -2018,6 +2100,14 @@ class BasePage(object):
|
|||||||
real_path, newpath = self.report.prepare_copy_media(photo)
|
real_path, newpath = self.report.prepare_copy_media(photo)
|
||||||
newpath = self.report.build_url_fname(newpath, up = True)
|
newpath = self.report.build_url_fname(newpath, up = True)
|
||||||
|
|
||||||
|
# FIXME: There doesn't seem to be any point in highlighting
|
||||||
|
# a sub-region in the thumbnail and linking back to the
|
||||||
|
# person or whatever. First it is confusing when the link
|
||||||
|
# probably has nothing to do with the page on which the
|
||||||
|
# thumbnail is displayed, and second on a thumbnail it is
|
||||||
|
# probably too small to see, and third, on the thumbnail,
|
||||||
|
# the link is shown above the image (which is pretty
|
||||||
|
# useless!)
|
||||||
_region_items = self.media_ref_rect_regions(photo_handle)
|
_region_items = self.media_ref_rect_regions(photo_handle)
|
||||||
if len(_region_items):
|
if len(_region_items):
|
||||||
with Html("div", id = "GalleryDisplay") as mediadisplay:
|
with Html("div", id = "GalleryDisplay") as mediadisplay:
|
||||||
@ -2343,71 +2433,42 @@ class BasePage(object):
|
|||||||
"""
|
"""
|
||||||
return Html("a", _("Family Map"), href = url, title =_("Family Map"), class_ ="familymap", inline =True)
|
return Html("a", _("Family Map"), href = url, title =_("Family Map"), class_ ="familymap", inline =True)
|
||||||
|
|
||||||
def display_spouse(self, family, table, place_lat_long):
|
def display_spouse(self, partner, family, place_lat_long):
|
||||||
"""
|
"""
|
||||||
display an individual's partner
|
display an individual's partner
|
||||||
@param: place_lat_long -- for use in Family Map Pages. This will be None
|
@param: place_lat_long -- for use in Family Map Pages. This will be None
|
||||||
if called from Family pages, which do not create a Family Map
|
if called from Family pages, which do not create a Family Map
|
||||||
"""
|
"""
|
||||||
gender = self.person.get_gender()
|
gender = partner.get_gender()
|
||||||
reltype = family.get_relationship()
|
reltype = family.get_relationship()
|
||||||
|
|
||||||
if reltype == gen.lib.FamilyRelType.MARRIED:
|
if reltype == gen.lib.FamilyRelType.MARRIED:
|
||||||
if gender == gen.lib.Person.FEMALE:
|
if gender == gen.lib.Person.FEMALE:
|
||||||
relstr = _("Husband")
|
|
||||||
elif gender == gen.lib.Person.MALE:
|
|
||||||
relstr = _("Wife")
|
relstr = _("Wife")
|
||||||
|
elif gender == gen.lib.Person.MALE:
|
||||||
|
relstr = _("Husband")
|
||||||
else:
|
else:
|
||||||
relstr = _("Partner")
|
relstr = _("Partner")
|
||||||
else:
|
else:
|
||||||
relstr = _("Partner")
|
relstr = _("Partner")
|
||||||
|
|
||||||
spouse = False
|
|
||||||
spouse_handle = ReportUtils.find_spouse(self.person, family)
|
|
||||||
if spouse_handle:
|
|
||||||
spouse = self.dbase_.get_person_from_handle(spouse_handle)
|
|
||||||
rtype = str(family.get_relationship())
|
rtype = str(family.get_relationship())
|
||||||
|
|
||||||
# display family relationship status, and add spouse to FamilyMapPages
|
# display family relationship status, and add spouse to FamilyMapPages
|
||||||
if spouse:
|
if self.familymappages:
|
||||||
if self.familymappages:
|
self._get_event_place(partner, place_lat_long)
|
||||||
self._get_event_place(spouse, place_lat_long)
|
|
||||||
|
|
||||||
trow = Html("tr", class_ ="BeginFamily") + (
|
trow = Html("tr", class_ ="BeginFamily") + (
|
||||||
Html("td", rtype, class_ ="ColumnType", inline =True),
|
Html("td", rtype, class_ ="ColumnType", inline =True),
|
||||||
Html("td", relstr, class_ ="ColumnAttribute", inline =True)
|
Html("td", relstr, class_ ="ColumnAttribute", inline =True)
|
||||||
)
|
)
|
||||||
table += trow
|
|
||||||
|
|
||||||
tcell = Html("td", class_ ="ColumnValue")
|
tcell = Html("td", class_ ="ColumnValue")
|
||||||
trow += tcell
|
trow += tcell
|
||||||
|
|
||||||
tcell += self.new_person_link(spouse_handle, uplink=True,
|
|
||||||
person=spouse)
|
|
||||||
|
|
||||||
# display family events; such as marriage and divorce...
|
|
||||||
family_events = family.get_event_ref_list()
|
|
||||||
if family_events:
|
|
||||||
trow = Html("tr") + (
|
|
||||||
Html("td", " ", class_ = "ColumnType", inline = True),
|
|
||||||
Html("td", " ", class_ = "ColumnAttribute", inline = True),
|
|
||||||
Html("td", self.format_family_events(family_events, place_lat_long), class_ = "ColumnValue")
|
|
||||||
)
|
|
||||||
table += trow
|
|
||||||
|
|
||||||
# If the families pages are not output, display family notes
|
|
||||||
if not self.inc_families:
|
|
||||||
notelist = family.get_note_list()
|
|
||||||
for notehandle in notelist:
|
|
||||||
note = self.dbase_.get_note_from_handle(notehandle)
|
|
||||||
if note:
|
|
||||||
trow = Html("tr") + (
|
|
||||||
Html("td", " ", class_ = "ColumnType", inline = True),
|
|
||||||
Html("td", "Narrative", class_ = "ColumnAttribute", inline = True),
|
|
||||||
Html("td", self.get_note_format(note, True), class_ = "ColumnValue")
|
|
||||||
)
|
|
||||||
table += trow
|
|
||||||
|
|
||||||
|
tcell += self.new_person_link(partner.get_handle(), uplink=True,
|
||||||
|
person=partner)
|
||||||
|
return trow
|
||||||
|
|
||||||
def display_child_link(self, chandle):
|
def display_child_link(self, chandle):
|
||||||
"""
|
"""
|
||||||
@ -2451,7 +2512,7 @@ class BasePage(object):
|
|||||||
|
|
||||||
if name_style == _NAME_STYLE_FIRST and person:
|
if name_style == _NAME_STYLE_FIRST and person:
|
||||||
name = _get_short_name(person.get_gender(), person.get_primary_name())
|
name = _get_short_name(person.get_gender(), person.get_primary_name())
|
||||||
|
name = html_escape(name)
|
||||||
# construct the result
|
# construct the result
|
||||||
if (not self.noid and gid != ""):
|
if (not self.noid and gid != ""):
|
||||||
gid_html = Html("span", " [%s]" % gid, class_ = "grampsid",
|
gid_html = Html("span", " [%s]" % gid, class_ = "grampsid",
|
||||||
@ -2461,7 +2522,7 @@ class BasePage(object):
|
|||||||
|
|
||||||
if link != "":
|
if link != "":
|
||||||
url = self.report.build_url_fname(link, up=uplink)
|
url = self.report.build_url_fname(link, up=uplink)
|
||||||
hyper = Html("a", href=url) + name + gid_html
|
hyper = Html("a", name, gid_html, href=url, inline=True)
|
||||||
else:
|
else:
|
||||||
hyper = name + str(gid_html)
|
hyper = name + str(gid_html)
|
||||||
|
|
||||||
@ -2795,6 +2856,9 @@ class SurnamePage(BasePage):
|
|||||||
showpartner = report.options['showpartner']
|
showpartner = report.options['showpartner']
|
||||||
showparents = report.options['showparents']
|
showparents = report.options['showparents']
|
||||||
|
|
||||||
|
if surname == '':
|
||||||
|
surname = _ABSENT
|
||||||
|
|
||||||
of, sio = self.report.create_file(name_to_md5(surname), "srn")
|
of, sio = self.report.create_file(name_to_md5(surname), "srn")
|
||||||
self.up = True
|
self.up = True
|
||||||
surnamepage, head, body = self.write_header("%s - %s" % (_("Surname"), surname))
|
surnamepage, head, body = self.write_header("%s - %s" % (_("Surname"), surname))
|
||||||
@ -2809,7 +2873,7 @@ class SurnamePage(BasePage):
|
|||||||
# feature request 2356: avoid genitive form
|
# feature request 2356: avoid genitive form
|
||||||
msg = _("This page contains an index of all the individuals in the "
|
msg = _("This page contains an index of all the individuals in the "
|
||||||
"database with the surname of %s. Selecting the person’s name "
|
"database with the surname of %s. Selecting the person’s name "
|
||||||
"will take you to that person’s individual page.") % surname
|
"will take you to that person’s individual page.") % html_escape(surname)
|
||||||
surnamedetail += Html("p", msg, id = "description")
|
surnamedetail += Html("p", msg, id = "description")
|
||||||
|
|
||||||
# begin surname table and thead
|
# begin surname table and thead
|
||||||
@ -2969,17 +3033,15 @@ class FamilyPages(BasePage):
|
|||||||
self.report.user.begin_progress(_("Narrated Web Site Report"),
|
self.report.user.begin_progress(_("Narrated Web Site Report"),
|
||||||
_("Creating family pages..."),
|
_("Creating family pages..."),
|
||||||
len(self.report.obj_dict[Family]) + 1)
|
len(self.report.obj_dict[Family]) + 1)
|
||||||
# N.B. The parameter passed is the list of people, not the list of
|
|
||||||
# families
|
|
||||||
self.FamilyListPage(self.report, title,
|
self.FamilyListPage(self.report, title,
|
||||||
self.report.obj_dict[Person].keys())
|
self.report.obj_dict[Family].keys())
|
||||||
|
|
||||||
for family_handle in self.report.obj_dict[Family]:
|
for family_handle in self.report.obj_dict[Family]:
|
||||||
self.report.user.step_progress()
|
self.report.user.step_progress()
|
||||||
self.FamilyPage(self.report, title, family_handle)
|
self.FamilyPage(self.report, title, family_handle)
|
||||||
self.report.user.end_progress()
|
self.report.user.end_progress()
|
||||||
|
|
||||||
def FamilyListPage(self, report, title, ind_list):
|
def FamilyListPage(self, report, title, fam_list):
|
||||||
self.dbase_ = report.database
|
self.dbase_ = report.database
|
||||||
BasePage.__init__(self, report, title)
|
BasePage.__init__(self, report, title)
|
||||||
|
|
||||||
@ -2996,8 +3058,24 @@ class FamilyPages(BasePage):
|
|||||||
"name will take you to their family/ relationship’s page.")
|
"name will take you to their family/ relationship’s page.")
|
||||||
relationlist += Html("p", msg, id = "description")
|
relationlist += Html("p", msg, id = "description")
|
||||||
|
|
||||||
|
# go through all the families, and construct a dictionary of all the
|
||||||
|
# people and the families thay are involved in. Note that the people
|
||||||
|
# in the list may be involved in OTHER families, that are not listed
|
||||||
|
# because they are not in the original family list.
|
||||||
|
pers_fam_dict = defaultdict(list)
|
||||||
|
for family_handle in fam_list:
|
||||||
|
family = self.dbase_.get_family_from_handle(family_handle)
|
||||||
|
if family:
|
||||||
|
husband_handle = family.get_father_handle()
|
||||||
|
spouse_handle = family.get_mother_handle()
|
||||||
|
if husband_handle:
|
||||||
|
pers_fam_dict[husband_handle].append(family)
|
||||||
|
if spouse_handle:
|
||||||
|
pers_fam_dict[spouse_handle].append(family)
|
||||||
|
|
||||||
# add alphabet navigation
|
# add alphabet navigation
|
||||||
menu_set = get_first_letters(self.dbase_, ind_list, _KEYPERSON)
|
menu_set = get_first_letters(self.dbase_, pers_fam_dict.keys(),
|
||||||
|
_KEYPERSON)
|
||||||
alpha_nav, menu_set = alphabet_navigation(menu_set)
|
alpha_nav, menu_set = alphabet_navigation(menu_set)
|
||||||
if alpha_nav:
|
if alpha_nav:
|
||||||
relationlist += alpha_nav
|
relationlist += alpha_nav
|
||||||
@ -3018,8 +3096,8 @@ class FamilyPages(BasePage):
|
|||||||
Html("th", trans, class_ =colclass, inline =True)
|
Html("th", trans, class_ =colclass, inline =True)
|
||||||
for trans, colclass in [
|
for trans, colclass in [
|
||||||
(_("Letter"), "ColumnRowLabel"),
|
(_("Letter"), "ColumnRowLabel"),
|
||||||
(_("Partner 1"), "ColumnPartner"),
|
(_("Person"), "ColumnPartner"),
|
||||||
(_("Partner 2"), "ColumnPartner"),
|
(_("Family"), "ColumnPartner"),
|
||||||
(_("Marriage"), "ColumnDate"),
|
(_("Marriage"), "ColumnDate"),
|
||||||
(_("Divorce"), "ColumnDate")
|
(_("Divorce"), "ColumnDate")
|
||||||
]
|
]
|
||||||
@ -3029,7 +3107,7 @@ class FamilyPages(BasePage):
|
|||||||
table += tbody
|
table += tbody
|
||||||
|
|
||||||
# begin displaying index list
|
# begin displaying index list
|
||||||
ppl_handle_list = sort_people(self.dbase_, ind_list)
|
ppl_handle_list = sort_people(self.dbase_, pers_fam_dict.keys())
|
||||||
for (surname, handle_list) in ppl_handle_list:
|
for (surname, handle_list) in ppl_handle_list:
|
||||||
|
|
||||||
if surname:
|
if surname:
|
||||||
@ -3041,80 +3119,70 @@ class FamilyPages(BasePage):
|
|||||||
for person_handle in handle_list:
|
for person_handle in handle_list:
|
||||||
person = self.dbase_.get_person_from_handle(person_handle)
|
person = self.dbase_.get_person_from_handle(person_handle)
|
||||||
if person:
|
if person:
|
||||||
family_handle_list = person.get_family_handle_list()
|
family_list = pers_fam_dict[person_handle]
|
||||||
if family_handle_list:
|
first_family = True
|
||||||
|
for family in family_list:
|
||||||
|
trow = Html("tr")
|
||||||
|
tbody += trow
|
||||||
|
|
||||||
first_family = True
|
tcell = Html("td", class_="ColumnRowLabel")
|
||||||
for family_handle in family_handle_list:
|
trow += tcell
|
||||||
|
|
||||||
family = self.dbase_.get_family_from_handle(family_handle)
|
if letter not in ltrs_displayed:
|
||||||
if family:
|
trow.attr = 'class="BginLetter"'
|
||||||
|
tcell += Html("a", letter, name=letter,
|
||||||
|
title ="Families beginning with letter " + letter, inline =True)
|
||||||
|
ltrs_displayed[letter] = True
|
||||||
|
else:
|
||||||
|
tcell += ' '
|
||||||
|
|
||||||
trow = Html("tr")
|
tcell = Html("td", class_="ColumnPartner")
|
||||||
tbody += trow
|
trow += tcell
|
||||||
|
|
||||||
tcell = Html("td", class_ ="ColumnRowLabel")
|
if first_family:
|
||||||
trow += tcell
|
trow.attr = 'class ="BeginFamily"'
|
||||||
|
|
||||||
if letter not in ltrs_displayed:
|
tcell += self.new_person_link(person_handle, uplink=self.up)
|
||||||
trow.attr = 'class ="BeginLetter"'
|
|
||||||
tcell += Html("a", letter, name =letter,
|
|
||||||
title ="Families beginning with letter " + letter, inline =True)
|
|
||||||
|
|
||||||
ltrs_displayed[letter] = True
|
first_family = False
|
||||||
else:
|
else:
|
||||||
tcell += ' '
|
tcell += ' '
|
||||||
|
|
||||||
tcell = Html("td", class_ ="ColumnPartner")
|
tcell = Html("td", class_ ="ColumnPartner")
|
||||||
trow += tcell
|
trow += tcell
|
||||||
|
|
||||||
if first_family:
|
tcell += self.family_link(
|
||||||
trow.attr = 'class ="BeginFamily"'
|
family.get_handle(),
|
||||||
|
self.report.get_family_name(family),
|
||||||
|
family.get_gramps_id(), self.up)
|
||||||
|
|
||||||
tcell += self.family_link(family_handle, self.get_name(person),
|
# family events; such as marriage and divorce events
|
||||||
family.get_gramps_id(), self.up)
|
fam_evt_ref_list = family.get_event_ref_list()
|
||||||
|
tcell1 = Html("td", class_ ="ColumnDate", inline =True)
|
||||||
|
tcell2 = Html("td", class_ ="ColumnDate", inline =True)
|
||||||
|
trow += (tcell1, tcell2)
|
||||||
|
|
||||||
first_family = False
|
if fam_evt_ref_list:
|
||||||
else:
|
for evt_ref in fam_evt_ref_list:
|
||||||
tcell += ' '
|
event = self.dbase_.get_event_from_handle(evt_ref.ref)
|
||||||
|
if event:
|
||||||
|
evt_type = event.get_type()
|
||||||
|
if evt_type in [gen.lib.EventType.MARRIAGE,
|
||||||
|
gen.lib.EventType.DIVORCE]:
|
||||||
|
|
||||||
tcell = Html("td", class_ ="ColumnPartner")
|
if evt_type == gen.lib.EventType.MARRIAGE:
|
||||||
trow += tcell
|
tcell1 += _dd.display(event.get_date_object())
|
||||||
|
else:
|
||||||
|
tcell1 += ' '
|
||||||
|
|
||||||
# get partner if there is one listed?
|
if evt_type == gen.lib.EventType.DIVORCE:
|
||||||
partner_handle = ReportUtils.find_spouse(person, family)
|
tcell2 += _dd.display(event.get_date_object())
|
||||||
if partner_handle:
|
else:
|
||||||
tcell += self.new_person_link(partner_handle, uplink=self.up)
|
tcell2 += ' '
|
||||||
else:
|
else:
|
||||||
tcell += ' '
|
tcell1 += ' '
|
||||||
|
tcell2 += ' '
|
||||||
# family events; such as marriage and divorce events
|
first_family = False
|
||||||
fam_evt_ref_list = family.get_event_ref_list()
|
|
||||||
tcell1 = Html("td", class_ ="ColumnDate", inline =True)
|
|
||||||
tcell2 = Html("td", class_ ="ColumnDate", inline =True)
|
|
||||||
trow += (tcell1, tcell2)
|
|
||||||
|
|
||||||
if fam_evt_ref_list:
|
|
||||||
for evt_ref in fam_evt_ref_list:
|
|
||||||
event = self.dbase_.get_event_from_handle(evt_ref.ref)
|
|
||||||
if event:
|
|
||||||
evt_type = event.get_type()
|
|
||||||
if evt_type in [gen.lib.EventType.MARRIAGE,
|
|
||||||
gen.lib.EventType.DIVORCE]:
|
|
||||||
|
|
||||||
if evt_type == gen.lib.EventType.MARRIAGE:
|
|
||||||
tcell1 += _dd.display(event.get_date_object())
|
|
||||||
else:
|
|
||||||
tcell1 += ' '
|
|
||||||
|
|
||||||
if evt_type == gen.lib.EventType.DIVORCE:
|
|
||||||
tcell2 += _dd.display(event.get_date_object())
|
|
||||||
else:
|
|
||||||
tcell2 += ' '
|
|
||||||
else:
|
|
||||||
tcell1 += ' '
|
|
||||||
tcell2 += ' '
|
|
||||||
first_family = False
|
|
||||||
|
|
||||||
# add clearline for proper styling
|
# add clearline for proper styling
|
||||||
# add footer section
|
# add footer section
|
||||||
@ -3134,21 +3202,19 @@ class FamilyPages(BasePage):
|
|||||||
|
|
||||||
self.bibli = Bibliography()
|
self.bibli = Bibliography()
|
||||||
self.up = True
|
self.up = True
|
||||||
# determine if husband and wife, husband only, or spouse only....
|
family_name = self.report.get_family_name(family)
|
||||||
self.page_title = _("Family of ") + self.get_family_string(family)
|
self.page_title = family_name
|
||||||
|
|
||||||
birthorder = report.options["birthorder"]
|
|
||||||
self.familymappages = report.options["familymappages"]
|
self.familymappages = report.options["familymappages"]
|
||||||
|
|
||||||
of, sio = self.report.create_file(family.get_handle(), "fam")
|
of, sio = self.report.create_file(family.get_handle(), "fam")
|
||||||
familydetailpage, head, body = self.write_header(self.report.get_family_name(family))
|
familydetailpage, head, body = self.write_header(family_name)
|
||||||
|
|
||||||
# begin FamilyDetaill division
|
# begin FamilyDetaill division
|
||||||
with Html("div", class_ ="content", id ="RelationshipDetail") as relationshipdetail:
|
with Html("div", class_ ="content", id ="RelationshipDetail") as relationshipdetail:
|
||||||
body += relationshipdetail
|
body += relationshipdetail
|
||||||
|
|
||||||
# family media list for initial thumbnail
|
# family media list for initial thumbnail
|
||||||
# delete thumbnail so that it won't display again in the Gallery List later on...
|
|
||||||
if self.create_media:
|
if self.create_media:
|
||||||
media_list = family.get_media_list()
|
media_list = family.get_media_list()
|
||||||
# If Event pages are not being created, then we need to display
|
# If Event pages are not being created, then we need to display
|
||||||
@ -3160,32 +3226,18 @@ class FamilyPages(BasePage):
|
|||||||
thumbnail = self.display_first_image_as_thumbnail(media_list, family)
|
thumbnail = self.display_first_image_as_thumbnail(media_list, family)
|
||||||
if thumbnail:
|
if thumbnail:
|
||||||
relationshipdetail += thumbnail
|
relationshipdetail += thumbnail
|
||||||
media_list.remove(media_list[0])
|
|
||||||
|
|
||||||
husband, spouse = [None]*2
|
self.person = None # no longer used
|
||||||
husband_handle = family.get_father_handle()
|
|
||||||
spouse_handle = family.get_mother_handle()
|
|
||||||
if husband_handle:
|
|
||||||
husband = self.dbase_.get_person_from_handle(husband_handle)
|
|
||||||
|
|
||||||
if spouse_handle:
|
relationshipdetail += Html("h2", self.page_title, inline = True) +\
|
||||||
spouse = self.dbase_.get_person_from_handle(spouse_handle)
|
(Html('sup') +\
|
||||||
|
(Html('small') +
|
||||||
self.person = None
|
self.get_citation_links(family.get_citation_list())))
|
||||||
if husband and spouse:
|
|
||||||
self.person = husband
|
|
||||||
elif husband:
|
|
||||||
self.person = husband
|
|
||||||
elif spouse_handle:
|
|
||||||
self.person = spouse
|
|
||||||
|
|
||||||
relationshipdetail += Html("h2", self.page_title, inline = True)
|
|
||||||
|
|
||||||
# display relationships
|
# display relationships
|
||||||
if self.person:
|
families = self.display_family_relationships(family, None)
|
||||||
families = self.display_relationships(self.person, None)
|
if families is not None:
|
||||||
if families is not None:
|
relationshipdetail += families
|
||||||
relationshipdetail += families
|
|
||||||
|
|
||||||
# display additional images as gallery
|
# display additional images as gallery
|
||||||
if (self.create_media and media_list):
|
if (self.create_media and media_list):
|
||||||
@ -3784,22 +3836,6 @@ class EventPages(BasePage):
|
|||||||
)
|
)
|
||||||
tbody += trow
|
tbody += trow
|
||||||
|
|
||||||
# trow = Html("tr") + (
|
|
||||||
# Html("td", _("Person(s)"), class_ = "ColumnAttribute", inline = True)
|
|
||||||
# )
|
|
||||||
# tbody += trow
|
|
||||||
|
|
||||||
# tcell = Html("td", class_ = "ColumnPerson")
|
|
||||||
# trow += tcell
|
|
||||||
#
|
|
||||||
# # Person(s) field
|
|
||||||
# handle_list = set(self.dbase_.find_backlink_handles(event_handle,
|
|
||||||
# include_classes = ['Family', 'Person'] if int(event.type) in _EVENTMAP else ['Person']))
|
|
||||||
# first_person = True
|
|
||||||
#
|
|
||||||
# # get person(s) for ColumnPerson
|
|
||||||
# self.complete_people(tcell, first_person, handle_list)
|
|
||||||
|
|
||||||
# Narrative subsection
|
# Narrative subsection
|
||||||
notelist = event.get_note_list()
|
notelist = event.get_note_list()
|
||||||
notelist = self.display_note_list(notelist)
|
notelist = self.display_note_list(notelist)
|
||||||
@ -3928,10 +3964,12 @@ class SurnameListPage(BasePage):
|
|||||||
last_surname = ''
|
last_surname = ''
|
||||||
|
|
||||||
for (surname, data_list) in ppl_handle_list:
|
for (surname, data_list) in ppl_handle_list:
|
||||||
if len(surname) == 0:
|
|
||||||
continue
|
|
||||||
|
|
||||||
letter = first_letter(surname)
|
letter = first_letter(surname)
|
||||||
|
if letter == u' ':
|
||||||
|
# if surname is an empty string, then first_letter
|
||||||
|
# returns a space
|
||||||
|
letter = ' '
|
||||||
|
surname = _ABSENT
|
||||||
|
|
||||||
trow = Html("tr")
|
trow = Html("tr")
|
||||||
tbody += trow
|
tbody += trow
|
||||||
@ -3953,7 +3991,7 @@ class SurnameListPage(BasePage):
|
|||||||
|
|
||||||
last_surname = surname
|
last_surname = surname
|
||||||
|
|
||||||
trow += Html("td", self.surname_link(name_to_md5(surname), surname),
|
trow += Html("td", self.surname_link(name_to_md5(surname), html_escape(surname)),
|
||||||
class_ = "ColumnSurname", inline = True)
|
class_ = "ColumnSurname", inline = True)
|
||||||
|
|
||||||
trow += Html("td", len(data_list), class_ = "ColumnQuantity", inline = True)
|
trow += Html("td", len(data_list), class_ = "ColumnQuantity", inline = True)
|
||||||
@ -4210,9 +4248,6 @@ class SourcePages(BasePage):
|
|||||||
if thumbnail is not None:
|
if thumbnail is not None:
|
||||||
sourcedetail += thumbnail
|
sourcedetail += thumbnail
|
||||||
|
|
||||||
# remove thumbnail from list of media...
|
|
||||||
media_list.remove(media_list[0])
|
|
||||||
|
|
||||||
# add section title
|
# add section title
|
||||||
sourcedetail += Html("h3", html_escape(source.get_title()), inline = True)
|
sourcedetail += Html("h3", html_escape(source.get_title()), inline = True)
|
||||||
|
|
||||||
@ -5185,6 +5220,11 @@ class PersonPages(BasePage):
|
|||||||
first = True
|
first = True
|
||||||
prev_letter = letter
|
prev_letter = letter
|
||||||
letter = first_letter(surname)
|
letter = first_letter(surname)
|
||||||
|
if letter == u' ':
|
||||||
|
# if surname is an empty string, then first_letter
|
||||||
|
# returns a space
|
||||||
|
letter = ' '
|
||||||
|
surname = _ABSENT
|
||||||
for person_handle in handle_list:
|
for person_handle in handle_list:
|
||||||
person = self.dbase_.get_person_from_handle(person_handle)
|
person = self.dbase_.get_person_from_handle(person_handle)
|
||||||
|
|
||||||
@ -5197,11 +5237,11 @@ class PersonPages(BasePage):
|
|||||||
trow.attr = 'class = "BeginSurname"'
|
trow.attr = 'class = "BeginSurname"'
|
||||||
if surname:
|
if surname:
|
||||||
if letter != prev_letter:
|
if letter != prev_letter:
|
||||||
tcell += Html("a", surname, name = letter,
|
tcell += Html("a", html_escape(surname), name = letter,
|
||||||
id_ = letter,
|
id_ = letter,
|
||||||
title = "Surname with letter " + letter)
|
title = "Surname with letter " + letter)
|
||||||
else:
|
else:
|
||||||
tcell += Html("a", surname,
|
tcell += Html("a", html_escape(surname),
|
||||||
title = "Surname with letter " + letter)
|
title = "Surname with letter " + letter)
|
||||||
else:
|
else:
|
||||||
tcell += " "
|
tcell += " "
|
||||||
@ -5244,23 +5284,34 @@ class PersonPages(BasePage):
|
|||||||
|
|
||||||
# partner column
|
# partner column
|
||||||
if showpartner:
|
if showpartner:
|
||||||
tcell = Html("td", class_ = "ColumnPartner")
|
|
||||||
trow += tcell
|
|
||||||
|
|
||||||
family_list = person.get_family_handle_list()
|
family_list = person.get_family_handle_list()
|
||||||
first_family = True
|
first_family = True
|
||||||
partner_name = None
|
partner_name = None
|
||||||
|
tcell = ()
|
||||||
if family_list:
|
if family_list:
|
||||||
for family_handle in family_list:
|
for family_handle in family_list:
|
||||||
family = self.dbase_.get_family_from_handle(family_handle)
|
family = self.dbase_.get_family_from_handle(family_handle)
|
||||||
partner_handle = ReportUtils.find_spouse(person, family)
|
partner_handle = ReportUtils.find_spouse(person, family)
|
||||||
if partner_handle:
|
if partner_handle:
|
||||||
if not first_family:
|
if not first_family:
|
||||||
tcell += ", "
|
# have to do this to get the comma on
|
||||||
tcell += self.new_person_link(partner_handle)
|
# the same line as the link
|
||||||
|
if isinstance(tcell[-1], Html):
|
||||||
|
# tcell is an instance of Html (or
|
||||||
|
# of a subclass thereof)
|
||||||
|
tcell[-1].inside += ","
|
||||||
|
else:
|
||||||
|
tcell = tcell[:-1] +\
|
||||||
|
((tcell[-1] + ", "),)
|
||||||
|
# Have to manipulate as tuples so that
|
||||||
|
# subsequent people are not nested
|
||||||
|
# within the first link
|
||||||
|
tcell += (self.new_person_link(partner_handle),)
|
||||||
first_family = False
|
first_family = False
|
||||||
else:
|
else:
|
||||||
tcell += " "
|
tcell = " "
|
||||||
|
trow += Html("td", class_ = "ColumnPartner") + tcell
|
||||||
|
|
||||||
# parents column
|
# parents column
|
||||||
if showparents:
|
if showparents:
|
||||||
@ -5279,19 +5330,19 @@ class PersonPages(BasePage):
|
|||||||
mother_name = self.get_name(mother)
|
mother_name = self.get_name(mother)
|
||||||
samerow = False
|
samerow = False
|
||||||
if mother and father:
|
if mother and father:
|
||||||
tcell = Html("span", father_name, class_ = "father fatherNmother")
|
tcell = (Html("span", father_name, class_ = "father fatherNmother", inline=True),
|
||||||
tcell += Html("span", mother_name, class_ = "mother")
|
Html("span", mother_name, class_ = "mother", inline=True))
|
||||||
elif mother:
|
elif mother:
|
||||||
tcell = Html("span", mother_name, class_ = "mother")
|
tcell = Html("span", mother_name, class_ = "mother", inline=True)
|
||||||
elif father:
|
elif father:
|
||||||
tcell = Html("span", father_name, class_ = "father")
|
tcell = Html("span", father_name, class_ = "father", inline=True)
|
||||||
else:
|
else:
|
||||||
tcell = " "
|
tcell = " "
|
||||||
samerow = True
|
samerow = True
|
||||||
else:
|
else:
|
||||||
tcell = " "
|
tcell = " "
|
||||||
samerow = True
|
samerow = True
|
||||||
trow += Html("td", tcell, class_ = "ColumnParents", inline = samerow)
|
trow += Html("td", class_ = "ColumnParents", inline = samerow) + tcell
|
||||||
|
|
||||||
# create clear line for proper styling
|
# create clear line for proper styling
|
||||||
# create footer section
|
# create footer section
|
||||||
@ -6025,7 +6076,7 @@ class PersonPages(BasePage):
|
|||||||
"""
|
"""
|
||||||
self.page_title = self.sort_name
|
self.page_title = self.sort_name
|
||||||
thumbnail = self.display_first_image_as_thumbnail(self.person.get_media_list(), self.person)
|
thumbnail = self.display_first_image_as_thumbnail(self.person.get_media_list(), self.person)
|
||||||
section_title = Html("h3", self.page_title, inline =True) + \
|
section_title = Html("h3", html_escape(self.page_title), inline =True) + \
|
||||||
(Html('sup') +\
|
(Html('sup') +\
|
||||||
(Html('small') +
|
(Html('small') +
|
||||||
self.get_citation_links(self.person.get_citation_list())))
|
self.get_citation_links(self.person.get_citation_list())))
|
||||||
@ -6045,7 +6096,7 @@ class PersonPages(BasePage):
|
|||||||
|
|
||||||
# Names [and their sources]
|
# Names [and their sources]
|
||||||
for name in all_names:
|
for name in all_names:
|
||||||
pname = _nd.display_name(name)
|
pname = html_escape(_nd.display_name(name))
|
||||||
# if name == primary_name:
|
# if name == primary_name:
|
||||||
# pname += self.get_citation_links(self.person.get_citation_list() )
|
# pname += self.get_citation_links(self.person.get_citation_list() )
|
||||||
pname += self.get_citation_links( name.get_citation_list() )
|
pname += self.get_citation_links( name.get_citation_list() )
|
||||||
@ -7050,20 +7101,20 @@ class NavWebReport(Report):
|
|||||||
# the handle for the object that refers to the 'key' object.
|
# the handle for the object that refers to the 'key' object.
|
||||||
###########################################################################
|
###########################################################################
|
||||||
|
|
||||||
_obj_class_list = (Person, Family, Event, Place, Source, Citation,
|
|
||||||
MediaObject, Repository, Note, Tag)
|
|
||||||
|
|
||||||
# setup a dictionary of the required structure
|
|
||||||
obj_dict = defaultdict(lambda: defaultdict(set))
|
|
||||||
bkref_dict = defaultdict(lambda: defaultdict(set))
|
|
||||||
|
|
||||||
|
|
||||||
# initialise the dictionary to empty in case no objects of any particular
|
|
||||||
# class are incuded in the web report
|
|
||||||
for obj_class in _obj_class_list:
|
|
||||||
obj_dict[obj_class] = defaultdict(set)
|
|
||||||
|
|
||||||
def _build_obj_dict(self):
|
def _build_obj_dict(self):
|
||||||
|
_obj_class_list = (Person, Family, Event, Place, Source, Citation,
|
||||||
|
MediaObject, Repository, Note, Tag)
|
||||||
|
|
||||||
|
# setup a dictionary of the required structure
|
||||||
|
self.obj_dict = defaultdict(lambda: defaultdict(set))
|
||||||
|
self.bkref_dict = defaultdict(lambda: defaultdict(set))
|
||||||
|
|
||||||
|
|
||||||
|
# initialise the dictionary to empty in case no objects of any
|
||||||
|
# particular class are incuded in the web report
|
||||||
|
for obj_class in _obj_class_list:
|
||||||
|
self.obj_dict[obj_class] = defaultdict(set)
|
||||||
|
|
||||||
ind_list = self.database.iter_person_handles()
|
ind_list = self.database.iter_person_handles()
|
||||||
self.user.begin_progress(_("Narrated Web Site Report"),
|
self.user.begin_progress(_("Narrated Web Site Report"),
|
||||||
_('Applying Person Filter...'),
|
_('Applying Person Filter...'),
|
||||||
@ -7293,10 +7344,15 @@ class NavWebReport(Report):
|
|||||||
|
|
||||||
def _add_event(self, event_handle, bkref_class, bkref_handle):
|
def _add_event(self, event_handle, bkref_class, bkref_handle):
|
||||||
event = self.database.get_event_from_handle(event_handle)
|
event = self.database.get_event_from_handle(event_handle)
|
||||||
# I have no idea why all that is displayed for the back link is the
|
event_name = event.get_description()
|
||||||
# event type, but this can be seen in a Media page, where the Media is
|
# The event description can be Y on import from GEDCOM. See the
|
||||||
# linked from (for example) a birth event
|
# following quote from the GEDCOM spec: "The occurrence of an event is
|
||||||
event_name = str(event.get_type())
|
# asserted by the presence of either a DATE tag and value or a PLACe tag
|
||||||
|
# and value in the event structure. When neither the date value nor the
|
||||||
|
# place value are known then a Y(es) value on the parent event tag line
|
||||||
|
# is required to assert that the event happened.""
|
||||||
|
if event_name == "" or event_name is None or event_name =='Y':
|
||||||
|
event_name = str(event.get_type())
|
||||||
if self.inc_events:
|
if self.inc_events:
|
||||||
event_fname = self.build_url_fname(event_handle, "evt",
|
event_fname = self.build_url_fname(event_handle, "evt",
|
||||||
False) + self.ext
|
False) + self.ext
|
||||||
@ -8529,6 +8585,8 @@ def alphabet_navigation(menu_set):
|
|||||||
hyper = Html("a", "V,W", href = "#V,W", title = "V,W")
|
hyper = Html("a", "V,W", href = "#V,W", title = "V,W")
|
||||||
else:
|
else:
|
||||||
# adding title to hyperlink menu for screen readers and braille writers
|
# adding title to hyperlink menu for screen readers and braille writers
|
||||||
|
if menu_item == ' ':
|
||||||
|
menu_item = ' '
|
||||||
title_str = _("Alphabet Menu: %s") % menu_item
|
title_str = _("Alphabet Menu: %s") % menu_item
|
||||||
hyper = Html("a", menu_item, title = title_str, href = "#%s" % menu_item)
|
hyper = Html("a", menu_item, title = title_str, href = "#%s" % menu_item)
|
||||||
unordered.extend(
|
unordered.extend(
|
||||||
|
@ -147,6 +147,10 @@ def load_on_reg(dbstate, uistate, plugin):
|
|||||||
# no style sheet option
|
# no style sheet option
|
||||||
["No style sheet",1, _("No style sheet"), [], None, [], [] ],
|
["No style sheet",1, _("No style sheet"), [], None, [], [] ],
|
||||||
|
|
||||||
|
# Document image
|
||||||
|
["Document", 0, "Document",
|
||||||
|
path_img("document.png"), None, [], [] ],
|
||||||
|
|
||||||
# all other images for use in NarrativeWeb
|
# all other images for use in NarrativeWeb
|
||||||
['All Images', 0, 'All Images', None, None,
|
['All Images', 0, 'All Images', None, None,
|
||||||
[path_img("blank.gif"),
|
[path_img("blank.gif"),
|
||||||
|
Loading…
Reference in New Issue
Block a user