source: main/trunk/greenstone3/web/interfaces/oran/transform/pages/document.xsl@ 25434

Last change on this file since 25434 was 25433, checked in by sjm84, 12 years ago

Some major changes to the document page, mostly to do with changing the page so that it loads sections dynamically instead of all at once

File size: 33.1 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 <!-- use the 'main' layout -->
12 <xsl:import href="layouts/main.xsl"/>
13
14 <!-- style includes global params interface_name, library_name -->
15 <xsl:include href=".old/berrytools.xsl"/>
16
17 <xsl:variable name="bookswitch">
18 <xsl:choose>
19 <xsl:when test="/page/pageRequest/paramList/param[@name='book']/@value">
20 <xsl:value-of select="/page/pageRequest/paramList/param[@name='book']/@value"/>
21 </xsl:when>
22 <xsl:otherwise>off</xsl:otherwise>
23 </xsl:choose>
24 </xsl:variable>
25
26 <!-- set page title -->
27 <xsl:template name="pageTitle"><gslib:documentTitle/></xsl:template>
28
29 <!-- set page breadcrumbs -->
30 <xsl:template name="breadcrumbs">
31 <gslib:siteLink/><gslib:rightArrow/>
32 <gslib:collectionNameLinked/><gslib:rightArrow/>
33 <a>
34 <xsl:attribute name="href">
35 <xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="$collName"/>/document/<xsl:value-of select="/page/pageResponse/document/documentNode[1]/@nodeID"/>
36 </xsl:attribute>
37 <xsl:variable name="documentTitleVar">
38 <gslib:documentTitle/>
39 </xsl:variable>
40 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.document')"/>
41 </a>
42 </xsl:template>
43
44 <xsl:template match="/">
45 <xsl:choose>
46 <!-- if this is the realistic books version of the page -->
47 <xsl:when test="$bookswitch = 'flashxml'">
48 <html>
49 <body>
50 <xsl:apply-templates select="/page/pageResponse/document"/>
51 </body>
52 </html>
53 </xsl:when>
54 <!-- if this is the regular version of the page -->
55 <xsl:otherwise>
56 <xsl:apply-imports/>
57 </xsl:otherwise>
58 </xsl:choose>
59 </xsl:template>
60
61 <!-- Used to make sure that regardless what the collection designer uses for the title and content we can wrap it properly -->
62 <!-- If editing, be aware that the Document Basket looks for specific classes that this template bakes in (key points marked with ***) -->
63 <xsl:template name="wrapDocumentNodes">
64 <a name="{@nodeID}"><xsl:text> </xsl:text></a>
65 <!-- Section header -->
66 <table class="sectionHeader"><tr>
67
68 <!-- Expand/collapse button -->
69 <xsl:if test="not(/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='sectionExpandCollapse']/@value) or /page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='sectionExpandCollapse']/@value = 'true'">
70 <td class="headerTD">
71 <img id="dtoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">
72 <xsl:attribute name="src">
73 <xsl:choose>
74 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or util:oidIsMatchOrParent(@nodeID, /page/pageResponse/document/@selectedNode)">
75 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
76 </xsl:when>
77 <xsl:otherwise>
78 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
79 </xsl:otherwise>
80 </xsl:choose>
81 </xsl:attribute>
82 </img>
83 </td>
84 </xsl:if>
85
86 <!-- Title -->
87 <td id="header{@nodeID}" class="headerTD sectionTitle"><!-- *** -->
88 <!-- Get the title from the title sectionTitle template -->
89 <xsl:choose>
90 <xsl:when test="not(/page/pageRequest/paramList/param[@name = 'dmd']) or /page/pageRequest/paramList/param[@name = 'dmd']/@value = 'false'">
91 <xsl:apply-templates select="." mode="sectionTitleFormat"/>
92 </xsl:when>
93 <xsl:otherwise>
94 <xsl:apply-templates select="." mode="sectionTitle"/>
95 </xsl:otherwise>
96 </xsl:choose>
97 </td>
98
99 <!-- "back to top" link -->
100 <xsl:if test="util:hashToDepthClass(@nodeID) != 'sectionHeaderDepthTitle'">
101 <td class="backToTop headerTD">
102 <a href="javascript:scrollToTop();">
103 <xsl:text disable-output-escaping="yes">&#9650;</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.back_to_top')"/>
104 </a>
105 </td>
106 </xsl:if>
107 </tr></table>
108
109 <div id="doc{@nodeID}"><!-- *** -->
110 <xsl:choose>
111 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
112 <xsl:attribute name="class">
113 <xsl:text>sectionContainer hasText</xsl:text>
114 </xsl:attribute>
115 <xsl:attribute name="style">
116 <xsl:text>display:block;</xsl:text>
117 </xsl:attribute>
118 </xsl:when>
119 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or util:oidIsMatchOrParent(@nodeID, /page/pageResponse/document/@selectedNode)">
120 <xsl:attribute name="class">
121 <xsl:text>sectionContainer noText</xsl:text>
122 </xsl:attribute>
123 <xsl:attribute name="style">
124 <xsl:text>display:block;</xsl:text>
125 </xsl:attribute>
126 </xsl:when>
127 <xsl:otherwise>
128 <xsl:attribute name="class">
129 <xsl:text>sectionContainer noText</xsl:text>
130 </xsl:attribute>
131 <xsl:attribute name="style">
132 <xsl:text>display:none;</xsl:text>
133 </xsl:attribute>
134 </xsl:otherwise>
135 </xsl:choose>
136
137 <xsl:if test="/page/pageRequest/userInformation and (util:contains(/page/pageRequest/userInformation/@groups, 'administrator') or util:contains(/page/pageRequest/userInformation/@groups, 'all-collections-editor') or util:contains(/page/pageRequest/userInformation/@groups, $thisCollectionEditor))">
138 <table id="meta{@nodeID}">
139 <xsl:attribute name="style">
140 <xsl:choose>
141 <xsl:when test="/page/pageRequest/paramList/param[@name = 'dmd']/@value = 'true'">
142 <xsl:text>display:block;</xsl:text>
143 </xsl:when>
144 <xsl:otherwise>
145 <xsl:text>display:none;</xsl:text>
146 </xsl:otherwise>
147 </xsl:choose>
148 </xsl:attribute>
149 <xsl:value-of select="util:clearMetadataStorage()"/>
150 <xsl:for-each select="metadataList/metadata">
151 <xsl:sort select="@name"/>
152 <xsl:if test="util:checkMetadataNotDuplicate(@name, .)">
153 <tr>
154 <td class="metaTableCellName"><xsl:value-of select="@name"/></td>
155 <td class="metaTableCell"><xsl:value-of select="."/></td>
156 </tr>
157 </xsl:if>
158 </xsl:for-each>
159 </table>
160 </xsl:if>
161
162 <xsl:for-each select=".">
163 <xsl:call-template name="sectionImage"/>
164 </xsl:for-each>
165
166 <div id="text{@nodeID}" class="sectionText"><!-- *** -->
167 <xsl:attribute name="style">
168 <xsl:choose>
169 <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'image'">
170 <xsl:text>display:none;</xsl:text>
171 </xsl:when>
172 <xsl:otherwise>
173 <xsl:text>display:block;</xsl:text>
174 </xsl:otherwise>
175 </xsl:choose>
176 </xsl:attribute>
177 <!-- Get the section content from the document template -->
178 <xsl:apply-templates select="." mode="document"/>
179 </div>
180 <xsl:if test="documentNode">
181 <xsl:for-each select="documentNode">
182 <xsl:call-template name="wrapDocumentNodes"/>
183 </xsl:for-each>
184 </xsl:if>
185 </div>
186 </xsl:template>
187
188 <!-- the page content -->
189 <xsl:template match="/page/pageResponse/document">
190 <xsl:if test="/page/pageRequest/userInformation and (util:contains(/page/pageRequest/userInformation/@groups, 'administrator') or util:contains(/page/pageRequest/userInformation/@groups, 'all-collections-editor') or util:contains(/page/pageRequest/userInformation/@groups, $thisCollectionEditor))">
191 <script type="text/javascript" src="interfaces/{$interface_name}/js/documentmaker_scripts.js"><xsl:text> </xsl:text></script>
192 <script type="text/javascript" src="interfaces/{$interface_name}/js/documentmaker_scripts_util.js"><xsl:text> </xsl:text></script>
193 <gsf:metadata name="all"/>
194 </xsl:if>
195
196 <xsl:if test="$bookswitch = 'off'">
197 <div id="bookdiv" style="visibility:hidden; height:0px; display:inline;"><xsl:text> </xsl:text></div>
198
199 <script type="text/javascript" src="interfaces/{$interface_name}/js/document_scripts.js"><xsl:text> </xsl:text></script>
200
201 <xsl:if test="/page/pageResponse/collection[@name = $collName]/metadataList/metadata[@name = 'tidyoption'] = 'tidy'">
202 <script type="text/javascript">
203 <xsl:text disable-output-escaping="yes">
204 if(document.URL.indexOf("book=on") != -1)
205 {
206 loadBook();
207 }
208 </xsl:text>
209 </script>
210 </xsl:if>
211
212 <!-- show the little berries for this document -->
213 <xsl:call-template name="documentBerryForDocumentPage"/>
214
215 <xsl:if test="/page/pageRequest/userInformation and (util:contains(/page/pageRequest/userInformation/@groups, 'administrator') or util:contains(/page/pageRequest/userInformation/@groups, 'all-collections-editor') or util:contains(/page/pageRequest/userInformation/@groups, $thisCollectionEditor))">
216 <xsl:call-template name="editBar"/>
217 </xsl:if>
218
219 <xsl:if test="not(/page/pageResponse/format[@type='display']/gsf:option[@name='sideBar']) or /page/pageResponse/format[@type='display']/gsf:option[@name='sideBar']/@value='true'">
220 <xsl:call-template name="rightSidebar"/>
221 </xsl:if>
222 </xsl:if>
223
224 <!-- display the document -->
225 <xsl:choose>
226 <xsl:when test="@external != ''">
227 <xsl:call-template name="externalPage">
228 <xsl:with-param name="external" select="@external"/>
229 </xsl:call-template>
230 </xsl:when>
231 <xsl:when test="$bookswitch = 'flashxml'">
232 <xsl:apply-templates mode="flashxml"/>
233 </xsl:when>
234 <xsl:when test="$bookswitch = 'on'">
235 <div id="bookdiv" style="display:inline;"><xsl:text> </xsl:text></div>
236 <!-- *** in document-scripts.js *** -->
237 <script type="text/javascript">
238 <xsl:text disable-output-escaping="yes">
239 if(document.URL.indexOf("book=on") != -1)
240 {
241 loadBook();
242 }
243 </xsl:text>
244 </script>
245 </xsl:when>
246 <xsl:otherwise>
247 <xsl:choose>
248 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or not(util:contains(/page/pageResponse/document/@selectedNode, '.'))">
249 <div id="gs-document">
250 <xsl:call-template name="documentPre"/>
251 <div id="gs-document-text" class="documenttext" collection="{/page/pageResponse/collection/@name}"><!-- *** -->
252 <xsl:for-each select="documentNode">
253 <xsl:call-template name="wrapDocumentNodes"/>
254 </xsl:for-each>
255 </div>
256 </div>
257 </xsl:when>
258 <xsl:otherwise>
259 <div id="gs-document">
260 <div id="tocLoadingImage" style="text-align:center;">
261 <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>
262 </div>
263 </div>
264 <script type="text/javascript">
265 <xsl:text disable-output-escaping="yes">
266 $(window).load(function()
267 {
268 loadTopLevelPage(function()
269 {
270 //Don't focus the section until the table of contents is loaded
271 var tocCheck = function()
272 {
273 if(gs.variables.tocLoaded)
274 {
275 focusSection("</xsl:text><xsl:value-of select="/page/pageResponse/document/@selectedNode"/><xsl:text disable-output-escaping="yes">");
276 }
277 else
278 {
279 setTimeout(tocCheck, 500);
280 }
281 }
282 tocCheck();
283 });
284 });
285 </xsl:text>
286 </script>
287 </xsl:otherwise>
288 </xsl:choose>
289 </xsl:otherwise>
290 </xsl:choose>
291
292 <div class="clear"><xsl:text> </xsl:text></div>
293 </xsl:template>
294
295 <xsl:template name="editBar">
296 <table style="width:100%"><tr>
297 <td id="editBarLeft" style="width:70%"><xsl:text> </xsl:text></td>
298 <td id="editBarRight">
299 <div style="text-align:center;">
300 <div style="margin:5px;" class="ui-state-default ui-corner-all">
301 <a style="padding: 3px; text-decoration:none;" href="{$library_name}?a=g&amp;sa=documentbasket&amp;c=&amp;s=DisplayDocumentList&amp;rt=r&amp;p.c={/page/pageResponse/collection/@name}&amp;docToEdit={/page/pageResponse/document/documentNode/@nodeID}"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.edit_structure')"/></a>
302 </div>
303 <div style="margin:5px;" class="ui-state-default ui-corner-all">
304 <a id="editContentButton" style="padding: 3px; text-decoration:none;" href="javascript:readyPageForEditing();"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.edit_content')"/></a>
305 </div>
306 </div>
307 </td>
308 </tr></table>
309 <gslib:langfrag name="dse"/><!--<xsl:call-template name="document-editor-language-fragments"/>-->
310 </xsl:template>
311
312 <xsl:template name="rightSidebar">
313 <table id="rightSidebar">
314 <tr><td>
315 <xsl:call-template name="viewOptions"/>
316 </td></tr>
317 <tr><td>
318 <div id="contentsArea">
319 <!-- show the berry basket if it's turned on -->
320 <gslib:berryBasket/>
321
322 <!-- the book's cover image -->
323 <div id="coverImage">
324 <xsl:attribute name="class">
325 <xsl:choose>
326 <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>
327 <xsl:otherwise>hidden</xsl:otherwise>
328 </xsl:choose>
329 </xsl:attribute>
330 <gslib:coverImage/><xsl:text> </xsl:text>
331 </div>
332
333 <!-- the contents (if enabled) -->
334 <xsl:choose>
335 <xsl:when test="/page/pageResponse/document/documentNode/@docType = 'paged'">
336 <gsf:image type="Thumb"/>
337 <!-- Table of contents will be dynamically retrieved when viewing a paged document -->
338 <script type="text/javascript">
339 <xsl:text disable-output-escaping="yes">
340 $(window).load(function()
341 {
342 retrieveTableOfContentsAndTitles();
343 });
344 </xsl:text>
345 </script>
346 <div id="tableOfContents"><xsl:text> </xsl:text></div>
347 <div id="tocLoadingImage" style="text-align:center;">
348 <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>
349 </div>
350 <table style="width:100%;"><tbody><tr>
351 <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>
352 </tr></tbody></table>
353 </xsl:when>
354 <xsl:when test="not(/page/pageRequest/paramList/param[@name = 'ed']/@value = '1')">
355 <div id="tableOfContents">
356 <div id="tocLoadingImage" style="text-align:center;">
357 <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>
358 </div>
359 </div>
360 <script type="text/javascript">
361 <xsl:text disable-output-escaping="yes">
362 $(window).load(function()
363 {
364 retrieveFullTableOfContents();
365 });
366 </xsl:text>
367 </script>
368 </xsl:when>
369 <xsl:otherwise>
370 <div id="tableOfContents">
371 <xsl:attribute name="class">
372 <xsl:choose>
373 <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>
374 <xsl:otherwise>hidden</xsl:otherwise>
375 </xsl:choose>
376 </xsl:attribute>
377 <xsl:apply-templates select="documentNode" mode="TOC"/>
378 </div>
379 </xsl:otherwise>
380 </xsl:choose>
381 </div>
382 </td></tr>
383 </table>
384 </xsl:template>
385
386 <!-- Highlight annotations if requested -->
387 <xsl:template match="annotation">
388 <xsl:choose>
389 <xsl:when test="/page/pageRequest/paramList/param[@name='hl' and @value='on']">
390 <span class="termHighlight"><xsl:value-of select="."/></span>
391 </xsl:when>
392 <xsl:otherwise>
393 <span class="noTermHighlight"><xsl:value-of select="."/></span>
394 </xsl:otherwise>
395 </xsl:choose>
396 </xsl:template>
397
398 <xsl:template match="documentNode" mode="sectionTitleFormat">
399 <p>
400 <xsl:attribute name="class"><xsl:value-of select="util:hashToDepthClass(@nodeID)"/> sectionHeader</xsl:attribute>
401
402 <xsl:if test="util:hashToSectionId(@nodeID)">
403 <span class="sectionNumberSpan">
404 <xsl:value-of select="util:hashToSectionId(@nodeID)"/>
405 <xsl:text> </xsl:text>
406 </span>
407 </xsl:if>
408 <!-- Display the title for the section regardless of whether automatic section numbering is turned on -->
409 <span><xsl:apply-templates select="." mode="sectionTitle"/></span>
410 </p>
411 </xsl:template>
412
413 <!-- The default template for displaying section titles -->
414 <xsl:template match="documentNode" mode="sectionTitle">
415 <xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Title']"/>
416 </xsl:template>
417
418 <xsl:template name="sectionImage">
419 <gsf:variable name="screenImageWidth"><gsf:metadata name="ScreenWidth"/></gsf:variable>
420 <gsf:variable name="screenImageHeight"><gsf:metadata name="ScreenHeight"/></gsf:variable>
421 <gsf:variable name="imageWidth"><gsf:metadata name="ImageWidth"/></gsf:variable>
422 <gsf:variable name="imageHeight"><gsf:metadata name="ImageHeight"/></gsf:variable>
423
424 <xsl:choose>
425 <xsl:when test="metadataList/metadata[@name = 'Screen'] and metadataList/metadata[@name = 'Source']">
426 <div id="wrap{util:replace(@nodeID, '.', '_')}" class="zoomImage" style="position:relative; width: {$screenImageWidth}px; height: {$screenImageHeight}px;">
427 <div id="small{util:replace(@nodeID, '.', '_')}" style="position:relative; width: {$screenImageWidth}px; height: {$screenImageHeight}px;">
428 <gsf:image type="screen"/>
429 </div>
430 <div id="mover{util:replace(@nodeID, '.', '_')}" style="border: 1px solid green; position: absolute; top: 0; left: 0; width: 198px; height: 198px; overflow: hidden; z-index: 100; background: white; display: none;">
431 <div id="overlay{util:replace(@nodeID, '.', '_')}" style="width: 200px; height: 200px; position: absolute; top: 0; left: 0; z-index: 200;">
432 <xsl:text> </xsl:text>
433 </div>
434 <div id="large{util:replace(@nodeID, '.', '_')}" style="position: relative;">
435 <gsf:image type="source"/>
436 </div>
437 </div>
438 </div>
439 <script type="text/javascript">
440 <xsl:text disable-output-escaping="yes">
441 $(window).load(function()
442 {
443 var nodeID = "</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">";
444 var bigHeight = </xsl:text><xsl:value-of select="$imageHeight"/><xsl:text disable-output-escaping="yes">;
445 var smallHeight = </xsl:text><xsl:value-of select="$screenImageHeight"/><xsl:text disable-output-escaping="yes">;
446
447 nodeID = nodeID.replace(/\./g, "_");
448 var multiplier = bigHeight / smallHeight;
449
450 $("#wrap" + nodeID).anythingZoomer({
451 smallArea: "#small" + nodeID,
452 largeArea: "#large" + nodeID,
453 zoomPort: "#overlay" + nodeID,
454 mover: "#mover" + nodeID,
455 expansionSize:50,
456 speedMultiplier:multiplier
457 });
458 });
459 </xsl:text>
460 </script>
461 </xsl:when>
462 <xsl:when test="metadataList/metadata[@name = 'Screen']">
463 <div id="image{@nodeID}">
464 <xsl:attribute name="style">
465 <xsl:choose>
466 <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'text'">
467 <xsl:text>display:none;</xsl:text>
468 </xsl:when>
469 <xsl:otherwise>
470 <xsl:text>display:block;</xsl:text>
471 </xsl:otherwise>
472 </xsl:choose>
473 </xsl:attribute>
474 <gsf:image type="screen"/>
475 </div>
476 </xsl:when>
477 </xsl:choose>
478 </xsl:template>
479
480 <!-- The default template for displaying the document content -->
481 <xsl:template match="documentNode" mode="document">
482 <!-- Hides the "This document has no text." message -->
483 <xsl:variable name="noText"><gsf:metadata name="NoText"/></xsl:variable>
484
485 <!-- Section text -->
486 <xsl:for-each select="nodeContent">
487 <xsl:for-each select="node()">
488 <xsl:choose>
489 <xsl:when test="not(name())">
490 <xsl:if test="not($noText = '1')">
491 <xsl:value-of select="." disable-output-escaping="yes"/>
492 </xsl:if>
493 </xsl:when>
494 <xsl:otherwise>
495 <xsl:apply-templates select="."/>
496 </xsl:otherwise>
497 </xsl:choose>
498 </xsl:for-each>
499 </xsl:for-each><xsl:text> </xsl:text>
500 </xsl:template>
501
502 <!-- This template is used to display the table of contents -->
503 <xsl:template match="documentNode" mode="TOC">
504
505 <!-- check if this is the currently selected table of contents item -->
506 <xsl:variable name="isCurrent" select="nodeContent"/>
507
508 <!-- formulate the link -->
509 <xsl:variable name="contentsLink">
510 <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
511 </xsl:variable>
512
513 <ul>
514 <table><tr>
515 <!-- The expand/collapse button (not displayed for the top level node) -->
516 <xsl:if test="util:hashToDepthClass(@nodeID) != 'sectionHeaderDepthTitle'">
517 <td>
518 <xsl:choose>
519 <xsl:when test="not(nodeContent and not(documentNode))">
520 <img id="ttoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">
521 <xsl:attribute name="src">
522 <xsl:choose>
523 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
524 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
525 </xsl:when>
526 <xsl:otherwise>
527 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
528 </xsl:otherwise>
529 </xsl:choose>
530 </xsl:attribute>
531 </img>
532 </xsl:when>
533 <xsl:otherwise>
534 <xsl:attribute name="class">emptyIcon</xsl:attribute>
535 </xsl:otherwise>
536 </xsl:choose>
537 </td>
538 </xsl:if>
539
540 <!-- The chapter/page icon -->
541 <td>
542 <img>
543 <xsl:if test="nodeContent and not(documentNode)">
544 <xsl:attribute name="class">leafNode</xsl:attribute>
545 </xsl:if>
546
547 <xsl:attribute name="src">
548 <xsl:choose>
549 <xsl:when test="nodeContent and not(documentNode)">
550 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'page_image')"/>
551 </xsl:when>
552 <xsl:otherwise>
553 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'chapter_image')"/>
554 </xsl:otherwise>
555 </xsl:choose>
556 </xsl:attribute>
557 </img>
558 </td>
559
560 <!-- The section name, links to the section in the document -->
561 <td>
562 <a id="toclink{@nodeID}">
563 <xsl:choose>
564 <xsl:when test="/page/pageResponse/document/@docType = 'paged'">
565 <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>
566 </xsl:when>
567 <xsl:otherwise>
568 <xsl:attribute name="href">javascript:focusSection('<xsl:value-of select="@nodeID"/>');</xsl:attribute>
569 </xsl:otherwise>
570 </xsl:choose>
571 <xsl:if test="util:hashToSectionId(@nodeID)">
572 <xsl:value-of select="util:hashToSectionId(@nodeID)"/>
573 <xsl:text> </xsl:text>
574 </xsl:if>
575 <xsl:apply-templates select="." mode="sectionTitle"/>
576 </a>
577 </td>
578 </tr></table>
579
580 <!-- display any child items -->
581 <xsl:if test="documentNode">
582 <li id="toc{@nodeID}">
583 <xsl:attribute name="style">
584 <xsl:choose>
585 <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
586 <xsl:text>display:block;</xsl:text>
587 </xsl:when>
588 <xsl:otherwise>
589 <xsl:text>display:none;</xsl:text>
590 </xsl:otherwise>
591 </xsl:choose>
592 </xsl:attribute>
593 <xsl:apply-templates select="documentNode" mode="TOC"/>
594 </li>
595 </xsl:if>
596
597 </ul>
598 </xsl:template>
599
600 <!-- Used to produce a version of the page in a format that can be read by the realistic books plugin -->
601 <xsl:template match="documentNode" mode="flashxml">
602 <xsl:text disable-output-escaping="yes">
603 &lt;Section&gt;
604 &lt;Description&gt;
605 &lt;Metadata name="Title"&gt;
606 </xsl:text>
607 <xsl:value-of select="normalize-space(metadataList/metadata[@name = 'Title'])"/>
608 <xsl:text disable-output-escaping="yes">
609 &lt;/Metadata&gt;
610 &lt;/Description&gt;
611 </xsl:text>
612
613 <xsl:value-of select="normalize-space(nodeContent)" disable-output-escaping="yes"/>
614
615 <xsl:if test="documentNode">
616 <xsl:apply-templates select="documentNode" mode="flashxml"/>
617 </xsl:if>
618
619 <xsl:text disable-output-escaping="yes">
620 &lt;/Section&gt;
621 </xsl:text>
622 </xsl:template>
623
624 <xsl:template name="externalPage">
625 <xsl:param name="external"/>
626 <xsl:variable name="go_forward_link">
627 <a>
628 <xsl:attribute name="href">
629 <xsl:value-of select="$external"/>
630 </xsl:attribute>
631 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'external.go_forward')"/>
632 </a>
633 </xsl:variable>
634 <h2><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'external.title')"/></h2>
635 <p><xsl:value-of select="util:getInterfaceTextWithDOM($interface_name, /page/@lang, 'external.text', $go_forward_link)" disable-output-escaping="yes"/></p>
636 </xsl:template>
637
638 <xsl:template match="/page"><xsl:apply-templates select="/page/pageResponse/document"/></xsl:template> <!-- this to be deleted eventually -->
639
640 <xsl:template name="viewOptions">
641 <table class="viewOptions ui-state-default ui-corner-all"><tr>
642
643 <!-- Paged-image options -->
644 <xsl:if test="count(//documentNode/metadataList/metadata[@name = 'Screen']) > 0 or /page/pageResponse/document/documentNode/@docType = 'paged'">
645 <td>
646 <select id="viewSelection" onchange="changeView();">
647 <xsl:choose>
648 <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'image'">
649 <option>Default view</option>
650 <option selected="true">Image view</option>
651 <option>Text view</option>
652 </xsl:when>
653 <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'text'">
654 <option>Default view</option>
655 <option>Image view</option>
656 <option selected="true">Text view</option>
657 </xsl:when>
658 <xsl:otherwise>
659 <option selected="true">Default view</option>
660 <option>Image view</option>
661 <option>Text view</option>
662 </xsl:otherwise>
663 </xsl:choose>
664 </select>
665 </td>
666 </xsl:if>
667
668 <!-- Realistic books link -->
669 <xsl:if test="/page/pageResponse/collection[@name = $collName]/metadataList/metadata[@name = 'tidyoption'] = 'tidy'">
670 <td>
671 <img>
672 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'realistic_books_image')"/></xsl:attribute>
673 </img>
674 <input id="rbOption" type="checkbox" onclick="bookInit();" class="optionCheckBox"/>
675 </td>
676 </xsl:if>
677
678 <!-- Highlight on/off button -->
679 <xsl:if test="/page/pageRequest/paramList/param[@name = 'p.a']/@value = 'q' or /page/pageRequest/paramList/param[@name = 's1.query']">
680 <td>
681 <img>
682 <xsl:attribute name="src"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'highlight_image')"/></xsl:attribute>
683 </img>
684 <input id="highlightOption" type="checkbox" class="optionCheckBox">
685 <xsl:choose>
686 <xsl:when test="/page/pageRequest/paramList/param[@name = 'hl']/@value = 'on'">
687 <xsl:attribute name="onclick">
688 <xsl:text>removeHighlight();</xsl:text>
689 </xsl:attribute>
690 <xsl:attribute name="checked">true</xsl:attribute>
691 </xsl:when>
692 <xsl:otherwise>
693 <xsl:attribute name="onclick">
694 <xsl:text>addHighlight();</xsl:text>
695 </xsl:attribute>
696 </xsl:otherwise>
697 </xsl:choose>
698 </input>
699 </td>
700 </xsl:if>
701 <td style="vertical-align:top; text-align:right;">
702 <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'">
703 <span class="tableOfContentsTitle"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.table_of_contents')"/></span>
704
705 <a id="sidebarMinimizeButton" href="javascript:minimizeSidebar();" style="float: right; font-size:0.6em;">
706 <img class="icon" style="padding-top:3px;">
707 <xsl:attribute name="src">
708 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
709 </xsl:attribute>
710 </img>
711 </a>
712 <a id="sidebarMaximizeButton" href="javascript:maximizeSidebar();" style="float: right; font-size:0.6em; display:none;">
713 <img class="icon" style="padding-top:3px;">
714 <xsl:attribute name="src">
715 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
716 </xsl:attribute>
717 </img>
718 </a>
719 </xsl:if>
720 </td>
721 </tr>
722 <xsl:if test="count(//documentNode/metadataList/metadata[@name = 'Screen']) > 0 and count(//documentNode/metadataList/metadata[@name = 'Source']) > 0">
723 <tr>
724 <td style="width:40%;">
725 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoom')"/><input id="zoomToggle" type="checkbox"/>
726 <script type="text/javascript">
727 <xsl:text disable-output-escaping="yes">
728 $("#zoomToggle").change(function()
729 {
730 _imageZoomEnabled = !_imageZoomEnabled;
731 });
732 </xsl:text>
733 </script>
734 </td>
735 <td style="width:60%;">
736 <div>
737 <div style="float:left; width:30%;"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.zoom_size')"/><xsl:text>:</xsl:text></div>
738 <div id="zoomSlider" style="float:right; width:65%; height:5px; margin-top:6px;"><xsl:text> </xsl:text></div>
739 <script type="text/javascript">
740 <xsl:text disable-output-escaping="yes">
741 $("#zoomSlider").slider(
742 {
743 change: function(event, ui)
744 {
745 var sliderValue = ui.value;
746 var divs = document.getElementsByTagName("DIV");
747 for(var i = 0; i &lt; divs.length; i++)
748 {
749 if(divs[i].getAttribute("id") &amp;&amp; divs[i].getAttribute("id").search(/^mover.*/) != -1)
750 {
751 divs[i].style.height = 200 + (2 * sliderValue) + "px";
752 divs[i].style.width = 200 + (2 * sliderValue) + "px";
753 }
754 }
755 }
756 });
757 </xsl:text>
758 </script>
759 <style>
760 .ui-slider .ui-slider-handle{height:0.8em; width:1.0em;}
761 </style>
762 <div style="float:clear;"><xsl:text> </xsl:text></div>
763 </div>
764 </td>
765 </tr>
766 </xsl:if>
767 </table>
768 </xsl:template>
769
770 <xsl:template name="documentPre">
771 <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
772 <xsl:call-template name="mapFeatures"/>
773 </xsl:if>
774 </xsl:template>
775
776 <xsl:template name="mapFeatures">
777 <div id="map_canvas"><xsl:text> </xsl:text></div>
778
779 <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
780 <div style="background:#BBFFBB; padding: 5px; margin:0px auto; width:890px;">
781 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.maps.nearby_docs')"/>
782 <img id="nearbyDocumentsToggle" src="interfaces/oran/images/expand.png">
783 <xsl:attribute name="onclick">
784 <xsl:text>performDistanceSearch('</xsl:text>
785 <xsl:value-of select="@nodeID"/>
786 <xsl:text>', '</xsl:text>
787 <gsf:metadata name="Latitude"/>
788 <xsl:text>', '</xsl:text>
789 <gsf:metadata name="Longitude"/>
790 <xsl:text>', 2);</xsl:text>
791 </xsl:attribute>
792 </img>
793 <div id="nearbyDocuments"><xsl:text> </xsl:text></div>
794 </div>
795 </xsl:if>
796
797 <div id="jsonNodes" style="display:none;">
798 <xsl:text>[</xsl:text>
799 <xsl:for-each select="//documentNode">
800 <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
801 <xsl:text>{</xsl:text>
802 <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text>
803 <xsl:text disable-output-escaping="yes">"title":"</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Title']"/><xsl:text disable-output-escaping="yes">",</xsl:text>
804 <xsl:text disable-output-escaping="yes">"lat":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Latitude']"/><xsl:text>,</xsl:text>
805 <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/>
806 <xsl:text>}</xsl:text>
807 <xsl:if test="not(position() = count(//documentNode))">
808 <xsl:text>,</xsl:text>
809 </xsl:if>
810 </xsl:if>
811 </xsl:for-each>
812 <xsl:text>]</xsl:text>
813 </div>
814 </xsl:template>
815</xsl:stylesheet>
816
Note: See TracBrowser for help on using the repository browser.