root/main/trunk/greenstone3/web/interfaces/oran/transform/pages/pref.xsl @ 25123

Revision 25123, 12.8 KB (checked in by sjm84, 8 years ago)

The first wave of changes supporting the new login method

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