root/main/trunk/greenstone3/web/interfaces/default/transform/pages/pref.xsl @ 26470

Revision 26470, 15.5 KB (checked in by ak19, 8 years ago)

Fixed how turning the realistic book on in Prefs wasn't being remembered, and would get reset. The select name was book, same as a variable. Have now added references to s1.book as was done for maxdocs and hitsPerPage.

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">
239                      <xsl:choose>
240                        <xsl:when test="/page/pageRequest/paramList/param[@name='book']">
241                          <xsl:value-of select="/page/pageRequest/paramList/param[@name='book']/@value"/>
242                        </xsl:when>
243                        <xsl:when test="/page/pageRequest/paramList/param[@name='s1.book']">
244                          <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.book']/@value"/>
245                        </xsl:when>
246                        <xsl:otherwise>off</xsl:otherwise>
247                      </xsl:choose>
248                    </xsl:variable>
249                    <div class="paramLabel">
250                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.book')"/>
251                    </div>
252                    <div class="paramValue">
253                        <select name="s1.book">
254                            <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>
255                            <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>
256                        </select>
257                    </div>
258                    <br class="clear"/>
259                </xsl:if>
260      </xsl:template>
261      <xsl:template name="theme-change-param">
262                <!-- Theme Changer -->
263                <xsl:if test="/page/pageRequest/userInformation and util:contains(/page/pageRequest/userInformation/@groups, 'administrator')">
264                    <div>
265                        <div class="paramLabel"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.theme')"/></div>
266                        <script type="text/javascript">
267                            <xsl:text disable-output-escaping="yes">
268                                $(document).ready(function(){
269                                    $("#switcher").themeswitcher({
270                                        imgpath: "interfaces/" + gs.xsltParams.interface_name + "/style/images/",
271                                        additionalThemes: [
272                                            {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"},
273                                            {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"},
274                                            {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"},
275                                            {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"}
276                                        ]
277                                    });
278                                });
279                            </xsl:text>
280                        </script>
281                        <div class="paramValue" id="switcher"><xsl:text> </xsl:text></div>
282                    </div>
283                    <br class="clear"/>
284                </xsl:if>
285</xsl:template>
286
287<xsl:template name="hits-param">
288                    <xsl:variable name="hits">
289                        <xsl:choose>
290                            <xsl:when test="/page/pageRequest/paramList/param[@name='hitsPerPage']">
291                                <xsl:value-of select="/page/pageRequest/paramList/param[@name='hitsPerPage']/@value"/>
292                            </xsl:when>
293                            <xsl:when test="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']">
294                                <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.hitsPerPage']/@value"/>
295                            </xsl:when>
296                            <xsl:otherwise>
297                                20
298                            </xsl:otherwise>
299                        </xsl:choose>
300                    </xsl:variable>
301                    <div class="paramLabel">
302                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.hitsperpage')"/>
303                    </div>
304                    <div class="paramValue">
305                        <select name="s1.hitsPerPage">
306                            <option value="20">
307                                <xsl:if test="$hits=20">
308                                    <xsl:attribute name="selected" />
309                                </xsl:if>
310                                20
311                            </option>
312                            <option value="50">
313                                <xsl:if test="$hits=50">
314                                    <xsl:attribute name="selected" />
315                                </xsl:if>
316                                50
317                            </option>
318                            <option value="100">
319                                <xsl:if test="$hits=100">
320                                    <xsl:attribute name="selected" />
321                                </xsl:if>
322                                100
323                            </option>
324                            <option value="-1">
325                                <xsl:if test="$hits=-1">
326                                    <xsl:attribute name="selected" />
327                                </xsl:if>
328                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.all')"/>
329                            </option>
330                        </select>
331                    </div>
332                   
333                    <br class="clear"/>
334                    </xsl:template>
335    <xsl:template name="max-docs-param">
336                    <xsl:variable name="mdocs">
337                        <xsl:choose>
338                            <xsl:when test="/page/pageRequest/paramList/param[@name='maxDocs']">
339                                <xsl:value-of select="/page/pageRequest/paramList/param[@name='maxDocs']/@value"/>
340                            </xsl:when>
341                            <xsl:when test="/page/pageRequest/paramList/param[@name='s1.maxDocs']">
342                                <xsl:value-of select="/page/pageRequest/paramList/param[@name='s1.maxDocs']/@value"/>
343                            </xsl:when>
344                            <xsl:otherwise>100</xsl:otherwise>
345                        </xsl:choose>
346                    </xsl:variable>
347                    <div class="paramLabel">
348                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.maxDocs')"/>
349                    </div>
350                    <div class="paramValue">
351                        <input name="s1.maxDocs" size="3" value="{$mdocs}" />
352                    </div>
353                   
354                    <br class="clear"/>
355</xsl:template>
356
357  <!-- what happens if more than one query service??-->
358  <xsl:template name="casefold-param">
359    <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>
360  </xsl:template>
361  <xsl:template name="stem-param">
362    <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>
363  </xsl:template>
364  <xsl:template name="accentfold-param">
365    <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>
366  </xsl:template>
367</xsl:stylesheet>
Note: See TracBrowser for help on using the browser.