* src/data/somerights20.gif: make a local copy of the Create Commons
image * src/data/Makefile.am: add somerights20.gif * src/plugins/NavWebPage.py: add birth dates to people, use local create commons image, add surname pages svn: r4959
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2005-07-21 Don Allingham <don@gramps-project.org>
|
||||||
|
* src/data/somerights20.gif: make a local copy of the Create Commons
|
||||||
|
image
|
||||||
|
* src/data/Makefile.am: add somerights20.gif
|
||||||
|
* src/plugins/NavWebPage.py: add birth dates to people, use local
|
||||||
|
create commons image, add surname pages
|
||||||
|
|
||||||
2005-07-20 Don Allingham <don@gramps-project.org>
|
2005-07-20 Don Allingham <don@gramps-project.org>
|
||||||
* src/plugins/NavWebPage.py: Add support for multiple directory levels to
|
* src/plugins/NavWebPage.py: Add support for multiple directory levels to
|
||||||
try to keep the number of files per directory under 254 for optimal ext3
|
try to keep the number of files per directory under 254 for optimal ext3
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ pkgdatadir = $(datadir)/@PACKAGE@/data
|
|||||||
|
|
||||||
dist_pkgdata_DATA = \
|
dist_pkgdata_DATA = \
|
||||||
gedcom.xml \
|
gedcom.xml \
|
||||||
|
somerights20.gif \
|
||||||
papersize.xml \
|
papersize.xml \
|
||||||
tips.xml\
|
tips.xml\
|
||||||
main1.css\
|
main1.css\
|
||||||
|
|||||||
BIN
gramps2/src/data/somerights20.gif
Normal file
BIN
gramps2/src/data/somerights20.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -20,7 +20,18 @@
|
|||||||
|
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
"Web Site/Generate Web Site"
|
"""
|
||||||
|
Narrative Web Page generator.
|
||||||
|
"""
|
||||||
|
|
||||||
|
#
|
||||||
|
# TODO:
|
||||||
|
#
|
||||||
|
# 1) Thumbnail creation
|
||||||
|
# 2) Surname/People integration to reduce Individual page size
|
||||||
|
# 3) Templating enhancements
|
||||||
|
# 4) Privacy options
|
||||||
|
#
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@@ -28,6 +39,7 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
import os
|
import os
|
||||||
|
import md5
|
||||||
import time
|
import time
|
||||||
import locale
|
import locale
|
||||||
import shutil
|
import shutil
|
||||||
@@ -98,12 +110,12 @@ _character_sets = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
_cc = [
|
_cc = [
|
||||||
'<a rel="license" href="http://creativecommons.org/licenses/by/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.gif" /></a>',
|
'<a rel="license" href="http://creativecommons.org/licenses/by/2.5/"><img alt="Creative Commons License" border="0" src="#PATH#images/somerights20.gif" /></a>',
|
||||||
'<a rel="license" href="http://creativecommons.org/licenses/by-nd/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.gif" /></a>',
|
'<a rel="license" href="http://creativecommons.org/licenses/by-nd/2.5/"><img alt="Creative Commons License" border="0" src="#PATH#images/somerights20.gif" /></a>',
|
||||||
'<a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.gif" /></a>',
|
'<a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/"><img alt="Creative Commons License" border="0" src="#PATH#images/somerights20.gif" /></a>',
|
||||||
'<a rel="license" href="http://creativecommons.org/licenses/by-nc/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.gif" /></a>',
|
'<a rel="license" href="http://creativecommons.org/licenses/by-nc/2.5/"><img alt="Creative Commons License" border="0" src="#PATH#images/somerights20.gif" /></a>',
|
||||||
'<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.gif" /></a>',
|
'<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/"><img alt="Creative Commons License" border="0" src="#PATH#images/somerights20.gif" /></a>',
|
||||||
'<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.gif" /></a>',
|
'<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/"><img alt="Creative Commons License" border="0" src="#PATH#images/somerights20.gif" /></a>',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -127,7 +139,8 @@ class BasePage:
|
|||||||
self.levels = levels
|
self.levels = levels
|
||||||
|
|
||||||
def copy_media(self,photo):
|
def copy_media(self,photo):
|
||||||
if photo.get_handle() != self.photo_list and photo.get_handle() not in self.photo_list:
|
if (photo.get_handle() != self.photo_list
|
||||||
|
and photo.get_handle() not in self.photo_list):
|
||||||
self.photo_list.append(photo.get_handle())
|
self.photo_list.append(photo.get_handle())
|
||||||
newpath = photo.gramps_id + os.path.splitext(photo.get_path())[1]
|
newpath = photo.gramps_id + os.path.splitext(photo.get_path())[1]
|
||||||
newpath = os.path.join('images',newpath)
|
newpath = os.path.join('images',newpath)
|
||||||
@@ -170,10 +183,12 @@ class BasePage:
|
|||||||
of.close()
|
of.close()
|
||||||
|
|
||||||
def lnkfmt(self,text):
|
def lnkfmt(self,text):
|
||||||
return text.replace(' ','%20')
|
return md5.new(text).hexdigest()
|
||||||
|
|
||||||
def display_footer(self,of):
|
def display_footer(self,of):
|
||||||
|
|
||||||
|
of.write('</div>\n')
|
||||||
|
of.write('<div class="user_footer">\n')
|
||||||
of.write('</div>\n')
|
of.write('</div>\n')
|
||||||
of.write('<div class="footer">\n')
|
of.write('<div class="footer">\n')
|
||||||
if self.copyright == 0:
|
if self.copyright == 0:
|
||||||
@@ -186,13 +201,22 @@ class BasePage:
|
|||||||
of.write('<br>%s\n' % cright)
|
of.write('<br>%s\n' % cright)
|
||||||
elif self.copyright <=6:
|
elif self.copyright <=6:
|
||||||
of.write('<div align="center">')
|
of.write('<div align="center">')
|
||||||
of.write(_cc[self.copyright-1])
|
text = _cc[self.copyright-1]
|
||||||
|
if self.up:
|
||||||
|
if self.levels == 1:
|
||||||
|
text = text.replace('#PATH#','../../')
|
||||||
|
else:
|
||||||
|
text = text.replace('#PATH#','../../../')
|
||||||
|
else:
|
||||||
|
text = text.replace('#PATH#','')
|
||||||
|
of.write(text)
|
||||||
of.write('</div>')
|
of.write('</div>')
|
||||||
of.write('</div><br><br><br><hr>\n')
|
of.write('</div><br><br><br><hr>\n')
|
||||||
of.write('</body>\n')
|
of.write('</body>\n')
|
||||||
of.write('</html>\n')
|
of.write('</html>\n')
|
||||||
|
|
||||||
def display_header(self,of,title,author="",up=False):
|
def display_header(self,of,title,author="",up=False):
|
||||||
|
self.up = up
|
||||||
if up:
|
if up:
|
||||||
if self.levels == 1:
|
if self.levels == 1:
|
||||||
path = "../.."
|
path = "../.."
|
||||||
@@ -242,6 +266,8 @@ class BasePage:
|
|||||||
if self.use_contact:
|
if self.use_contact:
|
||||||
self.show_link(of,'contact',_('Contact'),path)
|
self.show_link(of,'contact',_('Contact'),path)
|
||||||
of.write('</div>\n</div>\n')
|
of.write('</div>\n</div>\n')
|
||||||
|
of.write(' <div class="user_header">\n')
|
||||||
|
of.write(' </div>\n')
|
||||||
of.write(' <div class="content">\n')
|
of.write(' <div class="content">\n')
|
||||||
|
|
||||||
def show_link(self,of,lpath,title,path):
|
def show_link(self,of,lpath,title,path):
|
||||||
@@ -373,6 +399,15 @@ class BasePage:
|
|||||||
of.write(' <span class="grampsid">[%s]</span>' % gid)
|
of.write(' <span class="grampsid">[%s]</span>' % gid)
|
||||||
of.write('</a>')
|
of.write('</a>')
|
||||||
|
|
||||||
|
def surname_link(self,of,name,opt_val=None,up=False):
|
||||||
|
handle = self.lnkfmt(name)
|
||||||
|
dirpath = self.build_path(handle,'srn',up)
|
||||||
|
|
||||||
|
of.write('<a href="%s/%s.%s">%s' % (dirpath,handle,self.ext,name))
|
||||||
|
if opt_val != None:
|
||||||
|
of.write(' (%d)' % opt_val)
|
||||||
|
of.write('</a>')
|
||||||
|
|
||||||
def media_ref_link(self,of,handle,name,up=False):
|
def media_ref_link(self,of,handle,name,up=False):
|
||||||
dirpath = self.build_path(handle,'img',up)
|
dirpath = self.build_path(handle,'img',up)
|
||||||
of.write('<a href="%s/%s.%s">%s</a>' % (
|
of.write('<a href="%s/%s.%s">%s</a>' % (
|
||||||
@@ -430,7 +465,7 @@ class IndividualListPage(BasePage):
|
|||||||
get_researcher().get_name())
|
get_researcher().get_name())
|
||||||
|
|
||||||
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, sorted by their last names. Selecting person's name "
|
"database, sorted by their last names. Selecting the person's name "
|
||||||
"will take you to that person's individual page.")
|
"will take you to that person's individual page.")
|
||||||
|
|
||||||
of.write('<h3>%s</h3>\n' % _('Individuals'))
|
of.write('<h3>%s</h3>\n' % _('Individuals'))
|
||||||
@@ -440,10 +475,9 @@ class IndividualListPage(BasePage):
|
|||||||
of.write('cellpadding="0" border="0">\n')
|
of.write('cellpadding="0" border="0">\n')
|
||||||
of.write('<tr><td class="field"><u><b>%s</b></u></td>\n' % _('Surname'))
|
of.write('<tr><td class="field"><u><b>%s</b></u></td>\n' % _('Surname'))
|
||||||
of.write('<td class="field"><u><b>%s</b></u></td>\n' % _('Name'))
|
of.write('<td class="field"><u><b>%s</b></u></td>\n' % _('Name'))
|
||||||
|
of.write('<td class="field"><u><b>%s</b></u></td>\n' % _('Birth date'))
|
||||||
of.write('</tr>\n')
|
of.write('</tr>\n')
|
||||||
|
|
||||||
flist = sets.Set(person_handle_list)
|
|
||||||
|
|
||||||
person_handle_list = sort_people(db,person_handle_list)
|
person_handle_list = sort_people(db,person_handle_list)
|
||||||
|
|
||||||
for (surname,handle_list) in person_handle_list:
|
for (surname,handle_list) in person_handle_list:
|
||||||
@@ -460,6 +494,11 @@ class IndividualListPage(BasePage):
|
|||||||
self.person_link(of,person.handle,
|
self.person_link(of,person.handle,
|
||||||
person.get_primary_name().get_first_name(),
|
person.get_primary_name().get_first_name(),
|
||||||
person.gramps_id)
|
person.gramps_id)
|
||||||
|
of.write('</td><td class="field">')
|
||||||
|
birth_handle = person.get_birth_handle()
|
||||||
|
if birth_handle:
|
||||||
|
birth = db.get_event_from_handle(birth_handle)
|
||||||
|
of.write(birth.get_date())
|
||||||
of.write('</td></tr>\n')
|
of.write('</td></tr>\n')
|
||||||
first = False
|
first = False
|
||||||
|
|
||||||
@@ -467,6 +506,49 @@ class IndividualListPage(BasePage):
|
|||||||
self.display_footer(of)
|
self.display_footer(of)
|
||||||
self.close_file(of)
|
self.close_file(of)
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
class SurnamePage(BasePage):
|
||||||
|
|
||||||
|
def __init__(self, db, title, person_handle_list, options, archive,
|
||||||
|
media_list, levels):
|
||||||
|
BasePage.__init__(self, title, options, archive, media_list, levels)
|
||||||
|
|
||||||
|
of = self.create_link_file(md5.new(title).hexdigest(),'srn')
|
||||||
|
self.display_header(of,title,get_researcher().get_name(),True)
|
||||||
|
|
||||||
|
msg = _("This page contains an index of all the individuals in the "
|
||||||
|
"database with the surname of %s. Selecting the person's name "
|
||||||
|
"will take you to that person's individual page.") % title
|
||||||
|
|
||||||
|
of.write('<h3>%s</h3>\n' % title)
|
||||||
|
of.write('<p>%s</p>\n' % msg)
|
||||||
|
of.write('<blockquote>\n')
|
||||||
|
of.write('<table class="infolist" cellspacing="0" ')
|
||||||
|
of.write('cellpadding="0" border="0">\n')
|
||||||
|
of.write('<tr><td class="field"><u><b>%s</b></u></td>\n' % _('Name'))
|
||||||
|
of.write('<td class="field"><u><b>%s</b></u></td>\n' % _('Birth date'))
|
||||||
|
of.write('</tr>\n')
|
||||||
|
|
||||||
|
for person_handle in person_handle_list:
|
||||||
|
person = db.get_person_from_handle(person_handle)
|
||||||
|
of.write('<tr><td class="category">')
|
||||||
|
self.person_link(of,person.handle,
|
||||||
|
person.get_primary_name().get_first_name(),
|
||||||
|
person.gramps_id,up=True)
|
||||||
|
of.write('</td><td class="field">')
|
||||||
|
birth_handle = person.get_birth_handle()
|
||||||
|
if birth_handle:
|
||||||
|
birth = db.get_event_from_handle(birth_handle)
|
||||||
|
of.write(birth.get_date())
|
||||||
|
of.write('</td></tr>\n')
|
||||||
|
of.write('</table>\n</blockquote>\n')
|
||||||
|
self.display_footer(of)
|
||||||
|
self.close_file(of)
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@@ -690,6 +772,8 @@ class SurnameListPage(BasePage):
|
|||||||
of.write('<b>%s</b></u></td>\n' % _('Letter'))
|
of.write('<b>%s</b></u></td>\n' % _('Letter'))
|
||||||
of.write('<td class="field"><u>')
|
of.write('<td class="field"><u>')
|
||||||
of.write('<b>%s</b></u></td>\n' % _('Surname'))
|
of.write('<b>%s</b></u></td>\n' % _('Surname'))
|
||||||
|
of.write('<td class="field"><u>')
|
||||||
|
of.write('<b>%s</b></u></td>\n' % _('Number of people'))
|
||||||
of.write('</tr>\n')
|
of.write('</tr>\n')
|
||||||
|
|
||||||
person_handle_list = sort_people(db,person_handle_list)
|
person_handle_list = sort_people(db,person_handle_list)
|
||||||
@@ -704,16 +788,15 @@ class SurnameListPage(BasePage):
|
|||||||
last_letter = surname[0]
|
last_letter = surname[0]
|
||||||
of.write('<tr><td class="category">%s</td>' % last_letter)
|
of.write('<tr><td class="category">%s</td>' % last_letter)
|
||||||
of.write('<td class="data">')
|
of.write('<td class="data">')
|
||||||
of.write('<a href="individuals.%s#%s">' % (self.ext,self.lnkfmt(surname)))
|
self.surname_link(of,surname)
|
||||||
of.write("%s (%d)" % (surname,len(data_list)))
|
of.write('</td>')
|
||||||
of.write('</a></td></tr>')
|
|
||||||
elif surname != last_surname:
|
elif surname != last_surname:
|
||||||
of.write('<tr><td class="category"> </td>')
|
of.write('<tr><td class="category"> </td>')
|
||||||
of.write('<td class="data">')
|
of.write('<td class="data">')
|
||||||
of.write('<a href="individuals.%s#%s">' % (self.ext,self.lnkfmt(surname)))
|
self.surname_link(of,surname)
|
||||||
of.write("%s (%d)" % (surname,len(data_list)))
|
of.write('</td>')
|
||||||
of.write('</a></td></tr>')
|
|
||||||
last_surname = surname
|
last_surname = surname
|
||||||
|
of.write('<td class="field">%d</td></tr>' % len(data_list))
|
||||||
|
|
||||||
of.write('</table>\n</blockquote>\n')
|
of.write('</table>\n</blockquote>\n')
|
||||||
self.display_footer(of)
|
self.display_footer(of)
|
||||||
@@ -789,7 +872,7 @@ class HomePage(BasePage):
|
|||||||
mime_type = obj.get_mime_type()
|
mime_type = obj.get_mime_type()
|
||||||
if mime_type and mime_type.startswith("image"):
|
if mime_type and mime_type.startswith("image"):
|
||||||
try:
|
try:
|
||||||
newpath = self.copy_media(obj)
|
newpath = self.copy_media_add(obj)
|
||||||
of.write('<div align="center">\n')
|
of.write('<div align="center">\n')
|
||||||
of.write('<img border="0" ')
|
of.write('<img border="0" ')
|
||||||
of.write('src="%s" alt="%s" />' % (newpath, obj.get_description()))
|
of.write('src="%s" alt="%s" />' % (newpath, obj.get_description()))
|
||||||
@@ -1604,6 +1687,10 @@ class WebReport(Report.Report):
|
|||||||
archive = None
|
archive = None
|
||||||
|
|
||||||
self.write_css(archive,self.target_path,self.css)
|
self.write_css(archive,self.target_path,self.css)
|
||||||
|
if 1 < self.copyright < 7:
|
||||||
|
from_path = os.path.join(const.dataDir,"somerights20.gif")
|
||||||
|
to_path = os.path.join("images","somerights20.gif")
|
||||||
|
self.store_file(archive,self.target_path,from_path,to_path)
|
||||||
|
|
||||||
photo_list = []
|
photo_list = []
|
||||||
|
|
||||||
@@ -1652,6 +1739,11 @@ class WebReport(Report.Report):
|
|||||||
while gtk.events_pending():
|
while gtk.events_pending():
|
||||||
gtk.main_iteration()
|
gtk.main_iteration()
|
||||||
|
|
||||||
|
local_list = sort_people(self.database,ind_list)
|
||||||
|
for (surname,handle_list) in local_list:
|
||||||
|
SurnamePage(self.database, surname, handle_list, self.options_class,
|
||||||
|
archive, photo_list, levels)
|
||||||
|
|
||||||
PlaceListPage(self.database, self.title, place_list,
|
PlaceListPage(self.database, self.title, place_list,
|
||||||
source_list,self.options_class, archive,
|
source_list,self.options_class, archive,
|
||||||
photo_list, levels)
|
photo_list, levels)
|
||||||
@@ -1697,6 +1789,14 @@ class WebReport(Report.Report):
|
|||||||
shutil.copyfile(os.path.join(const.dataDir,css_file),
|
shutil.copyfile(os.path.join(const.dataDir,css_file),
|
||||||
os.path.join(html_dir,_NARRATIVE))
|
os.path.join(html_dir,_NARRATIVE))
|
||||||
|
|
||||||
|
def store_file(self,archive,html_dir,from_path,to_path):
|
||||||
|
if archive:
|
||||||
|
imagefile = open(from_path,"r")
|
||||||
|
archive.add_file(to_path,time.time(),imagefile)
|
||||||
|
imagefile.close()
|
||||||
|
else:
|
||||||
|
shutil.copyfile(from_path,os.path.join(html_dir,to_path))
|
||||||
|
|
||||||
def add_styles(self,doc):
|
def add_styles(self,doc):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user