root/main/trunk/greenstone3/web/interfaces/oran/transform/layouts/header.xsl @ 25360

Revision 25360, 18.2 KB (checked in by sjm84, 8 years ago)

The baseURL can now be set in the siteConfig.xml file

  • Property svn:executable set to *
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"/>?a=b&amp;rt=s&amp;s=ClassifierBrowse&amp;c=<xsl:value-of select="/page/pageResponse/collection[@name=$collNameChecked]/@name"/>&amp;cl=<xsl:value-of select="@name"/></xsl:attribute>
137                                    </xsl:when>
138                                    <xsl:otherwise>
139                                        <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=b&amp;rt=d&amp;s=ClassifierBrowse&amp;c=<xsl:value-of select="/page/pageResponse/collection[@name=$collNameChecked]/@name"/></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}?a=p&amp;amp;sa=pref&amp;amp;c={$collNameChecked}">
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}?a=p&amp;amp;sa=help&amp;amp;c={$collNameChecked}">
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        </ul>
302    </xsl:template>
303   
304    <!-- ***** PAGE TITLE ***** -->
305    <xsl:template name="page-title-area">
306        <xsl:variable name="pageTitleVar"><xsl:call-template name="pageTitle"/></xsl:variable>
307        <td id="titlearea">
308            <h2>
309                <!-- Resize the title based on how long it is (There's probably a better way to do this) -->
310                <xsl:attribute name="style">
311                    <xsl:choose>
312                        <xsl:when test="string-length($pageTitleVar) &lt; 20">
313                            <xsl:text>font-size: 1.5em;</xsl:text>
314                        </xsl:when>
315                        <xsl:when test="string-length($pageTitleVar) &lt; 30">
316                            <xsl:text>font-size: 1.4em;</xsl:text>
317                        </xsl:when>
318                        <xsl:when test="string-length($pageTitleVar) &lt; 40">
319                            <xsl:text>font-size: 1.3em;</xsl:text>
320                        </xsl:when>
321                        <xsl:when test="string-length($pageTitleVar) &lt; 50">
322                            <xsl:text>font-size: 1.2em;</xsl:text>
323                        </xsl:when>
324                        <xsl:when test="string-length($pageTitleVar) &lt; 60">
325                            <xsl:text>font-size: 1.1em;</xsl:text>
326                        </xsl:when>
327                        <xsl:when test="string-length($pageTitleVar) &lt; 70">
328                            <xsl:text>font-size: 1em;</xsl:text>
329                        </xsl:when>
330                        <xsl:when test="string-length($pageTitleVar) &lt; 80">
331                            <xsl:text>font-size: 0.9em;</xsl:text>
332                        </xsl:when>
333                        <xsl:when test="string-length($pageTitleVar) &lt; 90">
334                            <xsl:text>font-size: 0.8em;</xsl:text>
335                        </xsl:when>
336                        <xsl:otherwise>
337                            <xsl:text>font-size: 0.7em;</xsl:text>
338                        </xsl:otherwise>
339                    </xsl:choose>
340                </xsl:attribute>
341                <!--<xsl:value-of select="string-length($pageTitleVar)" />-->
342                <xsl:value-of select="$pageTitleVar" />
343            </h2>
344        </td>
345    </xsl:template>
346   
347   
348    <!-- ***** QUICK SEARCH AREA ***** -->
349    <xsl:template name="quick-search-area">
350        <xsl:if test="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']">
351            <xsl:variable name="subaction" select="/page/pageRequest/@subaction"/>
352            <td id="quicksearcharea">
353                <form action="{$library_name}">
354                    <input type="hidden" name="a" value="q"/>
355                    <input type="hidden" name="sa" value="{$subaction}"/>
356                    <input type="hidden" name="rt" value="rd"/>
357                    <input type="hidden" name="s" value="TextQuery"/>
358                    <input type="hidden" name="c" value="{$collNameChecked}"/>
359                    <input type="hidden" name="startPage" value="1"/>
360                    <!-- The query text box -->
361                    <span class="querybox">
362                        <xsl:variable name="qs">
363                            <xsl:apply-templates select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='query']" mode="calculate-default"/>
364                        </xsl:variable>
365                        <nobr>
366                            <xsl:apply-templates select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='query']">
367                                <xsl:with-param name="default" select="java:org.greenstone.gsdl3.util.XSLTUtil.tidyWhitespace($qs)"/>
368                            </xsl:apply-templates>
369                        </nobr>
370                    </span>
371                    <!-- The index selection list -->
372                    <xsl:if test="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='index']/@type = 'enum_single'">
373                        <span class="textselect">
374                            <xsl:apply-templates select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='index']">
375                                <xsl:with-param name="default">
376                                    <xsl:apply-templates select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/paramList/param[@name='index']" mode="calculate-default"/>
377                                </xsl:with-param>
378                            </xsl:apply-templates>
379                        </span>
380                    </xsl:if>
381                    <!-- The submit button -->
382                    <input type="submit" id="quickSearchSubmitButton">
383                        <xsl:attribute name="value">
384                            <xsl:value-of select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@name='TextQuery']/displayItem[@name='submit']"/>
385                        </xsl:attribute>
386                    </input>
387                    <br/>
388                    <!-- The list of other search types -->
389                    <ul>
390                        <xsl:for-each select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@type='query']">
391                            <li class="ui-state-default ui-corner-all">
392                                <a>
393                                    <xsl:attribute name="href">
394                                        <xsl:value-of select="$library_name"/>?a=q&amp;rt=d&amp;c=<xsl:value-of select="$collNameChecked"/>&amp;s=<xsl:value-of select="@name"/>
395                                    </xsl:attribute>
396                                    <xsl:value-of select="displayItem[@name='name']"/>
397                                </a>
398                            </li>
399                        </xsl:for-each>
400                    </ul>
401                </form>
402            </td>
403        </xsl:if>
404    </xsl:template>
405
406    <!-- gslib:langfrag should get expanded in ../util.xsl -->
407    <xsl:template name="document-editor-language-fragments">
408      <!--<gslib:langfrag name="dse"/>-->
409
410      <script type="text/javascript">
411      gs.text = new Array();
412      gs.text.dse = new Array();
413      <xsl:value-of disable-output-escaping="yes" select="util:getInterfaceStringsAsJavascript($interface_name, /page/@lang, 'dse', 'gs.text')"/>
414      </script>
415    </xsl:template>
416   
417    <xsl:template name="map-scripts">
418        <meta content="initial-scale=1.0, user-scalable=no" name="viewport"/>
419        <script src="http://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"><xsl:text> </xsl:text></script>
420        <script src="interfaces/{$interface_name}/js/map-scripts.js" type="text/javascript"><xsl:text> </xsl:text></script>
421        <script type="text/javascript">$(window).load(initializeMapScripts);</script>
422    </xsl:template>
423</xsl:stylesheet>
Note: See TracBrowser for help on using the browser.