Updated menu in BirthdayReport. Changed alphabet navigation in NarrativeWeb. Updated WebCal to use name format option. Fixed a few elements in stylesheet.
svn: r12406
This commit is contained in:
parent
26cb5e59c2
commit
0b61b4a8a4
@ -88,22 +88,33 @@ img {
|
|||||||
background:none;
|
background:none;
|
||||||
}
|
}
|
||||||
.content {
|
.content {
|
||||||
|
width:965px;
|
||||||
|
margin:0 auto;
|
||||||
|
padding-bottom:.5em;
|
||||||
background-color:#FFF;
|
background-color:#FFF;
|
||||||
color:#000;
|
color:#000;
|
||||||
}
|
}
|
||||||
.content div.snapshot {
|
.content div.snapshot {
|
||||||
float:right;
|
margin:0;
|
||||||
margin:1.6em;
|
|
||||||
padding:0;
|
padding:0;
|
||||||
background:none;
|
background:none;
|
||||||
}
|
}
|
||||||
.content div.snapshot div.thumbnail {
|
.content div.snapshot div.thumbnail {
|
||||||
margin:0;
|
margin:0;
|
||||||
padding:0;
|
padding:2em 0 0 0;
|
||||||
background:none;
|
background:none;
|
||||||
}
|
}
|
||||||
.content div.snapshot div.thumbnail p {
|
.content div.snapshot div.thumbnail a {
|
||||||
display:none;
|
display:block;
|
||||||
|
width:96px;
|
||||||
|
margin:0 auto;
|
||||||
|
}
|
||||||
|
.fullclear {
|
||||||
|
width:100%;
|
||||||
|
height:1px;
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
clear:both;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* General Text
|
/* General Text
|
||||||
@ -115,12 +126,11 @@ h2 {
|
|||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
width:80%;
|
|
||||||
font:normal 2em/1.2em serif;
|
font:normal 2em/1.2em serif;
|
||||||
text-align:left;
|
text-align:center;
|
||||||
margin:0;
|
margin:0;
|
||||||
padding:.5em 20px .2em 20px;
|
padding:.5em 20px .2em 20px;
|
||||||
border-bottom:double 4px #453619;
|
border-bottom:double 4px #000;
|
||||||
}
|
}
|
||||||
h4 {
|
h4 {
|
||||||
font:normal 1.2em/1.2em serif;
|
font:normal 1.2em/1.2em serif;
|
||||||
@ -128,7 +138,7 @@ h4 {
|
|||||||
margin:0;
|
margin:0;
|
||||||
padding:.2em 0 .2em 20px;
|
padding:.2em 0 .2em 20px;
|
||||||
background-color:#453619;
|
background-color:#453619;
|
||||||
border-bottom:solid 1px #6AF364;
|
border-bottom:solid 2px #6AF364;
|
||||||
}
|
}
|
||||||
h5, h6 {
|
h5, h6 {
|
||||||
font:normal 1em/1.2em serif;
|
font:normal 1em/1.2em serif;
|
||||||
@ -276,6 +286,7 @@ p#user_header {
|
|||||||
padding:0 0 0 9px;
|
padding:0 0 0 9px;
|
||||||
background-color:#6AF364;
|
background-color:#6AF364;
|
||||||
border-bottom:solid 2px #000;
|
border-bottom:solid 2px #000;
|
||||||
|
border-top:solid 2px #000;
|
||||||
}
|
}
|
||||||
#alphabet ul li.letters {
|
#alphabet ul li.letters {
|
||||||
margin:0;
|
margin:0;
|
||||||
@ -291,6 +302,7 @@ p#user_header {
|
|||||||
color:#000;
|
color:#000;
|
||||||
margin:0;
|
margin:0;
|
||||||
padding:5px 5px;
|
padding:5px 5px;
|
||||||
|
text-decoration:none;
|
||||||
}
|
}
|
||||||
#alphabet ul li.letters a:hover {
|
#alphabet ul li.letters a:hover {
|
||||||
background-color:#22822A;
|
background-color:#22822A;
|
||||||
@ -358,7 +370,7 @@ table.infolist {
|
|||||||
padding:0;
|
padding:0;
|
||||||
background-color:#FFF;
|
background-color:#FFF;
|
||||||
}
|
}
|
||||||
table.infolist tr th {
|
table.infolist thead tr th {
|
||||||
font:normal 1.1em/1.2em serif;
|
font:normal 1.1em/1.2em serif;
|
||||||
color:#000;
|
color:#000;
|
||||||
margin:0;
|
margin:0;
|
||||||
@ -366,12 +378,12 @@ table.infolist tr th {
|
|||||||
background-color:#6AF364;
|
background-color:#6AF364;
|
||||||
border-bottom:solid 1px #000;
|
border-bottom:solid 1px #000;
|
||||||
}
|
}
|
||||||
table.infolist tr th a {
|
table.infolist thead tr th a {
|
||||||
|
background-color:#6AF364;
|
||||||
color:#000;
|
color:#000;
|
||||||
}
|
}
|
||||||
table.infolist tr th a:hover {
|
table.infolist thead tr th a:hover {
|
||||||
background-color:#C1B398;
|
background-color:#C1B398;
|
||||||
color:#000;
|
|
||||||
}
|
}
|
||||||
table.infolist tr td {
|
table.infolist tr td {
|
||||||
font:normal 1.1em/1.4em serif;
|
font:normal 1.1em/1.4em serif;
|
||||||
@ -425,15 +437,14 @@ table.infolist tbody tr td.ColumnParents span.mother:before {
|
|||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
#Surnames { }
|
#Surnames { }
|
||||||
#SurnameDetail p#description { padding-top:0; }
|
#SurnameDetail p#description { padding-top:0; }
|
||||||
table.surnamelist tr thead th.ColumnSurname, #Surnames table.surnamelist tbody tr td.ColumnSurname {
|
table.surnamelist thead tr th.ColumnSurname, #Surnames table.surnamelist tbody tr td.ColumnSurname {
|
||||||
width:50%;
|
width:50%;
|
||||||
}
|
}
|
||||||
table.surnamelist tr th {
|
table.surnamelist thead tr th {
|
||||||
padding:0;
|
padding:0;
|
||||||
}
|
}
|
||||||
table.surnamelist tr th a, table.surnamelist tr th a:visited {
|
table.surnamelist thead tr th a, table.surnamelist thead tr th a:visited {
|
||||||
display:block;
|
display:block;
|
||||||
color:#FFF;
|
|
||||||
text-align:left;
|
text-align:left;
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
padding:.2em 10px;
|
padding:.2em 10px;
|
||||||
@ -466,10 +477,10 @@ table.surnamelist tbody tr td.ColumnSurname:hover, table#SortByName tbody tr td.
|
|||||||
background-color:#C1B398;
|
background-color:#C1B398;
|
||||||
}
|
}
|
||||||
table.surname {
|
table.surname {
|
||||||
border-bottom:solid 1px #453619;
|
border-bottom:solid 1px #000;
|
||||||
}
|
}
|
||||||
table.surname tbody tr td {
|
table.surname tbody tr td {
|
||||||
border-bottom:dashed 1px #453619;
|
border-bottom:dashed 1px #000;
|
||||||
}
|
}
|
||||||
table.surname thead tr th.ColumnName {
|
table.surname thead tr th.ColumnName {
|
||||||
width:20%;
|
width:20%;
|
||||||
@ -484,9 +495,8 @@ table.surname tbody tr td.ColumnName a {
|
|||||||
display:block;
|
display:block;
|
||||||
padding:.6em 10px .6em 20px;
|
padding:.6em 10px .6em 20px;
|
||||||
}
|
}
|
||||||
table.surname tbody tr td.ColumnName a span.grampsid {
|
table.surname tbody tr td.ColumnName a span.grampsid { }
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
table.surname tbody tr td.ColumnName:hover {
|
table.surname tbody tr td.ColumnName:hover {
|
||||||
background-color:#C1B398;
|
background-color:#C1B398;
|
||||||
}
|
}
|
||||||
@ -739,6 +749,8 @@ div.subsection table.infolist {
|
|||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
div#events {
|
div#events {
|
||||||
padding-bottom:0;
|
padding-bottom:0;
|
||||||
|
height:3cm;
|
||||||
|
overflow:auto;
|
||||||
}
|
}
|
||||||
div#events h4 {
|
div#events h4 {
|
||||||
margin-bottom:0;
|
margin-bottom:0;
|
||||||
@ -874,6 +886,10 @@ div#narrative {
|
|||||||
|
|
||||||
/* Subsections : Source References
|
/* Subsections : Source References
|
||||||
----------------------------------------------------- */
|
----------------------------------------------------- */
|
||||||
|
div#sourcerefs {
|
||||||
|
height:2.5cm;
|
||||||
|
overflow:auto;
|
||||||
|
}
|
||||||
div#sourcerefs ol {
|
div#sourcerefs ol {
|
||||||
list-style-type:decimal;
|
list-style-type:decimal;
|
||||||
}
|
}
|
||||||
@ -1206,9 +1222,8 @@ body#WebCal {
|
|||||||
.calendar tbody tr td ul li span.yearsmarried em {
|
.calendar tbody tr td ul li span.yearsmarried em {
|
||||||
color:#453619;
|
color:#453619;
|
||||||
}
|
}
|
||||||
.calendar tbody tr td.highlight {
|
.calendar tbody tr td.highlight { }
|
||||||
|
|
||||||
}
|
|
||||||
.calendar tbody tr td.highlight div.date {
|
.calendar tbody tr td.highlight div.date {
|
||||||
color:#0A65B5;
|
color:#0A65B5;
|
||||||
background-color:#C2E1FE;
|
background-color:#C2E1FE;
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2000-2007 Donald N. Allingham
|
# Copyright (C) 2000-2007 Donald N. Allingham
|
||||||
# Copyright (C) 2008-2009 Brian G. Matherly
|
# Copyright (C) 2008-2009 Brian G. Matherly
|
||||||
|
# Copyright (C) 2009 Rob G. Healey <robhealey1@gmail.com>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -27,8 +28,7 @@
|
|||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
from gettext import ngettext
|
from gettext import ngettext
|
||||||
import datetime
|
import datetime, time
|
||||||
import time
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -36,7 +36,7 @@ import time
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
import BaseDoc
|
import BaseDoc
|
||||||
from BasicUtils import name_displayer
|
from BasicUtils import name_displayer as _nd
|
||||||
from gen.plug import PluginManager
|
from gen.plug import PluginManager
|
||||||
from ReportBase import Report, ReportUtils, MenuReportOptions, CATEGORY_TEXT
|
from ReportBase import Report, ReportUtils, MenuReportOptions, CATEGORY_TEXT
|
||||||
from gen.plug.menu import BooleanOption, StringOption, NumberOption, \
|
from gen.plug.menu import BooleanOption, StringOption, NumberOption, \
|
||||||
@ -59,24 +59,24 @@ class CalendarReport(Report):
|
|||||||
def __init__(self, database, options_class):
|
def __init__(self, database, options_class):
|
||||||
Report.__init__(self, database, options_class)
|
Report.__init__(self, database, options_class)
|
||||||
menu = options_class.menu
|
menu = options_class.menu
|
||||||
|
mgobn = lambda name:options_class.menu.get_option_by_name(name).get_value()
|
||||||
|
|
||||||
self.titletext = menu.get_option_by_name('titletext').get_value()
|
self.titletext = mgobn('titletext')
|
||||||
self.relationships = \
|
self.relationships = mgobn('relationships')
|
||||||
menu.get_option_by_name('relationships').get_value()
|
self.year = mgobn('year')
|
||||||
self.year = menu.get_option_by_name('year').get_value()
|
self.name_format = mgobn('name_format')
|
||||||
self.name_format = menu.get_option_by_name('name_format').get_value()
|
self.country = mgobn('country')
|
||||||
self.country = menu.get_option_by_name('country').get_value()
|
self.anniversaries = mgobn('anniversaries')
|
||||||
self.anniversaries = menu.get_option_by_name('anniversaries').get_value()
|
self.start_dow = mgobn('start_dow')
|
||||||
self.start_dow = menu.get_option_by_name('start_dow').get_value()
|
self.maiden_name = mgobn('maiden_name')
|
||||||
self.maiden_name = menu.get_option_by_name('maiden_name').get_value()
|
self.alive = mgobn('alive')
|
||||||
self.alive = menu.get_option_by_name('alive').get_value()
|
self.birthdays = mgobn('birthdays')
|
||||||
self.birthdays = menu.get_option_by_name('birthdays').get_value()
|
self.text1 = mgobn('text1')
|
||||||
self.text1 = menu.get_option_by_name('text1').get_value()
|
self.text2 = mgobn('text2')
|
||||||
self.text2 = menu.get_option_by_name('text2').get_value()
|
self.text3 = mgobn('text3')
|
||||||
self.text3 = menu.get_option_by_name('text3').get_value()
|
|
||||||
self.filter_option = menu.get_option_by_name('filter')
|
self.filter_option = menu.get_option_by_name('filter')
|
||||||
self.filter = self.filter_option.get_filter()
|
self.filter = self.filter_option.get_filter()
|
||||||
pid = menu.get_option_by_name('pid').get_value()
|
pid = mgobn('pid')
|
||||||
self.center_person = database.get_person_from_gramps_id(pid)
|
self.center_person = database.get_person_from_gramps_id(pid)
|
||||||
|
|
||||||
def get_name(self, person, maiden_name = None):
|
def get_name(self, person, maiden_name = None):
|
||||||
@ -102,7 +102,7 @@ class CalendarReport(Report):
|
|||||||
else:
|
else:
|
||||||
name = gen.lib.Name(primary_name)
|
name = gen.lib.Name(primary_name)
|
||||||
name.set_display_as(self.name_format)
|
name.set_display_as(self.name_format)
|
||||||
return name_displayer.display_name(name)
|
return _nd.display_name(name)
|
||||||
|
|
||||||
def add_day_item(self, text, month, day):
|
def add_day_item(self, text, month, day):
|
||||||
""" Add an item to a day. """
|
""" Add an item to a day. """
|
||||||
@ -152,7 +152,7 @@ class CalendarReport(Report):
|
|||||||
if self.relationships:
|
if self.relationships:
|
||||||
name = self.center_person.get_primary_name()
|
name = self.center_person.get_primary_name()
|
||||||
self.doc.start_paragraph('BIR-Text3style')
|
self.doc.start_paragraph('BIR-Text3style')
|
||||||
self.doc.write_text(_("Relationships shown are to %s") % name_displayer.display_name(name))
|
self.doc.write_text(_("Relationships shown are to %s") % _nd.display_name(name))
|
||||||
self.doc.end_paragraph()
|
self.doc.end_paragraph()
|
||||||
self.progress.set_pass(_('Formatting months...'), 12)
|
self.progress.set_pass(_('Formatting months...'), 12)
|
||||||
for month in range(1, 13):
|
for month in range(1, 13):
|
||||||
@ -350,7 +350,7 @@ class CalendarOptions(MenuReportOptions):
|
|||||||
|
|
||||||
# We must figure out the value of the first option before we can
|
# We must figure out the value of the first option before we can
|
||||||
# create the EnumeratedListOption
|
# create the EnumeratedListOption
|
||||||
fmt_list = name_displayer.get_name_format()
|
fmt_list = _nd.get_name_format()
|
||||||
name_format = EnumeratedListOption(_("Name format"), fmt_list[0][0])
|
name_format = EnumeratedListOption(_("Name format"), fmt_list[0][0])
|
||||||
for num, name, fmt_str, act in fmt_list:
|
for num, name, fmt_str, act in fmt_list:
|
||||||
name_format.add_item(num, name)
|
name_format.add_item(num, name)
|
||||||
|
@ -288,6 +288,9 @@ class BasePage:
|
|||||||
def alphabet_navigation(self, of, db, handle_list, key):
|
def alphabet_navigation(self, of, db, handle_list, key):
|
||||||
"""
|
"""
|
||||||
Will create the alphabetical navigation bar...
|
Will create the alphabetical navigation bar...
|
||||||
|
|
||||||
|
handle_list -- a list of people's or Places' handles
|
||||||
|
key -- _PERSON or _PLACE
|
||||||
"""
|
"""
|
||||||
|
|
||||||
sorted_set = {}
|
sorted_set = {}
|
||||||
@ -301,24 +304,34 @@ class BasePage:
|
|||||||
sorted_first_letter = sorted_set.keys()
|
sorted_first_letter = sorted_set.keys()
|
||||||
sorted_first_letter.sort(locale.strcoll)
|
sorted_first_letter.sort(locale.strcoll)
|
||||||
|
|
||||||
|
# remove a comma as a letter in Places at the least?
|
||||||
|
sorted_first_letter = [(ltr) for ltr in sorted_first_letter
|
||||||
|
if ltr != ',']
|
||||||
|
|
||||||
num_ltrs = len(sorted_first_letter)
|
num_ltrs = len(sorted_first_letter)
|
||||||
if num_ltrs <= 26:
|
if num_ltrs <= 26:
|
||||||
of.write('\t<div id="navigation">\n')
|
of.write('\t<div id="alphabet">\n')
|
||||||
of.write('\t\t<ul>\n')
|
of.write('\t\t<ul>\n')
|
||||||
for ltr in sorted_first_letter:
|
for ltr in sorted_first_letter:
|
||||||
of.write('\t\t\t<li><a href="#%s">%s</a> </li>\n' % (ltr, ltr))
|
title_str = 'Surnames' if key == 0 else 'Places'
|
||||||
|
title_str += ' starting with %s' % ltr
|
||||||
|
of.write('\t\t\t<li class="letters"><a href="#%s" title="%s">%s</a></li>\n'
|
||||||
|
% (ltr, title_str, ltr))
|
||||||
of.write('\t\t</ul>\n')
|
of.write('\t\t</ul>\n')
|
||||||
of.write('\t</div>\n')
|
of.write('\t</div>\n')
|
||||||
else:
|
else:
|
||||||
nrows = (num_ltrs / 26)
|
nrows = (num_ltrs / 26)
|
||||||
index = 0
|
index = 0
|
||||||
for rows in range(0, nrows):
|
for rows in range(0, nrows):
|
||||||
of.write('\t<div id="navigation">\n')
|
of.write('\t<div id="alphabet">\n')
|
||||||
of.write('\t\t<ul>\n')
|
of.write('\t\t<ul>\n')
|
||||||
cols = 0
|
cols = 0
|
||||||
while (cols <= 26 and index <= num_ltrs):
|
while (cols <= 26 and index <= num_ltrs):
|
||||||
of.write('\t\t\t<li><a href="#%s">%s</a></li>\n'
|
letter = sorted_first_letter[index]
|
||||||
% (sorted_first_letter[index], sorted_first_letter[index]))
|
title_str = 'Surnames' if key == 0 else 'Places'
|
||||||
|
title_str += ' starting with %s' % letter
|
||||||
|
of.write('\t\t\t<li class="letters"><a href="#%s" title="%s">%s</a></li>\n'
|
||||||
|
% (letter, title_str, letter))
|
||||||
cols += 1
|
cols += 1
|
||||||
index += 1
|
index += 1
|
||||||
of.write('\t\t<ul>\n')
|
of.write('\t\t<ul>\n')
|
||||||
|
@ -52,7 +52,7 @@ log = logging.getLogger(".WebPage")
|
|||||||
# GRAMPS module
|
# GRAMPS module
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
import gen.lib
|
from gen.lib import date, Date, Name, Person, NameType, EventType
|
||||||
import const
|
import const
|
||||||
from GrampsCfg import get_researcher
|
from GrampsCfg import get_researcher
|
||||||
from gen.plug import PluginManager
|
from gen.plug import PluginManager
|
||||||
@ -60,12 +60,13 @@ from ReportBase import Report, ReportUtils, MenuReportOptions, CATEGORY_WEB
|
|||||||
from gen.plug.menu import BooleanOption, NumberOption, StringOption, \
|
from gen.plug.menu import BooleanOption, NumberOption, StringOption, \
|
||||||
EnumeratedListOption, FilterOption, PersonOption, \
|
EnumeratedListOption, FilterOption, PersonOption, \
|
||||||
DestinationOption
|
DestinationOption
|
||||||
import Utils
|
|
||||||
import GrampsLocale
|
import GrampsLocale
|
||||||
from QuestionDialog import WarningDialog
|
from QuestionDialog import WarningDialog
|
||||||
from Utils import probably_alive
|
from Utils import probably_alive, ProgressMeter, xml_lang
|
||||||
from DateHandler import displayer as _dd
|
from DateHandler import displayer as _dd
|
||||||
|
|
||||||
|
from BasicUtils import name_displayer as _nd
|
||||||
|
|
||||||
import libholiday
|
import libholiday
|
||||||
from libhtml import Html
|
from libhtml import Html
|
||||||
|
|
||||||
@ -185,6 +186,7 @@ class WebCalReport(Report):
|
|||||||
self.title_text = mgobn('title')
|
self.title_text = mgobn('title')
|
||||||
filter_option = options.menu.get_option_by_name('filter')
|
filter_option = options.menu.get_option_by_name('filter')
|
||||||
self.filter = filter_option.get_filter()
|
self.filter = filter_option.get_filter()
|
||||||
|
self.name_format = mgobn('name_format')
|
||||||
self.ext = mgobn('ext')
|
self.ext = mgobn('ext')
|
||||||
self.copy = mgobn('cright')
|
self.copy = mgobn('cright')
|
||||||
self.css = mgobn('css')
|
self.css = mgobn('css')
|
||||||
@ -193,7 +195,6 @@ class WebCalReport(Report):
|
|||||||
self.start_dow = mgobn('start_dow')
|
self.start_dow = mgobn('start_dow')
|
||||||
|
|
||||||
self.multiyear = mgobn('multiyear')
|
self.multiyear = mgobn('multiyear')
|
||||||
|
|
||||||
self.start_year = mgobn('start_year')
|
self.start_year = mgobn('start_year')
|
||||||
self.end_year = mgobn('end_year')
|
self.end_year = mgobn('end_year')
|
||||||
|
|
||||||
@ -221,7 +222,7 @@ class WebCalReport(Report):
|
|||||||
self.email = researcher.email
|
self.email = researcher.email
|
||||||
|
|
||||||
# set to today's date
|
# set to today's date
|
||||||
self.today = gen.lib.date.Today()
|
self.today = date.Today()
|
||||||
|
|
||||||
self.warn_dir = True # Only give warning once.
|
self.warn_dir = True # Only give warning once.
|
||||||
|
|
||||||
@ -298,7 +299,7 @@ class WebCalReport(Report):
|
|||||||
|
|
||||||
if month > 0:
|
if month > 0:
|
||||||
try:
|
try:
|
||||||
event_date = gen.lib.Date()
|
event_date = Date()
|
||||||
event_date.set_yr_mon_day(year, month, day)
|
event_date.set_yr_mon_day(year, month, day)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
event_date = '...'
|
event_date = '...'
|
||||||
@ -436,7 +437,7 @@ class WebCalReport(Report):
|
|||||||
subdirs = '../'*nr_up
|
subdirs = '../'*nr_up
|
||||||
|
|
||||||
# Header contants
|
# Header contants
|
||||||
xmllang = Utils.xml_lang()
|
xmllang = xml_lang()
|
||||||
_META1 = 'name="generator" content="%s %s %s"' % (const.PROGRAM_NAME, const.VERSION,
|
_META1 = 'name="generator" content="%s %s %s"' % (const.PROGRAM_NAME, const.VERSION,
|
||||||
const.URL_HOMEPAGE)
|
const.URL_HOMEPAGE)
|
||||||
_META2 = 'name="author" content="%s"' % self.author
|
_META2 = 'name="author" content="%s"' % self.author
|
||||||
@ -772,7 +773,7 @@ class WebCalReport(Report):
|
|||||||
bday_anniv_list = self.calendar.get(month, {}).get(thisday.day, [])
|
bday_anniv_list = self.calendar.get(month, {}).get(thisday.day, [])
|
||||||
|
|
||||||
# date is an instance because of subtracting abilities in date.py
|
# date is an instance because of subtracting abilities in date.py
|
||||||
event_date = gen.lib.Date()
|
event_date = Date()
|
||||||
event_date.set_yr_mon_day(thisday.year, thisday.month, thisday.day)
|
event_date.set_yr_mon_day(thisday.year, thisday.month, thisday.day)
|
||||||
|
|
||||||
# get events for this day
|
# get events for this day
|
||||||
@ -1108,6 +1109,40 @@ class WebCalReport(Report):
|
|||||||
# close the file
|
# close the file
|
||||||
self.close_file(od)
|
self.close_file(od)
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Get person's short name
|
||||||
|
#
|
||||||
|
# ---------------------------------------------------------------------------------------
|
||||||
|
def get_name(self, person, maiden_name = None):
|
||||||
|
"""
|
||||||
|
Return person's name, unless maiden_name given, unless married_name
|
||||||
|
listed.
|
||||||
|
|
||||||
|
person -- person to get short name from
|
||||||
|
maiden_name -- either a woman's maiden name or man's surname
|
||||||
|
"""
|
||||||
|
# Get all of a person's names:
|
||||||
|
primary_name = person.primary_name
|
||||||
|
married_name = None
|
||||||
|
names = [primary_name] + person.get_alternate_names()
|
||||||
|
for name in names:
|
||||||
|
if int(name.get_type()) == NameType.MARRIED:
|
||||||
|
married_name = name
|
||||||
|
break # use first
|
||||||
|
|
||||||
|
# Now, decide which to use:
|
||||||
|
if maiden_name is not None:
|
||||||
|
if married_name is not None:
|
||||||
|
name = Name(married_name)
|
||||||
|
else:
|
||||||
|
name = Name(primary_name)
|
||||||
|
name.set_surname(maiden_name)
|
||||||
|
else:
|
||||||
|
name = Name(primary_name)
|
||||||
|
name.set_display_as(self.name_format)
|
||||||
|
return _nd.display_name(name)
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# The database slave; Gathers information for calendars
|
# The database slave; Gathers information for calendars
|
||||||
@ -1141,12 +1176,13 @@ class WebCalReport(Report):
|
|||||||
month = birth_date.get_month()
|
month = birth_date.get_month()
|
||||||
day = birth_date.get_day()
|
day = birth_date.get_day()
|
||||||
|
|
||||||
prob_alive_date = gen.lib.Date(this_year, month, day)
|
# date to figure if someone is still alive
|
||||||
|
prob_alive_date = Date(this_year, month, day)
|
||||||
|
|
||||||
# add some things to handle maiden name:
|
# add some things to handle maiden name:
|
||||||
father_surname = None # husband, actually
|
father_surname = None # husband, actually
|
||||||
sex = person.gender
|
sex = person.gender
|
||||||
if sex == gen.lib.Person.FEMALE:
|
if sex == Person.FEMALE:
|
||||||
|
|
||||||
# get husband's last name:
|
# get husband's last name:
|
||||||
if self.maiden_name in ['spouse_first', 'spouse_last']:
|
if self.maiden_name in ['spouse_first', 'spouse_last']:
|
||||||
@ -1164,7 +1200,7 @@ class WebCalReport(Report):
|
|||||||
if father is not None:
|
if father is not None:
|
||||||
father_name = father.primary_name
|
father_name = father.primary_name
|
||||||
father_surname = _get_regular_surname(sex, father_name)
|
father_surname = _get_regular_surname(sex, father_name)
|
||||||
short_name = _get_short_name(person, father_surname)
|
short_name = self.get_name(person, father_surname)
|
||||||
alive = probably_alive(person, self.database, prob_alive_date)
|
alive = probably_alive(person, self.database, prob_alive_date)
|
||||||
if (self.alive and alive) or not self.alive:
|
if (self.alive and alive) or not self.alive:
|
||||||
text = _('%(short_name)s') % {'short_name' : short_name}
|
text = _('%(short_name)s') % {'short_name' : short_name}
|
||||||
@ -1183,8 +1219,8 @@ class WebCalReport(Report):
|
|||||||
if spouse_handle:
|
if spouse_handle:
|
||||||
spouse = self.database.get_person_from_handle(spouse_handle)
|
spouse = self.database.get_person_from_handle(spouse_handle)
|
||||||
if spouse:
|
if spouse:
|
||||||
spouse_name = _get_short_name(spouse)
|
spouse_name = self.get_name(spouse)
|
||||||
short_name = _get_short_name(person)
|
short_name = self.get_name(person)
|
||||||
|
|
||||||
# will return a marriage event or False if not married any longer
|
# will return a marriage event or False if not married any longer
|
||||||
marriage_event = get_marriage_event(self.database, fam)
|
marriage_event = get_marriage_event(self.database, fam)
|
||||||
@ -1194,7 +1230,8 @@ class WebCalReport(Report):
|
|||||||
month = event_obj.get_month()
|
month = event_obj.get_month()
|
||||||
day = event_obj.get_day()
|
day = event_obj.get_day()
|
||||||
|
|
||||||
prob_alive_date = gen.lib.Date(this_year, month, day)
|
# date to figure if someone is still alive
|
||||||
|
prob_alive_date = Date(this_year, month, day)
|
||||||
|
|
||||||
if event_obj.is_valid():
|
if event_obj.is_valid():
|
||||||
text = _('%(spouse)s and %(person)s') % {
|
text = _('%(spouse)s and %(person)s') % {
|
||||||
@ -1224,7 +1261,7 @@ class WebCalReport(Report):
|
|||||||
|
|
||||||
# Display date as user set in preferences
|
# Display date as user set in preferences
|
||||||
msg = _('Generated by <a href="http://gramps-project.org">'
|
msg = _('Generated by <a href="http://gramps-project.org">'
|
||||||
'GRAMPS</a> on %(date)s') % {'date' : _dd.display(gen.lib.date.Today())}
|
'GRAMPS</a> on %(date)s') % {'date' : _dd.display(date.Today())}
|
||||||
p = Html('p', msg, id = 'createdate')
|
p = Html('p', msg, id = 'createdate')
|
||||||
|
|
||||||
# add Generated by? to footer
|
# add Generated by? to footer
|
||||||
@ -1263,7 +1300,7 @@ class WebCalReport(Report):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# Create progress meter bar
|
# Create progress meter bar
|
||||||
self.progress = Utils.ProgressMeter(_("Web Calendar Report"), '')
|
self.progress = ProgressMeter(_("Web Calendar Report"), '')
|
||||||
|
|
||||||
# get data from database for birthdays/ anniversaries
|
# get data from database for birthdays/ anniversaries
|
||||||
self.collect_data(self.start_year)
|
self.collect_data(self.start_year)
|
||||||
@ -1278,6 +1315,7 @@ class WebCalReport(Report):
|
|||||||
self.holidays = {}
|
self.holidays = {}
|
||||||
|
|
||||||
# get the information, zero is equal to None
|
# get the information, zero is equal to None
|
||||||
|
print self.country
|
||||||
if self.country != 0:
|
if self.country != 0:
|
||||||
self.__get_holidays(cal_year)
|
self.__get_holidays(cal_year)
|
||||||
|
|
||||||
@ -1364,6 +1402,15 @@ class WebCalOptions(MenuReportOptions):
|
|||||||
|
|
||||||
self.__update_filters()
|
self.__update_filters()
|
||||||
|
|
||||||
|
# We must figure out the value of the first option before we can
|
||||||
|
# create the EnumeratedListOption
|
||||||
|
fmt_list = _nd.get_name_format()
|
||||||
|
name_format = EnumeratedListOption(_("Name format"), fmt_list[0][0])
|
||||||
|
for num, name, fmt_str, act in fmt_list:
|
||||||
|
name_format.add_item(num, name)
|
||||||
|
name_format.set_help(_("Select the format to display names"))
|
||||||
|
menu.add_option(category_name, "name_format", name_format)
|
||||||
|
|
||||||
ext = EnumeratedListOption(_("File extension"), ".html" )
|
ext = EnumeratedListOption(_("File extension"), ".html" )
|
||||||
for etype in ['.html', '.htm', '.shtml', '.php', '.php3', '.cgi']:
|
for etype in ['.html', '.htm', '.shtml', '.php', '.php3', '.cgi']:
|
||||||
ext.add_item(etype, etype)
|
ext.add_item(etype, etype)
|
||||||
@ -1389,7 +1436,7 @@ class WebCalOptions(MenuReportOptions):
|
|||||||
category_name = _("Content Options")
|
category_name = _("Content Options")
|
||||||
|
|
||||||
# set to today's date for use in menu, etc.
|
# set to today's date for use in menu, etc.
|
||||||
today = gen.lib.date.Today()
|
today = date.Today()
|
||||||
|
|
||||||
self.__multiyear = BooleanOption(_('Create multiple year calendars'), False)
|
self.__multiyear = BooleanOption(_('Create multiple year calendars'), False)
|
||||||
self.__multiyear.set_help(_('Whether to create Multiple year calendars or not.'))
|
self.__multiyear.set_help(_('Whether to create Multiple year calendars or not.'))
|
||||||
@ -1583,6 +1630,11 @@ def mywriter(page, of):
|
|||||||
#
|
#
|
||||||
# ---------------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Support Functions for this plugin
|
||||||
|
#
|
||||||
|
# ---------------------------------------------------------------------------------------
|
||||||
def _get_regular_surname(sex, name):
|
def _get_regular_surname(sex, name):
|
||||||
"""
|
"""
|
||||||
Returns a name string built from the components of the Name instance.
|
Returns a name string built from the components of the Name instance.
|
||||||
@ -1592,48 +1644,12 @@ def _get_regular_surname(sex, name):
|
|||||||
prefix = name.get_surname_prefix()
|
prefix = name.get_surname_prefix()
|
||||||
if prefix:
|
if prefix:
|
||||||
surname = prefix + " " + surname
|
surname = prefix + " " + surname
|
||||||
if sex is not gen.lib.Person.FEMALE:
|
if sex is not Person.FEMALE:
|
||||||
suffix = name.get_suffix()
|
suffix = name.get_suffix()
|
||||||
if suffix:
|
if suffix:
|
||||||
surname = surname + ", " + suffix
|
surname = surname + ", " + suffix
|
||||||
return surname
|
return surname
|
||||||
|
|
||||||
def _get_short_name(person, maiden_name=None):
|
|
||||||
""" Return person's name, unless maiden_name given,
|
|
||||||
unless married_name listed. """
|
|
||||||
# Get all of a person's names:
|
|
||||||
primary_name = person.primary_name
|
|
||||||
sex = person.gender
|
|
||||||
|
|
||||||
call_name = None
|
|
||||||
married_name = None
|
|
||||||
names = [primary_name] + person.get_alternate_names()
|
|
||||||
for name in names:
|
|
||||||
if int(name.get_type()) == gen.lib.NameType.MARRIED:
|
|
||||||
married_name = name
|
|
||||||
|
|
||||||
# Now, decide which to use:
|
|
||||||
if maiden_name:
|
|
||||||
if married_name:
|
|
||||||
first_name, family_name = married_name.get_first_name(), _get_regular_surname(sex, married_name)
|
|
||||||
call_name = married_name.get_call_name()
|
|
||||||
else:
|
|
||||||
first_name, family_name = primary_name.get_first_name(), maiden_name
|
|
||||||
call_name = primary_name.get_call_name()
|
|
||||||
else:
|
|
||||||
first_name, family_name = primary_name.get_first_name(), _get_regular_surname(sex, primary_name)
|
|
||||||
call_name = primary_name.get_call_name()
|
|
||||||
|
|
||||||
# If they have a nickname, use it?
|
|
||||||
if call_name:
|
|
||||||
first_name = call_name.strip()
|
|
||||||
else: # else just get the first name:
|
|
||||||
first_name = first_name.strip()
|
|
||||||
if " " in first_name:
|
|
||||||
# just one split max
|
|
||||||
first_name, rest = first_name.split(" ", 1)
|
|
||||||
return ("%s %s" % (first_name, family_name)).strip()
|
|
||||||
|
|
||||||
# Simple utility list to convert Gramps day-of-week numbering
|
# Simple utility list to convert Gramps day-of-week numbering
|
||||||
# to calendar.firstweekday numbering
|
# to calendar.firstweekday numbering
|
||||||
dow_gramps2iso = [ -1, calendar.SUNDAY, calendar.MONDAY, calendar.TUESDAY,
|
dow_gramps2iso = [ -1, calendar.SUNDAY, calendar.MONDAY, calendar.TUESDAY,
|
||||||
@ -1660,12 +1676,12 @@ def get_marriage_event(db, family):
|
|||||||
marriage_event = False
|
marriage_event = False
|
||||||
for event_ref in family.get_event_ref_list():
|
for event_ref in family.get_event_ref_list():
|
||||||
event = db.get_event_from_handle(event_ref.ref)
|
event = db.get_event_from_handle(event_ref.ref)
|
||||||
if event.type in [gen.lib.EventType.MARRIAGE,
|
if event.type in [EventType.MARRIAGE,
|
||||||
gen.lib.EventType.MARR_ALT]:
|
EventType.MARR_ALT]:
|
||||||
marriage_event = event
|
marriage_event = event
|
||||||
elif event.type in [gen.lib.EventType.DIVORCE,
|
elif event.type in [EventType.DIVORCE,
|
||||||
gen.lib.EventType.ANNULMENT,
|
EventType.ANNULMENT,
|
||||||
gen.lib.EventType.DIV_FILING]:
|
EventType.DIV_FILING]:
|
||||||
marriage_event = False
|
marriage_event = False
|
||||||
return marriage_event
|
return marriage_event
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user