[gnome-doc-utils] [mal2html] Implement previous and next links for Mallard documents
- From: Shaun McCance <shaunm src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-doc-utils] [mal2html] Implement previous and next links for Mallard documents
- Date: Wed, 6 Jan 2010 21:16:29 +0000 (UTC)
commit 9d70b0898cbb88e58bbcb87df162c2a0721bd2b3
Author: Shaun McCance <shaunm gnome org>
Date: Wed Jan 6 15:16:07 2010 -0600
[mal2html] Implement previous and next links for Mallard documents
xslt/gettext/l10n.xml.in | 10 ++++++++
xslt/mallard/common/mal-link.xsl | 3 ++
xslt/mallard/html/mal2html-css.xsl | 18 ++++++++++++++
xslt/mallard/html/mal2html-page.xsl | 43 ++++++++++++++++++++++++++++++++++-
4 files changed, 73 insertions(+), 1 deletions(-)
---
diff --git a/xslt/gettext/l10n.xml.in b/xslt/gettext/l10n.xml.in
index 6076c9a..26a7dbc 100644
--- a/xslt/gettext/l10n.xml.in
+++ b/xslt/gettext/l10n.xml.in
@@ -203,6 +203,11 @@
<_msg>Name</_msg>
</msgset>
<msgset>
+ <msgid>Next</msgid>
+ <!-- Used as link to the next page in a series. -->
+ <_msg>Next</_msg>
+</msgset>
+<msgset>
<msgid>Note</msgid>
<!--
http://www.docbook.org/tdg/en/html/note.html
@@ -240,6 +245,11 @@
<_msg>Preface</_msg>
</msgset>
<msgset>
+ <msgid>Previous</msgid>
+ <!-- Used as link to the previous page in a series. -->
+ <_msg>Previous</_msg>
+</msgset>
+<msgset>
<msgid>Publisher</msgid>
<!-- Used as a header before a list of publishers. -->
<_msg>
diff --git a/xslt/mallard/common/mal-link.xsl b/xslt/mallard/common/mal-link.xsl
index ab4974d..2f8fb95 100644
--- a/xslt/mallard/common/mal-link.xsl
+++ b/xslt/mallard/common/mal-link.xsl
@@ -66,6 +66,9 @@ it to a file. Those tools can use this parameter directly.
mal.cache.key
-->
<xsl:key name="mal.cache.key" match="mal:page | mal:section" use="@id"/>
+<xsl:key name="mal.cache.link.key"
+ match="mal:info/mal:link[ type]"
+ use="concat(@type, ':', @xref)"/>
<!--@@==========================================================================
diff --git a/xslt/mallard/html/mal2html-css.xsl b/xslt/mallard/html/mal2html-css.xsl
index 4179f1d..f1e016d 100644
--- a/xslt/mallard/html/mal2html-css.xsl
+++ b/xslt/mallard/html/mal2html-css.xsl
@@ -138,6 +138,24 @@ div.body {
background-color: </xsl:text>
<xsl:value-of select="$theme.color.background"/><xsl:text>;
}
+div.navbar {
+ margin: 0;
+ float: right;
+}
+a.navbar-prev::before {
+ content: '</xsl:text><xsl:choose>
+ <xsl:when test="$left = 'left'"><xsl:text>◀  </xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>▶  </xsl:text></xsl:otherwise>
+ </xsl:choose><xsl:text>';
+ color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>;
+}
+a.navbar-next::after {
+ content: '</xsl:text><xsl:choose>
+ <xsl:when test="$left = 'left'"><xsl:text>  ▶</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>  ◀</xsl:text></xsl:otherwise>
+ </xsl:choose><xsl:text>';
+ color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>;
+}
div.copyrights {
text-align: center;
color: </xsl:text>
diff --git a/xslt/mallard/html/mal2html-page.xsl b/xslt/mallard/html/mal2html-page.xsl
index 78c91ed..673c02d 100644
--- a/xslt/mallard/html/mal2html-page.xsl
+++ b/xslt/mallard/html/mal2html-page.xsl
@@ -261,12 +261,12 @@ REMARK: Describe this template
<xsl:attribute name="class">
<xsl:text>title</xsl:text>
</xsl:attribute>
- <!-- FIXME: i18n -->
<xsl:call-template name="l10n.gettext">
<xsl:with-param name="msgid" select="'Further Reading'"/>
</xsl:call-template>
</xsl:element>
</div>
+ <!-- FIXME: For prev/next series, insert links to first/prev/next/last -->
<div class="autolinks">
<xsl:if test="$guidenodes">
<div class="title"><span>
@@ -500,6 +500,47 @@ REMARK: Describe this template
<xsl:with-param name="node" select="."/>
</xsl:call-template>
<div class="body">
+ <xsl:variable name="linkid">
+ <xsl:call-template name="mal.link.linkid"/>
+ </xsl:variable>
+ <xsl:variable name="next" select="mal:info/mal:link[ type='next']"/>
+ <xsl:for-each select="$mal.cache">
+ <xsl:variable name="prev" select="key('mal.cache.link.key', concat('next:', $linkid))"/>
+ <xsl:if test="$prev or $next">
+ <!-- FIXME: Get prev/next links in constant position -->
+ <div class="navbar">
+ <xsl:if test="$prev">
+ <a class="navbar-prev">
+ <xsl:attribute name="href">
+ <xsl:call-template name="mal.link.target">
+ <xsl:with-param name="node" select="$prev"/>
+ <xsl:with-param name="xref" select="$prev/../../@id"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Previous'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ <xsl:if test="$prev and $next">
+ <xsl:text>  |  </xsl:text>
+ </xsl:if>
+ <xsl:if test="$next">
+ <a class="navbar-next">
+ <xsl:attribute name="href">
+ <xsl:call-template name="mal.link.target">
+ <xsl:with-param name="node" select="$next"/>
+ <xsl:with-param name="xref" select="$next/@xref"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Next'"/>
+ </xsl:call-template>
+ </a>
+ </xsl:if>
+ </div>
+ </xsl:if>
+ </xsl:for-each>
<xsl:if test="$mal2html.editor_mode and $revision/@status != ''">
<div class="version">
<!-- FIXME: i18n -->
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]