summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@gnome.org>2012-02-23 22:01:30 -0500
committerShaun McCance <shaunm@gnome.org>2012-02-23 22:01:30 -0500
commit272363be6f1a3ca106b9b960628f529488c83b9b (patch)
tree16717a2c579a38e4de202c0e04ad661c0fc3ec65
parentdb83485f94be4775644abbc74b1aebb702bdbaca (diff)
downloadyelp-xsl-272363be6f1a3ca106b9b960628f529488c83b9b.tar.gz
* Added mal2html.links.links, used by mal2html.links.topic
-rw-r--r--xslt/mallard/html/mal2html-links.xsl250
1 files changed, 152 insertions, 98 deletions
diff --git a/xslt/mallard/html/mal2html-links.xsl b/xslt/mallard/html/mal2html-links.xsl
index 05b8b404..34c7734b 100644
--- a/xslt/mallard/html/mal2html-links.xsl
+++ b/xslt/mallard/html/mal2html-links.xsl
@@ -28,6 +28,7 @@ Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
exclude-result-prefixes="mal e api exsl math html"
version="1.0">
+
<!--!!==========================================================================
Mallard to HTML - Links
@@ -36,11 +37,147 @@ Mallard links element and implicitly.
-->
+<xsl:template match="mal:links"/>
+
+
+<!--**==========================================================================
+mal2html.links.links
+Output links in one of a number of formats.
+:Revision:version="3.4" date="2012-02-23" status="final"
+$node: A #{links}, #{page}, or #{section} element to link from.
+$depth: The depth level for the HTML header element.
+$links: A list of links, as from a template in !{mal-link}.
+$role: A link role, used to select the appropriate title.
+$divs: Whether to default to divs instead of a list.
+
+This is a common formatting template used by some #{links} element handlers.
+It selects an appropriate way to render the links based on style hints and
+extension attributes on ${node}.
+
+This template will handle sorting of the links.
+-->
+<xsl:template name="mal2html.links.links">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="depth" select="count($node/ancestor-or-self::mal:section) + 2"/>
+ <xsl:param name="links" select="/false"/>
+ <xsl:param name="role" select="''"/>
+ <xsl:param name="divs" select="false()"/>
+ <xsl:variable name="style" select="concat(' ', $node/@style, ' ')"/>
+ <xsl:variable name="nodesc" select="contains($style, ' nodesc ')"/>
+ <xsl:variable name="title" select="$node/self::mal:links/mal:title"/>
+ <xsl:variable name="expander" select="$title and $node/self::mal:links/@ui:expanded"/>
+ <div>
+ <xsl:attribute name="class">
+ <xsl:text>links </xsl:text>
+ <xsl:if test="$role != ''">
+ <xsl:value-of select="concat($role, 'links')"/>
+ </xsl:if>
+ <xsl:if test="$expander">
+ <xsl:text> ui-expander</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:call-template name="mal2html.ui.expander.data">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="expander" select="$expander"/>
+ </xsl:call-template>
+ <div class="inner">
+ <xsl:apply-templates mode="mal2html.block.mode" select="$title">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <div class="region">
+ <xsl:choose>
+ <xsl:when test="$node/self::mal:links/@api:type='function'">
+ <xsl:call-template name="mal2html.api.links.function">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="links" select="$links"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$node/self::mal:links/@ui:thumbs = 'grid'">
+ <xsl:call-template name="mal2html.ui.links.grid">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="links" select="$links"/>
+ <xsl:with-param name="role" select="$role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$node/self::mal:links/@ui:thumbs = 'mouseovers'">
+ <xsl:call-template name="mal2html.ui.links.mouseovers">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="links" select="$links"/>
+ <xsl:with-param name="role" select="$role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($style, ' mouseovers ')">
+ <xsl:call-template name="_mal2html.links.mouseovers">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="links" select="$links"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($style, ' toronto ') or contains($style, ' grid ')">
+ <xsl:call-template name="_mal2html.links.grid">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="links" select="$links"/>
+ <xsl:with-param name="role" select="$role"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($style, ' linklist ')">
+ <xsl:variable name="bold" select="contains($style, ' bold ')"/>
+ <xsl:call-template name="mal2html.links.ul">
+ <xsl:with-param name="links" select="$links"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="bold" select="$bold"/>
+ <xsl:with-param name="nodesc" select="$nodesc"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($style, ' 2column ')">
+ <xsl:variable name="coltot" select="ceiling(count($links) div 2)"/>
+ <div class="links-twocolumn">
+ <xsl:call-template name="_mal2html.links.divs">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="links" select="$links"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="nodesc" select="$nodesc"/>
+ <xsl:with-param name="max" select="$coltot"/>
+ </xsl:call-template>
+ </div>
+ <div class="links-twocolumn">
+ <xsl:call-template name="_mal2html.links.divs">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="links" select="$links"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="nodesc" select="$nodesc"/>
+ <xsl:with-param name="min" select="$coltot"/>
+ </xsl:call-template>
+ </div>
+ </xsl:when>
+ <xsl:when test="$divs">
+ <xsl:call-template name="_mal2html.links.divs">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="links" select="$links"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="nodesc" select="$nodesc"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="bold" select="contains($style, ' bold ')"/>
+ <xsl:call-template name="mal2html.links.ul">
+ <xsl:with-param name="links" select="$links"/>
+ <xsl:with-param name="role" select="'topic'"/>
+ <xsl:with-param name="bold" select="$bold"/>
+ <xsl:with-param name="nodesc" select="$nodesc"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+ </div>
+ </div>
+</xsl:template>
+
+
<!--**==========================================================================
mal2html.links.ul
Output links in an HTML #{ul} element.
:Revision:version="1.0" date="2011-06-15" status="final"
-$links: A list of #{links}, as from a template in !{mal-link}.
+$links: A list of links, as from a template in !{mal-link}.
$role: A link role, used to select the appropriate title.
$bold: Whether to bold the link titles.
$nodesc: Whether to omit descriptions.
@@ -579,7 +716,7 @@ page.
<!--**==========================================================================
mal2html.links.topic
Output topic links from a page or section.
-:Revision:version="1.0" date="2011-06-16" status="final"
+:Revision:version="3.4" date="2012-02-23" status="final"
$node: A #{links}, #{page}, or #{section} element to link from.
$depth: The depth level for the HTML header element.
$links: A list of links from *{mal.link.topiclinks}.
@@ -610,8 +747,6 @@ when determining which links to output.
<xsl:text> </xsl:text>
</xsl:param>
<xsl:param name="allgroups" select="''"/>
- <xsl:variable name="title" select="$node/self::mal:links/mal:title"/>
- <xsl:variable name="expander" select="$title and $node/self::mal:links/@ui:expanded"/>
<xsl:if test="$node/ancestor-or-self::mal:page[last()]/@type = 'guide'">
<xsl:variable name="_groups">
<xsl:if test="not(contains($allgroups, ' #first '))">
@@ -632,103 +767,19 @@ when determining which links to output.
</xsl:if>
</xsl:variable>
<xsl:variable name="_links" select="$links[contains($_groups, concat(' ', @group, ' '))]"/>
- <xsl:variable name="style" select="concat(' ', $node/@style, ' ')"/>
- <xsl:variable name="nodesc" select="contains($style, ' nodesc ')"/>
<xsl:if test="count($_links) != 0">
- <div>
- <xsl:attribute name="class">
- <xsl:text>links topiclinks</xsl:text>
- <xsl:if test="$expander">
- <xsl:text> ui-expander</xsl:text>
- </xsl:if>
- </xsl:attribute>
- <xsl:call-template name="mal2html.ui.expander.data">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="expander" select="$expander"/>
- </xsl:call-template>
- <div class="inner">
- <xsl:if test="$node/self::mal:links">
- <xsl:apply-templates mode="mal2html.block.mode" select="$node/mal:title">
- <xsl:with-param name="depth" select="$depth"/>
- </xsl:apply-templates>
- </xsl:if>
- <div class="region">
- <xsl:choose>
- <xsl:when test="$node/self::mal:links/@api:type='function'">
- <xsl:call-template name="mal2html.api.links.function">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="links" select="$_links"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$node/self::mal:links/@ui:thumbs = 'grid'">
- <xsl:call-template name="mal2html.ui.links.grid">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="links" select="$_links"/>
- <xsl:with-param name="role" select="'topic'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$node/self::mal:links/@ui:thumbs = 'mouseovers'">
- <xsl:call-template name="mal2html.ui.links.mouseovers">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="links" select="$_links"/>
- <xsl:with-param name="role" select="'topic'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($style, ' mouseovers ')">
- <xsl:call-template name="_mal2html.links.mouseovers">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="links" select="$_links"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($style, ' toronto ') or contains($style, ' grid ')">
- <xsl:call-template name="_mal2html.links.grid">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="links" select="$_links"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($style, ' linklist ')">
- <xsl:variable name="bold" select="contains($style, ' bold ')"/>
- <xsl:call-template name="mal2html.links.ul">
- <xsl:with-param name="links" select="$_links"/>
- <xsl:with-param name="role" select="'topic'"/>
- <xsl:with-param name="bold" select="$bold"/>
- <xsl:with-param name="nodesc" select="$nodesc"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($style, ' 2column ')">
- <xsl:variable name="coltot" select="ceiling(count($_links) div 2)"/>
- <div class="links-twocolumn">
- <xsl:call-template name="_mal2html.links.divs">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="links" select="$_links"/>
- <xsl:with-param name="nodesc" select="$nodesc"/>
- <xsl:with-param name="max" select="$coltot"/>
- </xsl:call-template>
- </div>
- <div class="links-twocolumn">
- <xsl:call-template name="_mal2html.links.divs">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="links" select="$_links"/>
- <xsl:with-param name="nodesc" select="$nodesc"/>
- <xsl:with-param name="min" select="$coltot"/>
- </xsl:call-template>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="_mal2html.links.divs">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="links" select="$_links"/>
- <xsl:with-param name="nodesc" select="$nodesc"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- </div>
- </div>
+ <xsl:call-template name="mal2html.links.links">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="depth" select="$depth"/>
+ <xsl:with-param name="links" select="$_links"/>
+ <xsl:with-param name="role" select="'topic'"/>
+ <xsl:with-param name="divs" select="true()"/>
+ </xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
+
<xsl:template name="_mal2html.links.mouseovers">
<xsl:param name="node"/>
<xsl:param name="links"/>
@@ -779,6 +830,7 @@ when determining which links to output.
<xsl:template name="_mal2html.links.grid">
<xsl:param name="node"/>
<xsl:param name="links"/>
+ <xsl:param name="role"/>
<xsl:for-each select="$links">
<xsl:sort data-type="number" select="@groupsort"/>
<xsl:sort select="mal:title[@type = 'sort']"/>
@@ -800,7 +852,7 @@ when determining which links to output.
<xsl:call-template name="mal.link.content">
<xsl:with-param name="node" select="."/>
<xsl:with-param name="xref" select="$xref"/>
- <xsl:with-param name="role" select="'topic'"/>
+ <xsl:with-param name="role" select="$role"/>
</xsl:call-template>
</a></div>
<xsl:variable name="desc" select="$target/mal:info/mal:desc"/>
@@ -819,6 +871,7 @@ when determining which links to output.
<xsl:template name="_mal2html.links.divs">
<xsl:param name="node"/>
<xsl:param name="links"/>
+ <xsl:param name="role" select="''"/>
<xsl:param name="nodesc" select="false()"/>
<xsl:param name="min" select="-1"/>
<xsl:param name="max" select="-1"/>
@@ -832,7 +885,7 @@ when determining which links to output.
<xsl:call-template name="_mal2html.links.divs.link">
<xsl:with-param name="source" select="$node"/>
<xsl:with-param name="target" select="key('mal.cache.key', $xref)"/>
- <xsl:with-param name="role" select="'topic'"/>
+ <xsl:with-param name="role" select="$role"/>
<xsl:with-param name="nodesc" select="$nodesc"/>
</xsl:call-template>
</xsl:for-each>
@@ -859,6 +912,7 @@ when determining which links to output.
<xsl:call-template name="mal.link.tooltip">
<xsl:with-param name="node" select="$source"/>
<xsl:with-param name="xref" select="$target/@id"/>
+ <xsl:with-param name="role" select="$role"/>
</xsl:call-template>
</xsl:attribute>
<xsl:copy-of select="exsl:node-set($attrs)/*/@*"/>