Fix the navigation links in WebCal

* src/plugins/WebCal.py


svn: r10949
This commit is contained in:
Kees Bakker 2008-07-31 20:42:05 +00:00
parent 126b06ef81
commit 5292cd0ed9

View File

@ -376,37 +376,42 @@ class WebCalReport(Report):
# Check to see if home_link will be used??? # Check to see if home_link will be used???
navs = [ navs = [
(self.home_link,_('Home'), self.home_link), (self.home_link, _('Home'), self.home_link),
('January', _('Jan'), True), (1, _('Jan'), True),
('February', _('Feb'), True), (2, _('Feb'), True),
('March', _('Mar'), True), (3, _('Mar'), True),
('April', _('Apr'), True), (4, _('Apr'), True),
('May', _('May'), True), (5, _('May'), True),
('June', _('Jun'), True), (6, _('Jun'), True),
('July', _('Jul'), True), (7, _('Jul'), True),
('August', _('Aug'), True), (8, _('Aug'), True),
('September', _('Sep'), True), (9, _('Sep'), True),
('October', _('Oct'), True), (10, _('Oct'), True),
('November', _('Nov'), True), (11, _('Nov'), True),
('December', _('Dec'), True), (12, _('Dec'), True),
('fullyear', _('Year Glance'), self.fullyear), ('fullyear', _('Year Glance'), self.fullyear),
('blankyear', _('Blank Calendar'), self.blankyear) ('blankyear', _('Blank Calendar'), self.blankyear)
] ]
for url_fname, nav_text, cond in navs: for url_fname, nav_text, cond in navs:
if cond: if cond:
# Figure out if we need <li id="CurrentSection"> or just plain <li>
cs = ''
if url_fname == currentsection:
cs = ' id="CurrentSection"'
if type(url_fname) == int:
url_fname = GrampsLocale.long_months[url_fname]
new_dir = str(self.year) new_dir = str(self.year)
url = _('unknown')
if ((cal == "yg") or (cal == "by")): if ((cal == "yg") or (cal == "by")):
url = _subdirs("yg", new_dir, url_fname) url = _subdirs("yg", new_dir, url_fname)
elif cal == "ip": elif cal == "ip":
url = _subdirs("ip", new_dir, url_fname) url = _subdirs("ip", new_dir, url_fname)
else: else:
url = _subdirs("wc", new_dir, url_fname) url = _subdirs("wc", new_dir, url_fname)
url += self.ext
# Figure out if we need <li id="CurrentSection"> or just plain <li> if not _has_webpage_extension(url):
cs = '' url += self.ext
if nav_text == currentsection:
cs = ' id="CurrentSection"'
of.write(' <li%s><a href="%s">%s</a></li>\n' % (cs, url, nav_text)) of.write(' <li%s><a href="%s">%s</a></li>\n' % (cs, url, nav_text))
@ -624,7 +629,7 @@ class WebCalReport(Report):
value = _dd.display(value) value = _dd.display(value)
msg = _('Generated by <a href="http://gramps-project.org" target="_blank">' msg = _('Generated by <a href="http://gramps-project.org" target="_blank">'
'GRAMPS</a> on %(date)s') % { 'date' : value } 'GRAMPS</a> on %(date)s') % {'date' : value}
author = get_researcher().get_name() author = get_researcher().get_name()
if author: if author:
@ -659,9 +664,19 @@ class WebCalReport(Report):
of.write('</body>\n') of.write('</body>\n')
of.write('</html>\n') of.write('</html>\n')
def create_file(self, name): def create_file(self, fname, subdir=None):
page_name = os.path.join(self.html_dir, name) """
of = codecs.EncodedFile(open(page_name, "w"), 'utf-8', self.encoding, 'xmlcharrefreplace') Create a file in the html_dir tree.
If the directory does not exist, create it.
"""
if subdir:
subdir = os.path.join(self.html_dir, subdir)
else:
subdir = self.html_dir
if not os.path.isdir(subdir):
os.makedirs(subdir)
fname = os.path.join(subdir, fname)
of = codecs.EncodedFile(open(fname, "w"), 'utf-8', self.encoding, 'xmlcharrefreplace')
return of return of
def close_file(self, of): def close_file(self, of):
@ -673,23 +688,19 @@ class WebCalReport(Report):
'dat_list' - lines of text to display at this day 'dat_list' - lines of text to display at this day
""" """
# TODO. Cleanup the "/" for URLs versus file names.
year = self.year year = self.year
dest_dir = self.html_dir + "/images"
arrow = os.path.join(dest_dir, "arrow102.gif")
# Create names for long and short month names # Create names for long and short month names, in LOcale
lng_month = GrampsLocale.long_months[month] lng_month = GrampsLocale.long_months[month]
shrt_month = GrampsLocale.short_months[month] shrt_month = GrampsLocale.short_months[month]
new_dir = self.html_dir + "/%d/%s" % (year, lng_month)
if not os.path.isdir(new_dir):
os.mkdir(new_dir)
# Name the file, and create it # Name the file, and create it
cal_file = '%d/%s/%s%d%s' % (year, lng_month, shrt_month, day_num, self.ext) # TODO. Do we want locale month name here?
of = self.create_file(cal_file) cal_fname = '%s%d%s' % (shrt_month, day_num, self.ext)
cal_fname = os.path.join(lng_month, cal_fname)
of = self.create_file(cal_fname, "%d" % year)
arrow = os.path.join(self.html_dir, "images", "arrow102.gif")
mystyle = """ mystyle = """
<style type="text/css"> <style type="text/css">
<!-- <!--
@ -717,12 +728,14 @@ class WebCalReport(Report):
author = self.write_header(of, title, "ip", mystyle) author = self.write_header(of, title, "ip", mystyle)
of.write('<body id="events-%s%d">\n' % (shrt_month, day_num)) of.write('<body id="events-%s%d">\n' % (shrt_month, day_num))
of.write(' <div id="header">\n') of.write(' <div id="header">\n')
if author: if author:
of.write(' <div id="GRAMPSinfo">\n') of.write(' <div id="GRAMPSinfo">\n')
msg = 'Created for %s' % author msg = _('Created for %(author)s') % {'author' : author}
of.write(' %s</div>\n' % msg) of.write(' %s</div>\n' % msg)
of.write(' <h1 id="SiteTitle">A Peak into One Day</h1>\n') msg = _('A Peak into One Day')
of.write(' <h1 id="SiteTitle">%s</h1>\n' % msg)
of.write(' </div>\n') of.write(' </div>\n')
# Create navigation menu # Create navigation menu
@ -733,8 +746,7 @@ class WebCalReport(Report):
of.write(' <li>') of.write(' <li>')
of.write('<a href="%s">HOME</a></li>\n' % self.home_link) of.write('<a href="%s">HOME</a></li>\n' % self.home_link)
title = GrampsLocale.short_months[month] self.display_nav_links(of, None, "ip")
self.display_nav_links(of, title, "ip")
of.write(' </ul>\n') of.write(' </ul>\n')
of.write(' </div>\n') of.write(' </div>\n')
@ -782,14 +794,10 @@ class WebCalReport(Report):
""" """
year = self.year year = self.year
# if year dir doesn't exist, create it
new_dir = self.html_dir + "/%d" % year
if not os.path.isdir(new_dir):
os.mkdir(new_dir)
# Name the file, and create it # Name the file, and create it
cal_file = '%d/blankyear%s' % (year, self.ext) cal_fname = 'blankyear%s' % self.ext
of = self.create_file(cal_file) of = self.create_file(cal_fname, "%d" % year)
# Add specific styles for "Printable Full-Year Calendar" page # Add specific styles for "Printable Full-Year Calendar" page
mystyle = """ mystyle = """
@ -819,7 +827,7 @@ class WebCalReport(Report):
of.write(' <div id="header">\n') of.write(' <div id="header">\n')
if author: if author:
of.write(' <div id="GRAMPSinfo">\n') of.write(' <div id="GRAMPSinfo">\n')
msg = 'Created for %s' % author msg = _('Created for %(author)s') % {'author' : author}
of.write(' %s</div>\n' % msg) of.write(' %s</div>\n' % msg)
of.write(' <h1 id="SiteTitle">%d</h1>\n' % year) of.write(' <h1 id="SiteTitle">%d</h1>\n' % year)
of.write(' </div>\n') of.write(' </div>\n')
@ -832,7 +840,7 @@ class WebCalReport(Report):
of.write(' <li>') of.write(' <li>')
of.write('<a href="%s">HOME</a></li>\n' % self.home_link) of.write('<a href="%s">HOME</a></li>\n' % self.home_link)
self.display_nav_links(of, 'Blank Calendar', "by") self.display_nav_links(of, 'blankyear', "by")
of.write(' </ul>\n') of.write(' </ul>\n')
of.write(' </div>\n') of.write(' </div>\n')
@ -860,14 +868,10 @@ class WebCalReport(Report):
""" """
year = self.year year = self.year
# if year dir doesn't exist, create it
new_dir = self.html_dir + "/%d/" % year
if not os.path.isdir(new_dir):
os.mkdir(new_dir)
# Name the file, and create it # Name the file, and create it
cal_file = '%d/fullyear%s' % (year, self.ext) cal_fname = 'fullyear%s' % (self.ext)
of = self.create_file(cal_file) of = self.create_file(cal_fname, "%d" % year)
# Add specific styles for "Year At A Glance" page # Add specific styles for "Year At A Glance" page
mystyle = """ mystyle = """
@ -917,9 +921,9 @@ class WebCalReport(Report):
of.write(' <div id="header">\n') of.write(' <div id="header">\n')
if author: if author:
of.write(' <div id="GRAMPSinfo">\n') of.write(' <div id="GRAMPSinfo">\n')
msg = 'Created for %s' % author msg = _('Created for %(author)s') % {'author' : author}
of.write(' %s</div>\n' % msg) of.write(' %s</div>\n' % msg)
of.write(' <h1 id="SiteTitle">%s\n' % title) of.write(' <h1 id="SiteTitle">%s</h1>\n' % title)
of.write(' </div>\n') of.write(' </div>\n')
# Create navigation menu # Create navigation menu
@ -930,15 +934,15 @@ class WebCalReport(Report):
of.write(' <li>') of.write(' <li>')
of.write('<a href="%s">HOME</a></li>\n' % self.home_link) of.write('<a href="%s">HOME</a></li>\n' % self.home_link)
self.display_nav_links(of, 'Year Glance', "yg") self.display_nav_links(of, 'fullyear', "yg")
of.write(' </ul>\n') of.write(' </ul>\n')
of.write(' </div>\n') # End Navigation Menu of.write(' </div>\n') # End Navigation Menu
of.write(' <p id="description">\n') of.write(' <p id="description">\n')
of.write(' This calendar is meant to give you access to all your data at a glance ' of.write(_(' This calendar is meant to give you access to all your data at a glance '
'compressed into one page. Clicking on a <b>red square</b> will take you to a ' 'compressed into one page. Clicking on a <b>red square</b> will take you to a '
'page that shows all the events for that date!\n') 'page that shows all the events for that date!\n'))
of.write(' </p>\n\n') of.write(' </p>\n\n')
# Create progress bar for it # Create progress bar for it
@ -1027,14 +1031,11 @@ class WebCalReport(Report):
""" """
year = self.year year = self.year
# if year dir doesn't exist, create it
new_dir = self.html_dir + "/%d" % year
if not os.path.isdir(new_dir):
os.mkdir(new_dir)
# Name the file, and create it # Name the file, and create it
cal_file = "%d/%s%s" % (year, GrampsLocale.long_months[month], self.ext) # TODO. Do we want locale month name here?
of = self.create_file(cal_file) cal_fname = "%s%s" % (GrampsLocale.long_months[month], self.ext)
of = self.create_file(cal_fname, "%d" % year)
# Add specific styles to calendar head # Add specific styles to calendar head
mystyle = """ mystyle = """
@ -1058,7 +1059,7 @@ class WebCalReport(Report):
of.write(' <div id="header">\n') of.write(' <div id="header">\n')
if author: if author:
of.write(' <div id="GRAMPSinfo">\n') of.write(' <div id="GRAMPSinfo">\n')
msg = 'Created for %s' % author msg = _('Created for %(author)s') % {'author' : author}
of.write(' %s</div>\n' % msg) of.write(' %s</div>\n' % msg)
of.write(' <h1 id="SiteTitle">%s</h1>\n' % self.title_text) of.write(' <h1 id="SiteTitle">%s</h1>\n' % self.title_text)
of.write(' <h1>%d</h1>\n' % year) of.write(' <h1>%d</h1>\n' % year)
@ -1072,8 +1073,7 @@ class WebCalReport(Report):
of.write(' <li>') of.write(' <li>')
of.write('<a href="%s">HOME</a></li>\n' % self.home_link) of.write('<a href="%s">HOME</a></li>\n' % self.home_link)
highlight = GrampsLocale.short_months[month] self.display_nav_links(of, month, "wc")
self.display_nav_links(of, highlight, "wc")
of.write(' </ul>\n\n') of.write(' </ul>\n\n')
of.write(' </div>\n') # End Navigation Menu of.write(' </div>\n') # End Navigation Menu
@ -1142,9 +1142,9 @@ class WebCalReport(Report):
text = "" text = ""
elif age == 1: # person is 1, and therefore display it correctly elif age == 1: # person is 1, and therefore display it correctly
# TODO. Make this translatable # TODO. Make this translatable
text = '%s, <em>%d</em> year old' % (short_name, age) text = _('%(short_name)s, <em>%(age)d</em> year old') % {'short_name' : short_name, 'age' : age}
else: else:
text = '%s, <em>%d</em> years old' % (short_name, age) text = _('%(short_name)s, <em>%(age)d</em> years old') % {'short_name' : short_name, 'age' : age}
self.add_day_item(text, year, month, day) self.add_day_item(text, year, month, day)
if self.anniv and ((self.alive and living) or not self.alive): if self.anniv and ((self.alive and living) or not self.alive):
@ -1727,6 +1727,12 @@ def _get_short_name(person, maiden_name = None):
return ("%s %s" % (first_name, family_name)).strip() return ("%s %s" % (first_name, family_name)).strip()
def _has_webpage_extension(fname):
for ext in ('.html', '.htm' '.shtml', '.cgi', '.php', '.php3'):
if fname.endswith(ext):
return True
return False
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# #