source: main/trunk/greenstone3/web/interfaces/oran/transform/layouts/header.xsl@ 25485

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

The search status text will now say "sections" if a section search was done. Also fixed the next/prev buttons on the search results page

  • Property svn:executable set to *
File size: 19.3 KB
Line 
1<xsl:stylesheet version="1.0"
2 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:java="http://xml.apache.org/xslt/java"
4 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
5 xmlns:gslib="http://www.greenstone.org/skinning"
6 xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
7 extension-element-prefixes="java util"
8 exclude-result-prefixes="java util gsf">
9
10 <xsl:include href="../query-common.xsl"/>
11 <xsl:include href="../javascript-global-setup.xsl"/>
12
13 <!-- If the c parameter is empty then use the p.c parameter for the collection name-->
14 <xsl:variable name="collNameChecked">
15 <xsl:choose>
16 <xsl:when test="$collName = '' and /page/pageRequest/paramList/param[@name='p.c']/@value">
17 <xsl:value-of select="/page/pageRequest/paramList/param[@name='p.c']/@value"/>
18 </xsl:when>
19 <xsl:otherwise>
20 <xsl:value-of select="$collName"/>
21 </xsl:otherwise>
22 </xsl:choose>
23 </xsl:variable>
24
25 <!-- Creates a header for the html page -->
26 <xsl:template name="create-html-header">
27 <base>
28 <xsl:attribute name="href">
29 <xsl:choose>
30 <xsl:when test="/page/pageResponse/metadataList/metadata[@name = 'baseURL']">
31 <xsl:value-of select="/page/pageResponse/metadataList/metadata[@name = 'baseURL']"/>
32 </xsl:when>
33 <xsl:when test="/page/pageRequest/@baseURL">
34 <xsl:value-of select="/page/pageRequest/@baseURL"/>
35 </xsl:when>
36 </xsl:choose>
37 </xsl:attribute>
38 </base>
39 <xsl:comment>[if lte IE 6]&gt;&lt;/base&gt;&lt;![endif]</xsl:comment>
40
41 <title><xsl:call-template name="pageTitle"/> :: <xsl:call-template name="siteName"/></title>
42
43 <xsl:choose>
44 <xsl:when test="/page/pageResponse/interfaceOptions/option[@name = 'cssTheme']/@value">
45 <!-- Get the theme from the interfaceConfig.xml file -->
46 <link rel="stylesheet" href="{/page/pageResponse/interfaceOptions/option[@name = 'cssTheme']/@value}" type="text/css"/>
47 </xsl:when>
48 <xsl:otherwise>
49 <link rel="stylesheet" href="interfaces/{$interface_name}/style/themes/main/jquery-ui-1.8.16.custom.css" type="text/css"/>
50 </xsl:otherwise>
51 </xsl:choose>
52 <link rel="stylesheet" href="interfaces/{$interface_name}/style/core.css" type="text/css"/>
53 <link rel="shortcut icon" href="favicon.ico"/>
54
55 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"><xsl:text> </xsl:text></script>
56 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js"><xsl:text> </xsl:text></script>
57 <script type="text/javascript" src="interfaces/{$interface_name}/js/jquery.themeswitcher.min.js"><xsl:text> </xsl:text></script>
58
59 <script type="text/javascript" src="interfaces/{$interface_name}/js/direct-edit.js"><xsl:text> </xsl:text></script>
60 <script type="text/javascript" src="interfaces/{$interface_name}/js/zoomer.js"><xsl:text> </xsl:text></script>
61
62 <xsl:if test="/page/pageResponse/format[@type='display' or @type='browse' or @type='search']/gsf:option[@name='mapEnabled']/@value = 'true'">
63 <xsl:call-template name="map-scripts"/>
64 </xsl:if>
65
66 <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))">
67 <xsl:call-template name="init-direct-edit"/>
68 </xsl:if>
69 <xsl:call-template name="setup-gs-variable"/>
70 <xsl:call-template name="additionalHeaderContent"/>
71 </xsl:template>
72
73 <xsl:template name="additionalHeaderContent">
74 <!-- This template should be overridden in the collectionConfig.xml file if you want to add extra header content -->
75 </xsl:template>
76
77 <xsl:template name="init-direct-edit">
78 <script type="text/javascript">
79 <xsl:text disable-output-escaping="yes">
80 de.onready(function()
81 {
82 try
83 {
84 de.init();
85 }
86 catch (err)
87 {
88 alert("Seaweed failed to initialise: " + err.message);
89 }
90 });
91 </xsl:text>
92 </script>
93 </xsl:template>
94
95 <!-- ***** HEADER LAYOUT TEMPLATE ***** -->
96 <xsl:template name="create-banner">
97 <div id="gs_banner" class="ui-widget-header ui-corner-bottom">
98 <table id="titlesearchcontainer">
99 <tr>
100 <xsl:call-template name="page-title-area"/>
101 <xsl:call-template name="quick-search-area"/>
102 </tr>
103 </table>
104 <xsl:call-template name="browsing-tabs"/>
105 </div>
106 </xsl:template>
107
108 <!-- ***** BROWSING TABS ***** -->
109 <xsl:template name="browsing-tabs">
110 <xsl:if test="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service">
111 <ul id="nav">
112 <!-- If this collection has a ClassifierBrowse service then add a tab for each classifier-->
113 <xsl:if test="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@type='browse' and @name='ClassifierBrowse']">
114 <!-- Loop through each classifier -->
115 <xsl:for-each select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='ClassifierBrowse']/classifierList/classifier">
116 <li>
117 <xsl:choose>
118 <!-- If this tab is selected then colour it differently -->
119 <xsl:when test="@name = /page/pageRequest/paramList/param[@name = 'cl' and /page/pageRequest/@action = 'b']/@value">
120 <xsl:attribute name='class'>ui-state-default ui-corner-top ui-tabs-selected ui-state-active</xsl:attribute>
121 </xsl:when>
122 <xsl:otherwise>
123 <xsl:attribute name='class'>ui-state-default ui-corner-top</xsl:attribute>
124 </xsl:otherwise>
125 </xsl:choose>
126
127 <a>
128 <!-- Add a title element to the <a> tag if a description exists for this classifier -->
129 <xsl:if test="displayItem[@name='description']">
130 <xsl:attribute name='title'><xsl:value-of select="displayItem[@name='description']"/></xsl:attribute>
131 </xsl:if>
132
133 <!-- Add the href element to the <a> tag -->
134 <xsl:choose>
135 <xsl:when test="@name">
136 <xsl:attribute name="href"><xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="/page/pageResponse/collection[@name=$collNameChecked]/@name"/>/browse/<xsl:value-of select="@name"/></xsl:attribute>
137 </xsl:when>
138 <xsl:otherwise>
139 <xsl:attribute name="href"><xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="/page/pageResponse/collection[@name=$collNameChecked]/@name"/>/browse/1</xsl:attribute>
140 </xsl:otherwise>
141 </xsl:choose>
142
143 <!-- Add the actual text of the <a> tag -->
144 <xsl:value-of select="displayItem[@name='name']"/>
145 </a>
146 </li>
147 </xsl:for-each>
148 </xsl:if>
149
150 <!-- all other services -->
151 <xsl:for-each select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[not(@type='query') and not(@type='browse')]">
152 <xsl:call-template name="navigationTab"/>
153 </xsl:for-each>
154 </ul>
155 </xsl:if>
156 </xsl:template>
157
158 <!-- ***** HOME HELP PREFERENCES LOGIN ***** -->
159 <xsl:template name="home-help-preferences">
160 <ul id="bannerLinks">
161 <!-- preferences -->
162 <li class="ui-state-default ui-corner-all">
163 <a href="{$library_name}/collection/{$collNameChecked}/page/pref">
164 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref_tip')"/></xsl:attribute>
165 <ul>
166 <li><span><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref_b')"/></span></li>
167 <li><span class="ui-icon ui-icon-wrench"><xsl:text> </xsl:text></span></li>
168 </ul>
169 </a>
170 </li>
171
172 <!-- help -->
173 <li class="ui-state-default ui-corner-all">
174 <a href="{$library_name}/collection/{$collNameChecked}/page/help">
175 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'help_tip')"/></xsl:attribute>
176 <ul>
177 <li><span><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'help_b')"/></span></li>
178 <li><span class="ui-icon ui-icon-help"><xsl:text> </xsl:text></span></li>
179 </ul>
180 </a>
181 </li>
182
183 <!-- login/logout -->
184 <li class="ui-state-default ui-corner-all" id="userMenuButton">
185 <xsl:choose>
186 <xsl:when test="/page/pageRequest/userInformation/@username">
187 <a>
188 <xsl:attribute name="href">javascript:toggleUserMenu();</xsl:attribute>
189 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'logout_tip')"/></xsl:attribute>
190 <script type="text/javascript">
191 <xsl:text disable-output-escaping="yes">
192 function toggleUserMenu()
193 {
194 var button = $("#userMenuButton");
195 var menu;
196
197 if(button.data("userMenu"))
198 {
199 menu = button.data("userMenu");
200 if(menu.css("display") == "block")
201 {
202 menu.hide();
203 }
204 else
205 {
206 menu.show();
207 }
208 }
209 else
210 {
211 menu = $("&lt;UL&gt;")
212 .css("position", "absolute")
213 .css("display", "block")
214 .css("z-index", "100")
215 .css("list-style", "none outside none")
216 .css("margin-left", "0px")
217 .css("padding", "0px")
218 .css("font-size", "90%");
219
220 button.data("userMenu", menu);
221
222 var settingsLink = $("&lt;a&gt;")
223 .attr("href", gs.xsltParams.library_name + "/admin/AccountSettings?s1.username=</xsl:text><xsl:value-of select="/page/pageRequest/userInformation/@username"/><xsl:text disable-output-escaping="yes">");
224 var settingsButton = $("&lt;LI&gt;")
225 .css("padding", "3px")
226 .html("Account settings")
227 .addClass("ui-state-default");
228 settingsLink.append(settingsButton);
229
230 var url = document.URL;
231 var hasQueryString = (url.indexOf("?") != -1);
232 var hashIndex = url.indexOf("#");
233
234 var hashPart;
235 if(hashIndex != -1)
236 {
237 hashPart = url.substring(hashIndex);
238 url = url.substring(0, hashIndex);
239 }
240
241 var logoutLink = $("&lt;a&gt;")
242 .attr("href", url + (hasQueryString ? "&amp;" : "?") + "logout=" + (hashPart ? hashPart : ""));
243 var logoutButton = $("&lt;LI&gt;")
244 .css("padding", "3px")
245 .html("Logout")
246 .addClass("ui-state-default");
247 logoutLink.append(logoutButton);
248
249 menu.append(settingsLink);
250 menu.append(logoutLink);
251
252 var buttonLeft = button.offset().left;
253 var buttonTop = button.offset().top;
254 var buttonHeight = button.height();
255
256 menu.offset({top: buttonTop + buttonHeight + 4, left: buttonLeft});
257 $("#topArea").append(menu);
258 }
259 }
260 </xsl:text>
261 </script>
262 <ul>
263 <li><span><xsl:value-of select="/page/pageRequest/userInformation/@username"/></span></li>
264 <li><span class="ui-icon ui-icon-unlocked"><xsl:text> </xsl:text></span></li>
265 </ul>
266 </a>
267 </xsl:when>
268 <xsl:otherwise>
269 <a>
270 <xsl:attribute name="href">
271 <xsl:value-of select="$library_name"/>
272 <xsl:text>?a=p&amp;sa=login&amp;redirectURL=</xsl:text>
273 <xsl:value-of select="$library_name"/>
274 <xsl:text>%3F</xsl:text>
275 <xsl:if test="/page/pageRequest/@action">
276 <xsl:text>a=</xsl:text>
277 <xsl:value-of select="/page/pageRequest/@action"/>
278 </xsl:if>
279 <xsl:if test="/page/pageRequest/@subaction">
280 <xsl:text>%26sa=</xsl:text>
281 <xsl:value-of select="/page/pageRequest/@subaction"/>
282 </xsl:if>
283 <xsl:for-each select="/page/pageRequest/paramList/param">
284 <xsl:if test="@name != 'password' and @name != 's1.password' and @name != 's1.newPassword' and @name != 's1.oldPassword'">
285 <xsl:text>%26</xsl:text>
286 <xsl:value-of select="@name"/>
287 <xsl:text>=</xsl:text>
288 <xsl:value-of select="@value"/>
289 </xsl:if>
290 </xsl:for-each>
291 </xsl:attribute>
292 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'login_tip')"/></xsl:attribute>
293 <ul>
294 <li><span><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'login_b')"/></span></li>
295 <li><span class="ui-icon ui-icon-locked"><xsl:text> </xsl:text></span></li>
296 </ul>
297 </a>
298 </xsl:otherwise>
299 </xsl:choose>
300 </li>
301 <!-- debuginfo (doesn't use class="ui-state-error" since the text is not legible due to inherited text-colour) -->
302 <xsl:if test="/page/pageRequest/paramList/param[(@name='debug') and (@value='on' or @value='true' or @value='1')]">
303 <li class="ui-state-default ui-corner-all">
304 <a href="{$library_name}/collection/{$collNameChecked}/page/debuginfo">
305 <xsl:attribute name="title"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'debuginfo_tip')"/></xsl:attribute>
306 <ul>
307 <li><span><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'debuginfo_b')"/></span></li>
308 <li><span class="ui-icon ui-icon-info"><xsl:text> </xsl:text></span></li>
309 </ul>
310 </a>
311 </li>
312 </xsl:if>
313 </ul>
314 </xsl:template>
315
316 <!-- ***** PAGE TITLE ***** -->
317 <xsl:template name="page-title-area">
318 <xsl:variable name="pageTitleVar"><xsl:call-template name="pageTitle"/></xsl:variable>
319 <td id="titlearea">
320 <h2>
321 <!-- Resize the title based on how long it is (There's probably a better way to do this) -->
322 <xsl:attribute name="style">
323 <xsl:choose>
324 <xsl:when test="string-length($pageTitleVar) &lt; 20">
325 <xsl:text>font-size: 1.5em;</xsl:text>
326 </xsl:when>
327 <xsl:when test="string-length($pageTitleVar) &lt; 30">
328 <xsl:text>font-size: 1.4em;</xsl:text>
329 </xsl:when>
330 <xsl:when test="string-length($pageTitleVar) &lt; 40">
331 <xsl:text>font-size: 1.3em;</xsl:text>
332 </xsl:when>
333 <xsl:when test="string-length($pageTitleVar) &lt; 50">
334 <xsl:text>font-size: 1.2em;</xsl:text>
335 </xsl:when>
336 <xsl:when test="string-length($pageTitleVar) &lt; 60">
337 <xsl:text>font-size: 1.1em;</xsl:text>
338 </xsl:when>
339 <xsl:when test="string-length($pageTitleVar) &lt; 70">
340 <xsl:text>font-size: 1em;</xsl:text>
341 </xsl:when>
342 <xsl:when test="string-length($pageTitleVar) &lt; 80">
343 <xsl:text>font-size: 0.9em;</xsl:text>
344 </xsl:when>
345 <xsl:when test="string-length($pageTitleVar) &lt; 90">
346 <xsl:text>font-size: 0.8em;</xsl:text>
347 </xsl:when>
348 <xsl:otherwise>
349 <xsl:text>font-size: 0.7em;</xsl:text>
350 </xsl:otherwise>
351 </xsl:choose>
352 </xsl:attribute>
353 <!--<xsl:value-of select="string-length($pageTitleVar)" />-->
354 <xsl:value-of select="$pageTitleVar" />
355 </h2>
356 </td>
357 </xsl:template>
358
359
360 <!-- ***** QUICK SEARCH AREA ***** -->
361 <xsl:template name="quick-search-area">
362 <xsl:if test="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']">
363 <xsl:variable name="subaction" select="/page/pageRequest/@subaction"/>
364 <td id="quicksearcharea">
365 <form action="{$library_name}/collection/{$collNameChecked}/search/TextQuery">
366 <input type="hidden" name="rt" value="rd"/>
367 <input type="hidden" name="s1.level">
368 <xsl:attribute name="value">
369 <xsl:choose>
370 <xsl:when test="/page/pageRequest/paramList/param[@name = 's1.level']">
371 <xsl:value-of select="/page/pageRequest/paramList/param[@name = 's1.level']/@value"/>
372 </xsl:when>
373 <xsl:otherwise>
374 <xsl:text>Sec</xsl:text>
375 </xsl:otherwise>
376 </xsl:choose>
377 </xsl:attribute>
378 </input>
379 <xsl:choose>
380 <xsl:when test="/page/pageResponse/service[@name = 'TextQuery']/paramList/param[@name = 'startPage']">
381 <input type="hidden" name="s1.startPage" value="1"/>
382 </xsl:when>
383 <xsl:otherwise>
384 <input type="hidden" name="startPage" value="1"/>
385 </xsl:otherwise>
386 </xsl:choose>
387 <xsl:if test="not(/page/pageRequest/paramList/param[@name = 's1.hitsPerPage'])">
388 <input type="hidden" name="s1.hitsPerPage" value="20"/>
389 </xsl:if>
390 <xsl:if test="not(/page/pageRequest/paramList/param[@name = 's1.maxDocs'])">
391 <input type="hidden" name="s1.maxDocs" value="100"/>
392 </xsl:if>
393 <!-- The query text box -->
394 <span class="querybox">
395 <xsl:variable name="qs">
396 <xsl:apply-templates select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='query']" mode="calculate-default"/>
397 </xsl:variable>
398 <nobr>
399 <xsl:apply-templates select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='query']">
400 <xsl:with-param name="default" select="java:org.greenstone.gsdl3.util.XSLTUtil.tidyWhitespace($qs)"/>
401 </xsl:apply-templates>
402 </nobr>
403 </span>
404 <!-- The index selection list -->
405 <xsl:if test="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='index']/@type = 'enum_single'">
406 <span class="textselect">
407 <xsl:apply-templates select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='index']">
408 <xsl:with-param name="default">
409 <xsl:apply-templates select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='index']" mode="calculate-default"/>
410 </xsl:with-param>
411 </xsl:apply-templates>
412 </span>
413 </xsl:if>
414 <!-- The submit button -->
415 <input type="submit" id="quickSearchSubmitButton">
416 <xsl:attribute name="value">
417 <xsl:value-of select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/displayItem[@name='submit']"/>
418 </xsl:attribute>
419 </input>
420 <br/>
421 <!-- The list of other search types -->
422 <ul>
423 <xsl:for-each select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@type='query']">
424 <li class="ui-state-default ui-corner-all">
425 <a>
426 <xsl:attribute name="href">
427 <xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="$collNameChecked"/>/search/<xsl:value-of select="@name"/>
428 </xsl:attribute>
429 <xsl:value-of select="displayItem[@name='name']"/>
430 </a>
431 </li>
432 </xsl:for-each>
433 </ul>
434 </form>
435 </td>
436 </xsl:if>
437 </xsl:template>
438
439 <xsl:template name="map-scripts">
440 <meta content="initial-scale=1.0, user-scalable=no" name="viewport"/>
441 <script src="http://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"><xsl:text> </xsl:text></script>
442 <script src="interfaces/{$interface_name}/js/map-scripts.js" type="text/javascript"><xsl:text> </xsl:text></script>
443 <script type="text/javascript">$(window).load(initializeMapScripts);</script>
444 </xsl:template>
445</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.