source: main/trunk/greenstone3/web/interfaces/default/transform/layouts/toc.xsl@ 29401

Last change on this file since 29401 was 29401, checked in by kjdon, 9 years ago

added a test for NoText metadata - if present, don't output the option for search term highlighting. This will suppress it for image documents etc

  • Property svn:executable set to *
File size: 15.4 KB
RevLine 
[25660]1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:java="http://xml.apache.org/xslt/java"
5 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
6 xmlns:gslib="http://www.greenstone.org/skinning"
7 xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
8 extension-element-prefixes="java util"
9 exclude-result-prefixes="java util gsf">
10
11 <xsl:template name="rightSidebar">
[29165]12 <div id="rightSidebar">
13 <xsl:choose>
14 <xsl:when test="@docType = 'simple'">
[29400]15 <xsl:for-each select=".">
16 <xsl:call-template name="displayCoverImage"/>
17 </xsl:for-each>
18 <xsl:call-template name="viewOptions"/>
19 <!--<xsl:text> </xsl:text>-->
[29165]20 </xsl:when>
21 <xsl:otherwise>
[29400]22 <xsl:for-each select="documentNode[1]">
23 <xsl:call-template name="displayCoverImage"/>
24 </xsl:for-each>
[29165]25 <xsl:call-template name="viewOptions"/>
26 <xsl:call-template name="displayTOC"/>
27 </xsl:otherwise>
28 </xsl:choose>
29 </div>
[25922]30 </xsl:template>
31
[29400]32 <!-- this is called in the context of the top level node with the metadataList. For a simple doc, this is the document node. For a comples document, this is the first documentNode hcild of the document node. -->
[25922]33 <xsl:template name="displayCoverImage">
[29400]34 <xsl:variable name="hasCover"><gsf:metadata name="hascover"/></xsl:variable>
35 <xsl:if test="$hasCover = '1' and (not(/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']) or /page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true')">
36 <!-- the book's cover image -->
37 <div id="coverImage">
38 <img>
39 <xsl:attribute name="src"><xsl:value-of select="$httpPath"/>/index/assoc/<gsf:metadata name="assocfilepath" pos="1"/>/cover.jpg</xsl:attribute>
40 </img><xsl:text> </xsl:text>
41 </div>
42 </xsl:if>
43 </xsl:template>
[25922]44
45 <xsl:template name="displayTOC">
46 <div class="tableOfContentsContainer ui-state-default">
47 <table class="tocTable ui-widget-content">
48 <tr>
[26226]49 <td id="unfloatTOCButton" style="display:none;">
50 <a href="javascript:floatMenu(false);">
51 <img class="icon" style="padding-top:3px;">
52 <xsl:attribute name="src">
53 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'left_arrow_image')"/>
54 </xsl:attribute>
55 </img>
56 </a>
57 </td>
[25922]58 <td style="vertical-align:top; text-align:right;">
59 <a id="sidebarMinimizeButton" href="javascript:minimizeSidebar();" style="float: right; font-size:0.6em;">
60 <img class="icon" style="padding-top:3px;">
61 <xsl:attribute name="src">
62 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
[25660]63 </xsl:attribute>
[25922]64 </img>
65 </a>
66 <a id="sidebarMaximizeButton" href="javascript:maximizeSidebar();" style="float: right; font-size:0.6em; display:none;">
67 <img class="icon" style="padding-top:3px;">
68 <xsl:attribute name="src">
69 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
70 </xsl:attribute>
71 </img>
72 </a>
73 </td>
74 </tr>
75 <tr><td>
76 <div id="contentsArea">
77 <!-- show the berry basket if it's turned on -->
78 <gslib:berryBasket/>
[25660]79
[25922]80 <!-- the contents (if enabled) -->
81 <xsl:choose>
[25972]82 <xsl:when test="/page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
[25922]83 <gsf:image type="Thumb"/>
84 <!-- Table of contents will be dynamically retrieved when viewing a paged document -->
85 <script type="text/javascript">
86 <xsl:text disable-output-escaping="yes">
87 $(window).load(function()
88 {
89 retrieveTableOfContentsAndTitles();
90 });
91 </xsl:text>
92 </script>
93 <div id="tableOfContents"><xsl:text> </xsl:text></div>
[25660]94 <div id="tocLoadingImage" style="text-align:center;">
95 <img src="{util:getInterfaceText($interface_name, /page/@lang, 'loading_image')}"/><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.loading')"/><xsl:text>...</xsl:text>
96 </div>
[25922]97 <table style="width:100%;"><tbody><tr>
98 <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.filter_pages')"/><xsl:text>: </xsl:text><input id="filterText" type="text" size="27"/></td>
[28253]99 </tr>
100 <xsl:if test="/page/pageRequest/userInformation and /page/pageRequest/userInformation/@editEnabled = 'true'">
[28279]101 <tr><td><a href="javascript:extractFilteredPagesToOwnDocument();"><button id="extractDocButton">Extract these pages to document</button></a></td></tr>
[28253]102 </xsl:if>
103 </tbody></table>
[25922]104 </xsl:when>
105 <xsl:when test="not(/page/pageRequest/paramList/param[@name = 'ed']/@value = '1')">
106 <div id="tableOfContents">
107 <div id="tocLoadingImage" style="text-align:center;">
108 <img src="{util:getInterfaceText($interface_name, /page/@lang, 'loading_image')}"/><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.loading')"/><xsl:text>...</xsl:text>
109 </div>
110 </div>
111 <script type="text/javascript">
112 <xsl:text disable-output-escaping="yes">
113 $(window).load(function()
114 {
115 retrieveFullTableOfContents();
116 });
117 </xsl:text>
118 </script>
119 </xsl:when>
120 <xsl:otherwise>
121 <div id="tableOfContents">
122 <xsl:attribute name="class">
123 <xsl:choose>
124 <xsl:when test="count(//documentNode) > 1 and not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">visible</xsl:when>
125 <xsl:otherwise>hidden</xsl:otherwise>
126 </xsl:choose>
127 </xsl:attribute>
128 <xsl:for-each select="documentNode">
129 <xsl:call-template name="documentNodeTOC"/>
130 </xsl:for-each>
131 </div>
132 </xsl:otherwise>
133 </xsl:choose>
134 </div>
135 </td></tr>
136 </table>
137 </div>
[25660]138 </xsl:template>
139
140 <!-- This template is used to display the table of contents -->
[25720]141 <xsl:template name="documentNodeTOC">
[25660]142
143 <!-- check if this is the currently selected table of contents item -->
144 <xsl:variable name="isCurrent" select="nodeContent"/>
145
146 <!-- formulate the link -->
147 <xsl:variable name="contentsLink">
148 <xsl:value-of select='$library_name'/>?a=d&amp;c=<gslib:collectionNameShort/>&amp;d=<xsl:value-of select='@nodeID'/><xsl:if test="documentNode">.pr</xsl:if>&amp;sib=1
149 </xsl:variable>
150
151 <ul>
152 <table><tr>
153 <!-- The expand/collapse button (not displayed for the top level node) -->
154 <xsl:if test="util:hashToDepthClass(@nodeID) != 'sectionHeaderDepthTitle'">
155 <td>
156 <xsl:choose>
157 <xsl:when test="not(nodeContent and not(documentNode))">
158 <img id="ttoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">
159 <xsl:attribute name="src">
160 <xsl:choose>
161 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
162 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
163 </xsl:when>
164 <xsl:otherwise>
165 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
166 </xsl:otherwise>
167 </xsl:choose>
168 </xsl:attribute>
169 </img>
170 </xsl:when>
171 <xsl:otherwise>
172 <xsl:attribute name="class">emptyIcon</xsl:attribute>
173 </xsl:otherwise>
174 </xsl:choose>
175 </td>
176 </xsl:if>
177
178 <!-- The chapter/page icon -->
179 <td>
180 <img>
181 <xsl:if test="nodeContent and not(documentNode)">
182 <xsl:attribute name="class">leafNode</xsl:attribute>
183 </xsl:if>
184
185 <xsl:attribute name="src">
186 <xsl:choose>
187 <xsl:when test="nodeContent and not(documentNode)">
188 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'page_image')"/>
189 </xsl:when>
190 <xsl:otherwise>
191 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'chapter_image')"/>
192 </xsl:otherwise>
193 </xsl:choose>
194 </xsl:attribute>
195 </img>
196 </td>
197
198 <!-- The section name, links to the section in the document -->
[26203]199 <td class="tocTextCell">
[25936]200 <a id="toclink{@nodeID}" href="javascript:focusSection('{@nodeID}');">
[25660]201 <xsl:if test="util:hashToSectionId(@nodeID)">
202 <xsl:value-of select="util:hashToSectionId(@nodeID)"/>
203 <xsl:text> </xsl:text>
204 </xsl:if>
[26175]205 <xsl:call-template name="sectionHeading"/>
[25660]206 </a>
207 </td>
208 </tr></table>
209
210 <!-- display any child items -->
211 <xsl:if test="documentNode">
212 <li id="toc{@nodeID}">
213 <xsl:attribute name="style">
214 <xsl:choose>
215 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
216 <xsl:text>display:block;</xsl:text>
217 </xsl:when>
218 <xsl:otherwise>
219 <xsl:text>display:none;</xsl:text>
220 </xsl:otherwise>
221 </xsl:choose>
222 </xsl:attribute>
[25720]223 <xsl:for-each select="documentNode">
[25660]224 <xsl:call-template name="documentNodeTOC"/>
225 </xsl:for-each>
226 </li>
227 </xsl:if>
228
229 </ul>
230 </xsl:template>
231
232 <xsl:template name="viewOptions">
[25922]233 <div id="viewAndZoomOptions" class="ui-state-default ui-corner-all">
234 <ul id="viewOptions">
[29400]235 <!-- Paged-image document options -->
236 <xsl:if test="count(//documentNode/metadataList/metadata[@name = 'Screen']) > 0 or /page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
237 <!-- view selection option -->
[25936]238 <li id="pagedImageOptions">
239 <select id="viewSelection" onchange="changeView();">
240 <xsl:choose>
241 <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'image'">
242 <option>Default view</option>
243 <option selected="true">Image view</option>
244 <option>Text view</option>
245 </xsl:when>
246 <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'text'">
247 <option>Default view</option>
248 <option>Image view</option>
249 <option selected="true">Text view</option>
250 </xsl:when>
251 <xsl:otherwise>
252 <option selected="true">Default view</option>
253 <option>Image view</option>
254 <option>Text view</option>
255 </xsl:otherwise>
256 </xsl:choose>
257 </select>
258 </li>
[26203]259
260 <!-- Slide-show options -->
261 <li id="slideShowOptions">
[26220]262 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.slideshowTooltip')"/></xsl:attribute>
[26307]263 <img onclick="showSlideShow()">
[26203]264 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'slideshow_image')"/></xsl:attribute>
265 </img>
266 </li>
[29400]267 </xsl:if>
[25922]268 <!-- Realistic books link -->
269 <xsl:if test="/page/pageResponse/collection[@name = $collName]/metadataList/metadata[@name = 'tidyoption'] = 'tidy'">
270 <li>
271 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.realisticBooksTooltip')"/></xsl:attribute>
[26307]272 <img id="rbOptionImage" onclick="bookInit();">
[25922]273 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'realistic_books_image')"/></xsl:attribute>
[25660]274 </img>
[25922]275 <input id="rbOption" type="checkbox" onclick="bookInit();" class="optionCheckBox"/>
276 </li>
277 </xsl:if>
278
279 <!-- Highlight on/off button -->
[29401]280 <xsl:if test="util:contains(/page/pageRequest/paramList/param[@name = 'p.s']/@value, 'Query') and not(metadataList/metadata[@name='NoText'])">
[25922]281 <li>
282 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.highlightTooltip')"/></xsl:attribute>
[26307]283 <img onclick="swapHighlight(true);">
[25922]284 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'highlight_image')"/></xsl:attribute>
[25660]285 </img>
[26307]286 <input id="highlightOption" type="checkbox" class="optionCheckBox" onclick="swapHighlight(false);">
[29400]287 <xsl:if test="not(/page/pageRequest/paramList/param[@name = 'hl']/@value = 'off')">
[29319]288 <xsl:attribute name="checked">checked</xsl:attribute>
[25922]289 </xsl:if>
290 </input>
291 </li>
[25936]292 </xsl:if><xsl:text> </xsl:text>
[26216]293
[26226]294 <!-- Zoom on/off button -->
[26216]295 <li id="zoomOptions" style="display:none;">
[26220]296 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoomTooltip')"/></xsl:attribute>
[26307]297 <img id="zoomToggleImage">
[26216]298 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'zoom_image')"/></xsl:attribute>
299 </img>
[25922]300 <input id="zoomToggle" type="checkbox"/>
301 <script type="text/javascript">
302 <xsl:text disable-output-escaping="yes">
303 $("#zoomToggle").change(function()
304 {
[29319]305 _imageZoomEnabled = $("#zoomToggle").prop("checked");
[25922]306 });
[26307]307
308 $("#zoomToggleImage").click(function()
309 {
[29319]310 $("#zoomToggle").prop("checked", !$("#zoomToggle").prop("checked"));
311 _imageZoomEnabled = $("#zoomToggle").prop("checked");
[26307]312 });
[25922]313 </xsl:text>
314 </script>
315 </li>
[26226]316
317 <!-- Floating TOC on/off button -->
[26285]318 <xsl:if test="count(//documentNode) > 0 and (not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true')">
[26226]319 <li id="floatingTOCOptions">
320 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.floatingTooltip')"/></xsl:attribute>
[26307]321 <img id="floatTOCToggleImage">
[26226]322 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'float_toc_image')"/></xsl:attribute>
323 </img>
324 <input id="floatTOCToggle" type="checkbox"/>
325 <script type="text/javascript">
326 <xsl:text disable-output-escaping="yes">
[29319]327 $("#floatTOCToggle").prop("checked", false);
[26226]328 $("#floatTOCToggle").click(function()
329 {
[29319]330 floatMenu($("#floatTOCToggle").prop("checked"));
[26226]331 });
[26307]332
333 $("#floatTOCToggleImage").click(function()
334 {
[29319]335 $("#floatTOCToggle").prop("checked", !$("#floatTOCToggle").prop("checked"))
336 floatMenu($("#floatTOCToggle").prop("checked"));
[26307]337 });
[26226]338 </xsl:text>
339 </script>
340 </li>
[26308]341 <xsl:if test="/page/pageRequest/paramList/param[@name='ftoc']/@value = '1'">
342 <script type="text/javascript">
343 <xsl:text disable-output-escaping="yes">
344 $(window).load(function()
345 {
[29319]346 $("#floatTOCToggle").prop("checked", true);
[26308]347 floatMenu(true);
348 });
349 </xsl:text>
350 </script>
351 </xsl:if>
[26226]352 </xsl:if>
[25922]353 </ul>
[26216]354 <div style="clear:both;"><xsl:text> </xsl:text></div>
[25922]355 </div>
[25660]356 </xsl:template>
[29165]357</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.