source: main/trunk/greenstone3/web/interfaces/oran/transform/pages/authen.xsl@ 25275

Last change on this file since 25275 was 25275, checked in by sjm84, 12 years ago

Completely reworked the xslt for the administration pages

  • Property svn:executable set to *
File size: 19.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:gslib="http://www.greenstone.org/skinning"
6 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
7 extension-element-prefixes="java util"
8 exclude-result-prefixes="java util">
9
10 <!-- use the 'main' layout -->
11 <xsl:import href="layouts/main.xsl"/>
12 <xsl:output method="html"/>
13
14 <!-- set page title -->
15 <xsl:template name="pageTitle">
16 <xsl:choose>
17 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'AddUser'">
18 <xsl:text>Add a new user</xsl:text>
19 </xsl:when>
20 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'Register'">
21 <xsl:text>Register</xsl:text>
22 </xsl:when>
23 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'EditUser'">
24 <xsl:text>Edit user</xsl:text>
25 </xsl:when>
26 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'AccountSettings'">
27 <xsl:text>Account settings</xsl:text>
28 </xsl:when>
29 <xsl:otherwise>
30 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.authentication')"/>
31 </xsl:otherwise>
32 </xsl:choose>
33 </xsl:template>
34
35 <!-- set page breadcrumbs -->
36 <xsl:template name="breadcrumbs">
37 <gslib:siteLink/><gslib:rightArrow/><a href="{$library_name}/admin/ListUsers"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.authentication')"/></a>
38 </xsl:template>
39
40 <xsl:template match="/page">
41 <xsl:if test="/page/pageResponse/error">
42 <div id="gs_error" class="ui-state-error ui-corner-all">
43 <span class="ui-icon ui-icon-alert" style="float: left;"><xsl:text> </xsl:text></span><xsl:value-of select="/page/pageResponse/error"/>
44 </div>
45 <br/>
46 </xsl:if>
47 <div id="main">
48 <xsl:choose>
49 <!-- ********** -->
50 <!-- LOGIN PAGE -->
51 <!-- ********** -->
52 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'Login'">
53 <form method="POST" action="{$library_name}/admin/{/page/pageRequest/paramList/param[@name = 's1.authpage']/@value}">
54 <table id="loginTable">
55 <tr><td>Username: </td><td><input type="text" name="username"/></td></tr>
56 <tr><td>Password: </td><td><input type="password" name="password"/></td></tr>
57 <tr><td><input type="submit" value="Login"/></td><td><xsl:text> </xsl:text></td></tr>
58 </table>
59 </form>
60 </xsl:when>
61
62 <!-- *************** -->
63 <!-- LIST USERS PAGE -->
64 <!-- *************** -->
65 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'ListUsers'">
66 <table id="userListTable">
67 <tr class="ui-widget-header">
68 <td colspan="7"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.list_of_current_users_title')"/></td>
69 </tr>
70 <tr class="ui-state-default">
71 <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.username')"/></td>
72 <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.account_status')"/></td>
73 <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.groups')"/></td>
74 <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.comment')"/></td>
75 <td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.email')"/></td>
76 <td><xsl:text> </xsl:text></td>
77 <td><xsl:text> </xsl:text></td>
78 </tr>
79 <xsl:for-each select="/page/pageResponse/authenticationNode/service/userNodeList/userNode">
80 <tr class="ui-widget-content">
81 <td><xsl:value-of select="@username"/></td>
82 <td>
83 <xsl:choose>
84 <xsl:when test="@status = 'true'">
85 <xsl:text>enabled</xsl:text>
86 </xsl:when>
87 <xsl:otherwise>
88 <xsl:text>disabled</xsl:text>
89 </xsl:otherwise>
90 </xsl:choose>
91 </td>
92 <td><xsl:value-of select='util:replace(@groups, ",", " ")'/></td>
93 <td><xsl:value-of select="@comment"/></td>
94 <td><xsl:value-of select="@email"/></td>
95 <td><a href="{$library_name}/admin/EditUser?s1.username={@username}"><button>Edit</button></a></td>
96 <td><a href="{$library_name}/admin/PerformDeleteUser?s1.username={@username}"><button>Delete</button></a></td>
97 </tr>
98 </xsl:for-each>
99 </table>
100 <div id="auth_navbar">
101 <!-- Add User link-->
102 <span class="ui-state-default ui-corner-all">
103 <a href="{$library_name}/admin/AddUser"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.add_a_new_user')"/></a>
104 </span>
105 </div>
106 </xsl:when>
107
108 <!-- ********************************* -->
109 <!-- EDIT USER / ACCOUNT SETTINGS PAGE -->
110 <!-- ********************************* -->
111 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'EditUser' or /page/pageResponse/authenticationNode/service/@operation = 'AccountSettings'">
112 <form method="POST">
113 <xsl:attribute name="action">
114 <xsl:choose>
115 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'EditUser'">
116 <xsl:value-of select="$library_name"/><xsl:text>/admin/PerformEdit</xsl:text>
117 </xsl:when>
118 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'AccountSettings'">
119 <xsl:value-of select="$library_name"/><xsl:text>/admin/PerformAccEdit</xsl:text>
120 </xsl:when>
121 </xsl:choose>
122 </xsl:attribute>
123 <input type="hidden" name="s1.prevUsername" value="{/page/pageResponse/authenticationNode/service/userNodeList/userNode/@username}"/>
124 <table>
125 <tr>
126 <td><xsl:text>Username: </xsl:text></td>
127 <td>
128 <input type="text" name="s1.newUsername" value="{/page/pageResponse/authenticationNode/service/userNodeList/userNode/@username}"/>
129 </td>
130 </tr>
131 <xsl:choose>
132 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'EditUser'">
133 <tr>
134 <td id="passwordLabelCell">
135 <button id="changePasswordButton">Change Password...</button>
136 <script type="text/javascript">
137 <xsl:text disable-output-escaping="yes">
138 var changePasswordButton = document.getElementById("changePasswordButton");
139 changePasswordButton.onclick = function()
140 {
141 changePasswordButton.parentNode.removeChild(changePasswordButton);
142
143 var passwordLabel = document.createTextNode("Password: ");
144 document.getElementById("passwordLabelCell").appendChild(passwordLabel);
145
146 var passwordInput = document.createElement("INPUT");
147 passwordInput.setAttribute("name", "s1.password");
148 passwordInput.setAttribute("type", "password");
149 document.getElementById("passwordInputCell").appendChild(passwordInput);
150 }
151 </xsl:text>
152 </script>
153 </td>
154 <td id="passwordInputCell">
155 <xsl:text> </xsl:text>
156 </td>
157 </tr>
158 </xsl:when>
159 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'AccountSettings'">
160 <tr>
161 <td><button id="changePasswordButton">Change Password...</button></td>
162 <script type="text/javascript">
163 <xsl:text disable-output-escaping="yes">
164 var changePasswordButton = document.getElementById("changePasswordButton");
165 changePasswordButton.onclick = function()
166 {
167 changePasswordButton.parentNode.removeChild(changePasswordButton);
168
169 var names = ["s1.oldPassword", "s1.newPassword", ""];
170 var ids = ["oldPassword", "passwordOne", "passwordTwo"];
171 var labels = ["Old password: ", "New password: ", "Retype new password: "];
172 var parents = ["oldPassword", "password", "retypePassword"];
173
174 for(var i = 0; i &lt; names.length; i++)
175 {
176 $("#" + parents[i] + "LabelCell").append(labels[i]);
177
178 var input = $("&lt;input&gt;");
179 input.attr("name", names[i]);
180 input.attr("type", "password");
181 input.attr("id", ids[i]);
182
183 $("#" + parents[i] + "InputCell").append(input);
184 }
185 }
186 </xsl:text>
187 </script>
188 </tr>
189 <tr>
190 <td id="oldPasswordLabelCell"><xsl:text> </xsl:text></td>
191 <td id="oldPasswordInputCell"><xsl:text> </xsl:text></td>
192 </tr>
193 <tr>
194 <td id="passwordLabelCell"><xsl:text> </xsl:text></td>
195 <td id="passwordInputCell"><xsl:text> </xsl:text></td>
196 </tr>
197 <tr>
198 <td id="retypePasswordLabelCell"><xsl:text> </xsl:text></td>
199 <td id="retypePasswordInputCell"><xsl:text> </xsl:text></td>
200 </tr>
201 </xsl:when>
202 </xsl:choose>
203 <tr>
204 <td><xsl:text>Email address: </xsl:text></td>
205 <td>
206 <input type="text" name="s1.newEmail" value="{/page/pageResponse/authenticationNode/service/userNodeList/userNode/@email}"/>
207 </td>
208 </tr>
209 <xsl:if test="/page/pageResponse/authenticationNode/service/@operation = 'EditUser'">
210 <tr>
211 <td><xsl:text>Groups: </xsl:text></td>
212 <td>
213 <input id="groupsInput" size="50" type="text" name="s1.groups" value="{/page/pageResponse/authenticationNode/service/userNodeList/userNode/@groups}"/>
214 </td>
215 <td>
216 <select id="groupSelector">
217 <option>administrator</option>
218 <option>all-collections-editor</option>
219 <option>personal-collections-editor</option>
220 </select>
221 </td>
222 <td>
223 <button id="addGroupButton">Add Group</button>
224 <script type="text/javascript">
225 <xsl:text disable-output-escaping="yes">
226 var addGroupButton = document.getElementById("addGroupButton");
227 addGroupButton.onclick = function()
228 {
229 var groupsInput = document.getElementById("groupsInput");
230 var groupSelector = document.getElementById("groupSelector");
231 var options = groupSelector.getElementsByTagName("OPTION");
232 var selectedGroup = options[groupSelector.selectedIndex].innerHTML;
233 var currentValue = groupsInput.value;
234
235 if(currentValue &amp;&amp; currentValue.search(/\w/) != -1)
236 {
237 groupsInput.value = currentValue + "," + selectedGroup;
238 }
239 else
240 {
241 groupsInput.value = selectedGroup;
242 }
243 return false;
244 }
245 </xsl:text>
246 </script>
247 </td>
248 </tr>
249 <tr>
250 <td><xsl:text>Comment: </xsl:text></td>
251 <td>
252 <textarea name="s1.comment" style="width:100%;"><xsl:value-of select="/page/pageResponse/authenticationNode/service/userNodeList/userNode/@comment"/></textarea>
253 </td>
254 </tr>
255 <tr>
256 <td><xsl:text>Status: </xsl:text></td>
257 <td>
258 <input type="radio" name="s1.status" value="true">
259 <xsl:if test="/page/pageResponse/authenticationNode/service/userNodeList/userNode/@status = 'true'">
260 <xsl:attribute name="checked">true</xsl:attribute>
261 </xsl:if>
262 </input>
263 <xsl:text>Enabled </xsl:text>
264
265 <input type="radio" name="s1.status" value="false">
266 <xsl:if test="/page/pageResponse/authenticationNode/service/userNodeList/userNode/@status = 'false'">
267 <xsl:attribute name="checked">true</xsl:attribute>
268 </xsl:if>
269 </input>
270 <xsl:text>Disabled </xsl:text>
271 </td>
272 </tr>
273 </xsl:if>
274 <tr>
275 <td>
276 <input id="submitButton" type="submit" value="Submit"/>
277 <xsl:if test="/page/pageResponse/authenticationNode/service/@operation = 'AccountSettings'">
278 <script type="text/javascript">
279 <xsl:text disable-output-escaping="yes">
280 $("#submitButton").click(function()
281 {
282 var passwordOne = $("#passwordOne");
283 var passwordTwo = $("#passwordTwo");
284
285 if(passwordOne.val() != passwordTwo.val())
286 {
287 alert("The passwords you have entered do not match");
288 return false;
289 }
290 else
291 {
292 return true;
293 }
294 });
295 </xsl:text>
296 </script>
297 </xsl:if>
298 </td>
299 </tr>
300 <tr>
301 <td style="font-size:0.6em;"><a href="{$library_name}/admin/PerformResetPassword?s1.username={/page/pageResponse/authenticationNode/service/userNodeList/userNode/@username}"><br/>Reset Password...</a></td>
302 </tr>
303 </table>
304 </form>
305 </xsl:when>
306
307 <!-- ************************ -->
308 <!-- ADD USER / REGISTER PAGE -->
309 <!-- ************************ -->
310 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'AddUser' or /page/pageResponse/authenticationNode/service/@operation = 'Register'">
311 <form method="POST">
312 <xsl:attribute name="action">
313 <xsl:choose>
314 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'AddUser'">
315 <xsl:value-of select="$library_name"/><xsl:text>/admin/PerformAdd</xsl:text>
316 </xsl:when>
317 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'Register'">
318 <xsl:value-of select="$library_name"/><xsl:text>/admin/PerformRegister</xsl:text>
319 </xsl:when>
320 </xsl:choose>
321 </xsl:attribute>
322 <table>
323 <tr>
324 <td><xsl:text>Username: </xsl:text></td>
325 <td>
326 <input type="text" name="s1.username"/>
327 </td>
328 </tr>
329 <tr>
330 <td><xsl:text>Password: </xsl:text></td>
331 <td>
332 <input id="passwordOne" type="password" name="s1.password"/>
333 </td>
334 </tr>
335 <tr>
336 <td><xsl:text>Retype password: </xsl:text></td>
337 <td>
338 <input id="passwordTwo" type="password"/>
339 </td>
340 </tr>
341 <tr>
342 <td><xsl:text>Email address: </xsl:text></td>
343 <td>
344 <input type="text" name="s1.email"/>
345 </td>
346 </tr>
347 <xsl:if test="/page/pageResponse/authenticationNode/service/@operation = 'AddUser'">
348 <tr>
349 <td><xsl:text>Groups: </xsl:text></td>
350 <td>
351 <input id="groupsInput" size="50" type="text" name="s1.groups"/>
352 </td>
353 <td>
354 <select id="groupSelector">
355 <option>administrator</option>
356 <option>all-collections-editor</option>
357 <option>personal-collections-editor</option>
358 </select>
359 </td>
360 <td>
361 <button id="addGroupButton">Add Group</button>
362 <script type="text/javascript">
363 <xsl:text disable-output-escaping="yes">
364 var addGroupButton = document.getElementById("addGroupButton");
365 addGroupButton.onclick = function()
366 {
367 var groupsInput = document.getElementById("groupsInput");
368 var groupSelector = document.getElementById("groupSelector");
369 var options = groupSelector.getElementsByTagName("OPTION");
370 var selectedGroup = options[groupSelector.selectedIndex].innerHTML;
371 var currentValue = groupsInput.getAttribute("value");
372
373 if(currentValue &amp;&amp; currentValue.search(/\w/) != -1)
374 {
375 groupsInput.setAttribute("value", currentValue + "," + selectedGroup);
376 }
377 else
378 {
379 groupsInput.setAttribute("value", selectedGroup);
380 }
381 return false;
382 }
383 </xsl:text>
384 </script>
385 </td>
386 </tr>
387 <tr>
388 <td><xsl:text>Comment: </xsl:text></td>
389 <td>
390 <textarea name="s1.comment" style="width:100%;"><xsl:text> </xsl:text></textarea>
391 </td>
392 </tr>
393 <tr>
394 <td><xsl:text>Status: </xsl:text></td>
395 <td>
396 <input type="radio" name="s1.status" value="true" checked="true"/><xsl:text>Enabled </xsl:text>
397 <input type="radio" name="s1.status" value="false"/><xsl:text>Disabled </xsl:text>
398 </td>
399 </tr>
400 </xsl:if>
401 <xsl:if test="/page/pageResponse/authenticationNode/service/@operation = 'Register'">
402 <tr>
403 <td colspan="2">
404 <xsl:value-of disable-output-escaping="yes" select="util:reCAPTCHAimage()"/>
405 </td>
406 <script type="text/javascript">
407 <xsl:text disable-output-escaping="yes">
408 function changeParams()
409 {
410 $("#recaptcha_challenge_field").attr("name", "s1.recaptcha_challenge_field");
411 $("#recaptcha_response_field").attr("name", "s1.recaptcha_response_field");
412 }
413 $(window).load(changeParams());
414 </xsl:text>
415 </script>
416 </tr>
417 </xsl:if>
418 <tr>
419 <td>
420 <input id="submitButton" type="submit" value="Submit"/>
421 <script type="text/javascript">
422 <xsl:text disable-output-escaping="yes">
423 $("#submitButton").click(function()
424 {
425 var passwordOne = $("#passwordOne");
426 var passwordTwo = $("#passwordTwo");
427
428 if(passwordOne.val() != passwordTwo.val())
429 {
430 alert("The passwords you have entered do not match");
431 return false;
432 }
433 else
434 {
435 return true;
436 }
437 });
438 </xsl:text>
439 </script>
440 </td>
441 </tr>
442 </table>
443 </form>
444 </xsl:when>
445
446 <!-- ********************** -->
447 <!-- REGISTER RESPONSE PAGE -->
448 <!-- ********************** -->
449 <xsl:when test="/page/pageResponse/authenticationNode/service/@operation = 'PerformRegister'">
450 <xsl:choose>
451 <xsl:when test="/page/pageResponse/error">
452 <xsl:text>Error: Failed to add user</xsl:text>
453 </xsl:when>
454 <xsl:otherwise>
455 <xsl:text>User added successfully</xsl:text>
456 <meta http-equiv="refresh" content="2; url={/page/pageRequest/@baseURL}{$library_name}"/>
457 </xsl:otherwise>
458 </xsl:choose>
459 </xsl:when>
460
461 <xsl:otherwise>
462 <xsl:text>Page not found.</xsl:text>
463 </xsl:otherwise>
464 </xsl:choose>
465 </div>
466 </xsl:template>
467
468</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.