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

Revision 23813, 8.9 KB (checked in by sjm84, 9 years ago)

Lots of upgrades to the oran skin, getting it ready to be the default skin for Greenstone3

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                   
31            function assembleURLFromForm(formElem)
32            {
33                var url = "dev";
34                var selectNodes = formElem.getElementsByTagName("select");
35                var inputNodes = formElem.getElementsByTagName("input");
36
37                for (var i = 0; i &lt; selectNodes.length; i++)
38                {
39                    var current = selectNodes[i];
40                    url += (url == "dev") ? "?" : "&amp;";
41                    url += current.name + "=";
42                    url += current.options[current.selectedIndex].text;
43                }
44               
45                for (var i = 0; i &lt; inputNodes.length; i++)
46                {
47                    var current = inputNodes[i];
48                    if (current.type == "hidden" || current.type == "text")
49                    {
50                        url += (url == "dev") ? "?" : "&amp;";
51                        url += current.name + "=";
52                        url += current.value;
53                    }
54                }
55                return url;
56            }
57                   
58            function checkModified(e)
59            {
60                if (modified)
61                {
62                    var ok = confirm("Would you like to save your preferences?");
63                   
64                    if (ok)
65                    {
66                        var formElem = document.getElementById("prefform");
67                        formElem.submit();
68                        var xmlhttp;
69                        if (window.XMLHttpRequest)
70                        {
71                            xmlhttp=new XMLHttpRequest();
72                        }
73                        else
74                        {
75                            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
76                        }
77                        //assembleURLFromForm(formElem);
78                        xmlhttp.open("GET",assembleURLFromForm(formElem),false);
79                        xmlhttp.send();
80                    }
81                }
82            }
83           
84            function changed()
85            {
86                modified = true;
87            }
88           
89            function pageLoad()
90            {
91                var formElem = document.getElementById("prefform");
92           
93                var selectNodes = formElem.getElementsByTagName("select");
94                var inputNodes = formElem.getElementsByTagName("input");
95
96                YAHOO.util.Event.addListener(selectNodes, 'change', changed);
97               
98                for(var i = 0; i &lt; inputNodes.length; i++)
99                {
100                    current = inputNodes[i];
101                    if(current.getAttribute("type") == null)
102                    {
103                        YAHOO.util.Event.on(current, 'keyup', changed);
104                    }
105                }
106            }
107           
108            YAHOO.util.Event.addListener(window, 'load', pageLoad);
109            YAHOO.util.Event.addListener(window, 'beforeunload', checkModified);
110        </xsl:text></script>
111
112        <xsl:variable name="collName" select="/page/pageRequest/paramList/param[@name='c']/@value"/>
113        <xsl:variable name="tidyoption"><xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='tidyoption']"/></xsl:variable>
114
115        <div id="queryform">
116            <form name="PrefForm" method="get" action="{$library_name}" id="prefform">
117
118                <input type='hidden' name='a' value='p'/>
119                <input type='hidden' name='sa' value='pref'/>
120                <input type='hidden' name='c' value="{$collName}"/>
121
122                <!-- presentation preferences -->
123                <h3 class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.prespref')"/></h3>
124                <div id="presprefs">
125
126                    <!-- language -->
127                    <div class="paramLabel">
128                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.interfacelang')"/>
129                    </div>
130                    <div class="paramValue">
131                        <select name="l">
132                            <xsl:for-each select="/page/pageResponse/languageList/language">
133                                <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>
134                            </xsl:for-each>
135                        </select>
136
137                    </div>
138                    <br class="clear"/>
139
140                    <!-- encoding -->
141                    <div class="paramValue">
142                        <span class="rightspace"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.encoding')"/></span>
143                    </div>
144                    <br class="clear"/>
145
146                </div>
147
148                <!-- berry baskets -->
149                <div id="berrybasketprefs">
150                    <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>
151                    <div class="paramLabel">
152                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.berrybasket')"/>
153                    </div>
154                    <div class="paramValue">
155                        <select name="berrybasket">
156                            <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>
157                            <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>
158                        </select>
159                    </div>
160                    <br class="clear"/>
161                </div>
162
163                <!-- tidy (?) -->
164                <xsl:if test="$tidyoption='tidy'">
165                    <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>
166                    <div class="paramLabel">
167                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.book')"/>
168                    </div>
169                    <div class="paramValue">
170                        <select name="book">
171                            <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>
172                            <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>
173                        </select>
174                    </div>
175                    <br class="clear"/>
176                </xsl:if>
177
178                <!-- search preferences -->
179                <h3><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.searchpref')"/></h3>
180                <div id="searchprefs">
181                    <xsl:variable name="hits">
182                        <xsl:choose>
183                            <xsl:when test="/page/pageRequest/paramList/param[@name='hitsPerPage']">
184                                <xsl:value-of select="/page/pageRequest/paramList/param[@name='hitsPerPage']/@value"/>
185                            </xsl:when>
186                            <xsl:otherwise>
187                                20
188                            </xsl:otherwise>
189                        </xsl:choose>
190                    </xsl:variable>
191                    <div class="paramLabel">
192                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.hitsperpage')"/>
193                    </div>
194                    <div class="paramValue">
195                        <select name="hitsPerPage">
196                            <option value="20">
197                                <xsl:if test="$hits=20">
198                                    <xsl:attribute name="selected" />
199                                </xsl:if>
200                                20
201                            </option>
202                            <option value="50">
203                                <xsl:if test="$hits=50">
204                                    <xsl:attribute name="selected" />
205                                </xsl:if>
206                                50
207                            </option>
208                            <option value="100">
209                                <xsl:if test="$hits=100">
210                                    <xsl:attribute name="selected" />
211                                </xsl:if>
212                                100
213                            </option>
214                            <option value="-1">
215                                <xsl:if test="$hits=-1">
216                                    <xsl:attribute name="selected" />
217                                </xsl:if>
218                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.all')"/>
219                            </option>
220                        </select>
221                    </div>
222                   
223                    <br class="clear"/>
224                   
225                    <xsl:variable name="mdocs">
226                        <xsl:choose>
227                            <xsl:when test="/page/pageRequest/paramList/param[@name='maxDocs']">
228                                <xsl:value-of select="/page/pageRequest/paramList/param[@name='maxDocs']/@value"/>
229                            </xsl:when>
230                            <xsl:otherwise>100</xsl:otherwise>
231                        </xsl:choose>
232                    </xsl:variable>
233                    <div class="paramLabel">
234                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.maxDocs')"/>
235                    </div>
236                    <div class="paramValue">
237                        <input name="maxDocs" size="3" value="{$mdocs}" />
238                    </div>
239                   
240                    <br class="clear"/>
241                </div>
242
243                <br/>
244
245                <input type='submit'><xsl:attribute name="value"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.set_prefs')"/></xsl:attribute></input>
246
247            </form>
248        </div>
249
250    </xsl:template>
251
252</xsl:stylesheet>
Note: See TracBrowser for help on using the browser.