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

Last change on this file since 29275 was 29275, checked in by ak19, 10 years ago

Kathy discovered that that the total number of docs found is mentioned for solr collections when reporting the term frequencies for more than 1 term. This is wrong, because for collections built with other indexers, the number of docs found is reported per term along with that term's term frequency. Not sure at present how to compute the number of docs found per term for solr collections (the num docs found value is set in ext/solr's SolrQueryWrapper.java). Instead, for solr collections we for now don't report at term-level the total number of docs if there are multiple terms. The total number of docs returned is already being reported as the first line of the summary of results.

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