root/main/trunk/greenstone3/web/interfaces/default/transform/pages/document.xsl @ 26024

Revision 26024, 24.2 KB (checked in by sjm84, 8 years ago)

Some fixes to the paged-image and zooming

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    <xsl:import href="layouts/toc.xsl"/>
14   
15    <xsl:variable name="bookswitch">
16        <xsl:choose>
17            <xsl:when test="/page/pageRequest/paramList/param[@name='book']/@value">
18                <xsl:value-of select="/page/pageRequest/paramList/param[@name='book']/@value"/>
19            </xsl:when>
20            <xsl:otherwise>off</xsl:otherwise>
21        </xsl:choose>
22    </xsl:variable>
23
24    <!-- set page title -->
25    <xsl:template name="pageTitle"><gslib:documentTitle/></xsl:template>
26
27    <!-- set page breadcrumbs -->
28    <xsl:template name="breadcrumbs">
29        <gslib:siteLink/><gslib:rightArrow/>
30        <gslib:collectionNameLinked/><gslib:rightArrow/>
31        <a>
32            <xsl:attribute name="href">
33                <xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="$collName"/>/document/<xsl:value-of select="/page/pageResponse/document/documentNode[1]/@nodeID"/>
34            </xsl:attribute>
35            <xsl:variable name="documentTitleVar">
36                <gslib:documentTitle/>
37            </xsl:variable>
38            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.document')"/>
39        </a>
40    </xsl:template>
41   
42    <xsl:template match="/">
43        <xsl:choose>
44            <!-- if this is the realistic books version of the page -->
45            <xsl:when test="$bookswitch = 'flashxml'">
46                <html>
47                    <body>
48                        <xsl:apply-templates select="/page/pageResponse/document"/>
49                    </body>
50                </html>
51            </xsl:when>
52            <!-- if this is the regular version of the page -->
53            <xsl:otherwise>
54                <xsl:call-template name="mainTemplate"/>
55            </xsl:otherwise>
56        </xsl:choose>
57    </xsl:template>
58   
59    <xsl:template name="documentHeading">
60        <b><gsf:metadata name="Title"/></b><br/>
61    </xsl:template>
62   
63    <xsl:template name="documentContent">
64        <xsl:choose>
65            <xsl:when test="@docType='simple'">
66                <div id="gs-document">
67                    <xsl:call-template name="wrappedSectionImage"/>
68                    <div id="gs-document-text">
69                        <xsl:call-template name="documentNodeText"/>
70                    </div>
71                </div>
72            </xsl:when>
73            <xsl:otherwise>
74                <xsl:call-template name="wrappedDocument"/>
75            </xsl:otherwise>
76        </xsl:choose>
77    </xsl:template>
78   
79    <xsl:template name="sectionHeader">
80        <xsl:call-template name="sectionTitle"/>
81    </xsl:template>
82   
83    <xsl:template name="topLevelSectionContent">
84        <xsl:call-template name="wrappedSectionImage"/>
85        <xsl:call-template name="wrappedSectionText"/>
86    </xsl:template>
87   
88    <xsl:template name="sectionContent">
89        <xsl:call-template name="wrappedSectionImage"/>
90        <xsl:call-template name="wrappedSectionText"/>
91    </xsl:template>
92   
93    <xsl:template name="wrappedSectionText">
94        <div id="text{@nodeID}" class="sectionText"><!-- *** -->
95            <xsl:attribute name="style">
96                <xsl:choose>
97                    <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'image'">
98                        <xsl:text>display:none;</xsl:text>
99                    </xsl:when>
100                    <xsl:otherwise>
101                        <xsl:text>display:block;</xsl:text>
102                    </xsl:otherwise>
103                </xsl:choose>
104            </xsl:attribute>
105
106            <xsl:call-template name="documentNodeText"/>
107        </div>
108    </xsl:template>
109   
110    <xsl:template name="sectionImage">
111        <gsf:image type="screen"/>
112    </xsl:template>
113   
114    <!-- Used to make sure that regardless what the collection designer uses for the title and content we can wrap it properly -->
115    <!-- If editing, be aware that the Document Basket looks for specific classes that this template bakes in (key points marked with ***) -->
116    <xsl:template name="wrapDocumentNodes">
117        <a name="{@nodeID}"><xsl:text> </xsl:text></a>
118       
119        <!-- Section header -->
120        <table class="sectionHeader"><tr>
121
122            <!-- Expand/collapse button -->
123            <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'">
124                <td class="headerTD">
125                    <img id="dtoggle{@nodeID}" onclick="toggleSection('{@nodeID}');" class="icon">         
126                        <xsl:attribute name="src">
127                            <xsl:choose>
128                                <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or util:oidIsMatchOrParent(@nodeID, /page/pageResponse/document/@selectedNode)">
129                                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'collapse_image')"/>
130                                </xsl:when>
131                                <xsl:otherwise>
132                                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'expand_image')"/>
133                                </xsl:otherwise>
134                            </xsl:choose>
135                        </xsl:attribute>
136                    </img>
137                </td>
138            </xsl:if>
139                   
140            <!-- Title -->
141            <td id="header{@nodeID}" class="headerTD sectionTitle"><!-- *** -->
142                <p>
143                    <xsl:attribute name="class"><xsl:value-of select="util:hashToDepthClass(@nodeID)"/> sectionHeader</xsl:attribute>
144
145                    <xsl:if test="util:hashToSectionId(@nodeID)">
146                        <span class="sectionNumberSpan">
147                            <xsl:value-of select="util:hashToSectionId(@nodeID)"/>
148                            <xsl:text> </xsl:text>
149                        </span>
150                    </xsl:if>
151                    <!-- Display the title for the section regardless of whether automatic section numbering is turned on -->
152                    <span><xsl:call-template name="sectionHeader"/></span>
153                </p>
154            </td>
155           
156            <!-- "back to top" link -->
157            <xsl:if test="util:hashToDepthClass(@nodeID) != 'sectionHeaderDepthTitle'">
158                <td class="backToTop headerTD">
159                    <a href="javascript:scrollToTop();">
160                        <xsl:text disable-output-escaping="yes">&#9650;</xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.back_to_top')"/>
161                    </a>
162                </td>
163            </xsl:if>
164        </tr></table>
165
166        <div id="doc{@nodeID}"><!-- *** -->
167            <xsl:choose>
168                <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or /page/pageResponse/document/@selectedNode = @nodeID">
169                    <xsl:attribute name="class">
170                        <xsl:text>sectionContainer hasText</xsl:text>
171                    </xsl:attribute>
172                    <xsl:attribute name="style">
173                        <xsl:text>display:block;</xsl:text>
174                    </xsl:attribute>
175                </xsl:when>
176                <xsl:when test="/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or util:oidIsMatchOrParent(@nodeID, /page/pageResponse/document/@selectedNode)">
177                    <xsl:attribute name="class">
178                        <xsl:text>sectionContainer noText</xsl:text>
179                    </xsl:attribute>
180                    <xsl:attribute name="style">
181                        <xsl:text>display:block;</xsl:text>
182                    </xsl:attribute>
183                </xsl:when>
184                <xsl:otherwise>
185                    <xsl:attribute name="class">
186                        <xsl:text>sectionContainer noText</xsl:text>
187                    </xsl:attribute>
188                    <xsl:attribute name="style">
189                        <xsl:text>display:none;</xsl:text>
190                    </xsl:attribute>
191                </xsl:otherwise>
192            </xsl:choose>
193       
194            <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))">
195                <table id="meta{@nodeID}">
196                    <xsl:attribute name="style">
197                        <xsl:choose>
198                            <xsl:when test="/page/pageRequest/paramList/param[@name = 'dmd']/@value = 'true'">
199                                <xsl:text>display:block;</xsl:text>
200                            </xsl:when>
201                            <xsl:otherwise>
202                                <xsl:text>display:none;</xsl:text>
203                            </xsl:otherwise>
204                        </xsl:choose>
205                    </xsl:attribute>
206                    <xsl:value-of select="util:clearMetadataStorage()"/>
207                    <xsl:for-each select="metadataList/metadata">
208                        <xsl:sort select="@name"/>
209                        <xsl:if test="util:checkMetadataNotDuplicate(@name, .)">
210                            <tr>
211                                <td class="metaTableCellName"><xsl:value-of select="@name"/></td>
212                                <td class="metaTableCell"><xsl:value-of disable-output-escaping="yes" select="."/></td>
213                            </tr>
214                        </xsl:if>
215                    </xsl:for-each>
216                </table>
217            </xsl:if>
218           
219            <xsl:choose>
220                <xsl:when test="../../document">
221                    <xsl:call-template name="topLevelSectionContent"/>
222                </xsl:when>
223                <xsl:otherwise>
224                    <xsl:call-template name="sectionContent"/>
225                </xsl:otherwise>
226            </xsl:choose>
227           
228            <xsl:if test="documentNode">
229                <xsl:for-each select="documentNode">
230                    <xsl:call-template name="wrapDocumentNodes"/>
231                </xsl:for-each>
232            </xsl:if>
233        </div> 
234    </xsl:template>
235
236    <!-- the page content -->
237    <xsl:template match="/page/pageResponse/document">
238        <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))">
239            <script type="text/javascript" src="interfaces/{$interface_name}/js/documentmaker_scripts.js"><xsl:text> </xsl:text></script>
240            <script type="text/javascript" src="interfaces/{$interface_name}/js/documentmaker_scripts_util.js"><xsl:text> </xsl:text></script>
241            <script type="text/javascript">
242                <xsl:text disable-output-escaping="yes">
243                    $(window).load(function()
244                    {
245                        if(gs.cgiParams.docEdit == "1")
246                        {
247                            readyPageForEditing();
248                        }
249                    });
250                </xsl:text>
251            </script>
252            <gsf:metadata name="all"/>
253        </xsl:if>
254
255        <xsl:if test="$bookswitch = 'off'">
256            <div id="bookdiv" style="visibility:hidden; height:0px; display:inline;"><xsl:text> </xsl:text></div>
257       
258            <script type="text/javascript" src="interfaces/{$interface_name}/js/document_scripts.js"><xsl:text> </xsl:text></script>
259           
260            <xsl:if test="/page/pageResponse/collection[@name = $collName]/metadataList/metadata[@name = 'tidyoption'] = 'tidy'">
261                <script type="text/javascript">
262                    <xsl:text disable-output-escaping="yes">
263                        if(document.URL.indexOf("book=on") != -1)
264                        {
265                            loadBook();
266                        }
267                    </xsl:text>
268                </script>
269            </xsl:if>
270                   
271            <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))">
272                <xsl:call-template name="editBar"/>
273            </xsl:if>
274
275            <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'">
276                <xsl:call-template name="rightSidebar"/>
277            </xsl:if>
278        </xsl:if>
279       
280        <!-- display the document -->
281        <xsl:choose>
282            <xsl:when test="@external != ''">
283                <xsl:call-template name="externalPage">
284                    <xsl:with-param name="external" select="@external"/>
285                </xsl:call-template>
286            </xsl:when>
287            <xsl:when test="$bookswitch = 'flashxml'">
288                <xsl:call-template name="documentNodeFlashXML"/>
289            </xsl:when>
290            <xsl:when test="$bookswitch = 'on'">
291                <div id="bookdiv" style="display:inline;"><xsl:text> </xsl:text></div>
292                <!-- *** in document-scripts.js *** -->
293                <script type="text/javascript">
294                    <xsl:text disable-output-escaping="yes">
295                        if(document.URL.indexOf("book=on") != -1)
296                        {
297                            loadBook();
298                        }
299                    </xsl:text>
300                </script>
301            </xsl:when>
302            <xsl:when test="@docType='simple'">
303                <xsl:call-template name="documentHeading"/><br/>
304                <xsl:call-template name="documentContent"/>
305            </xsl:when>         
306            <xsl:otherwise> <!-- display the standard greenstone document -->
307                <xsl:call-template name="documentContent"/>
308            </xsl:otherwise>
309        </xsl:choose>
310    </xsl:template>
311
312    <xsl:template name="wrappedDocument">
313        <xsl:choose>
314            <!-- NOTE: alb = ajax load bypass -->
315            <xsl:when test="/page/pageResponse/document/@docType = 'hierarchy' and (/page/pageRequest/paramList/param[@name = 'alb']/@value = '1' or (string-length(/page/pageRequest/paramList/param[@name = 'd']/@value) > 0 and (/page/pageRequest/paramList/param[@name = 'ed']/@value = '1' or not(util:contains(/page/pageResponse/document/@selectedNode, '.')))))">
316                <div id="gs-document">
317                    <xsl:call-template name="documentPre"/>
318                    <div id="gs-document-text" class="documenttext" collection="{/page/pageResponse/collection/@name}"><!-- *** -->
319                        <xsl:for-each select="documentNode">
320                            <xsl:call-template name="wrapDocumentNodes"/>
321                        </xsl:for-each>
322                    </div>
323                </div>
324            </xsl:when>
325            <xsl:when test="/page/pageResponse/document/@docType = 'paged' or /page/pageResponse/document/@docType = 'pagedhierarchy'">
326                <div id="gs-document">                         
327                    <div id="tocLoadingImage" style="text-align:center;">
328                        <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>
329                    </div>
330                </div>
331                <script type="text/javascript">
332                    <xsl:text disable-output-escaping="yes">
333                        $(window).load(function()
334                        {
335                            var url = gs.xsltParams.library_name + "?a=d&amp;c=" + gs.cgiParams.c + "&amp;excerptid=gs-document&amp;dt=hierarchy&amp;d=" + gs.cgiParams.d.replace(/([^.]*)\..*/, "$1");
336                            loadTopLevelPage(null, url);
337                        });
338                    </xsl:text>
339                </script>
340            </xsl:when>
341            <xsl:otherwise>
342                <div id="gs-document">                         
343                    <div id="tocLoadingImage" style="text-align:center;">
344                        <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>
345                    </div>
346                </div>
347                <script type="text/javascript">
348                    <xsl:text disable-output-escaping="yes">
349                        $(window).load(function()
350                        {
351                            loadTopLevelPage(function()
352                            {
353                                //Don't focus the section until the table of contents is loaded
354                                var tocCheck = function()
355                                {
356                                    if(gs.variables.tocLoaded)
357                                    {
358                                        focusSection("</xsl:text><xsl:value-of select="/page/pageResponse/document/@selectedNode"/><xsl:text disable-output-escaping="yes">");
359                                    }
360                                    else
361                                    {
362                                        setTimeout(tocCheck, 500);
363                                    }
364                                }
365                                tocCheck();
366                            });
367                        });
368                    </xsl:text>
369                </script>
370            </xsl:otherwise>
371        </xsl:choose>
372       
373        <div class="clear"><xsl:text> </xsl:text></div>
374    </xsl:template>
375   
376    <xsl:template name="editBar">
377        <table style="width:100%"><tr>
378            <td id="editBarLeft" style="width:70%"><xsl:text> </xsl:text></td>
379            <td id="editBarRight">
380                <div style="text-align:center;">
381                    <div style="margin:5px;" class="ui-state-default ui-corner-all">
382                        <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>
383                    </div>
384                    <div style="margin:5px;" class="ui-state-default ui-corner-all">
385                        <a id="editContentButton" style="padding: 3px; text-decoration:none;">
386                            <xsl:attribute name="href">
387                                <xsl:value-of select="$library_name"/>
388                                <xsl:text>/collection/</xsl:text>
389                                <xsl:value-of select="$collName"/>
390                                <xsl:text>/document/</xsl:text>
391                                <xsl:value-of select="/page/pageResponse/document/documentNode/@nodeID"/>
392                                <xsl:if test="not(/page/pageRequest/paramList/param[@name = 'docEdit']/@value = '1')">
393                                    <xsl:text>?ed=1&amp;docEdit=1</xsl:text>
394                                </xsl:if>
395                            </xsl:attribute>
396                            <xsl:choose>
397                                <xsl:when test="/page/pageRequest/paramList/param[@name = 'docEdit']/@value = '1'">
398                                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.hide_editor')"/>
399                                </xsl:when>
400                                <xsl:otherwise>
401                                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.edit_content')"/>
402                                </xsl:otherwise>
403                            </xsl:choose>
404                        </a>
405                    </div>
406                </div>
407            </td>
408        </tr></table>
409        <gslib:langfrag name="dse"/>
410    </xsl:template>
411   
412    <!-- Highlight annotations if requested -->
413    <xsl:template name="displayAnnotation">
414        <xsl:choose>
415            <xsl:when test="/page/pageRequest/paramList/param[@name = 'hl']/@value = 'on'">
416                <span class="termHighlight"><xsl:value-of select="."/></span>
417            </xsl:when>
418            <xsl:otherwise>
419                <span class="noTermHighlight"><xsl:value-of select="."/></span>
420            </xsl:otherwise>
421        </xsl:choose>
422    </xsl:template>
423       
424    <!-- The default template for displaying section titles -->
425    <xsl:template name="sectionTitle">
426        <xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Title']"/>
427    </xsl:template>
428   
429    <xsl:template name="wrappedSectionImage">
430        <gsf:variable name="screenImageWidth"><gsf:metadata name="ScreenWidth"/></gsf:variable>
431        <gsf:variable name="screenImageHeight"><gsf:metadata name="ScreenHeight"/></gsf:variable>
432        <gsf:variable name="imageWidth"><gsf:metadata name="ImageWidth"/></gsf:variable>
433        <gsf:variable name="imageHeight"><gsf:metadata name="ImageHeight"/></gsf:variable>
434
435        <xsl:choose>
436            <xsl:when test="metadataList/metadata[@name = 'Screen'] and metadataList/metadata[@name = 'SourceFile'] and ($imageWidth div $screenImageWidth > 1.2)">
437                <div id="image{@nodeID}">
438                    <div id="wrap{util:replace(@nodeID, '.', '_')}" class="zoomImage" style="position:relative; width: {$screenImageWidth}px; height: {$screenImageHeight}px;">
439                        <div id="small{util:replace(@nodeID, '.', '_')}" style="position:relative; width: {$screenImageWidth}px; height: {$screenImageHeight}px;">
440                            <gsf:image type="screen"/>
441                        </div>
442                        <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;">
443                            <div id="overlay{util:replace(@nodeID, '.', '_')}" style="width: 200px; height: 200px; position: absolute; top: 0; left: 0; z-index: 200;">
444                                <xsl:text> </xsl:text>
445                            </div>
446                            <div id="large{util:replace(@nodeID, '.', '_')}" style="position: relative; width: {$imageWidth}px; height: {$imageHeight}px;">
447                                <gsf:image type="source"/>
448                            </div>
449                        </div>
450                    </div>
451                    <script type="text/javascript">
452                        <xsl:text disable-output-escaping="yes">
453                            {
454                                var nodeID = "</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">";
455                                nodeID = nodeID.replace(/\./g, "_");
456
457                                var bigHeight = </xsl:text><xsl:value-of select="$imageHeight"/><xsl:text disable-output-escaping="yes">;
458                                var smallHeight = </xsl:text><xsl:value-of select="$screenImageHeight"/><xsl:text disable-output-escaping="yes">;
459
460                                var multiplier = bigHeight / smallHeight;
461
462                                $("#wrap" + nodeID).anythingZoomer({
463                                    smallArea: "#small" + nodeID,
464                                    largeArea: "#large" + nodeID,
465                                    zoomPort: "#overlay" + nodeID,
466                                    mover: "#mover" + nodeID,
467                                    expansionSize:50, 
468                                    speedMultiplier:multiplier   
469                                });
470
471                                $("#zoomOptions").css("display", "block");
472                            }
473                        </xsl:text>
474                    </script>
475                </div>
476            </xsl:when>
477            <xsl:otherwise>
478                <div id="image{@nodeID}">
479                    <xsl:attribute name="style">
480                        <xsl:choose>
481                            <xsl:when test="/page/pageRequest/paramList/param[@name = 'view']/@value = 'text'">
482                                <xsl:text>display:none;</xsl:text>
483                            </xsl:when>
484                            <xsl:otherwise>
485                                <xsl:text>display:block;</xsl:text>
486                            </xsl:otherwise>
487                        </xsl:choose>
488                    </xsl:attribute>
489                    <xsl:call-template name="sectionImage"/><xsl:text> </xsl:text>
490                </div>
491            </xsl:otherwise>
492        </xsl:choose>
493    </xsl:template>
494   
495    <!-- The default template for displaying the document node text -->
496    <!-- equivalent to gsf:text -->
497    <xsl:template name="documentNodeText">
498        <!-- Hides the "This document has no text." message -->
499        <xsl:variable name="noText"><gsf:metadata name="NoText"/></xsl:variable>
500        <xsl:if test="not($noText = '1')">
501            <!-- Section text -->
502            <xsl:for-each select="nodeContent">
503                <xsl:for-each select="node()">
504                    <xsl:choose>
505                        <xsl:when test="not(name())">
506                            <xsl:value-of select="." disable-output-escaping="yes"/>
507                        </xsl:when>
508                        <xsl:when test="name() = 'annotation'">
509                            <xsl:call-template name="displayAnnotation"/>
510                        </xsl:when>
511                        <xsl:otherwise>
512                            <xsl:apply-templates/>
513                        </xsl:otherwise>
514                    </xsl:choose>
515                </xsl:for-each>
516            </xsl:for-each>
517        </xsl:if><xsl:text> </xsl:text>
518    </xsl:template>
519
520    <!-- Used to produce a version of the page in a format that can be read by the realistic books plugin -->
521    <xsl:template name="documentNodeFlashXML">
522        <xsl:text disable-output-escaping="yes">
523            &lt;Section&gt;
524            &lt;Description&gt;
525            &lt;Metadata name="Title"&gt;
526        </xsl:text>
527        <xsl:value-of select="normalize-space(metadataList/metadata[@name = 'Title'])"/>
528        <xsl:text disable-output-escaping="yes">
529            &lt;/Metadata&gt;
530            &lt;/Description&gt;
531        </xsl:text>
532       
533        <xsl:value-of select="normalize-space(nodeContent)" disable-output-escaping="yes"/>
534               
535        <xsl:for-each select="documentNode">
536            <xsl:call-template name="documentNodeFlashXML"/>
537        </xsl:for-each>
538               
539        <xsl:text disable-output-escaping="yes">
540            &lt;/Section&gt;
541        </xsl:text>
542    </xsl:template>
543   
544    <xsl:template name="externalPage">
545        <xsl:param name="external"/>
546        <xsl:variable name="go_forward_link">
547            <a>
548                <xsl:attribute name="href">
549                    <xsl:value-of select="$external"/>
550                </xsl:attribute>
551                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'external.go_forward')"/>
552            </a>
553        </xsl:variable>
554        <h2><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'external.title')"/></h2>
555        <p><xsl:value-of select="util:getInterfaceTextWithDOM($interface_name, /page/@lang, 'external.text', $go_forward_link)" disable-output-escaping="yes"/></p>
556    </xsl:template>
557
558    <xsl:template match="/page"><xsl:apply-templates select="/page/pageResponse/document"/></xsl:template> <!-- this to be deleted eventually -->
559   
560    <xsl:template name="documentPre">
561        <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
562            <xsl:call-template name="mapFeatures"/>
563        </xsl:if>
564    </xsl:template>
565   
566    <xsl:template name="mapFeatures">
567        <div id="map_canvas" class="map_canvas_full"><xsl:text> </xsl:text></div>
568
569        <xsl:for-each select="documentNode">
570            <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
571                <div style="background:#BBFFBB; padding: 5px; margin:0px auto; width:890px;">
572                    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.maps.nearby_docs')"/>
573                    <img id="nearbyDocumentsToggle" style="margin-left:5px;" src="interfaces/{$interface_name}/images/expand.png">
574                        <xsl:attribute name="onclick">
575                            <xsl:text>performDistanceSearch('</xsl:text>
576                            <xsl:value-of select="@nodeID"/>
577                            <xsl:text>', '</xsl:text>
578                            <gsf:metadata name="Latitude"/>
579                            <xsl:text>', '</xsl:text>
580                            <gsf:metadata name="Longitude"/>
581                            <xsl:text>', 2);</xsl:text>
582                        </xsl:attribute>
583                    </img>
584                    <div id="nearbyDocuments"><xsl:text> </xsl:text></div>
585                </div>
586            </xsl:if>
587        </xsl:for-each>
588       
589        <div id="jsonNodes" style="display:none;">
590            <xsl:text>[</xsl:text>
591            <xsl:for-each select="//documentNode">
592                <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
593                    <xsl:text>{</xsl:text>
594                    <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text>
595                    <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>
596                    <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>
597                    <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/>
598                    <xsl:text>}</xsl:text>
599                    <xsl:if test="not(position() = count(//documentNode))">
600                        <xsl:text>,</xsl:text>
601                    </xsl:if>
602                </xsl:if>
603            </xsl:for-each>
604            <xsl:text>]</xsl:text>
605        </div>
606    </xsl:template>
607</xsl:stylesheet>
Note: See TracBrowser for help on using the browser.