source: greenstone3/trunk/web/interfaces/classic/transform/pref.xsl@ 14394

Last change on this file since 14394 was 14394, checked in by anna, 17 years ago

Moved options on the search pages into the preference page. Only display search modes and options that are supported by the collection.

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