source: main/trunk/greenstone3/web/interfaces/default/transform/pages/query.xsl@ 26400

Last change on this file since 26400 was 26400, checked in by kjdon, 12 years ago

tidying up term info and num docs matching display texts

File size: 22.3 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:gsvar="http://www.greenstone.org/skinning-var"
8 xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
9 extension-element-prefixes="java util"
10 exclude-result-prefixes="java util gsf">
11
12 <!-- use the 'main' layout -->
13 <xsl:import href="layouts/main.xsl"/>
14
15 <xsl:include href="query-common.xsl"/>
16 <!-- set page title -->
17 <xsl:template name="pageTitle"><gslib:serviceName/></xsl:template>
18
19 <!-- set page breadcrumbs -->
20 <xsl:template name="breadcrumbs"> <gslib:siteLink/><gslib:rightArrow/><xsl:if test="/page/pageResponse/collection"> <gslib:collectionNameLinked/><gslib:rightArrow/></xsl:if></xsl:template>
21
22 <!-- the page content -->
23 <xsl:template match="/page">
24 <xsl:if test="not(/page/pageRequest/paramList/param[@name = 'qs']) or /page/pageRequest/paramList/param[@name = 'qs']/@value = ''">
25 <xsl:call-template name="queryPage"/>
26 </xsl:if>
27 <xsl:call-template name="resultsPage"/>
28 </xsl:template>
29
30 <xsl:template name="resultsPage">
31 <xsl:call-template name="resultsPagePre"/>
32 <xsl:call-template name="displayMatchDocs"/>
33 <xsl:call-template name="displayTermInfo"/>
34 <xsl:call-template name="displayResults"/>
35 <xsl:call-template name="resultsPagePost"/>
36 </xsl:template>
37
38 <!-- optional cgi-params for links to document pages -->
39 <xsl:variable name="opt-doc-link-args">p.s=<gsvar:this-service/></xsl:variable>
40
41 <xsl:template name="displayResults">
42 <xsl:if test="/page/pageResponse/facetList/facet">
43 <script type="text/javascript" src="interfaces/{$interface_name}/js/facet-scripts.js"><xsl:text> </xsl:text></script>
44 <div id="facetSelector">
45 <xsl:for-each select="/page/pageResponse/facetList/facet">
46 <xsl:if test="count(count) > 0">
47 <ul class="facetTable ui-widget-content" indexName="{@name}">
48 <xsl:variable name="serviceName"><xsl:value-of select="/page/pageRequest/paramList/param[@name = 's']/@value"/></xsl:variable>
49 <xsl:variable name="indexShortName"><xsl:value-of select="@name"/></xsl:variable>
50 <xsl:variable name="countSize">
51 <xsl:choose>
52 <xsl:when test="/page/pageResponse/format[@type='search']/gsf:option[@name='facetTableRows']">
53 <xsl:value-of select="/page/pageResponse/format[@type='search']/gsf:option[@name='facetTableRows']/@value"/>
54 </xsl:when>
55 <xsl:otherwise>8</xsl:otherwise>
56 </xsl:choose>
57 </xsl:variable>
58
59 <li class="ui-widget-header" style="text-transform:capitalize; text-align:center;">
60 <xsl:choose>
61 <xsl:when test="/page/pageResponse/collection/serviceList/service[@name = $serviceName]/paramList/param[@name = 'index']">
62 <xsl:value-of select="/page/pageResponse/collection/serviceList/service[@name = $serviceName]/paramList/param[@name = 'index']/option[@name = $indexShortName]/displayItem"/>
63 </xsl:when>
64 <xsl:when test="/page/pageResponse/collection/serviceList/service[@name = $serviceName]/paramList/param[@name = 'complexField']/param[@name = 'fqf']">
65 <xsl:value-of select="/page/pageResponse/collection/serviceList/service[@name = $serviceName]/paramList/param[@name = 'complexField']/param[@name = 'fqf']/option[@name = $indexShortName]/displayItem"/>
66 </xsl:when>
67 </xsl:choose>
68 </li>
69 <xsl:for-each select="count">
70 <li>
71 <xsl:attribute name="style">
72 <xsl:if test="position() > $countSize">display:none;<xsl:value-of select="$indexShortName"/></xsl:if>
73 </xsl:attribute>
74 <input type="checkbox" onclick="performRefinedSearch();"/><span><xsl:value-of select="@name"/></span>(<xsl:value-of select="."/>)
75 </li>
76 </xsl:for-each>
77 <xsl:if test="count(count) > $countSize">
78 <li class="expandCollapseFacetList{$indexShortName}"><a class="expandCollapseFacetListLink{$indexShortName}" href="javascript:expandFacetList('{$indexShortName}', {$countSize});">See more...</a></li>
79 </xsl:if>
80 </ul>
81 </xsl:if>
82 </xsl:for-each>
83 </div>
84 </xsl:if>
85 <div id="resultsArea">
86 <xsl:attribute name="class">
87 <xsl:if test="/page/pageResponse/facetList/facet">facetedResults</xsl:if>
88 </xsl:attribute>
89 <table id="resultsTable">
90 <xsl:for-each select="pageResponse/documentNodeList/documentNode">
91 <tr id="div{@nodeID}" class="document">
92 <xsl:apply-templates select="."/>
93 <xsl:call-template name="documentNodePost"/>
94 </tr>
95 </xsl:for-each>
96 <br/>
97 </table>
98
99 <!-- Previous/Next buttons-->
100 <xsl:call-template name="prevNextButtons"/>
101 </div>
102 <xsl:if test="/page/pageResponse/facetList/facet">
103 <div style="clear:both;"><xsl:text> </xsl:text></div>
104 </xsl:if>
105 </xsl:template>
106
107 <xsl:template name="queryPage">
108 <xsl:for-each select="pageResponse/service">
109 <form name="QueryForm" method="get" action="{$library_name}/collection/{$collName}/search/{@name}">
110 <div>
111 <input type="hidden" name="a" value="q"/>
112 <input type="hidden" name="sa"><xsl:attribute name="value"><xsl:value-of select="/page/pageRequest/@subaction"/></xsl:attribute></input>
113 <input type="hidden" name="rt" value="rd"/>
114 <xsl:choose>
115 <xsl:when test="/page/pageRequest/paramList/param[@name = 's1.maxDocs']">
116 <input type="hidden" name="s1.maxDocs">
117 <xsl:attribute name="value">
118 <xsl:value-of select="/page/pageRequest/paramList/param[@name = 's1.maxDocs']/@value"/>
119 </xsl:attribute>
120 </input>
121 </xsl:when>
122 <xsl:otherwise>
123 <input type="hidden" name="s1.maxDocs" value="100"/>
124 </xsl:otherwise>
125 </xsl:choose>
126 <xsl:choose>
127 <xsl:when test="/page/pageRequest/paramList/param[@name = 's1.hitsPerPage']">
128 <input type="hidden" name="s1.hitsPerPage">
129 <xsl:attribute name="value">
130 <xsl:value-of select="/page/pageRequest/paramList/param[@name = 's1.hitsPerPage']/@value"/>
131 </xsl:attribute>
132 </input>
133 </xsl:when>
134 <xsl:otherwise>
135 <input type="hidden" name="s1.hitsPerPage" value="20"/>
136 </xsl:otherwise>
137 </xsl:choose>
138
139 <xsl:variable name="ns">s1.</xsl:variable>
140 <xsl:for-each select="paramList/param">
141 <xsl:choose>
142 <xsl:when test="@name = 'maxDocs' or @name = 'hitsPerPage'">
143 </xsl:when>
144 <xsl:when test="@type='multi'">
145 <xsl:apply-templates select="."><xsl:with-param name="ns" select="$ns"/></xsl:apply-templates>
146 </xsl:when>
147 <xsl:otherwise>
148 <xsl:call-template name="param-display"><xsl:with-param name="ns" select="$ns"/></xsl:call-template>
149 </xsl:otherwise>
150 </xsl:choose>
151 </xsl:for-each>
152 <br/>
153 <input type="submit"><xsl:attribute name="value"><xsl:value-of select="displayItem[@name='submit']"/></xsl:attribute></input>
154 </div>
155 </form>
156 </xsl:for-each>
157 </xsl:template>
158
159 <xsl:template name="displayMatchDocs">
160 <div id="matchdocs">
161 <xsl:variable name="numDocsMatched" select="/page/pageResponse/metadataList/metadata[@name='numDocsMatched']"/>
162 <xsl:variable name="numDocsReturned"><xsl:call-template name="numDocsReturned"/></xsl:variable> <!-- select="/page/pageResponse/metadataList/metadata[@name='numDocsReturned']"/>-->
163 <xsl:variable name="docLevel"><xsl:call-template name="documentLevel"/></xsl:variable>
164 <xsl:variable name="docLevelText"><xsl:call-template name="documentLevelText"><xsl:with-param name="numDocsMatched" select="$numDocsMatched"/><xsl:with-param name="level" select="$docLevelText"/></xsl:call-template></xsl:variable>
165 <xsl:choose>
166 <xsl:when test="$numDocsMatched='0' or $numDocsReturned='0'">
167 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.nodocsmatch', $docLevelText)"/>
168 </xsl:when>
169 <xsl:when test="$numDocsMatched='1' or $numDocsReturned='1'">
170 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.onedocsmatch', $docLevelText)"/>
171 </xsl:when>
172 <xsl:when test="$numDocsMatched">
173 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.manydocsmatch', concat($numDocsMatched, ';', $docLevelText))"/>
174 <xsl:if test="$numDocsReturned and not($numDocsMatched=$numDocsReturned)"> (<xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.docsreturned', concat($numDocsReturned, ';', $docLevelText))"/>)</xsl:if>
175 </xsl:when>
176 <xsl:when test="$numDocsReturned">
177 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.atleastdocsmatch', concat($numDocsReturned, ';', $docLevelText))"/>
178 </xsl:when>
179 </xsl:choose>
180 </div>
181
182 </xsl:template>
183
184 <xsl:template name="numDocsMatched">
185 <xsl:choose>
186 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsMatched']">
187 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsMatched']"/>
188 </xsl:when>
189 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']">
190 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']"/>
191 </xsl:when>
192 <xsl:otherwise><xsl:value-of select="count(/page/pageResponse/documentNodeList/documentNode)"/></xsl:otherwise>
193 </xsl:choose>
194 </xsl:template>
195
196 <xsl:template name="numDocsReturned">
197 <xsl:choose>
198 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']">
199 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']"/>
200 </xsl:when>
201 <xsl:otherwise><xsl:value-of select="count(/page/pageResponse/documentNodeList/documentNode)"/></xsl:otherwise>
202 </xsl:choose>
203 </xsl:template>
204
205 <xsl:template name="documentLevel">
206 <xsl:choose>
207 <xsl:when test="/page/pageRequest/paramList/param[@name='level']">
208 <xsl:value-of select="/page/pageRequest/paramList/param[@name='level']/@value" />
209 </xsl:when>
210 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.level']">
211 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.level']/@value" />
212 </xsl:when>
213 <xsl:otherwise>Doc</xsl:otherwise>
214 </xsl:choose>
215 </xsl:template>
216
217 <xsl:template name="documentLevelText">
218 <xsl:param name="numDocsMatched">0</xsl:param>
219 <xsl:param name="level">Doc</xsl:param>
220 <xsl:choose>
221 <xsl:when test="$numDocsMatched = 1">
222 <xsl:choose>
223 <xsl:when test="$level = 'Doc'">
224 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.document')"/>
225 </xsl:when>
226 <xsl:otherwise>
227 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.section')"/>
228 </xsl:otherwise>
229 </xsl:choose>
230 </xsl:when>
231 <!-- 0 or more than one use plural. is that the case for all langs??-->
232 <xsl:otherwise>
233 <xsl:choose>
234 <xsl:when test="$level = 'Doc'">
235 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.document_plural')"/>
236 </xsl:when>
237 <xsl:otherwise>
238 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.section_plural')"/>
239 </xsl:otherwise>
240 </xsl:choose>
241 </xsl:otherwise>
242 </xsl:choose>
243 </xsl:template>
244
245 <xsl:template name="displayTermInfo">
246
247 <!-- Find the number of documents displayed per page -->
248 <xsl:variable name="level"><xsl:call-template name="documentLevel"/></xsl:variable>
249
250 <!-- The list of search terms with their frequency and document count -->
251 <p class="termList">
252 <xsl:if test="count(/page/pageResponse/termList/stopword) &gt; 0">
253 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.common')"/><xsl:text> </xsl:text>
254 <xsl:for-each select="/page/pageResponse/termList/stopword">
255 <span style="font-style:italic;"><xsl:value-of select="@name"/></span><xsl:text> </xsl:text>
256 </xsl:for-each>
257 <br /><br />
258 </xsl:if>
259
260<!-- If there is only one or two search terms then show the expanded information --><xsl:choose>
261 <xsl:when test="count(/page/pageResponse/termList/term) &lt; 3">
262 <xsl:for-each select="/page/pageResponse/termList/term">
263 <xsl:variable name="occursTextKey">
264 <xsl:choose>
265 <xsl:when test="@freq = 1">query.termoccurs.1.1</xsl:when>
266 <xsl:when test="@numDocsMatch = 1">query.termoccurs.x.1</xsl:when>
267 <xsl:otherwise>query.termoccurs.x.x</xsl:otherwise></xsl:choose></xsl:variable>
268 <xsl:variable name="levelText"><xsl:call-template name="documentLevelText"><xsl:with-param name="level" select="$level"/><xsl:with-param name="numDocsMatched" select="@numDocsMatch"/></xsl:call-template></xsl:variable>
269 <span class="termInfo">
270 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, $occursTextKey, concat(@name,';', @freq,';', @numDocsMatch,';', $levelText))"/></span><br/>
271 </xsl:for-each>
272 </xsl:when>
273 <xsl:otherwise>
274 <xsl:for-each select="/page/pageResponse/termList/term">
275 <span style="font-style:italic;"><xsl:value-of select="@name"/></span> (<xsl:value-of select="@freq"/>)
276 </xsl:for-each>
277 </xsl:otherwise>
278 </xsl:choose>
279 </p>
280 </xsl:template>
281
282 <xsl:template name="prevNextButtons">
283 <!-- Current page -->
284 <xsl:variable name="currentPage">
285 <xsl:choose>
286 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.startPage']/@value">
287 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.startPage']/@value" />
288 </xsl:when>
289 <xsl:when test="/page/pageRequest/paramList/param[@name='startPage']/@value">
290 <xsl:value-of select="/page/pageRequest/paramList/param[@name='startPage']/@value" />
291 </xsl:when>
292 <xsl:otherwise>1</xsl:otherwise>
293 </xsl:choose>
294 </xsl:variable>
295
296 <xsl:variable name="usesS1">
297 <xsl:choose>
298 <xsl:when test="/page/pageResponse/service/paramList/param[@name='startPage']">true</xsl:when>
299 <xsl:otherwise>false</xsl:otherwise>
300 </xsl:choose>
301 </xsl:variable>
302
303 <!-- Find the total number of documents returned -->
304 <xsl:variable name="docMax">
305 <xsl:choose>
306 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']">
307 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']"/>
308 </xsl:when>
309 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsMatched']">
310 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsMatched']"/>
311 </xsl:when>
312 <xsl:otherwise><xsl:value-of select="count(/page/pageResponse/documentNodeList/documentNode)"/></xsl:otherwise>
313 </xsl:choose>
314 </xsl:variable>
315
316 <!-- Find the number of documents displayed per page -->
317 <xsl:variable name="docsPerPage">
318 <xsl:choose>
319 <xsl:when test="/page/pageRequest/paramList/param[@name='hitsPerPage']">
320 <xsl:value-of select="/page/pageRequest/paramList/param[@name='hitsPerPage']/@value" />
321 </xsl:when>
322 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']">
323 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']/@value" />
324 </xsl:when>
325 <xsl:otherwise>20</xsl:otherwise>
326 </xsl:choose>
327 </xsl:variable>
328
329 <!-- Find the number of documents displayed per page -->
330 <xsl:variable name="level">
331 <xsl:choose>
332 <xsl:when test="/page/pageRequest/paramList/param[@name='level']">
333 <xsl:value-of select="/page/pageRequest/paramList/param[@name='level']/@value" />
334 </xsl:when>
335 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.level']">
336 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.level']/@value" />
337 </xsl:when>
338 <xsl:otherwise>Doc</xsl:otherwise>
339 </xsl:choose>
340 </xsl:variable>
341
342 <table id="searchResultNavTable"><tr>
343 <xsl:variable name="startPageName"><xsl:if test="$usesS1 = 'true'">s1.</xsl:if>startPage</xsl:variable>
344
345 <!-- Previous button -->
346 <td id="prevArrowTD">
347 <xsl:if test="$currentPage != 1">
348 <a href="{$library_name}?a=q&amp;sa={/page/pageRequest/@subaction}&amp;c={$collName}&amp;s={/page/pageResponse/service/@name}&amp;rt=rd&amp;{$startPageName}={$currentPage - 1}&amp;qs={/page/pageRequest/paramList/param[@name='qs']/@value}">
349 <img src="interfaces/default/images/previous.png"/>
350 </a>
351 </xsl:if>
352 </td>
353 <td id="prevTD">
354 <xsl:if test="$currentPage != 1">
355 <a href="{$library_name}?a=q&amp;sa={/page/pageRequest/@subaction}&amp;c={$collName}&amp;s={/page/pageResponse/service/@name}&amp;rt=rd&amp;{$startPageName}={$currentPage - 1}&amp;qs={/page/pageRequest/paramList/param[@name='qs']/@value}">Previous</a>
356 </xsl:if>
357 </td>
358
359 <!-- Search result status bar (in english it reads "Displaying X to Y of Z documents") -->
360 <xsl:if test="$docMax &gt; 0">
361 <xsl:variable name="startdoc" select="($currentPage - 1) * $docsPerPage + 1"/>
362 <xsl:variable name="enddoc"><xsl:choose>
363 <xsl:when test="($currentPage * $docsPerPage + 1) &gt; $docMax">
364 <xsl:value-of select="$docMax"/>
365 </xsl:when>
366 <xsl:otherwise>
367 <xsl:value-of select="$currentPage * $docsPerPage"/>
368 </xsl:otherwise>
369 </xsl:choose></xsl:variable>
370 <xsl:variable name="level"> <xsl:choose>
371 <xsl:when test="$docMax = 1">
372 <xsl:text> </xsl:text>
373 <xsl:choose>
374 <xsl:when test="$level = 'Doc'">
375 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.document')"/>
376 </xsl:when>
377 <xsl:otherwise>
378 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.section')"/>
379 </xsl:otherwise>
380 </xsl:choose>
381 </xsl:when>
382 <xsl:otherwise>
383 <xsl:text> </xsl:text>
384 <xsl:choose>
385 <xsl:when test="$level = 'Doc'">
386 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.document_plural')"/>
387 </xsl:when>
388 <xsl:otherwise>
389 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.section_plural')"/>
390 </xsl:otherwise>
391 </xsl:choose>
392 </xsl:otherwise>
393 </xsl:choose></xsl:variable>
394 <td id="searchResultsStatusBar">
395 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.displayingnumdocs', concat($startdoc,';', $enddoc, ';', $docMax, ';', $level))"/>
396 </td>
397 </xsl:if>
398
399 <!-- Next button -->
400 <td id="nextTD">
401 <xsl:if test="($currentPage * $docsPerPage + 1) &lt; $docMax">
402 <a href="{$library_name}?a=q&amp;sa={/page/pageRequest/paramList/param[@name = 'sa']/@value}&amp;c={$collName}&amp;s={/page/pageResponse/service/@name}&amp;rt=rd&amp;{$startPageName}={$currentPage + 1}&amp;qs={/page/pageRequest/paramList/param[@name='qs']/@value}">Next</a>
403 </xsl:if>
404 </td>
405 <td id="nextArrowTD">
406 <xsl:if test="($currentPage * $docsPerPage + 1) &lt; $docMax">
407 <a href="{$library_name}?a=q&amp;sa={/page/pageRequest/paramList/param[@name = 'sa']/@value}&amp;c={$collName}&amp;s={/page/pageResponse/service/@name}&amp;rt=rd&amp;{$startPageName}={$currentPage + 1}&amp;qs={/page/pageRequest/paramList/param[@name='qs']/@value}">
408 <img src="interfaces/default/images/next.png"/>
409 </a>
410 </xsl:if>
411 </td>
412 </tr></table>
413 </xsl:template>
414
415 <!-- puts all the params into a=p&p=h type form - need to change this if use
416 multi params -->
417 <xsl:template match="paramList" mode="cgi">
418 <xsl:param name="ns">s1.</xsl:param>
419 <xsl:for-each select="param">
420 <xsl:variable name='pname' select="@name"/>
421 <xsl:text>&amp;</xsl:text><xsl:value-of select="$ns"/><xsl:value-of select="@name"/>=<xsl:apply-templates select="." mode="calculate-default"><xsl:with-param name='ns' select='$ns'/></xsl:apply-templates>
422 </xsl:for-each>
423 </xsl:template>
424
425
426
427
428
429
430
431 <xsl:template name="resultsPagePre">
432 <!-- OVERWRITE TO INSERT CONTENT BEFORE THE RESULTS PAGE -->
433 <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
434 <xsl:call-template name="mapFeaturesJSONNodes"/>
435 </xsl:if>
436 </xsl:template>
437
438 <xsl:template name="resultsPagePost">
439 <!-- OVERWRITE TO INSERT CONTENT AFTER THE RESULTS PAGE -->
440 </xsl:template>
441
442 <xsl:template name="documentNodePre">
443 <!-- OVERWRITE TO INSERT CONTENT BEFORE EVERY DOCUMENT NODE -->
444 </xsl:template>
445
446 <xsl:template name="documentNodePost">
447 <!-- OVERWRITE TO INSERT CONTENT AFTER EVERY DOCUMENT NODE -->
448 <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
449 <xsl:call-template name="mapFeaturesIcon"/>
450 </xsl:if>
451 </xsl:template>
452
453 <xsl:template name="mapFeaturesJSONNodes">
454 <div id="jsonNodes" style="display:none;">
455 <xsl:text>[</xsl:text>
456 <xsl:for-each select="//documentNode">
457 <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
458 <xsl:text>{</xsl:text>
459 <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text>
460 <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>
461 <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>
462 <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/>
463 <xsl:text>}</xsl:text>
464 <xsl:if test="not(position() = count(//documentNode))">
465 <xsl:text>,</xsl:text>
466 </xsl:if>
467 </xsl:if>
468 </xsl:for-each>
469 <xsl:text>]</xsl:text>
470 </div>
471
472 <div id="map_canvas" style="margin:0px auto; width:450px; height:500px; float:right;"><xsl:text> </xsl:text></div>
473
474 <!-- Although these aren't visible, they are necessary because it forces Greenstone to include this metadata in the page xml -->
475 <gsf:metadata name="Latitude" hidden="true"/>
476 <gsf:metadata name="Longitude" hidden="true"/>
477 </xsl:template>
478
479 <xsl:template name="mapFeaturesIcon">
480 <td style="padding-left:5px; padding-right:5px;" valign="top">
481 <a href="javascript:focusDocument('{@nodeID}');"><img src="interfaces/default/images/map_marker.png"/></a>
482 </td>
483 </xsl:template>
484</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.