source: main/trunk/greenstone3/web/interfaces/default/transform/pages/pref.xsl@ 26455

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

split this up into lots of templates so its easier to modify it for a collection. added templates for case/stem/accent params. niupepa has these in preferences page.

File size: 15.3 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:java="http://xml.apache.org/xslt/java"
5 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
6 xmlns:gslib="http://www.greenstone.org/skinning"
7 extension-element-prefixes="java util"
8 exclude-result-prefixes="java util">
9
10 <!-- use the 'main' layout -->
11 <xsl:include href="layouts/main.xsl"/>
12
13 <!-- set page title -->
14 <xsl:template name="pageTitle"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref_b')"/></xsl:template>
15
16 <!-- set page breadcrumbs -->
17 <xsl:template name="breadcrumbs">
18 <gslib:siteLink/><gslib:rightArrow/>
19 <xsl:if test="/page/pageResponse/collection">
20 <gslib:collectionNameLinked/><gslib:rightArrow/>
21 </xsl:if>
22 </xsl:template>
23
24 <!-- the page content -->
25 <xsl:template match="/page">
26 <xsl:call-template name="prefs-javascript"/>
27 <xsl:variable name="collName" select="/page/pageRequest/paramList/param[@name='c']/@value"/>
28
29 <div id="queryform">
30 <form name="PrefForm" method="get" action="{$library_name}" id="prefform">
31
32 <input type='hidden' name='a' value='p'/>
33 <input type='hidden' name='sa' value='pref'/>
34 <input type='hidden' name='c' value="{$collName}"/>
35
36 <xsl:call-template name="presentation-prefs"/>
37 <xsl:call-template name="search-prefs"/>
38 <br/>
39
40 <input type='submit' onclick="bypass=true;"><xsl:attribute name="value"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.set_prefs')"/></xsl:attribute></input>
41
42 </form>
43 </div>
44
45 </xsl:template>
46 <xsl:template name="presentation-prefs">
47 <h3 class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.prespref')"/></h3>
48 <div id="presprefs">
49 <xsl:call-template name="lang-param"/>
50 <!-- <xsl:call-template name="encoding-param"/>-->
51 <xsl:call-template name="format-edit-param"/>
52 <xsl:call-template name="berry-basket-param"/>
53 <xsl:call-template name="document-maker-param"/>
54 <xsl:call-template name="book-param"/>
55 <xsl:call-template name="theme-change-param"/>
56 </div>
57 </xsl:template>
58<xsl:template name="search-prefs">
59 <h3><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.searchpref')"/></h3>
60 <div id="searchprefs">
61 <xsl:call-template name="hits-param"/>
62 <xsl:call-template name="max-docs-param"/>
63 </div>
64</xsl:template>
65 <xsl:template name="prefs-javascript">
66 <!--
67 Add some javascript to the page that notices when a preference is changed
68 so that, if the user tries to navigate away from the page without clicking
69 the "Set preferences" button, it asks them if they want their preferences
70 saved or not
71 -->
72 <script type="text/javascript"><xsl:text disable-output-escaping="yes">
73 var modified = false;
74 var bypass = false;
75
76 function assembleURLFromForm(formElem)
77 {
78 var url = "dev";
79 var selectNodes = formElem.getElementsByTagName("select");
80 var inputNodes = formElem.getElementsByTagName("input");
81
82 for (var i = 0; i &lt; selectNodes.length; i++)
83 {
84 var current = selectNodes[i];
85 url += (url == "dev") ? "?" : "&amp;";
86 url += current.name + "=";
87 url += current.options[current.selectedIndex].text;
88 }
89
90 for (var i = 0; i &lt; inputNodes.length; i++)
91 {
92 var current = inputNodes[i];
93 if (current.type == "hidden" || current.type == "text")
94 {
95 url += (url == "dev") ? "?" : "&amp;";
96 url += current.name + "=";
97 url += current.value;
98 }
99 }
100 return url;
101 }
102
103 function checkModified(e)
104 {
105 if (modified &amp;&amp; !bypass)
106 {
107 var ok = confirm("Would you like to save your preferences?");
108
109 if (ok)
110 {
111 var formElem = document.getElementById("prefform");
112 formElem.submit();
113 var xmlhttp;
114 if (window.XMLHttpRequest)
115 {
116 xmlhttp=new XMLHttpRequest();
117 }
118 else
119 {
120 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
121 }
122
123 xmlhttp.open("GET",assembleURLFromForm(formElem),false);
124 xmlhttp.send();
125 }
126 }
127 }
128
129 function changed()
130 {
131 modified = true;
132 bypass = false;
133 }
134
135 function pageLoad()
136 {
137 var formElem = document.getElementById("prefform");
138
139 var selectNodes = formElem.getElementsByTagName("select");
140 var inputNodes = formElem.getElementsByTagName("input");
141
142 YAHOO.util.Event.addListener(selectNodes, 'change', changed);
143
144 for(var i = 0; i &lt; inputNodes.length; i++)
145 {
146 current = inputNodes[i];
147 if(current.getAttribute("type") == null)
148 {
149 YAHOO.util.Event.on(current, 'keyup', changed);
150 }
151 }
152 }
153
154 YAHOO.util.Event.addListener(window, 'load', pageLoad);
155 YAHOO.util.Event.addListener(window, 'beforeunload', checkModified);
156 </xsl:text></script>
157 </xsl:template>
158
159
160 <xsl:template name="lang-param">
161 <div class="paramLabel">
162 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.interfacelang')"/>
163 </div>
164 <div class="paramValue">
165 <select name="l">
166 <xsl:for-each select="/page/pageResponse/languageList/language">
167 <option value="{@name}"><xsl:if test="@name=/page/@lang"><xsl:attribute name="selected">selected</xsl:attribute></xsl:if><xsl:value-of select="displayItem[@name='name']"/></option>
168 </xsl:for-each>
169 </select>
170
171 </div>
172 <br class="clear"/>
173
174</xsl:template>
175
176
177 <xsl:template name="encoding-param">
178 <div class="paramValue">
179 <span class="rightspace"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.encoding')"/></span>
180 </div>
181 <br class="clear"/>
182
183 </xsl:template>
184
185
186 <xsl:template name="format-edit-param">
187 <xsl:if test="/page/pageResponse/collection/serviceList/service[@name='CoverageMetadataRetrieve']">
188 <div id="formateditprefs">
189 <xsl:variable name="formatedit"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='formatedit']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='formatedit']/@value"/></xsl:when><xsl:otherwise>off</xsl:otherwise></xsl:choose></xsl:variable>
190 <div class="paramLabel">
191 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.formatedit')"/>
192 </div>
193 <div class="paramValue">
194 <select name="formatedit">
195 <option value="on"><xsl:if test="$formatedit='on'"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.formatedit.on')"/></option>
196 <option value="off"><xsl:if test="$formatedit='off'"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.formatedit.off')"/></option>
197 </select>
198 </div>
199 <br class="clear"/>
200 </div>
201 </xsl:if>
202</xsl:template>
203
204<xsl:template name="berry-basket-param">
205 <div id="berrybasketprefs">
206 <xsl:variable name="berrybasket"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='berrybasket']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='berrybasket']/@value"/></xsl:when><xsl:otherwise>off</xsl:otherwise></xsl:choose></xsl:variable>
207 <div class="paramLabel">
208 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket')"/>
209 </div>
210 <div class="paramValue">
211 <select name="berrybasket">
212 <option value="on"><xsl:if test="$berrybasket='on'"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket.on')"/></option>
213 <option value="off"><xsl:if test="$berrybasket='off'"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket.off')"/></option>
214 </select>
215 </div>
216 <br class="clear"/>
217 </div>
218</xsl:template>
219 <xsl:template name="document-maker-param">
220 <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))">
221 <div id="documentmakerprefs">
222 <xsl:variable name="documentbasket"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='documentbasket']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='documentbasket']/@value"/></xsl:when><xsl:otherwise>off</xsl:otherwise></xsl:choose></xsl:variable>
223 <div class="paramLabel">Document basket</div>
224 <div class="paramValue">
225 <select name="documentbasket">
226 <option value="on"><xsl:if test="$documentbasket='on'"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket.on')"/></option>
227 <option value="off"><xsl:if test="$documentbasket='off'"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket.off')"/></option>
228 </select>
229 </div>
230 <br class="clear"/>
231 </div>
232 </xsl:if>
233 </xsl:template>
234 <xsl:template name="book-param">
235 <!-- tidy (?) -->
236 <xsl:variable name="tidyoption"><xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='tidyoption']"/></xsl:variable>
237 <xsl:if test="$tidyoption='tidy'">
238 <xsl:variable name="book"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='book']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='book']/@value"/></xsl:when><xsl:otherwise>off</xsl:otherwise></xsl:choose></xsl:variable>
239 <div class="paramLabel">
240 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.book')"/>
241 </div>
242 <div class="paramValue">
243 <select name="book">
244 <option value="on"><xsl:if test="$book='on'"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket.on')"/></option>
245 <option value="off"><xsl:if test="$book='off'"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket.off')"/></option>
246 </select>
247 </div>
248 <br class="clear"/>
249 </xsl:if>
250 </xsl:template>
251 <xsl:template name="theme-change-param">
252 <!-- Theme Changer -->
253 <xsl:if test="/page/pageRequest/userInformation and util:contains(/page/pageRequest/userInformation/@groups, 'administrator')">
254 <div>
255 <div class="paramLabel"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.theme')"/></div>
256 <script type="text/javascript">
257 <xsl:text disable-output-escaping="yes">
258 $(document).ready(function(){
259 $("#switcher").themeswitcher({
260 imgpath: "interfaces/" + gs.xsltParams.interface_name + "/style/images/",
261 additionalThemes: [
262 {title:"Greenstone Default", name:"custom-theme0", icon:"theme_90_greenstone.png", url:"interfaces/" + gs.xsltParams.interface_name + "/style/themes/main/jquery-ui-1.8.16.custom.css"},
263 {title:"Greenstone Custom 1", name:"custom-theme1", icon:"theme_90_start_menu.png", url:"interfaces/" + gs.xsltParams.interface_name + "/style/themes/alt_theme_1/jquery-ui-1.8.16.custom.css"},
264 {title:"Greenstone Custom 2", name:"custom-theme2", icon:"theme_90_mint_choco.png", url:"interfaces/" + gs.xsltParams.interface_name + "/style/themes/alt_theme_2/jquery-ui-1.8.16.custom.css"},
265 {title:"Greenstone Custom 3", name:"custom-theme3", icon:"theme_90_trontastic.png", url:"interfaces/" + gs.xsltParams.interface_name + "/style/themes/alt_theme_3/jquery-ui-1.8.16.custom.css"}
266 ]
267 });
268 });
269 </xsl:text>
270 </script>
271 <div class="paramValue" id="switcher"><xsl:text> </xsl:text></div>
272 </div>
273 <br class="clear"/>
274 </xsl:if>
275</xsl:template>
276
277<xsl:template name="hits-param">
278 <xsl:variable name="hits">
279 <xsl:choose>
280 <xsl:when test="/page/pageRequest/paramList/param[@name='hitsPerPage']">
281 <xsl:value-of select="/page/pageRequest/paramList/param[@name='hitsPerPage']/@value"/>
282 </xsl:when>
283 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']">
284 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']/@value"/>
285 </xsl:when>
286 <xsl:otherwise>
287 20
288 </xsl:otherwise>
289 </xsl:choose>
290 </xsl:variable>
291 <div class="paramLabel">
292 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.hitsperpage')"/>
293 </div>
294 <div class="paramValue">
295 <select name="s1.hitsPerPage">
296 <option value="20">
297 <xsl:if test="$hits=20">
298 <xsl:attribute name="selected" />
299 </xsl:if>
300 20
301 </option>
302 <option value="50">
303 <xsl:if test="$hits=50">
304 <xsl:attribute name="selected" />
305 </xsl:if>
306 50
307 </option>
308 <option value="100">
309 <xsl:if test="$hits=100">
310 <xsl:attribute name="selected" />
311 </xsl:if>
312 100
313 </option>
314 <option value="-1">
315 <xsl:if test="$hits=-1">
316 <xsl:attribute name="selected" />
317 </xsl:if>
318 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.all')"/>
319 </option>
320 </select>
321 </div>
322
323 <br class="clear"/>
324 </xsl:template>
325 <xsl:template name="max-docs-param">
326 <xsl:variable name="mdocs">
327 <xsl:choose>
328 <xsl:when test="/page/pageRequest/paramList/param[@name='maxDocs']">
329 <xsl:value-of select="/page/pageRequest/paramList/param[@name='maxDocs']/@value"/>
330 </xsl:when>
331 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.maxDocs']">
332 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.maxDocs']/@value"/>
333 </xsl:when>
334 <xsl:otherwise>100</xsl:otherwise>
335 </xsl:choose>
336 </xsl:variable>
337 <div class="paramLabel">
338 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.maxDocs')"/>
339 </div>
340 <div class="paramValue">
341 <input name="s1.maxDocs" size="3" value="{$mdocs}" />
342 </div>
343
344 <br class="clear"/>
345</xsl:template>
346
347 <!-- what happens if more than one query service??-->
348 <xsl:template name="casefold-param">
349 <xsl:for-each select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@type='query']/paramList/param[@name='case']"><xsl:call-template name="param-display"/></xsl:for-each>
350 </xsl:template>
351 <xsl:template name="stem-param">
352 <xsl:for-each select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@type='query']/paramList/param[@name='stem']"><xsl:call-template name="param-display"/></xsl:for-each>
353 </xsl:template>
354 <xsl:template name="accentfold-param">
355 <xsl:for-each select="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@type='query']/paramList/param[@name='accent']"><xsl:call-template name="param-display"/></xsl:for-each>
356 </xsl:template>
357</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.