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

Last change on this file since 25704 was 25660, checked in by sjm84, 12 years ago

Some fixes for document views that use an href instead of a docid, also removing the use of modes in document.xsl, also split document.xsl up and took the TOC parts of it out

  • Property svn:executable set to *
File size: 13.4 KB
Line 
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">
12 <table id="rightSidebar">
13 <tr><td>
14 <xsl:call-template name="viewOptions"/>
15 </td></tr>
16 <tr><td>
17 <div id="contentsArea">
18 <!-- show the berry basket if it's turned on -->
19 <gslib:berryBasket/>
20
21 <!-- Need to be in the context of the top-level documentNode rather than the document for the gsf:metadata call to work -->
22 <xsl:for-each select="documentNode">
23 <xsl:variable name="hasCover"><gsf:metadata name="hascover"/></xsl:variable>
24 <xsl:if test="$hasCover = '1'">
25 <!-- the book's cover image -->
26 <div id="coverImage">
27 <xsl:attribute name="class">
28 <xsl:choose>
29 <xsl:when test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']) or /page/pageResponse/format[@type='display']/gsf:option[@name='coverImage']/@value='true'">visible</xsl:when>
30 <xsl:otherwise>hidden</xsl:otherwise>
31 </xsl:choose>
32 </xsl:attribute>
33 <gslib:coverImage/><xsl:text> </xsl:text>
34 </div>
35 </xsl:if>
36 </xsl:for-each>
37
38 <!-- the contents (if enabled) -->
39 <xsl:choose>
40 <xsl:when test="/page/pageResponse/document/documentNode/@docType = 'paged'">
41 <gsf:image type="Thumb"/>
42 <!-- Table of contents will be dynamically retrieved when viewing a paged document -->
43 <script type="text/javascript">
44 <xsl:text disable-output-escaping="yes">
45 $(window).load(function()
46 {
47 retrieveTableOfContentsAndTitles();
48 });
49 </xsl:text>
50 </script>
51 <div id="tableOfContents"><xsl:text> </xsl:text></div>
52 <div id="tocLoadingImage" style="text-align:center;">
53 <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>
54 </div>
55 <table style="width:100%;"><tbody><tr>
56 <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>
57 </tr></tbody></table>
58 </xsl:when>
59 <xsl:when test="not(/page/pageRequest/paramList/param[@name = 'ed']/@value = '1')">
60 <div id="tableOfContents">
61 <div id="tocLoadingImage" style="text-align:center;">
62 <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>
63 </div>
64 </div>
65 <script type="text/javascript">
66 <xsl:text disable-output-escaping="yes">
67 $(window).load(function()
68 {
69 retrieveFullTableOfContents();
70 });
71 </xsl:text>
72 </script>
73 </xsl:when>
74 <xsl:otherwise>
75 <div id="tableOfContents">
76 <xsl:attribute name="class">
77 <xsl:choose>
78 <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>
79 <xsl:otherwise>hidden</xsl:otherwise>
80 </xsl:choose>
81 </xsl:attribute>
82 <xsl:for-each select="documentNode"><!--xxx<xsl:apply-templates select="documentNode" mode="TOC"/>-->
83 <xsl:call-template name="documentNodeTOC"/>
84 </xsl:for-each>
85 </div>
86 </xsl:otherwise>
87 </xsl:choose>
88 </div>
89 </td></tr>
90 </table>
91 </xsl:template>
92
93 <!-- This template is used to display the table of contents -->
94 <xsl:template name="documentNodeTOC"><!--xxx<xsl:template match="documentNode" mode="TOC">-->
95
96 <!-- check if this is the currently selected table of contents item -->
97 <xsl:variable name="isCurrent" select="nodeContent"/>
98
99 <!-- formulate the link -->
100 <xsl:variable name="contentsLink">
101 <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
102 </xsl:variable>
103
104 <ul>
105 <table><tr>
106 <!-- The expand/collapse button (not displayed for the top level node) -->
107 <xsl:if test="util:hashToDepthClass(@nodeID) != 'sectionHeaderDepthTitle'">
108 <td>
109 <xsl:choose>
110 <xsl:when test="not(nodeContent and not(documentNode))">
111 <img id="ttoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">
112 <xsl:attribute name="src">
113 <xsl:choose>
114 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
115 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
116 </xsl:when>
117 <xsl:otherwise>
118 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
119 </xsl:otherwise>
120 </xsl:choose>
121 </xsl:attribute>
122 </img>
123 </xsl:when>
124 <xsl:otherwise>
125 <xsl:attribute name="class">emptyIcon</xsl:attribute>
126 </xsl:otherwise>
127 </xsl:choose>
128 </td>
129 </xsl:if>
130
131 <!-- The chapter/page icon -->
132 <td>
133 <img>
134 <xsl:if test="nodeContent and not(documentNode)">
135 <xsl:attribute name="class">leafNode</xsl:attribute>
136 </xsl:if>
137
138 <xsl:attribute name="src">
139 <xsl:choose>
140 <xsl:when test="nodeContent and not(documentNode)">
141 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'page_image')"/>
142 </xsl:when>
143 <xsl:otherwise>
144 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'chapter_image')"/>
145 </xsl:otherwise>
146 </xsl:choose>
147 </xsl:attribute>
148 </img>
149 </td>
150
151 <!-- The section name, links to the section in the document -->
152 <td>
153 <a id="toclink{@nodeID}">
154 <xsl:choose>
155 <xsl:when test="/page/pageResponse/document/@docType = 'paged'">
156 <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=d&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/>&amp;d=<xsl:value-of select="@nodeID"/>&amp;dt=<xsl:value-of select="@docType"/>&amp;p.a=b&amp;p.s=<xsl:value-of select="/page/pageResponse/service/@name"/></xsl:attribute>
157 </xsl:when>
158 <xsl:otherwise>
159 <xsl:attribute name="href">javascript:focusSection('<xsl:value-of select="@nodeID"/>');</xsl:attribute>
160 </xsl:otherwise>
161 </xsl:choose>
162 <xsl:if test="util:hashToSectionId(@nodeID)">
163 <xsl:value-of select="util:hashToSectionId(@nodeID)"/>
164 <xsl:text> </xsl:text>
165 </xsl:if>
166 <xsl:call-template name="sectionTitle"/><!--xxx<xsl:apply-templates select="." mode="sectionTitle"/>-->
167 </a>
168 </td>
169 </tr></table>
170
171 <!-- display any child items -->
172 <xsl:if test="documentNode">
173 <li id="toc{@nodeID}">
174 <xsl:attribute name="style">
175 <xsl:choose>
176 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
177 <xsl:text>display:block;</xsl:text>
178 </xsl:when>
179 <xsl:otherwise>
180 <xsl:text>display:none;</xsl:text>
181 </xsl:otherwise>
182 </xsl:choose>
183 </xsl:attribute>
184 <xsl:for-each select="documentNode"><!--xxx<xsl:apply-templates select="documentNode" mode="TOC"/>-->
185 <xsl:call-template name="documentNodeTOC"/>
186 </xsl:for-each>
187 </li>
188 </xsl:if>
189
190 </ul>
191 </xsl:template>
192
193 <xsl:template name="viewOptions">
194 <table class="viewOptions ui-state-default ui-corner-all"><tr>
195
196 <!-- Paged-image options -->
197 <xsl:if test="count(//documentNode/metadataList/metadata[@name = 'Screen']) > 0 or /page/pageResponse/document/documentNode/@docType = 'paged'">
198 <td>
199 <select id="viewSelection" onchange="changeView();">
200 <xsl:choose>
201 <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'image'">
202 <option>Default view</option>
203 <option selected="true">Image view</option>
204 <option>Text view</option>
205 </xsl:when>
206 <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'text'">
207 <option>Default view</option>
208 <option>Image view</option>
209 <option selected="true">Text view</option>
210 </xsl:when>
211 <xsl:otherwise>
212 <option selected="true">Default view</option>
213 <option>Image view</option>
214 <option>Text view</option>
215 </xsl:otherwise>
216 </xsl:choose>
217 </select>
218 </td>
219 </xsl:if>
220
221 <!-- Realistic books link -->
222 <xsl:if test="/page/pageResponse/collection[@name = $collName]/metadataList/metadata[@name = 'tidyoption'] = 'tidy'">
223 <td>
224 <img>
225 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'realistic_books_image')"/></xsl:attribute>
226 </img>
227 <input id="rbOption" type="checkbox" onclick="bookInit();" class="optionCheckBox"/>
228 </td>
229 </xsl:if>
230
231 <!-- Highlight on/off button -->
232 <xsl:if test="/page/pageRequest/paramList/param[@name = 'p.a']/@value = 'q' or /page/pageRequest/paramList/param[@name = 's1.query']">
233 <td>
234 <img>
235 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'highlight_image')"/></xsl:attribute>
236 </img>
237 <input id="highlightOption" type="checkbox" class="optionCheckBox">
238 <xsl:choose>
239 <xsl:when test="/page/pageRequest/paramList/param[@name = 'hl']/@value = 'on'">
240 <xsl:attribute name="onclick">
241 <xsl:text>removeHighlight();</xsl:text>
242 </xsl:attribute>
243 <xsl:attribute name="checked">true</xsl:attribute>
244 </xsl:when>
245 <xsl:otherwise>
246 <xsl:attribute name="onclick">
247 <xsl:text>addHighlight();</xsl:text>
248 </xsl:attribute>
249 </xsl:otherwise>
250 </xsl:choose>
251 </input>
252 </td>
253 </xsl:if>
254 <td style="vertical-align:top; text-align:right;">
255 <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='TOC']) or /page/pageResponse/format[@type='display']/gsf:option[@name='TOC']/@value='true'">
256 <span class="tableOfContentsTitle"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.table_of_contents')"/></span>
257
258 <a id="sidebarMinimizeButton" href="javascript:minimizeSidebar();" style="float: right; font-size:0.6em;">
259 <img class="icon" style="padding-top:3px;">
260 <xsl:attribute name="src">
261 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
262 </xsl:attribute>
263 </img>
264 </a>
265 <a id="sidebarMaximizeButton" href="javascript:maximizeSidebar();" style="float: right; font-size:0.6em; display:none;">
266 <img class="icon" style="padding-top:3px;">
267 <xsl:attribute name="src">
268 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
269 </xsl:attribute>
270 </img>
271 </a>
272 </xsl:if>
273 </td>
274 </tr>
275 <tr id="zoomOptions">
276 <!-- This is invisible unless it is made visible by Javascript controlling the image zooming -->
277 <xsl:attribute name="style">display: none;</xsl:attribute>
278 <td style="width:40%;">
279 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoom')"/><input id="zoomToggle" type="checkbox"/>
280 <script type="text/javascript">
281 <xsl:text disable-output-escaping="yes">
282 $("#zoomToggle").change(function()
283 {
284 _imageZoomEnabled = !_imageZoomEnabled;
285 });
286 </xsl:text>
287 </script>
288 </td>
289 <td style="width:60%;">
290 <div>
291 <div style="float:left; width:30%;"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoom_size')"/><xsl:text>:</xsl:text></div>
292 <div id="zoomSlider" style="float:right; width:65%; height:5px; margin-top:6px;"><xsl:text> </xsl:text></div>
293 <script type="text/javascript">
294 <xsl:text disable-output-escaping="yes">
295 $("#zoomSlider").slider(
296 {
297 change: function(event, ui)
298 {
299 var sliderValue = ui.value;
300 var divs = document.getElementsByTagName("DIV");
301 for(var i = 0; i &lt; divs.length; i++)
302 {
303 if(divs[i].getAttribute("id") &amp;&amp; divs[i].getAttribute("id").search(/^mover.*/) != -1)
304 {
305 divs[i].style.height = 200 + (2 * sliderValue) + "px";
306 divs[i].style.width = 200 + (2 * sliderValue) + "px";
307 }
308 }
309 }
310 });
311 </xsl:text>
312 </script>
313 <style>.ui-slider .ui-slider-handle{height:0.8em; width:1.0em;}</style>
314 <div style="float:clear;"><xsl:text> </xsl:text></div>
315 </div>
316 </td>
317 </tr>
318 </table>
319 </xsl:template>
320</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.