From d6ca13254c407d61b01c7d2dc4d5fe16551b1b82 Mon Sep 17 00:00:00 2001 From: "Rob G. Healey" Date: Mon, 13 Sep 2010 04:55:47 +0000 Subject: [PATCH] NarrativeWeb: Feature Request: #4232 -- Repository is now hyperlinked to its source. svn: r15885 --- src/plugins/webreport/NarrativeWeb.py | 158 +++++++++++------- src/plugins/webstuff/css/Web_Basic-Blue.css | 16 +- .../css/Web_Navigation-Horizontal.css | 4 +- 3 files changed, 116 insertions(+), 62 deletions(-) diff --git a/src/plugins/webreport/NarrativeWeb.py b/src/plugins/webreport/NarrativeWeb.py index 426d97eee..6aa30fa0c 100644 --- a/src/plugins/webreport/NarrativeWeb.py +++ b/src/plugins/webreport/NarrativeWeb.py @@ -1884,16 +1884,28 @@ class BasePage(object): # return thumbnail division to its callers return thumbnail - def repository_link(self, handle, name, cindex, gid = None, up = False): + def repository_link(self, handle, name, repo_yes, gid = None, up = False): + """ + returns a hyperlink for repository links + @param: handle -- repository handle + @param: name -- repository title + @param: gid -- gramps id + @param: up -- whether to add backward reference + """ + + name = html_escape( name ) + + # build local page url url = self.report.build_url_fname_html(handle, 'repo', up) + # begin hyperlink - hyper = Html("a", html_escape(name), href = url, title = name) + hyper = Html("a", name, href = url, title = name) if not self.noid and gid: hyper += Html("span", '[%s]' % gid, class_ = "grampsid", inline = True) # return hyperlink to its callers - return hyper + return hyper if repo_yes else name def place_link(self, handle, name, gid = None, up = False): @@ -3474,72 +3486,97 @@ class SourcePage(BasePage): db = report.database source = db.get_source_from_handle(handle) - if source is not None: - BasePage.__init__(self, report, title, source.gramps_id) + if not source: + return - of = self.report.create_file(source.get_handle(), "src") - self.up = True - sourcepage, head, body = self.write_header(_('Sources')) + BasePage.__init__(self, report, title, source.gramps_id) + inc_repos = self.report.options["inc_repository"] - # begin source detail division - with Html("div", class_ = "content", id = "SourceDetail") as section: - body += section + of = self.report.create_file(source.get_handle(), "src") + self.up = True + sourcepage, head, body = self.write_header(_('Sources')) - media_list = source.get_media_list() - thumbnail = self.display_first_image_as_thumbnail(media_list, source) - if thumbnail is not None: - section += thumbnail + # begin source detail division + with Html("div", class_ = "content", id = "SourceDetail") as srcdetail: + body += srcdetail - # add section title - section += Html("h3", html_escape(source.get_title()), inline = True) + media_list = source.get_media_list() + thumbnail = self.display_first_image_as_thumbnail(media_list, source) + if thumbnail is not None: + srcdetail += thumbnail - # begin sources table - with Html("table", class_ = "infolist source") as table: - section += table + # add section title + srcdetail += Html("h3", html_escape(source.get_title()), inline = True) - tbody = Html("tbody") - table += tbody + # begin sources table + with Html("table", class_ = "infolist source") as table: + srcdetail += table - grampsid = None - if not self.noid and self.gid: - grampsid = self.gid + tbody = Html("tbody") + table += tbody - for (label, val) in [ - (GRAMPSID, grampsid), - (_("Author"), source.author), - (_("Publication information"), source.pubinfo), - (_("Abbreviation"), source.abbrev) ]: + grampsid = None + if not self.noid and self.gid: + grampsid = self.gid - if val: - trow = Html("tr") + ( - Html("td", label, class_ = "ColumnAttribute"), - Html("td", val, class_ = "ColumnValue") - ) - tbody += trow + for (label, val) in [ + (GRAMPSID, grampsid), + (_("Author"), source.author), + (_("Publication information"), source.pubinfo), + (_("Abbreviation"), source.abbrev) ]: - # additional media - sourcemedia = self.display_additional_images_as_gallery(media_list, source) - if sourcemedia is not None: - section += sourcemedia + if val: + trow = Html("tr") + ( + Html("td", label, class_ = "ColumnAttribute", inline = True), + Html("td", val, class_ = "ColumnValue", inline = True) + ) + tbody += trow - # additional notes - notelist = self.display_note_list( source.get_note_list() ) - if notelist is not None: - section += notelist + # additional media + sourcemedia = self.display_additional_images_as_gallery(media_list, source) + if sourcemedia is not None: + srcdetail += sourcemedia - # references - references = self.display_references(src_list[source.handle]) - if references is not None: - section += references + # additional notes + notelist = self.display_note_list( source.get_note_list() ) + if notelist is not None: + srcdetail += notelist - # add clearline for proper styling - # add footer section - footer = self.write_footer() - body += (fullclear, footer) + # source repository list + repo_ref_list = source.get_reporef_list() + if repo_ref_list: + with Html("div", id = "subsection", class_ = "Repositories") as reposection: + srcdetail += reposection + reposection += Html("h4", _("Repositories"), inline = True) - # send page out for processing - # and close the file - self.XHTMLWriter(sourcepage, of) + with Html("table", class_ = "infolist repolist") as table: + reposection += table + + unordered = Html("ul") + table += unordered + + for repo_ref in repo_ref_list: + repository = db.get_repository_from_handle( repo_ref.ref ) + list = Html("li", self.repository_link( repository.handle, + repository.name, + inc_repos, + repository.gramps_id, + up = True ) ) + unordered += list + + # references + references = self.display_references(src_list[source.handle]) + if references is not None: + srcdetail += references + + # add clearline for proper styling + # add footer section + footer = self.write_footer() + body += (fullclear, footer) + + # send page out for processing + # and close the file + self.XHTMLWriter(sourcepage, of) class MediaListPage(BasePage): @@ -5218,8 +5255,10 @@ class RepositoryListPage(BasePage): """ def __init__(self, report, title, repos_dict, keys): + BasePage.__init__(self, report, title) db = report.database + inc_repos = self.report.options["inc_repository"] of = self.report.create_file("repositories") repolistpage, head, body = self.write_header(_("Repositories")) @@ -5266,10 +5305,13 @@ class RepositoryListPage(BasePage): # repository name and hyperlink if repo.name: - trow += Html("td", self.repository_link(handle, repo.name, repo.gramps_id), - class_ = "ColumnName") + trow += Html("td", self.repository_link( handle, + repo.name, + inc_repos, + repo.gramps_id ), + class_ = "ColumnName") else: - trow += Html("td", " ", class_ = "ColumnName") + trow += Html("td", "[ untitled ]", class_ = "ColumnName") # add clearline for proper styling # add footer section diff --git a/src/plugins/webstuff/css/Web_Basic-Blue.css b/src/plugins/webstuff/css/Web_Basic-Blue.css index c3d9f841e..5a69adcdd 100644 --- a/src/plugins/webstuff/css/Web_Basic-Blue.css +++ b/src/plugins/webstuff/css/Web_Basic-Blue.css @@ -116,7 +116,7 @@ img { background-color: #FFF; color: #000; overflow: auto; - width: 1060px; + width: 100%; margin: 0 auto; } .content div.snapshot { @@ -846,8 +846,14 @@ div#Sources table.infolist tbody tr td.ColumnName a { font-size:.9em; padding:.1em 10px .3em 10px; } +div#SourceDetail table.source tbody tr td.ColumnAttribute { + width: 40%; +} +div#SourceDetail table.source tbody td td.ColumnValue { + width: 40%; +} div#SourceDetail div#references ol li { - padding-bottom:.5em; + padding-bottom: .5em; } @@ -869,6 +875,12 @@ div#RepositoryList table.repolist tbody tr td.ColumnType { div#RepositoryList table.repolist tbody tr td.ColumnName { width: 80%; } +div#RepositoryDetail table.repolist tbody tr td.ColumnAttribute { + width: 40%; +} +div#RepositoryDetail table.repolist tbody tr td.ColumnValue { + width: 40%; +} /* Address Book ------------------------------------------------------ */ diff --git a/src/plugins/webstuff/css/Web_Navigation-Horizontal.css b/src/plugins/webstuff/css/Web_Navigation-Horizontal.css index b824d0dfd..0a847790e 100755 --- a/src/plugins/webstuff/css/Web_Navigation-Horizontal.css +++ b/src/plugins/webstuff/css/Web_Navigation-Horizontal.css @@ -31,8 +31,8 @@ Style Name: Web_Navigation-Horizontal.css ----------------------------------------------------- */ body { margin: 0 auto; - padding: 0px 4px 0px 4px; - width: 1060px; + padding: 5px 2px 5px 2px; + width: 965px; } /* Navigation