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

Revision 26367, 15.3 KB (checked in by kjdon, 7 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.

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 browser.