source: main/trunk/greenstone3/web/interfaces/gs2/transform/pref.xsl@ 24025

Last change on this file since 24025 was 20230, checked in by kjdon, 15 years ago

(temporary?) fix for ct arg not getting saved when changing search form types. have explicitly added it to form.

  • Property svn:keywords set to Author Date Id Revision
File size: 19.8 KB
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 extension-element-prefixes="java util"
7 exclude-result-prefixes="java util">
8
9 <!-- style includes global params interface_name, library_name -->
10 <xsl:include href="style.xsl"/>
11 <xsl:output method="html"/>
12
13 <!-- the main page layout template is here -->
14 <xsl:template match="page">
15 <html>
16 <head>
17 <title>
18 <!-- put a space in the title in case the actual value is missing - mozilla will not display a page with no title-->
19 <xsl:call-template name="pageTitle"/><xsl:text> </xsl:text>
20 </title>
21 <xsl:call-template name="globalStyle"/>
22 <xsl:call-template name="pageStyle"/>
23 </head>
24 <body>
25 <xsl:attribute name="dir"><xsl:call-template name="direction"/></xsl:attribute>
26 <div id="page-wrapper">
27 <xsl:apply-templates select="pageResponse"/>
28 <xsl:call-template name="greenstoneFooter"/>
29 </div>
30 </body>
31 </html>
32 </xsl:template>
33
34 <xsl:template name="pageTitle">
35 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref_tip')"/>
36 </xsl:template>
37
38 <!-- page specific style goes here -->
39 <xsl:template name="pageStyle">
40 <script type="text/javascript" src="interfaces/gs2/js/pref.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script>
41 </xsl:template>
42
43 <xsl:template match="pageResponse">
44 <xsl:variable name="collName" select="/page/pageRequest/paramList/param[@name='c']/@value"/>
45 <xsl:variable name="collType" select="/page/pageRequest/paramList/param[@name='ct']/@value"/>
46 <!-- check whether these search modes are supported -->
47 <xsl:variable name="simplestatus"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='TextQuery']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable>
48 <xsl:variable name="formstatus"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='FieldQuery']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable>
49 <xsl:variable name="advancedstatus"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='AdvancedFieldQuery']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable>
50
51 <center>
52 <xsl:call-template name="standardPageBanner">
53 <xsl:with-param name="collName" select="$collName"/>
54 <xsl:with-param name="pageType">pref</xsl:with-param>
55 </xsl:call-template>
56 <xsl:call-template name="navigationBar">
57 <xsl:with-param name="collName" select="$collName"/>
58 </xsl:call-template>
59 <form name="PrefForm" method="get" action="{$library_name}" onsubmit="return checkForm();">
60 <input type='hidden' name='a' value='p'/>
61 <input type='hidden' name='sa' value='pref'/>
62 <input type='hidden' name='c' value="{$collName}"/>
63 <input type='hidden' name='ct' value="{$collType}"/>
64
65 <table width="800">
66 <tr><td><div class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.prespref')"/></div></td></tr>
67 <tr><td><xsl:call-template name="pres-prefs"/></td></tr>
68 <tr><td><div class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.searchpref')"/></div></td></tr>
69 <tr><td><xsl:call-template name="search-mode-prefs"><xsl:with-param name="simplestatus" select="$simplestatus"/><xsl:with-param name="formstatus" select="$formstatus"/><xsl:with-param name="advancedstatus" select="$advancedstatus"/></xsl:call-template></td></tr>
70 </table>
71 </form>
72 </center>
73 </xsl:template>
74
75
76 <xsl:template name="pres-prefs">
77 <table>
78 <tr><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.interfacelang')"/></td><td align='left'><xsl:call-template name="lang-list"/><!--English--></td></tr>
79 <!--<tr><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.encoding')"/></td><td align='left'>UTF-8</td></tr> -->
80 </table>
81 </xsl:template>
82
83 <xsl:template name="lang-list">
84 <xsl:variable name="current" select="/page/@lang"/>
85 <select name="l">
86 <xsl:for-each select="/page/pageResponse/languageList/language">
87 <option value="{@name}"><xsl:if test="@name=$current"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:if test="displayItem"><xsl:value-of select="displayItem[@name='name']"/></xsl:if><xsl:if test="not(displayItem)"><xsl:value-of select="@displayname"/></xsl:if></option>
88 </xsl:for-each>
89 </select>
90 </xsl:template>
91
92 <xsl:template name="search-mode-prefs">
93 <xsl:param name="ns">s1.</xsl:param>
94 <!-- variables that indicates whether these mode are supported by current collection -->
95 <xsl:param name="simplestatus"/>
96 <xsl:param name="formstatus"/>
97 <xsl:param name="advancedstatus"/>
98
99 <!-- search type : 0(default, simple); 1(form) -->
100 <xsl:variable name="qt"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qt']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qt']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable>
101 <!-- search form type : 0(default, simple form); 1(advanced form) -->
102 <xsl:variable name="queryfmode"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qfm']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qfm']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable>
103 <!-- search mode: text, form, advanced -->
104 <xsl:variable name="mode"><xsl:choose><xsl:when test="$qt=0">text</xsl:when><xsl:when test="$queryfmode=0">form</xsl:when><xsl:when test="$queryfmode=1">advanced</xsl:when><xsl:otherwise>text</xsl:otherwise></xsl:choose></xsl:variable>
105
106 <table>
107 <tr><td> </td><td> </td><td align='right'><input type='submit' name="submit"><xsl:attribute name="value"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.set_prefs')"/></xsl:attribute></input></td></tr>
108 <!-- search type -->
109 <!-- values are updated by either xslt or javascript -->
110 <input type="hidden" name="qt" value="{$qt}"/>
111
112 <tr><td valign='baseline' class='col1'><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.search_type')"/></td><td class='col2'><input type='radio' name='qfm' value='2' onclick="javascript:changePref(2)"><xsl:if test="$qt=0 or $queryfmode=2"><xsl:attribute name="checked"/></xsl:if></input></td><td class='col3'> <font><xsl:if test="$qt=0 or $queryfmode=2"><xsl:attribute name="style">font-weight: bold;</xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.search_type_text')"/></font>
113
114 <xsl:if test="$formstatus='y'"><input name="qfm" onclick="javascript:changePref(0)" type="radio" value="0"><xsl:if test="$mode='form'"><xsl:attribute name="checked"/></xsl:if></input> <font><xsl:if test="$mode='form'"><xsl:attribute name="style">font-weight: bold;</xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.search_type_simple_form')"/></font></xsl:if>
115
116 <xsl:if test="$advancedstatus='y'"><input name="qfm" onclick="javascript:changePref(1)" type="radio" value="1" ><xsl:if test="$mode='advanced'"><xsl:attribute name="checked"/></xsl:if></input> <font><xsl:if test="$mode='advanced'"><xsl:attribute name="style">font-weight: bold;</xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.search_type_advanced_form')"/></font></xsl:if>
117 </td></tr>
118
119 <!-- search options -->
120 <tr><td><div class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.search_options')"/></div></td></tr>
121 <xsl:call-template name="search-options-prefs"><xsl:with-param name="mode" select="$mode"/><xsl:with-param name="simplestatus" select="$simplestatus"/><xsl:with-param name="formstatus" select="$formstatus"/><xsl:with-param name="advancedstatus" select="$advancedstatus"/></xsl:call-template>
122 </table>
123 </xsl:template>
124
125 <xsl:template name="search-options-prefs">
126 <xsl:param name="ns">s1.</xsl:param>
127 <xsl:param name="mode">text</xsl:param>
128 <xsl:param name="simplestatus"/>
129 <xsl:param name="formstatus"/>
130 <xsl:param name="advancedstatus"/>
131
132 <!-- extract service parameters, avoid hard coding params in this xslt -->
133 <!-- mode specific options -->
134 <xsl:call-template name="text-search-prefs"><xsl:with-param name="display"><xsl:if test="$mode='text'">y</xsl:if><xsl:if test="$mode='advanced' or $mode='form'">n</xsl:if></xsl:with-param></xsl:call-template>
135 <!-- simple form search mode doesn't have any specific options -->
136 <!-- <xsl:if test="$mode='form'"><xsl:apply-templates select="/page/pageResponse//service[@name='FieldQuery']"/></xsl:if> -->
137 <xsl:call-template name="advanced-search-prefs"><xsl:with-param name="display"><xsl:if test="$mode='advanced'">y</xsl:if><xsl:if test="$mode='text' or $mode='form'">n</xsl:if></xsl:with-param></xsl:call-template>
138
139 <!-- search type specific options -->
140 <xsl:apply-templates select="/page/pageResponse//service[@name='TextQuery']">
141 <xsl:with-param name="display"><xsl:if test="$mode='text' or $mode='form'">y</xsl:if><xsl:if test="$mode='advanced'">n</xsl:if></xsl:with-param>
142 <xsl:with-param name="prefix">tf</xsl:with-param>
143 </xsl:apply-templates>
144 <xsl:apply-templates select="/page/pageResponse//service[@name='AdvancedFieldQuery']">
145 <xsl:with-param name="display"><xsl:if test="$mode='advanced'">y</xsl:if><xsl:if test="$mode='text' or $mode='form'">n</xsl:if></xsl:with-param>
146 <xsl:with-param name="prefix">adv</xsl:with-param>
147 </xsl:apply-templates>
148
149 <!-- General options -->
150 <!-- sort order -->
151 <xsl:variable name="sort"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='TextQuery']//param[@name='sortBy']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable>
152 <xsl:if test="$sort='y'">
153 <xsl:variable name="sortvar" select="concat($ns,'sortBy')"/>
154 <xsl:variable name="sortparam" select="//param[@name='sortBy']"/>
155 <xsl:variable name="cachedValue" select="/page/pageRequest/paramList/param[@name=$sortvar]/@value"/>
156 <xsl:variable name="defaultValue" select="$sortparam/@default"/>
157 <xsl:variable name="optionVal" select="$sortparam/option[1]/@name"/>
158
159 <tr><td rowspan='2' valign='baseline'><xsl:value-of select="$sortparam/displayItem"/></td><td><input type='radio' name='{$sortvar}' value='{$optionVal}'><xsl:choose><xsl:when test="$cachedValue=$optionVal"><xsl:attribute name="checked"/></xsl:when><xsl:when test="normalize-space($cachedValue)='' and $optionVal=$defaultValue"><xsl:attribute name="checked"/></xsl:when></xsl:choose></input></td>
160 <td><xsl:value-of select="$sortparam/option[1]/displayItem"/></td></tr>
161
162 <xsl:variable name="optionVal" select="$sortparam/option[2]/@name"/>
163 <tr><td><input type='radio' name='{$sortvar}' value='{$optionVal}'><xsl:choose><xsl:when test="$cachedValue=$optionVal"><xsl:attribute name="checked"/></xsl:when><xsl:when test="normalize-space($cachedValue)='' and $optionVal=$defaultValue"><xsl:attribute name="checked"/></xsl:when></xsl:choose></input></td><td><xsl:value-of select="$sortparam/option[2]/displayItem"/></td></tr>
164 </xsl:if>
165
166 <!-- hit display -->
167 <!-- normally all the collections support customized number of returned records and displayed records. Just to be consistent with the other two options. -->
168 <xsl:variable name="maxstatus"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='TextQuery']//param[@name='maxDocs']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable>
169 <xsl:if test="$maxstatus='y'">
170 <xsl:variable name="maxvar" select="concat($ns,'maxDocs')"/>
171 <xsl:variable name="maxdocs"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name=$maxvar]"><xsl:value-of select="/page/pageRequest/paramList/param[@name=$maxvar]/@value"/></xsl:when><xsl:otherwise>50</xsl:otherwise></xsl:choose></xsl:variable>
172 <xsl:variable name="hits"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='hitsPerPage']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='hitsPerPage']/@value"/></xsl:when><xsl:otherwise>20</xsl:otherwise></xsl:choose></xsl:variable>
173 <xsl:variable name="maxdocs_param"><select name="{$ns}maxDocs">
174 <option value="50"><xsl:if test="$maxdocs=50"><xsl:attribute name="selected"></xsl:attribute></xsl:if>50</option>
175 <option value="100"><xsl:if test="$maxdocs=100"><xsl:attribute name="selected"></xsl:attribute></xsl:if>100</option>
176 <option value="200"><xsl:if test="$maxdocs=200"><xsl:attribute name="selected"></xsl:attribute></xsl:if>200</option>
177 <option value="-1"><xsl:if test="$maxdocs=-1"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.all')"/></option>
178 </select></xsl:variable>
179 <xsl:variable name="hits_param"><select name="hitsPerPage">
180 <option value="10"><xsl:if test="$hits=10"><xsl:attribute name="selected"></xsl:attribute></xsl:if>10 </option>
181 <option value="20"><xsl:if test="$hits=20"><xsl:attribute name="selected"></xsl:attribute></xsl:if>20</option>
182 <option value="50"><xsl:if test="$hits=50"><xsl:attribute name="selected"></xsl:attribute></xsl:if>50</option>
183 <option value="-1"><xsl:if test="$hits=-1"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.all')"/></option>
184 </select></xsl:variable>
185 <tr><td colspan='3'><xsl:value-of select="util:getInterfaceTextWithDOM($interface_name, /page/@lang, 'pref.hits', $maxdocs_param, $hits_param)" disable-output-escaping="yes"/></td></tr>
186 </xsl:if>
187 </xsl:template>
188
189 <xsl:template name="advanced-search-prefs">
190 <xsl:param name="display">n</xsl:param>
191 <xsl:variable name="numbox"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qfn']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qfn']/@value"/></xsl:when><xsl:otherwise>4</xsl:otherwise></xsl:choose></xsl:variable>
192 <tr id="adv-qnb"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
193 <td colspan='2'><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.num_fields')"/></td><td><select name="qfn">
194 <option value="2"><xsl:if test="$numbox=2"><xsl:attribute name="selected"></xsl:attribute></xsl:if>2</option>
195 <option value="4"><xsl:if test="$numbox=4"><xsl:attribute name="selected"></xsl:attribute></xsl:if>4</option>
196 <option value="6"><xsl:if test="$numbox=6"><xsl:attribute name="selected"></xsl:attribute></xsl:if>6</option>
197 <option value="8"><xsl:if test="$numbox=8"><xsl:attribute name="selected"></xsl:attribute></xsl:if>8</option>
198 </select></td><td/></tr>
199 </xsl:template>
200
201 <xsl:template name="text-search-prefs">
202 <xsl:param name="display">n</xsl:param>
203 <!-- query mode : 0(default, simple); 1(advanced, boolean)-->
204 <xsl:variable name="querymode"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qm']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qm']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable>
205 <tr id="text-qm1"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if><td rowspan='2' valign='baseline'>Query mode </td><td><input type='radio' name='qm' value='0'><xsl:if test="$querymode=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.query_mode_simple')"/></td></tr>
206 <tr id="text-qm2"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if><td><input type='radio' name='qm' value='1'><xsl:if test="$querymode=1"><xsl:attribute name="checked"/></xsl:if></input></td><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.query_mode_adv')"/></td></tr>
207
208 <!-- query box size -->
209 <xsl:variable name="boxsize"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qb']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qb']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable>
210 <tr id="text-qb1"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if><td rowspan='2' valign='baseline'><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.query_box_size')"/></td><td><input type='radio' name='qb' value='0'><xsl:if test="$boxsize=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.query_box_size_reg')"/></td></tr>
211 <tr id="text-qb2"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if><td><input type='radio' name='qb' value='1'><xsl:if test="$boxsize=1"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.query_box_size_large')"/></td></tr>
212 </xsl:template>
213
214
215 <xsl:template match="service">
216 <xsl:param name="display">n</xsl:param>
217 <xsl:param name="prefix"/>
218 <xsl:apply-templates select="paramList/param[not(@type='invisible')]"><xsl:with-param name="display" select="$display"/><xsl:with-param name="prefix" select="$prefix"/></xsl:apply-templates>
219 </xsl:template>
220
221 <xsl:template match="param">
222 <xsl:param name="ns">s1.</xsl:param>
223 <xsl:param name="display">n</xsl:param>
224 <xsl:param name="prefix"/>
225
226 <xsl:if test="not(@name='matchMode') and not(@name='level') and not(@name='index') and not(@name='sortBy') and not(@name='indexSubcollection') and not(@name='indexLanguage') and (@type='boolean' or @type='enum_single')"><xsl:apply-templates select="." mode="radio"><xsl:with-param name="display" select="$display"/><xsl:with-param name="prefix" select="$prefix"/><xsl:with-param name="paramIdx" select="position()"/></xsl:apply-templates></xsl:if>
227 </xsl:template>
228
229 <xsl:template match="param" mode="radio">
230 <xsl:param name="ns">s1.</xsl:param>
231 <xsl:param name="display">n</xsl:param>
232 <xsl:param name="prefix"/>
233 <xsl:param name="paramIdx"/>
234
235 <xsl:variable name="cachedName" select="concat($ns, @name)"/>
236 <xsl:variable name="cachedValue"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name=$cachedName]"><xsl:value-of select="/page/pageRequest/paramList/param[@name=$cachedName]/@value"/></xsl:when><xsl:otherwise><xsl:value-of select="@default"/></xsl:otherwise></xsl:choose></xsl:variable>
237 <!-- number of options, for rowspan attribute -->
238 <xsl:variable name="numOptions" select="count(option)"/>
239 <xsl:variable name="displayName"><xsl:value-of select="displayItem"/></xsl:variable>
240 <xsl:variable name="paramName"><xsl:value-of select="@name"/></xsl:variable>
241
242 <xsl:for-each select="option">
243 <xsl:variable name="value" select="@name"/>
244 <tr><xsl:attribute name="id"><xsl:value-of select="concat($prefix, '-', $paramIdx, '-', position())"/></xsl:attribute><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
245 <xsl:if test="position()=1"><td rowspan='{$numOptions}' valign='baseline'><xsl:value-of select="../displayItem"/></td></xsl:if>
246 <td><input type='radio' name='{$cachedName}' value="{$value}"><xsl:if test="$cachedValue=$value"><xsl:attribute name="checked">true</xsl:attribute></xsl:if></input></td>
247 <td><xsl:value-of select="displayItem"/></td>
248 </tr>
249 </xsl:for-each>
250 </xsl:template>
251
252</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.