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

Revision 25462, 13.4 KB (checked in by sjm84, 7 years ago)

Fixes to map_scripts and also changed the on-page editing that it reloads the page with the expanded view. Later we will probably make the page reload unnecessary. Also fixed the preferences page.

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