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

Last change on this file since 29332 was 29332, checked in by kjdon, 10 years ago

alert, confirm, prompt no longer allowed in beforeunload. Just use the default prompt - do you want to leave? leave/stay. Custom text can no longer be added to this either, so I have a help message that is invisible to start with. Make it visible when the user clicks off the page so that if they stay on the page they get some indication of what they need to do.

File size: 14.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 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 <p id="SaveInstructions" style="color:red; text-align:center; display:none;"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.set_prefs_help')"/></p>
37 <xsl:call-template name="presentation-prefs"/>
38 <xsl:call-template name="search-prefs"/>
39 <br/>
40
41 <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>
42
43 </form>
44 </div>
45
46 </xsl:template>
47 <xsl:template name="presentation-prefs">
48 <h3 class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.prespref')"/></h3>
49 <div id="presprefs">
50 <xsl:call-template name="lang-param"/>
51 <!-- <xsl:call-template name="encoding-param"/>-->
52 <xsl:call-template name="format-edit-param"/>
53 <xsl:call-template name="berry-basket-param"/>
54 <xsl:call-template name="document-maker-param"/>
55 <xsl:call-template name="book-param"/>
56 <xsl:call-template name="theme-change-param"/>
57 </div>
58 </xsl:template>
59<xsl:template name="search-prefs">
60 <h3><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.searchpref')"/></h3>
61 <div id="searchprefs">
62 <xsl:call-template name="hits-param"/>
63 <xsl:call-template name="max-docs-param"/>
64 </div>
65</xsl:template>
66 <xsl:template name="prefs-javascript">
67 <!--
68 Add some javascript to the page that notices when a preference
69 is changed so that, if the user tries to navigate away from
70 the page without clicking the "Set preferences" button, it
71 gives a stay/leave dialog. -->
72 <script type="text/javascript"><xsl:text disable-output-escaping="yes">
73 var modified = false;
74 var bypass = false;
75
76 function unsavedChanges(e) {
77 if (modified &amp;&amp; !bypass) {
78 document.getElementById("SaveInstructions").style.display="block";
79 return "Provide the prompt";
80 }
81 // no return statement - no dialog will be shown
82 }
83
84 function changed()
85 {
86 modified = true;
87 bypass = false;
88 }
89
90 function pageLoad()
91 {
92 var formElem = document.getElementById("prefform");
93
94 var selectNodes = formElem.getElementsByTagName("select");
95 var inputNodes = formElem.getElementsByTagName("input");
96
97 YAHOO.util.Event.addListener(selectNodes, 'change', changed);
98
99 for(var i = 0; i &lt; inputNodes.length; i++)
100 {
101 current = inputNodes[i];
102 if(current.getAttribute("type") == null)
103 {
104 YAHOO.util.Event.on(current, 'keyup', changed);
105 }
106 }
107 }
108
109 YAHOO.util.Event.addListener(window, 'load', pageLoad);
110 $(window).bind("beforeunload", unsavedChanges);
111 </xsl:text></script>
112 </xsl:template>
113
114
115 <xsl:template name="lang-param">
116 <div class="paramLabel">
117 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.interfacelang')"/>
118 </div>
119 <div class="paramValue">
120 <select name="l">
121 <xsl:for-each select="/page/pageResponse/languageList/language">
122 <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>
123 </xsl:for-each>
124 </select>
125
126 </div>
127 <br class="clear"/>
128
129</xsl:template>
130
131
132 <xsl:template name="encoding-param">
133 <div class="paramValue">
134 <span class="rightspace"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.encoding')"/></span>
135 </div>
136 <br class="clear"/>
137
138 </xsl:template>
139
140
141 <xsl:template name="format-edit-param">
142 <xsl:if test="/page/pageResponse/collection/serviceList/service[@name='CoverageMetadataRetrieve']">
143 <div id="formateditprefs">
144 <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>
145 <div class="paramLabel">
146 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.formatedit')"/>
147 </div>
148 <div class="paramValue">
149 <select name="formatedit">
150 <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>
151 <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>
152 </select>
153 </div>
154 <br class="clear"/>
155 </div>
156 </xsl:if>
157</xsl:template>
158
159<xsl:template name="berry-basket-param">
160 <div id="berrybasketprefs">
161 <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>
162 <div class="paramLabel">
163 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket')"/>
164 </div>
165 <div class="paramValue">
166 <select name="berrybasket">
167 <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>
168 <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>
169 </select>
170 </div>
171 <br class="clear"/>
172 </div>
173</xsl:template>
174 <xsl:template name="document-maker-param">
175 <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))">
176 <div id="documentmakerprefs">
177 <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>
178 <div class="paramLabel">Document basket</div>
179 <div class="paramValue">
180 <select name="documentbasket">
181 <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>
182 <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>
183 </select>
184 </div>
185 <br class="clear"/>
186 </div>
187 </xsl:if>
188 </xsl:template>
189 <xsl:template name="book-param">
190 <!-- tidy (?) -->
191 <xsl:variable name="tidyoption"><xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='tidyoption']"/></xsl:variable>
192 <xsl:if test="$tidyoption='tidy'">
193 <xsl:variable name="book">
194 <xsl:choose>
195 <xsl:when test="/page/pageRequest/paramList/param[@name='book']">
196 <xsl:value-of select="/page/pageRequest/paramList/param[@name='book']/@value"/>
197 </xsl:when>
198 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.book']">
199 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.book']/@value"/>
200 </xsl:when>
201 <xsl:otherwise>off</xsl:otherwise>
202 </xsl:choose>
203 </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="s1.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 </xsl:template>
216 <xsl:template name="theme-change-param">
217 <!-- Theme Changer -->
218 <xsl:if test="/page/pageRequest/userInformation and util:contains(/page/pageRequest/userInformation/@groups, 'administrator')">
219 <div>
220 <div class="paramLabel"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.theme')"/></div>
221 <script type="text/javascript">
222 <xsl:text disable-output-escaping="yes">
223 $(document).ready(function(){
224 $("#switcher").themeswitcher({
225 imgpath: "interfaces/" + gs.xsltParams.interface_name + "/style/images/",
226 additionalThemes: [
227 {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"},
228 {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"},
229 {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"},
230 {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"}
231 ]
232 });
233 });
234 </xsl:text>
235 </script>
236 <div class="paramValue" id="switcher"><xsl:text> </xsl:text></div>
237 </div>
238 <br class="clear"/>
239 </xsl:if>
240</xsl:template>
241
242<xsl:template name="hits-param">
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 </xsl:template>
290 <xsl:template name="max-docs-param">
291 <xsl:variable name="mdocs">
292 <xsl:choose>
293 <xsl:when test="/page/pageRequest/paramList/param[@name='maxDocs']">
294 <xsl:value-of select="/page/pageRequest/paramList/param[@name='maxDocs']/@value"/>
295 </xsl:when>
296 <xsl:when test="/page/pageRequest/paramList/param[@name='s1.maxDocs']">
297 <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.maxDocs']/@value"/>
298 </xsl:when>
299 <xsl:otherwise>100</xsl:otherwise>
300 </xsl:choose>
301 </xsl:variable>
302 <div class="paramLabel">
303 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.maxDocs')"/>
304 </div>
305 <div class="paramValue">
306 <input name="s1.maxDocs" size="3" value="{$mdocs}" />
307 </div>
308
309 <br class="clear"/>
310</xsl:template>
311
312 <!-- what happens if more than one query service??-->
313 <xsl:template name="casefold-param">
314 <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>
315 </xsl:template>
316 <xsl:template name="stem-param">
317 <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>
318 </xsl:template>
319 <xsl:template name="accentfold-param">
320 <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>
321 </xsl:template>
322</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.