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

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

display num matching docs. Also display term info even if no matching docs - if doing multiword query its helpful to see what terms were found

File size: 21.8 KB
RevLine 
[19856]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"
[25882]7 xmlns:gsvar="http://www.greenstone.org/skinning-var"
[24998]8 xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
[19856]9 extension-element-prefixes="java util"
[24998]10 exclude-result-prefixes="java util gsf">
[19856]11
[19988]12 <!-- use the 'main' layout -->
[24998]13 <xsl:import href="layouts/main.xsl"/>
[19856]14
[26368]15 <xsl:include href="query-common.xsl"/>
[19988]16 <!-- set page title -->
17 <xsl:template name="pageTitle"><gslib:serviceName/></xsl:template>
[19856]18
[19988]19 <!-- set page breadcrumbs -->
[20465]20 <xsl:template name="breadcrumbs"> <gslib:siteLink/><gslib:rightArrow/><xsl:if test="/page/pageResponse/collection"> <gslib:collectionNameLinked/><gslib:rightArrow/></xsl:if></xsl:template>
[19856]21
[19988]22 <!-- the page content -->
23 <xsl:template match="/page">
[26084]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>
[25736]27 <xsl:call-template name="resultsPage"/>
[24998]28 </xsl:template>
29
30 <xsl:template name="resultsPage">
31 <xsl:call-template name="resultsPagePre"/>
[26372]32 <xsl:call-template name="displayMatchDocs"/>
[24998]33 <xsl:call-template name="displayTermInfo"/>
34 <xsl:call-template name="displayResults"/>
35 <xsl:call-template name="resultsPagePost"/>
36 </xsl:template>
[25882]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>
[24998]40
41 <xsl:template name="displayResults">
[25832]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">
[26159]91 <tr id="div{@nodeID}" class="document">
[25832]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>
[24998]105 </xsl:template>
[26119]106
[24998]107 <xsl:template name="queryPage">
108 <xsl:for-each select="pageResponse/service">
[25434]109 <form name="QueryForm" method="get" action="{$library_name}/collection/{$collName}/search/{@name}">
[24998]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">
[24025]141 <xsl:choose>
[26349]142 <xsl:when test="@name = 'maxDocs' or @name = 'hitsPerPage'">
[24025]143 </xsl:when>
[24998]144 <xsl:when test="@type='multi'">
145 <xsl:apply-templates select="."><xsl:with-param name="ns" select="$ns"/></xsl:apply-templates>
146 </xsl:when>
[24025]147 <xsl:otherwise>
[26368]148 <xsl:call-template name="param-display"><xsl:with-param name="ns" select="$ns"/></xsl:call-template>
[24025]149 </xsl:otherwise>
150 </xsl:choose>
151 </xsl:for-each>
[24009]152 <br/>
[24998]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>
[19856]157 </xsl:template>
[26372]158 <xsl:template name="displayMatchDocs">
159 <div id="matchdocs">
160 <xsl:variable name="numDocsMatched" select="/page/pageResponse/metadataList/metadata[@name='numDocsMatched']"/>
161 <xsl:variable name="numDocsReturned" select="/page/pageResponse/metadataList/metadata[@name='numDocsReturned']"/>
162 <xsl:choose>
163 <xsl:when test="$numDocsMatched='0' or $numDocsReturned='0'">
164 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.nodocsmatch')"/>
165 </xsl:when>
166 <xsl:when test="$numDocsMatched='1' or $numDocsReturned='1'">
167 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.onedocsmatch')"/>
168 </xsl:when>
169 <xsl:when test="$numDocsMatched">
170 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.manydocsmatch', $numDocsMatched)"/>
171 <xsl:if test="$numDocsReturned and not($numDocsMatched=$numDocsReturned)"> (<xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.docsreturned', $numDocsReturned)"/>)</xsl:if>
172 </xsl:when>
173 <xsl:when test="$numDocsReturned">
174 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.atleastdocsmatch', $numDocsReturned)"/>
175 </xsl:when>
176 </xsl:choose>
177 </div>
178
179 </xsl:template>
[26119]180 <xsl:template name="displayTermInfo">
181 <!-- Find the total number of documents returned -->
182 <xsl:variable name="docMax">
183 <xsl:choose>
184 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']">
185 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']"/>
186 </xsl:when>
187 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsMatched']">
188 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsMatched']"/>
189 </xsl:when>
190 <xsl:otherwise><xsl:value-of select="count(/page/pageResponse/documentNodeList/documentNode)"/></xsl:otherwise>
191 </xsl:choose>
192 </xsl:variable>
193
194 <!-- Find the number of documents displayed per page -->
195 <xsl:variable name="level">
196 <xsl:choose>
197 <xsl:when test="/page/pageRequest/paramList/param[@name='level']">
198 <xsl:value-of select="/page/pageRequest/paramList/param[@name='level']/@value" />
199 </xsl:when>
200 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.level']">
201 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.level']/@value" />
202 </xsl:when>
203 <xsl:otherwise>Doc</xsl:otherwise>
204 </xsl:choose>
205 </xsl:variable>
[26143]206
[26119]207 <!-- The list of search terms with their frequency and document count -->
208 <p class="termList">
209 <xsl:if test="count(/page/pageResponse/termList/stopword) &gt; 0">
210 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.common')"/><xsl:text> </xsl:text>
211 <xsl:for-each select="/page/pageResponse/termList/stopword">
212 <span style="font-style:italic;"><xsl:value-of select="@name"/></span><xsl:text> </xsl:text>
213 </xsl:for-each>
214 <br /><br />
215 </xsl:if>
216
217 <xsl:for-each select="/page/pageResponse/termList/term">
218 <xsl:choose>
219 <!-- If there is only one or two search terms then show the expanded information -->
220 <xsl:when test="count(/page/pageResponse/termList/term) &lt; 3">
221 <span class="termInfo">
222 <span style="font-style:italic;"><xsl:value-of select="@name"/></span>
223 <xsl:text> </xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.occurs')"/><xsl:text> </xsl:text>
224 <xsl:choose>
225 <xsl:when test="@freq = 1">
226 <xsl:value-of select="@freq"/>
227 <xsl:text> </xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.time')"/>
228 </xsl:when>
[26372]229 <xsl:otherwise>
[26119]230 <xsl:value-of select="@freq"/>
231 <xsl:text> </xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.time_plural')"/>
[26372]232 </xsl:otherwise>
[26119]233 </xsl:choose>
[26372]234 <!--<xsl:if test="not(not(@numDocsMatch) or @numDocsMatch = '')">-->
235 <xsl:if test="@numDocsMatch &gt; 0">
[26119]236 <xsl:text> </xsl:text><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.in')"/><xsl:text> </xsl:text>
237 <xsl:value-of select="@numDocsMatch"/>
238 <xsl:choose>
239 <xsl:when test="@numDocsMatch = 1">
240 <xsl:text> </xsl:text>
241 <xsl:choose>
242 <xsl:when test="$level = 'Doc'">
243 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.document')"/>
244 </xsl:when>
245 <xsl:otherwise>
246 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.section')"/>
247 </xsl:otherwise>
248 </xsl:choose>
249 </xsl:when>
250 <xsl:when test="@numDocsMatch &gt; 1">
251 <xsl:text> </xsl:text>
252 <xsl:choose>
253 <xsl:when test="$level = 'Doc'">
254 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.document_plural')"/>
255 </xsl:when>
256 <xsl:otherwise>
257 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.section_plural')"/>
258 </xsl:otherwise>
259 </xsl:choose>
260 </xsl:when>
261 </xsl:choose>
262 </xsl:if>
263 <br />
264 </span>
265 </xsl:when>
266 <xsl:otherwise>
267 <span style="font-style:italic;"><xsl:value-of select="@name"/></span> (<xsl:value-of select="@freq"/>)
268 </xsl:otherwise>
269 </xsl:choose>
270 </xsl:for-each>
271 </p>
272 </xsl:template>
273
[24009]274 <xsl:template name="prevNextButtons">
275 <!-- Current page -->
276 <xsl:variable name="currentPage">
277 <xsl:choose>
[25736]278 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.startPage']/@value">
279 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.startPage']/@value" />
280 </xsl:when>
[24009]281 <xsl:when test="/page/pageRequest/paramList/param[@name='startPage']/@value">
282 <xsl:value-of select="/page/pageRequest/paramList/param[@name='startPage']/@value" />
283 </xsl:when>
284 <xsl:otherwise>1</xsl:otherwise>
285 </xsl:choose>
286 </xsl:variable>
[25485]287
288 <xsl:variable name="usesS1">
289 <xsl:choose>
[25736]290 <xsl:when test="/page/pageResponse/service/paramList/param[@name='startPage']">true</xsl:when>
[25485]291 <xsl:otherwise>false</xsl:otherwise>
292 </xsl:choose>
293 </xsl:variable>
[26119]294
[24009]295 <!-- Find the total number of documents returned -->
296 <xsl:variable name="docMax">
297 <xsl:choose>
298 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']">
299 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsReturned']"/>
300 </xsl:when>
301 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'numDocsMatched']">
302 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'numDocsMatched']"/>
303 </xsl:when>
304 <xsl:otherwise><xsl:value-of select="count(/page/pageResponse/documentNodeList/documentNode)"/></xsl:otherwise>
305 </xsl:choose>
306 </xsl:variable>
307
308 <!-- Find the number of documents displayed per page -->
309 <xsl:variable name="docsPerPage">
310 <xsl:choose>
311 <xsl:when test="/page/pageRequest/paramList/param[@name='hitsPerPage']">
312 <xsl:value-of select="/page/pageRequest/paramList/param[@name='hitsPerPage']/@value" />
313 </xsl:when>
314 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']">
315 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']/@value" />
316 </xsl:when>
317 <xsl:otherwise>20</xsl:otherwise>
318 </xsl:choose>
319 </xsl:variable>
320
[25485]321 <!-- Find the number of documents displayed per page -->
322 <xsl:variable name="level">
323 <xsl:choose>
324 <xsl:when test="/page/pageRequest/paramList/param[@name='level']">
325 <xsl:value-of select="/page/pageRequest/paramList/param[@name='level']/@value" />
326 </xsl:when>
327 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.level']">
328 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.level']/@value" />
329 </xsl:when>
330 <xsl:otherwise>Doc</xsl:otherwise>
331 </xsl:choose>
332 </xsl:variable>
333
[24025]334 <table id="searchResultNavTable"><tr>
[25485]335 <xsl:variable name="startPageName"><xsl:if test="$usesS1 = 'true'">s1.</xsl:if>startPage</xsl:variable>
336
[24025]337 <!-- Previous button -->
338 <td id="prevArrowTD">
339 <xsl:if test="$currentPage != 1">
[26084]340 <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}">
[25704]341 <img src="interfaces/default/images/previous.png"/>
[24025]342 </a>
343 </xsl:if>
344 </td>
345 <td id="prevTD">
346 <xsl:if test="$currentPage != 1">
[26084]347 <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>
[24025]348 </xsl:if>
349 </td>
350
351 <!-- Search result status bar (in english it reads "Displaying X to Y of Z documents") -->
352 <xsl:if test="$docMax &gt; 0">
[26368]353 <xsl:variable name="startdoc" select="($currentPage - 1) * $docsPerPage + 1"/>
354 <xsl:variable name="enddoc"><xsl:choose>
[24025]355 <xsl:when test="($currentPage * $docsPerPage + 1) &gt; $docMax">
356 <xsl:value-of select="$docMax"/>
357 </xsl:when>
358 <xsl:otherwise>
359 <xsl:value-of select="$currentPage * $docsPerPage"/>
360 </xsl:otherwise>
[26368]361 </xsl:choose></xsl:variable>
362 <xsl:variable name="level"> <xsl:choose>
[24025]363 <xsl:when test="$docMax = 1">
[25485]364 <xsl:text> </xsl:text>
365 <xsl:choose>
366 <xsl:when test="$level = 'Doc'">
367 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.document')"/>
368 </xsl:when>
369 <xsl:otherwise>
370 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.section')"/>
371 </xsl:otherwise>
372 </xsl:choose>
[24025]373 </xsl:when>
374 <xsl:otherwise>
[25485]375 <xsl:text> </xsl:text>
376 <xsl:choose>
377 <xsl:when test="$level = 'Doc'">
378 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.document_plural')"/>
379 </xsl:when>
380 <xsl:otherwise>
381 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.section_plural')"/>
382 </xsl:otherwise>
383 </xsl:choose>
[24025]384 </xsl:otherwise>
[26368]385 </xsl:choose></xsl:variable>
386 <td id="searchResultsStatusBar">
387 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.displayingnumdocs', concat($startdoc,';', $enddoc, ';', $docMax, ';', $level))"/>
388 </td>
[24025]389 </xsl:if>
390
391 <!-- Next button -->
392 <td id="nextTD">
393 <xsl:if test="($currentPage * $docsPerPage + 1) &lt; $docMax">
[26084]394 <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>
[24009]395 </xsl:if>
[24025]396 </td>
397 <td id="nextArrowTD">
398 <xsl:if test="($currentPage * $docsPerPage + 1) &lt; $docMax">
[26084]399 <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}">
[25704]400 <img src="interfaces/default/images/next.png"/>
[24025]401 </a>
402 </xsl:if>
403 </td>
404 </tr></table>
[24009]405 </xsl:template>
[19856]406
[19988]407 <!-- puts all the params into a=p&p=h type form - need to change this if use
408 multi params -->
409 <xsl:template match="paramList" mode="cgi">
410 <xsl:param name="ns">s1.</xsl:param>
411 <xsl:for-each select="param">
412 <xsl:variable name='pname' select="@name"/>
413 <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>
414 </xsl:for-each>
415 </xsl:template>
[19856]416
417
418
419
420
421
[25832]422
[24998]423 <xsl:template name="resultsPagePre">
424 <!-- OVERWRITE TO INSERT CONTENT BEFORE THE RESULTS PAGE -->
425 <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
426 <xsl:call-template name="mapFeaturesJSONNodes"/>
427 </xsl:if>
428 </xsl:template>
429
430 <xsl:template name="resultsPagePost">
431 <!-- OVERWRITE TO INSERT CONTENT AFTER THE RESULTS PAGE -->
432 </xsl:template>
433
434 <xsl:template name="documentNodePre">
435 <!-- OVERWRITE TO INSERT CONTENT BEFORE EVERY DOCUMENT NODE -->
436 </xsl:template>
437
438 <xsl:template name="documentNodePost">
439 <!-- OVERWRITE TO INSERT CONTENT AFTER EVERY DOCUMENT NODE -->
440 <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
441 <xsl:call-template name="mapFeaturesIcon"/>
442 </xsl:if>
443 </xsl:template>
444
445 <xsl:template name="mapFeaturesJSONNodes">
446 <div id="jsonNodes" style="display:none;">
447 <xsl:text>[</xsl:text>
448 <xsl:for-each select="//documentNode">
449 <xsl:if test="metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']">
450 <xsl:text>{</xsl:text>
451 <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text>
452 <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>
453 <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>
454 <xsl:text disable-output-escaping="yes">"lng":</xsl:text><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'Longitude']"/>
455 <xsl:text>}</xsl:text>
456 <xsl:if test="not(position() = count(//documentNode))">
457 <xsl:text>,</xsl:text>
458 </xsl:if>
459 </xsl:if>
460 </xsl:for-each>
461 <xsl:text>]</xsl:text>
462 </div>
463
464 <div id="map_canvas" style="margin:0px auto; width:450px; height:500px; float:right;"><xsl:text> </xsl:text></div>
465
[26091]466 <!-- Although these aren't visible, they are necessary because it forces Greenstone to include this metadata in the page xml -->
467 <gsf:metadata name="Latitude" hidden="true"/>
468 <gsf:metadata name="Longitude" hidden="true"/>
[24998]469 </xsl:template>
470
471 <xsl:template name="mapFeaturesIcon">
472 <td style="padding-left:5px; padding-right:5px;" valign="top">
[26159]473 <a href="javascript:focusDocument('{@nodeID}');"><img src="interfaces/default/images/map_marker.png"/></a>
[24998]474 </td>
475 </xsl:template>
[19856]476</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.