source: main/trunk/greenstone3/web/interfaces/oran/transform/pages/pref.xsl@ 25462

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

Fixes to map_scripts and also changed the on-page editing that it reloads the page with the expanded view. Later we will probably make the page reload unnecessary. Also fixed the preferences page.

File size: 13.4 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
27 <!--
28 Add some javascript to the page that notices when a preference is changed
29 so that, if the user tries to navigate away from the page without clicking
30 the "Set preferences" button, it asks them if they want their preferences
31 saved or not
32 -->
33 <script type="text/javascript"><xsl:text disable-output-escaping="yes">
34 var modified = false;
35 var bypass = false;
36
37 function assembleURLFromForm(formElem)
38 {
39 var url = "dev";
40 var selectNodes = formElem.getElementsByTagName("select");
41 var inputNodes = formElem.getElementsByTagName("input");
42
43 for (var i = 0; i &lt; selectNodes.length; i++)
44 {
45 var current = selectNodes[i];
46 url += (url == "dev") ? "?" : "&amp;";
47 url += current.name + "=";
48 url += current.options[current.selectedIndex].text;
49 }
50
51 for (var i = 0; i &lt; inputNodes.length; i++)
52 {
53 var current = inputNodes[i];
54 if (current.type == "hidden" || current.type == "text")
55 {
56 url += (url == "dev") ? "?" : "&amp;";
57 url += current.name + "=";
58 url += current.value;
59 }
60 }
61 return url;
62 }
63
64 function checkModified(e)
65 {
66 if (modified &amp;&amp; !bypass)
67 {
68 var ok = confirm("Would you like to save your preferences?");
69
70 if (ok)
71 {
72 var formElem = document.getElementById("prefform");
73 formElem.submit();
74 var xmlhttp;
75 if (window.XMLHttpRequest)
76 {
77 xmlhttp=new XMLHttpRequest();
78 }
79 else
80 {
81 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
82 }
83
84 xmlhttp.open("GET",assembleURLFromForm(formElem),false);
85 xmlhttp.send();
86 }
87 }
88 }
89
90 function changed()
91 {
92 modified = true;
93 bypass = false;
94 }
95
96 function pageLoad()
97 {
98 var formElem = document.getElementById("prefform");
99
100 var selectNodes = formElem.getElementsByTagName("select");
101 var inputNodes = formElem.getElementsByTagName("input");
102
103 YAHOO.util.Event.addListener(selectNodes, 'change', changed);
104
105 for(var i = 0; i &lt; inputNodes.length; i++)
106 {
107 current = inputNodes[i];
108 if(current.getAttribute("type") == null)
109 {
110 YAHOO.util.Event.on(current, 'keyup', changed);
111 }
112 }
113 }
114
115 YAHOO.util.Event.addListener(window, 'load', pageLoad);
116 YAHOO.util.Event.addListener(window, 'beforeunload', checkModified);
117 </xsl:text></script>
118
119 <xsl:variable name="collName" select="/page/pageRequest/paramList/param[@name='c']/@value"/>
120 <xsl:variable name="tidyoption"><xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='tidyoption']"/></xsl:variable>
121
122 <div id="queryform">
123 <form name="PrefForm" method="get" action="{$library_name}" id="prefform">
124
125 <input type='hidden' name='a' value='p'/>
126 <input type='hidden' name='sa' value='pref'/>
127 <input type='hidden' name='c' value="{$collName}"/>
128
129 <!-- presentation preferences -->
130 <h3 class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.prespref')"/></h3>
131 <div id="presprefs">
132
133 <!-- language -->
134 <div class="paramLabel">
135 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.interfacelang')"/>
136 </div>
137 <div class="paramValue">
138 <select name="l">
139 <xsl:for-each select="/page/pageResponse/languageList/language">
140 <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>
141 </xsl:for-each>
142 </select>
143
144 </div>
145 <br class="clear"/>
146
147 <!-- encoding -->
148 <div class="paramValue">
149 <span class="rightspace"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.encoding')"/></span>
150 </div>
151 <br class="clear"/>
152
153 <!-- format editing -->
154 <xsl:if test="/page/pageResponse/collection/serviceList/service[@name='CoverageMetadataRetrieve']">
155 <div id="formateditprefs">
156 <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>
157 <div class="paramLabel">
158 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.formatedit')"/>
159 </div>
160 <div class="paramValue">
161 <select name="formatedit">
162 <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>
163 <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>
164 </select>
165 </div>
166 <br class="clear"/>
167 </div>
168 </xsl:if>
169 </div>
170
171 <!-- berry baskets -->
172 <div id="berrybasketprefs">
173 <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>
174 <div class="paramLabel">
175 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket')"/>
176 </div>
177 <div class="paramValue">
178 <select name="berrybasket">
179 <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>
180 <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>
181 </select>
182 </div>
183 <br class="clear"/>
184 </div>
185
186 <!-- document maker -->
187 <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))">
188 <div id="documentmakerprefs">
189 <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>
190 <div class="paramLabel">Document basket</div>
191 <div class="paramValue">
192 <select name="documentbasket">
193 <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>
194 <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>
195 </select>
196 </div>
197 <br class="clear"/>
198 </div>
199 </xsl:if>
200
201 <!-- tidy (?) -->
202 <xsl:if test="$tidyoption='tidy'">
203 <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>
204 <div class="paramLabel">
205 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.book')"/>
206 </div>
207 <div class="paramValue">
208 <select name="book">
209 <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>
210 <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>
211 </select>
212 </div>
213 <br class="clear"/>
214 </xsl:if>
215
216 <!-- Theme Changer -->
217 <xsl:if test="/page/pageRequest/userInformation and util:contains(/page/pageRequest/userInformation/@groups, 'administrator')">
218 <div>
219 <div class="paramLabel"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.theme')"/></div>
220 <script type="text/javascript">
221 <xsl:text disable-output-escaping="yes">
222 $(document).ready(function(){
223 $("#switcher").themeswitcher({
224 imgpath: "interfaces/" + gs.xsltParams.interface_name + "/style/images/",
225 additionalThemes: [
226 {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"},
227 {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"},
228 {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"},
229 {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"}
230 ]
231 });
232 });
233 </xsl:text>
234 </script>
235 <div class="paramValue" id="switcher"><xsl:text> </xsl:text></div>
236 </div>
237 <br class="clear"/>
238 </xsl:if>
239
240 <!-- search preferences -->
241 <h3><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.searchpref')"/></h3>
242 <div id="searchprefs">
243 <xsl:variable name="hits">
244 <xsl:choose>
245 <xsl:when test="/page/pageRequest/paramList/param[@name='hitsPerPage']">
246 <xsl:value-of select="/page/pageRequest/paramList/param[@name='hitsPerPage']/@value"/>
247 </xsl:when>
248 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']">
249 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']/@value"/>
250 </xsl:when>
251 <xsl:otherwise>
252 20
253 </xsl:otherwise>
254 </xsl:choose>
255 </xsl:variable>
256 <div class="paramLabel">
257 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.hitsperpage')"/>
258 </div>
259 <div class="paramValue">
260 <select name="s1.hitsPerPage">
261 <option value="20">
262 <xsl:if test="$hits=20">
263 <xsl:attribute name="selected" />
264 </xsl:if>
265 20
266 </option>
267 <option value="50">
268 <xsl:if test="$hits=50">
269 <xsl:attribute name="selected" />
270 </xsl:if>
271 50
272 </option>
273 <option value="100">
274 <xsl:if test="$hits=100">
275 <xsl:attribute name="selected" />
276 </xsl:if>
277 100
278 </option>
279 <option value="-1">
280 <xsl:if test="$hits=-1">
281 <xsl:attribute name="selected" />
282 </xsl:if>
283 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.all')"/>
284 </option>
285 </select>
286 </div>
287
288 <br class="clear"/>
289
290 <xsl:variable name="mdocs">
291 <xsl:choose>
292 <xsl:when test="/page/pageRequest/paramList/param[@name='maxDocs']">
293 <xsl:value-of select="/page/pageRequest/paramList/param[@name='maxDocs']/@value"/>
294 </xsl:when>
295 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.maxDocs']">
296 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.maxDocs']/@value"/>
297 </xsl:when>
298 <xsl:otherwise>100</xsl:otherwise>
299 </xsl:choose>
300 </xsl:variable>
301 <div class="paramLabel">
302 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.maxDocs')"/>
303 </div>
304 <div class="paramValue">
305 <input name="s1.maxDocs" size="3" value="{$mdocs}" />
306 </div>
307
308 <br class="clear"/>
309 </div>
310
311 <br/>
312
313 <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>
314
315 </form>
316 </div>
317
318 </xsl:template>
319
320</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.