root/trunk/deployment/webadmin/webapp/resources/default/default/default.xsl

Revision 1120 (checked in by johnsa, 6 years ago)

beginning to add timezone elements, floating, and store dates as UTC to event form

Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3   <xsl:output
4       method="html"
5       indent="yes"
6       media-type="text/html"
7       doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
8       doctype-system="http://www.w3.org/TR/html4/strict.dtd"
9       standalone="yes"
10       omit-xml-declaration="yes"/>
11    <xsl:strip-space elements="*"/>
12
13   <!-- ======================================== -->
14   <!--      BEDEWORK ADMIN CLIENT STYLESHEET     -->
15   <!-- ========================================= -->
16
17   <!-- **********************************************************************
18     Copyright 2006 Rensselaer Polytechnic Institute. All worldwide rights reserved.
19
20     Redistribution and use of this distribution in source and binary forms,
21     with or without modification, are permitted provided that:
22        The above copyright notice and this permission notice appear in all
23         copies and supporting documentation;
24
25         The name, identifiers, and trademarks of Rensselaer Polytechnic
26         Institute are not used in advertising or publicity without the
27         express prior written permission of Rensselaer Polytechnic Institute;
28
29     DISCLAIMER: The software is distributed" AS IS" without any express or
30     implied warranty, including but not limited to, any implied warranties
31     of merchantability or fitness for a particular purpose or any warrant)'
32     of non-infringement of any current or pending patent rights. The authors
33     of the software make no representations about the suitability of this
34     software for any particular purpose. The entire risk as to the quality
35     and performance of the software is with the user. Should the software
36     prove defective, the user assumes the cost of all necessary servicing,
37     repair or correction. In particular, neither Rensselaer Polytechnic
38     Institute, nor the authors of the software are liable for any indirect,
39     special, consequential, or incidental damages related to the software,
40     to the maximum extent the law permits. -->
41
42   <!-- DEFINE INCLUDES -->
43   <xsl:include href="errors.xsl"/>
44   <xsl:include href="messages.xsl"/>
45
46   <!-- DEFINE GLOBAL CONSTANTS -->
47   <!-- URL of html resources (images, css, other html); by default this is
48        set to the application root, but for the admin client
49        this should be changed to point to a
50        web server over https to avoid mixed content errors, e.g.,
51   <xsl:variable name="resourcesRoot" select="'https://mywebserver.edu/myresourcesdir'"/>
52     -->
53   <xsl:variable name="resourcesRoot" select="/bedeworkadmin/approot"/>
54
55   <!-- URL of the XSL template directory -->
56   <!-- The approot is an appropriate place to put
57        included stylesheets and xml fragments. These are generally
58        referenced relatively (like errors.xsl and messages.xsl above);
59        this variable is here for your convenience if you choose to
60        reference it explicitly.  It is not used in this stylesheet, however,
61        and can be safely removed if you so choose. -->
62   <xsl:variable name="appRoot" select="/bedeworkadmin/approot"/>
63
64   <!-- Properly encoded prefixes to the application actions; use these to build
65        urls; allows the application to be used without cookies or within a portal.
66        we will probably change the way we create these before long (e.g. build them
67        dynamically in the xslt). -->
68   <xsl:variable name="setup" select="/bedeworkadmin/urlPrefixes/setup/a/@href"/>
69   <xsl:variable name="logout" select="/bedeworkadmin/urlPrefixes/logout/a/@href"/>
70   <xsl:variable name="search" select="/bedeworkadmin/urlPrefixes/search/search/a/@href"/>
71   <xsl:variable name="search-next" select="/bedeworkadmin/urlPrefixes/search/next/a/@href"/>
72   <!-- events -->
73   <xsl:variable name="event-showEvent" select="/bedeworkadmin/urlPrefixes/event/showEvent/a/@href"/>
74   <xsl:variable name="event-showModForm" select="/bedeworkadmin/urlPrefixes/event/showModForm/a/@href"/>
75   <xsl:variable name="event-showUpdateList" select="/bedeworkadmin/urlPrefixes/event/showUpdateList/a/@href"/>
76   <xsl:variable name="event-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/event/showDeleteConfirm/a/@href"/>
77   <xsl:variable name="event-initAddEvent" select="/bedeworkadmin/urlPrefixes/event/initAddEvent/a/@href"/>
78   <xsl:variable name="event-initUpdateEvent" select="/bedeworkadmin/urlPrefixes/event/initUpdateEvent/a/@href"/>
79   <xsl:variable name="event-delete" select="/bedeworkadmin/urlPrefixes/event/delete/a/@href"/>
80   <xsl:variable name="event-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/event/fetchForDisplay/a/@href"/>
81   <xsl:variable name="event-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/event/fetchForUpdate/a/@href"/>
82   <xsl:variable name="event-update" select="/bedeworkadmin/urlPrefixes/event/update/a/@href"/>
83   <xsl:variable name="event-selectCalForEvent" select="/bedeworkadmin/urlPrefixes/event/selectCalForEvent/a/@href"/>
84   <xsl:variable name="event-initUpload" select="/bedeworkadmin/urlPrefixes/event/initUpload/a/@href"/>
85   <xsl:variable name="event-upload" select="/bedeworkadmin/urlPrefixes/event/upload/a/@href"/>
86   <!-- contacts -->
87   <xsl:variable name="contact-showContact" select="/bedeworkadmin/urlPrefixes/contact/showContact/a/@href"/>
88   <xsl:variable name="contact-showReferenced" select="/bedeworkadmin/urlPrefixes/contact/showReferenced/a/@href"/>
89   <xsl:variable name="contact-showModForm" select="/bedeworkadmin/urlPrefixes/contact/showModForm/a/@href"/>
90   <xsl:variable name="contact-showUpdateList" select="/bedeworkadmin/urlPrefixes/contact/showUpdateList/a/@href"/>
91   <xsl:variable name="contact-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/contact/showDeleteConfirm/a/@href"/>
92   <xsl:variable name="contact-initAdd" select="/bedeworkadmin/urlPrefixes/contact/initAdd/a/@href"/>
93   <xsl:variable name="contact-initUpdate" select="/bedeworkadmin/urlPrefixes/contact/initUpdate/a/@href"/>
94   <xsl:variable name="contact-delete" select="/bedeworkadmin/urlPrefixes/contact/delete/a/@href"/>
95   <xsl:variable name="contact-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/contact/fetchForDisplay/a/@href"/>
96   <xsl:variable name="contact-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/contact/fetchForUpdate/a/@href"/>
97   <xsl:variable name="contact-update" select="/bedeworkadmin/urlPrefixes/contact/update/a/@href"/>
98   <!-- locations -->
99   <xsl:variable name="location-showLocation" select="/bedeworkadmin/urlPrefixes/location/showLocation/a/@href"/>
100   <xsl:variable name="location-showReferenced" select="/bedeworkadmin/urlPrefixes/location/showReferenced/a/@href"/>
101   <xsl:variable name="location-showModForm" select="/bedeworkadmin/urlPrefixes/location/showModForm/a/@href"/>
102   <xsl:variable name="location-showUpdateList" select="/bedeworkadmin/urlPrefixes/location/showUpdateList/a/@href"/>
103   <xsl:variable name="location-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/location/showDeleteConfirm/a/@href"/>
104   <xsl:variable name="location-initAdd" select="/bedeworkadmin/urlPrefixes/location/initAdd/a/@href"/>
105   <xsl:variable name="location-initUpdate" select="/bedeworkadmin/urlPrefixes/location/initUpdate/a/@href"/>
106   <xsl:variable name="location-delete" select="/bedeworkadmin/urlPrefixes/location/delete/a/@href"/>
107   <xsl:variable name="location-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/location/fetchForDisplay/a/@href"/>
108   <xsl:variable name="location-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/location/fetchForUpdate/a/@href"/>
109   <xsl:variable name="location-update" select="/bedeworkadmin/urlPrefixes/location/update/a/@href"/>
110   <!-- categories -->
111   <xsl:variable name="category-showReferenced" select="/bedeworkadmin/urlPrefixes/category/showReferenced/a/@href"/>
112   <xsl:variable name="category-showModForm" select="/bedeworkadmin/urlPrefixes/category/showModForm/a/@href"/>
113   <xsl:variable name="category-showUpdateList" select="/bedeworkadmin/urlPrefixes/category/showUpdateList/a/@href"/>
114   <xsl:variable name="category-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/category/showDeleteConfirm/a/@href"/>
115   <xsl:variable name="category-initAdd" select="/bedeworkadmin/urlPrefixes/category/initAdd/a/@href"/>
116   <xsl:variable name="category-initUpdate" select="/bedeworkadmin/urlPrefixes/category/initUpdate/a/@href"/>
117   <xsl:variable name="category-delete" select="/bedeworkadmin/urlPrefixes/category/delete/a/@href"/>
118   <xsl:variable name="category-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/category/fetchForUpdate/a/@href"/>
119   <xsl:variable name="category-update" select="/bedeworkadmin/urlPrefixes/category/update/a/@href"/>
120   <!-- calendars -->
121   <xsl:variable name="calendar-fetch" select="/bedeworkadmin/urlPrefixes/calendar/fetch/a/@href"/>
122   <xsl:variable name="calendar-fetchDescriptions" select="/bedeworkadmin/urlPrefixes/calendar/fetchDescriptions/a/@href"/>
123   <xsl:variable name="calendar-initAdd" select="/bedeworkadmin/urlPrefixes/calendar/initAdd/a/@href"/>
124   <xsl:variable name="calendar-delete" select="/bedeworkadmin/urlPrefixes/calendar/delete/a/@href"/>
125   <xsl:variable name="calendar-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/calendar/fetchForDisplay/a/@href"/>
126   <xsl:variable name="calendar-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/calendar/fetchForUpdate/a/@href"/>
127   <xsl:variable name="calendar-update" select="/bedeworkadmin/urlPrefixes/calendar/update/a/@href"/>
128   <xsl:variable name="calendar-setAccess" select="/bedeworkadmin/urlPrefixes/calendar/setAccess/a/@href"/>
129   <!-- subscriptions -->
130   <xsl:variable name="subscriptions-fetch" select="/bedeworkadmin/urlPrefixes/subscriptions/fetch/a/@href"/>
131   <xsl:variable name="subscriptions-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/subscriptions/fetchForUpdate/a/@href"/>
132   <xsl:variable name="subscriptions-initAdd" select="/bedeworkadmin/urlPrefixes/subscriptions/initAdd/a/@href"/>
133   <xsl:variable name="subscriptions-subscribe" select="/bedeworkadmin/urlPrefixes/subscriptions/subscribe/a/@href"/>
134   <!-- views -->
135   <xsl:variable name="view-fetch" select="/bedeworkadmin/urlPrefixes/view/fetch/a/@href"/>
136   <xsl:variable name="view-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/view/fetchForUpdate/a/@href"/>
137   <xsl:variable name="view-addView" select="/bedeworkadmin/urlPrefixes/view/addView/a/@href"/>
138   <xsl:variable name="view-update" select="/bedeworkadmin/urlPrefixes/view/update/a/@href"/>
139   <xsl:variable name="view-remove" select="/bedeworkadmin/urlPrefixes/view/remove/a/@href"/>
140   <!-- system -->
141   <xsl:variable name="system-fetch" select="/bedeworkadmin/urlPrefixes/system/fetch/a/@href"/>
142   <xsl:variable name="system-update" select="/bedeworkadmin/urlPrefixes/system/update/a/@href"/>
143   <!-- calsuites -->
144   <xsl:variable name="calsuite-fetch" select="/bedeworkadmin/urlPrefixes/calsuite/fetch/a/@href"/>
145   <xsl:variable name="calsuite-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/calsuite/fetchForUpdate/a/@href"/>
146   <xsl:variable name="calsuite-add" select="/bedeworkadmin/urlPrefixes/calsuite/add/a/@href"/>
147   <xsl:variable name="calsuite-update" select="/bedeworkadmin/urlPrefixes/calsuite/update/a/@href"/>
148   <xsl:variable name="calsuite-showAddForm" select="/bedeworkadmin/urlPrefixes/calsuite/showAddForm/a/@href"/>
149   <xsl:variable name="calsuite-setAccess" select="/bedeworkadmin/urlPrefixes/calsuite/setAccess/a/@href"/>
150   <xsl:variable name="calsuite-fetchPrefsForUpdate" select="/bedeworkadmin/urlPrefixes/calsuite/fetchPrefsForUpdate/a/@href"/>
151   <xsl:variable name="calsuite-updatePrefs" select="/bedeworkadmin/urlPrefixes/calsuite/updatePrefs/a/@href"/>
152   <!-- timezones and stats -->
153   <xsl:variable name="timezones-initUpload" select="/bedeworkadmin/urlPrefixes/timezones/initUpload/a/@href"/>
154   <xsl:variable name="timezones-upload" select="/bedeworkadmin/urlPrefixes/timezones/upload/a/@href"/>
155   <xsl:variable name="stats-update" select="/bedeworkadmin/urlPrefixes/stats/update/a/@href"/>
156   <!-- authuser and prefs -->
157   <xsl:variable name="authuser-showModForm" select="/bedeworkadmin/urlPrefixes/authuser/showModForm/a/@href"/>
158   <xsl:variable name="authuser-showUpdateList" select="/bedeworkadmin/urlPrefixes/authuser/showUpdateList/a/@href"/>
159   <xsl:variable name="authuser-initUpdate" select="/bedeworkadmin/urlPrefixes/authuser/initUpdate/a/@href"/>
160   <xsl:variable name="authuser-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/authuser/fetchForUpdate/a/@href"/>
161   <xsl:variable name="authuser-update" select="/bedeworkadmin/urlPrefixes/authuser/update/a/@href"/>
162   <xsl:variable name="prefs-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/prefs/fetchForUpdate/a/@href"/>
163   <xsl:variable name="prefs-update" select="/bedeworkadmin/urlPrefixes/prefs/update/a/@href"/>
164   <!-- admin groups -->
165   <xsl:variable name="admingroup-showModForm" select="/bedeworkadmin/urlPrefixes/admingroup/showModForm/a/@href"/>
166   <xsl:variable name="admingroup-showModMembersForm" select="/bedeworkadmin/urlPrefixes/admingroup/showModMembersForm/a/@href"/>
167   <xsl:variable name="admingroup-showUpdateList" select="/bedeworkadmin/urlPrefixes/admingroup/showUpdateList/a/@href"/>
168   <xsl:variable name="admingroup-showChooseGroup" select="/bedeworkadmin/urlPrefixes/admingroup/showChooseGroup/a/@href"/>
169   <xsl:variable name="admingroup-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/admingroup/showDeleteConfirm/a/@href"/>
170   <xsl:variable name="admingroup-initAdd" select="/bedeworkadmin/urlPrefixes/admingroup/initAdd/a/@href"/>
171   <xsl:variable name="admingroup-initUpdate" select="/bedeworkadmin/urlPrefixes/admingroup/initUpdate/a/@href"/>
172   <xsl:variable name="admingroup-delete" select="/bedeworkadmin/urlPrefixes/admingroup/delete/a/@href"/>
173   <xsl:variable name="admingroup-fetchUpdateList" select="/bedeworkadmin/urlPrefixes/admingroup/fetchUpdateList/a/@href"/>
174   <xsl:variable name="admingroup-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/admingroup/fetchForUpdate/a/@href"/>
175   <xsl:variable name="admingroup-fetchForUpdateMembers" select="/bedeworkadmin/urlPrefixes/admingroup/fetchForUpdateMembers/a/@href"/>
176   <xsl:variable name="admingroup-update" select="/bedeworkadmin/urlPrefixes/admingroup/update/a/@href"/>
177   <xsl:variable name="admingroup-updateMembers" select="/bedeworkadmin/urlPrefixes/admingroup/updateMembers/a/@href"/>
178   <xsl:variable name="admingroup-switch" select="/bedeworkadmin/urlPrefixes/admingroup/switch/a/@href"/>
179
180   <!-- URL of the web application - includes web context -->
181   <xsl:variable name="urlPrefix" select="/bedeworkadmin/urlprefix"/>
182
183   <!-- Other generally useful global variables -->
184   <xsl:variable name="publicCal">/cal</xsl:variable>
185
186   <!--==== MAIN TEMPLATE  ====-->
187   <xsl:template match="/">
188     <html lang="en">
189       <head>
190         <title>Calendar Admin: Events Calendar Administration</title>
191         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
192         <link rel="stylesheet" href="{$resourcesRoot}/default/default/default.css"/>
193         <link rel="stylesheet" href="{$resourcesRoot}/default/default/subColors.css"/>
194         <xsl:if test="/bedeworkadmin/page='modEvent'">
195           <script type="text/javascript" src="{$resourcesRoot}/resources/includes.js"></script>
196           <script type="text/javascript" src="{$resourcesRoot}/resources/bwClock.js"></script>
197           <link rel="stylesheet" href="{$resourcesRoot}/resources/bwClock.css"/>
198           <script type="text/javascript" src="{$resourcesRoot}/resources/dynCalendarWidget.js"></script>
199           <link rel="stylesheet" href="{$resourcesRoot}/resources/dynCalendarWidget.css"/>
200           <script type="text/javascript" src="{$resourcesRoot}/resources/browserSniffer.js"></script>
201         </xsl:if>
202         <xsl:if test="/bedeworkadmin/page='upload' or /bedeworkadmin/page='selectCalForEvent'">
203           <script type="text/javascript" src="{$resourcesRoot}/resources/includes.js"></script>
204         </xsl:if>
205         <xsl:if test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
206           <link rel="stylesheet" href="{$resourcesRoot}/resources/calendarDescriptions.css"/>
207         </xsl:if>
208         <link rel="icon" type="image/ico" href="{$resourcesRoot}/resources/bedework.ico" />
209         <script language="JavaScript" type="text/javascript">
210           <xsl:comment>
211         <![CDATA[
212         // places the cursor in the first available form element when the page is loaded
213         // (if a form exists on the page)
214         function focusFirstElement() {
215           if (window.document.forms[0]) {
216             window.document.forms[0].elements[0].focus();
217           }
218         }]]>
219         </xsl:comment>
220         </script>
221       </head>
222       <body onLoad="focusFirstElement()">
223         <xsl:choose>
224           <xsl:when test="/bedeworkadmin/page='selectCalForEvent'">
225             <xsl:call-template name="selectCalForEvent"/>
226           </xsl:when>
227           <xsl:otherwise>
228             <xsl:call-template name="header"/>
229             <div id="content">
230               <xsl:choose>
231                 <xsl:when test="/bedeworkadmin/page='eventList'">
232                   <xsl:call-template name="eventList"/>
233                 </xsl:when>
234                 <xsl:when test="/bedeworkadmin/page='modEvent'">
235                   <xsl:call-template name="modEvent"/>
236                 </xsl:when>
237                 <xsl:when test="/bedeworkadmin/page='displayEvent' or /bedeworkadmin/page='deleteEventConfirm'">
238                   <xsl:apply-templates select="/bedeworkadmin/event" mode="displayEvent"/>
239                 </xsl:when>
240                 <xsl:when test="/bedeworkadmin/page='contactList'">
241                   <xsl:call-template name="contactList"/>
242                 </xsl:when>
243                 <xsl:when test="/bedeworkadmin/page='modContact'">
244                   <xsl:call-template name="modContact"/>
245                 </xsl:when>
246                 <xsl:when test="/bedeworkadmin/page='deleteContactConfirm' or /bedeworkadmin/page='contactReferenced'">
247                   <xsl:call-template name="deleteContactConfirm"/>
248                 </xsl:when>
249                 <xsl:when test="/bedeworkadmin/page='locationList'">
250                   <xsl:call-template name="locationList"/>
251                 </xsl:when>
252                 <xsl:when test="/bedeworkadmin/page='modLocation'">
253                   <xsl:call-template name="modLocation"/>
254                 </xsl:when>
255                 <xsl:when test="/bedeworkadmin/page='deleteLocationConfirm'">
256                   <xsl:call-template name="deleteLocationConfirm"/>
257                 </xsl:when>
258                 <xsl:when test="/bedeworkadmin/page='categoryList'">
259                   <xsl:call-template name="categoryList"/>
260                 </xsl:when>
261                 <xsl:when test="/bedeworkadmin/page='modCategory'">
262                   <xsl:call-template name="modCategory"/>
263                 </xsl:when>
264                 <xsl:when test="/bedeworkadmin/page='deleteCategoryConfirm'">
265                   <xsl:call-template name="deleteCategoryConfirm"/>
266                 </xsl:when>
267                 <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar' or /bedeworkadmin/page='modCalendar' or /bedeworkadmin/page='deleteCalendarConfirm' or /bedeworkadmin/page='calendarReferenced'">
268                   <xsl:apply-templates select="/bedeworkadmin/calendars"/>
269                 </xsl:when>
270                 <xsl:when test="/bedeworkadmin/page='subscriptions' or /bedeworkadmin/page='modSubscription'">
271                   <xsl:apply-templates select="/bedeworkadmin/subscriptions"/>
272                 </xsl:when>
273                 <xsl:when test="/bedeworkadmin/page='views'">
274                   <xsl:apply-templates select="/bedeworkadmin/views" mode="viewList"/>
275                 </xsl:when>
276                 <xsl:when test="/bedeworkadmin/page='modView'">
277                   <xsl:call-template name="modView"/>
278                 </xsl:when>
279                 <xsl:when test="/bedeworkadmin/page='deleteViewConfirm'">
280                   <xsl:call-template name="deleteViewConfirm"/>
281                 </xsl:when>
282                 <xsl:when test="/bedeworkadmin/page='modSyspars'">
283                   <xsl:call-template name="modSyspars"/>
284                 </xsl:when>
285                 <xsl:when test="/bedeworkadmin/page='calSuiteList'">
286                   <xsl:apply-templates select="/bedeworkadmin/calSuites" mode="calSuiteList"/>
287                 </xsl:when>
288                 <xsl:when test="/bedeworkadmin/page='addCalSuite'">
289                   <xsl:call-template name="addCalSuite"/>
290                 </xsl:when>
291                 <xsl:when test="/bedeworkadmin/page='modCalSuite'">
292                   <xsl:apply-templates select="/bedeworkadmin/calSuite"/>
293                 </xsl:when>
294                 <xsl:when test="/bedeworkadmin/page='calSuitePrefs'">
295                   <xsl:call-template name="calSuitePrefs"/>
296                 </xsl:when>
297                 <xsl:when test="/bedeworkadmin/page='authUserList'">
298                   <xsl:call-template name="authUserList"/>
299                 </xsl:when>
300                 <xsl:when test="/bedeworkadmin/page='modAuthUser'">
301                   <xsl:call-template name="modAuthUser"/>
302                 </xsl:when>
303                 <xsl:when test="/bedeworkadmin/page='modPrefs'">
304                   <xsl:call-template name="modPrefs"/>
305                 </xsl:when>
306                 <xsl:when test="/bedeworkadmin/page='chooseGroup'">
307                   <xsl:apply-templates select="/bedeworkadmin/groups" mode="chooseGroup"/>
308                 </xsl:when>
309                 <xsl:when test="/bedeworkadmin/page='adminGroupList'">
310                   <xsl:call-template name="listAdminGroups"/>
311                 </xsl:when>
312                 <xsl:when test="/bedeworkadmin/page='modAdminGroup'">
313                   <xsl:call-template name="modAdminGroup"/>
314                 </xsl:when>
315                 <xsl:when test="/bedeworkadmin/page='modAdminGroupMembers'">
316                   <xsl:call-template name="modAdminGroupMembers"/>
317                 </xsl:when>
318                 <xsl:when test="/bedeworkadmin/page='deleteAdminGroupConfirm'">
319                   <xsl:call-template name="deleteAdminGroupConfirm"/>
320                 </xsl:when>
321                 <xsl:when test="/bedeworkadmin/page='searchResult'">
322                   <xsl:call-template name="searchResult"/>
323                 </xsl:when>
324                 <xsl:when test="/bedeworkadmin/page='noGroup'">
325                   <h2>No administrative group</h2>
326                   <p>Your userid has not been assigned to an administrative group.
327                     Please inform your administrator.</p>
328                 </xsl:when>
329                 <xsl:when test="/bedeworkadmin/page='upload'">
330                   <xsl:call-template name="upload"/>
331                 </xsl:when>
332                 <xsl:when test="/bedeworkadmin/page='uploadTimezones'">
333                   <xsl:call-template name="uploadTimezones"/>
334                 </xsl:when>
335                 <xsl:when test="/bedeworkadmin/page='showSysStats'">
336                   <xsl:apply-templates select="/bedeworkadmin/sysStats" mode="showSysStats"/>
337                 </xsl:when>
338                 <xsl:when test="/bedeworkadmin/page='noAccess'">
339                   <h2>No Access</h2>
340                   <p>
341                     You have no access to the action you just attempted. If you believe
342                     you should have access and the problem persists, contact your
343                     administrator.
344                   </p>
345                   <p>
346                     <a href="{$setup}">continue</a>
347                   </p>
348                 </xsl:when>
349                 <xsl:when test="/bedeworkadmin/page='error'">
350                   <h2>Application error</h2>
351                   <p>An application error occurred.</p>
352                   <p>
353                     <a href="{$setup}">continue</a>
354                   </p>
355                 </xsl:when>
356                 <xsl:otherwise>
357                   <xsl:call-template name="mainMenu"/>
358                 </xsl:otherwise>
359               </xsl:choose>
360             </div>
361             <!-- footer -->
362             <xsl:call-template name="footer"/>
363           </xsl:otherwise>
364         </xsl:choose>
365       </body>
366     </html>
367   </xsl:template>
368
369   <!--==============================================-->
370   <!--==============================================-->
371   <!--============= PAGE TEMPLATES =================-->
372   <!--==============================================-->
373   <!--==============================================-->
374
375   <!--+++++++++++++++ Main Menu ++++++++++++++++++++-->
376   <xsl:template name="mainMenu">
377     <div id="adminLeftColumn">
378       <h2 class="menuTitle">Main Menu</h2>
379       <table id="mainMenuTable">
380         <tr>
381           <th>Events</th>
382           <td>
383             <a id="addEventLink" href="{$event-initAddEvent}">
384               Add
385             </a>
386           </td>
387           <td>
388             <a href="{$event-initUpdateEvent}">
389               Edit / Delete
390             </a>
391           </td>
392           <!--
393           Disable direct selection by ID; we'll need to find another way
394           of quickly getting to events: search and grid views should be implemented. -->
395           <!--
396           <td>
397             Event ID:
398             <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
399           </td>-->
400         </tr>
401         <tr>
402           <th>Contacts</th>
403           <td>
404             <a id="addContactLink" href="{$contact-initAdd}">
405               Add
406             </a>
407           </td>
408           <td>
409             <a href="{$contact-initUpdate}">
410               Edit / Delete
411             </a>
412           </td>
413         </tr>
414         <tr>
415           <th>Locations</th>
416           <td>
417             <a id="addLocationLink" href="{$location-initAdd}">
418               Add
419             </a>
420           </td>
421           <td>
422             <a href="{$location-initUpdate}">
423               Edit / Delete
424             </a>
425           </td>
426         </tr>
427         <tr>
428           <th>Categories</th>
429           <td>
430             <a id="addCategoryLink" href="{$category-initAdd}">
431               Add
432             </a>
433           </td>
434           <td>
435             <a href="{$category-initUpdate}">
436               Edit / Delete
437             </a>
438           </td>
439         </tr>
440       </table>
441
442       <h4 class="menuTitle">Event search:</h4>
443       <form name="searchForm" method="post" action="{$search}" id="searchForm">
444         <input type="text" name="query" size="30">
445           <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/searchResults/query"/></xsl:attribute>
446         </input>
447         <input type="submit" name="submit" value="go"/>
448         <div id="searchFields">
449           Limit:
450           <input type="radio" name="searchLimits" value="fromToday" checked="checked"/>today forward
451           <input type="radio" name="searchLimits" value="beforeToday"/>past dates
452           <input type="radio" name="searchLimits" value="none"/>all dates
453         </div>
454       </form>
455
456     </div>
457
458     <div id="adminRightColumn">
459       <xsl:if test="/bedeworkadmin/currentCalSuite/currentAccess/current-user-privilege-set/privilege/write or /bedeworkadmin/userInfo/superUser='true'">
460         <h4 class="menuTitle">
461           Manage calendar suite:
462           <em><xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
463           </em>
464         </h4>
465         <ul class="adminMenu">
466           <li>
467             <a href="{$calendar-fetch}">
468               Manage calendars
469             </a>
470           </li>
471           <li>
472             <a href="{$subscriptions-fetch}">
473               Manage subscriptions
474             </a>
475           </li>
476           <li>
477             <a href="{$view-fetch}">
478               Manage views
479             </a>
480           </li>
481           <li>
482             <a href="{$calsuite-fetchPrefsForUpdate}">
483               Manage preferences
484             </a>
485           </li>
486           <li>
487             <a href="{$event-initUpload}">
488               Upload iCAL file
489             </a>
490           </li>
491         </ul>
492       </xsl:if>
493
494       <xsl:if test="/bedeworkadmin/userInfo/contentAdminUser='true'">
495         <h4 class="menuTitle">Manage users:</h4>
496         <ul class="adminMenu">
497           <xsl:if test="/bedeworkadmin/userInfo/userMaintOK='true'">
498             <li>
499               <a href="{$authuser-initUpdate}">
500                 Manage public event administrators
501               </a>
502             </li>
503           </xsl:if>
504           <xsl:if test="/bedeworkadmin/userInfo/adminGroupMaintOk='true'">
505             <li>
506               <a href="{$admingroup-initUpdate}">
507                 Manage admin groups
508               </a>
509             </li>
510           </xsl:if>
511           <li>
512             <a href="{$admingroup-switch}">
513               Choose/change group...
514             </a>
515           </li>
516           <xsl:if test="/bedeworkadmin/userInfo/userMaintOK='true'">
517             <li>
518               <form action="{$prefs-fetchForUpdate}" method="post">
519                 Edit user preferences (enter userid):<br/>
520                 <input type="text" name="user" size="15"/>
521                 <input type="submit" name="getPrefs" value="go"/>
522               </form>
523             </li>
524           </xsl:if>
525         </ul>
526       </xsl:if>
527
528       <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
529         <h4 class="menuTitle">Super user features:</h4>
530         <ul class="adminMenu">
531           <li>
532             <a href="{$calsuite-fetch}">
533               Manage calendar suites
534             </a>
535           </li>
536           <li>
537             <a href="{$system-fetch}">
538               Manage system preferences
539             </a>
540           </li>
541           <li>
542             <a href="{$timezones-initUpload}">
543               Upload and replace system timezones
544             </a>
545           </li>
546           <li>
547             System statistics:
548             <ul>
549               <li>
550                 <a href="{$stats-update}&amp;fetch=yes">
551                   admin web client
552                 </a>
553               </li>
554               <li>
555                 <a href="{$publicCal}/stats.do" target="pubClient">
556                   public web client
557                 </a>
558               </li>
559             </ul>
560           </li>
561         </ul>
562       </xsl:if>
563     </div>
564   </xsl:template>
565
566   <!--++++++++++++++++++ Events ++++++++++++++++++++-->
567   <xsl:template name="eventList">
568     <h2>Edit Events</h2>
569     <p>
570       Select the event that you would like to update:
571       <input type="button" name="return" value="Add new event" onclick="javascript:location.replace('{$event-initAddEvent}')"/>
572     </p>
573
574     <form name="peForm" method="post" action="{$event-initUpdateEvent}">
575       <table>
576         <tr>
577           <td style="padding-right: 1em;">Show:</td>
578           <td>
579             <xsl:copy-of select="/bedeworkadmin/formElements/form/listAllSwitchFalse/*"/>
580             Active
581           </td>
582           <td>
583             <xsl:copy-of select="/bedeworkadmin/formElements/form/listAllSwitchTrue/*"/>
584             All
585           </td>
586         </tr>
587       </table>
588     </form>
589
590     <table id="commonListTable">
591       <tr>
592         <th>Title</th>
593         <th>Start Date</th>
594         <th>End Date</th>
595         <th>Calendar</th>
596         <th>Description</th>
597       </tr>
598
599       <xsl:for-each select="/bedeworkadmin/events/event">
600         <xsl:variable name="subscriptionId" select="subscription/id"/>
601         <xsl:variable name="calPath" select="calendar/encodedPath"/>
602         <xsl:variable name="guid" select="guid"/>
603         <xsl:variable name="recurrenceId" select="recurrenceId"/>
604         <tr>
605           <td>
606             <a href="{$event-fetchForUpdate}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
607               <xsl:value-of select="summary"/>
608             </a>
609           </td>
610           <td class="date">
611             <xsl:value-of select="start/longdate"/>,
612             <xsl:value-of select="start/time"/>
613           </td>
614           <td class="date">
615             <xsl:value-of select="end/longdate"/>,
616             <xsl:value-of select="end/time"/>
617           </td>
618           <td>
619             <xsl:value-of select="calendar/name"/>
620           </td>
621           <td>
622             <xsl:value-of select="description"/>
623           </td>
624         </tr>
625       </xsl:for-each>
626     </table>
627   </xsl:template>
628
629   <xsl:template name="modEvent">
630     <h2>Event Information</h2>
631
632     <xsl:variable name="modEventAction" select="/bedeworkadmin/formElements/form/@action"/>
633     <form name="peForm" method="post" action="{$modEventAction}">
634       <table class="eventFormTable">
635         <tr>
636           <td class="fieldName">
637             Title:
638           </td>
639           <td>
640             <xsl:copy-of select="/bedeworkadmin/formElements/form/title/*"/>
641           </td>
642         </tr>
643         <tr>
644           <td class="fieldName">
645             Calendar:**
646           </td>
647           <td>
648             <xsl:if test="/bedeworkadmin/formElements/form/calendar/preferred/select/option">
649               <select name="prefCalendarId">
650                 <option value="-1">
651                   Select preferred:
652                 </option>
653                 <xsl:copy-of select="/bedeworkadmin/formElements/form/calendar/preferred/select/*"/>
654               </select>
655               or Calendar (all):
656             </xsl:if>
657             <select name="calendarId">
658               <option value="-1">
659                 Select:
660               </option>
661               <xsl:copy-of select="/bedeworkadmin/formElements/form/calendar/all/select/*"/>
662             </select>
663             <xsl:text> </xsl:text>
664             <span id="calDescriptionsLink">
665               <a href="javascript:launchSimpleWindow('{$calendar-fetchDescriptions}')">calendar descriptions</a>
666             </span>
667           </td>
668         </tr>
669
670         <tr>
671           <td class="fieldName">
672             Date &amp; Time:
673           </td>
674           <td>
675             <!-- Set the timefields class for the first load of the page;
676                  subsequent changes will take place using javascript without a
677                  page reload. -->
678             <xsl:variable name="timeFieldsClass">
679               <xsl:choose>
680                 <xsl:when test="/bedeworkadmin/formElements/form/allDay/input/@checked='checked'">invisible</xsl:when>
681                 <xsl:otherwise>timeFields</xsl:otherwise>
682               </xsl:choose>
683             </xsl:variable>
684             <xsl:choose>
685               <xsl:when test="/bedeworkadmin/formElements/form/allDay/input/@checked='checked'">
686                 <input type="checkbox" name="allDayFlag" onclick="swapAllDayEvent(this)" value="on" checked="checked"/>
687                 <input type="hidden" name="eventStartDate.dateOnly" value="on" id="allDayStartDateField"/>
688                 <input type="hidden" name="eventEndDate.dateOnly" value="on" id="allDayEndDateField"/>
689               </xsl:when>
690               <xsl:otherwise>
691                 <input type="checkbox" name="allDayFlag" onclick="swapAllDayEvent(this)" value="off"/>
692                 <input type="hidden" name="eventStartDate.dateOnly" value="off" id="allDayStartDateField"/>
693                 <input type="hidden" name="eventEndDate.dateOnly" value="off" id="allDayEndDateField"/>
694               </xsl:otherwise>
695             </xsl:choose>
696             all day event<br/>
697             <div class="dateStartEndBox">
698               <strong>Start:</strong>
699               <div class="dateFields">
700                 <span class="startDateLabel">Date </span>
701                 <xsl:copy-of select="/bedeworkadmin/formElements/form/start/month/*"/>
702                 <xsl:copy-of select="/bedeworkadmin/formElements/form/start/day/*"/>
703                 <xsl:choose>
704                   <xsl:when test="/bedeworkadmin/creating = 'true'">
705                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/year/*"/>
706                   </xsl:when>
707                   <xsl:otherwise>
708                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/yearText/*"/>
709                   </xsl:otherwise>
710                 </xsl:choose>
711               </div>
712               <script language="JavaScript" type="text/javascript">
713                 <xsl:comment>
714                 startDateDynCalWidget = new dynCalendar('startDateDynCalWidget', 'startDateCalWidgetCallback', '<xsl:value-of select="$resourcesRoot"/>/resources/');
715               </xsl:comment>
716               </script>
717               <!--<img src="{$resourcesRoot}/resources/calIcon.gif" width="16" height="15" border="0"/>-->
718               <div class="{$timeFieldsClass}" id="startTimeFields">
719                 <span id="calWidgetStartTimeHider" class="show">
720                   <xsl:copy-of select="/bedeworkadmin/formElements/form/start/hour/*"/>
721                   <xsl:copy-of select="/bedeworkadmin/formElements/form/start/minute/*"/>
722                   <xsl:if test="/bedeworkadmin/formElements/form/start/ampm">
723                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/ampm/*"/>
724                   </xsl:if>
725                   <xsl:text> </xsl:text>
726                   <a href="javascript:bwClockLaunch('eventStartDate');">
727                     <img src="{$resourcesRoot}/resources/clockIcon.gif" width="16" height="15" border="0"/>
728                   </a>
729                 </span>
730               </div>
731             </div>
732             <div class="dateStartEndBox">
733               <strong>End:</strong>
734               <xsl:choose>
735                 <xsl:when test="/bedeworkadmin/formElements/form/end/type='E'">
736                   <input type="radio" name="eventEndType" value="E" checked="checked" onClick="changeClass('endDateTime','shown');changeClass('endDuration','invisible');"/>
737                 </xsl:when>
738                 <xsl:otherwise>
739                   <input type="radio" name="eventEndType" value="E" onClick="changeClass('endDateTime','shown');changeClass('endDuration','invisible');"/>
740                 </xsl:otherwise>
741               </xsl:choose>
742               Date
743               <xsl:variable name="endDateTimeClass">
744                 <xsl:choose>
745                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='E'">shown</xsl:when>
746                   <xsl:otherwise>invisible</xsl:otherwise>
747                 </xsl:choose>
748               </xsl:variable>
749               <div class="{$endDateTimeClass}" id="endDateTime">
750                 <div class="dateFields">
751                   <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/month/*"/>
752                   <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/day/*"/>
753                   <xsl:choose>
754                     <xsl:when test="/bedeworkadmin/creating = 'true'">
755                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/year/*"/>
756                     </xsl:when>
757                     <xsl:otherwise>
758                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/yearText/*"/>
759                     </xsl:otherwise>
760                   </xsl:choose>
761                 </div>
762                 <script language="JavaScript" type="text/javascript">
763                   <xsl:comment>
764                   endDateDynCalWidget = new dynCalendar('endDateDynCalWidget', 'endDateCalWidgetCallback', '<xsl:value-of select="$resourcesRoot"/>/resources/');
765                 </xsl:comment>
766                 </script>
767                 <!--<img src="{$resourcesRoot}/resources/calIcon.gif" width="16" height="15" border="0"/>-->
768                 <div class="{$timeFieldsClass}" id="endTimeFields">
769                   <span id="calWidgetEndTimeHider" class="show">
770                     <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/hour/*"/>
771                     <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/minute/*"/>
772                     <xsl:if test="/bedeworkadmin/formElements/form/end/dateTime/ampm">
773                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/ampm/*"/>
774                     </xsl:if>
775                     <xsl:text> </xsl:text>
776                     <a href="javascript:bwClockLaunch('eventEndDate');">
777                       <img src="{$resourcesRoot}/resources/clockIcon.gif" width="16" height="15" border="0"/>
778                     </a>
779                   </span>
780                 </div>
781               </div>
782               <br/>
783               <div id="clock" class="invisible">
784                 <xsl:call-template name="clock"/>
785               </div>
786               <div class="dateFields">
787                 <xsl:choose>
788                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='D'">
789                     <input type="radio" name="eventEndType" value="D" checked="checked" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','shown');"/>
790                   </xsl:when>
791                   <xsl:otherwise>
792                     <input type="radio" name="eventEndType" value="D" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','shown');"/>
793                   </xsl:otherwise>
794                 </xsl:choose>
795                 Duration
796                 <xsl:variable name="endDurationClass">
797                   <xsl:choose>
798                     <xsl:when test="/bedeworkadmin/formElements/form/end/type='D'">shown</xsl:when>
799                     <xsl:otherwise>invisible</xsl:otherwise>
800                   </xsl:choose>
801                 </xsl:variable>
802                 <xsl:variable name="durationHrMinClass">
803                   <xsl:choose>
804                     <xsl:when test="/bedeworkadmin/formElements/form/allDay/input/@checked='checked'">invisible</xsl:when>
805                     <xsl:otherwise>shown</xsl:otherwise>
806                   </xsl:choose>
807                 </xsl:variable>
808                 <div class="{$endDurationClass}" id="endDuration">
809                   <xsl:choose>
810                     <xsl:when test="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value = '0'">
811                     <!-- we are using day, hour, minute format -->
812                     <!-- must send either no week value or week value of 0 (zero) -->
813                       <div class="durationBox">
814                         <input type="radio" name="eventDuration.type" value="daytime" onclick="swapDurationType('daytime')" checked="checked"/>
815                         <xsl:variable name="daysStr" select="/bedeworkadmin/formElements/form/end/duration/days/input/@value"/>
816                         <input type="text" name="eventDuration.daysStr" size="2" value="{$daysStr}" id="durationDays"/>days
817                         <span id="durationHrMin" class="{$durationHrMinClass}">
818                           <xsl:variable name="hoursStr" select="/bedeworkadmin/formElements/form/end/duration/hours/input/@value"/>
819                           <input type="text" name="eventDuration.hoursStr" size="2" value="{$hoursStr}" id="durationHours"/>hours
820                           <xsl:variable name="minutesStr" select="/bedeworkadmin/formElements/form/end/duration/minutes/input/@value"/>
821                           <input type="text" name="eventDuration.minutesStr" size="2" value="{$minutesStr}" id="durationMinutes"/>minutes
822                         </span>
823                       </div>
824                       <span class="durationSpacerText">or</span>
825                       <div class="durationBox">
826                         <input type="radio" name="eventDuration.type" value="weeks" onclick="swapDurationType('week')"/>
827                         <xsl:variable name="weeksStr" select="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value"/>
828                         <input type="text" name="eventDuration.weeksStr" size="2" value="{$weeksStr}" id="durationWeeks" disabled="true"/>weeks
829                       </div>
830                     </xsl:when>
831                     <xsl:otherwise>
832                       <!-- we are using week format -->
833                       <div class="durationBox">
834                         <input type="radio" name="eventDuration.type" value="daytime" onclick="swapDurationType('daytime')"/>
835                         <xsl:variable name="daysStr" select="/bedeworkadmin/formElements/form/end/duration/days/input/@value"/>
836                         <input type="text" name="eventDuration.daysStr" size="2" value="{$daysStr}" id="durationDays" disabled="true"/>days
837                         <span id="durationHrMin" class="{$durationHrMinClass}">
838                           <xsl:variable name="hoursStr" select="/bedeworkadmin/formElements/form/end/duration/hours/input/@value"/>
839                           <input type="text" name="eventDuration.hoursStr" size="2" value="{$hoursStr}" id="durationHours" disabled="true"/>hours
840                           <xsl:variable name="minutesStr" select="/bedeworkadmin/formElements/form/end/duration/minutes/input/@value"/>
841                           <input type="text" name="eventDuration.minutesStr" size="2" value="{$minutesStr}" id="durationMinutes" disabled="true"/>minutes
842                         </span>
843                       </div>
844                       <span class="durationSpacerText">or</span>
845                       <div class="durationBox">
846                         <input type="radio" name="eventDuration.type" value="weeks" onclick="swapDurationType('week')" checked="checked"/>
847                         <xsl:variable name="weeksStr" select="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value"/>
848                         <input type="text" name="eventDuration.weeksStr" size="2" value="{$weeksStr}" id="durationWeeks"/>weeks
849                       </div>
850                     </xsl:otherwise>
851                   </xsl:choose>
852                 </div>
853               </div>
854               <br/>
855               <div class="dateFields" id="noDuration">
856                 <xsl:choose>
857                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='N'">
858                     <input type="radio" name="eventEndType" value="N" checked="checked" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','invisible');"/>
859                   </xsl:when>
860                   <xsl:otherwise>
861                     <input type="radio" name="eventEndType" value="N" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','invisible');"/>
862                   </xsl:otherwise>
863                 </xsl:choose>
864                 This event has no duration / end date
865               </div>
866             </div>
867           </td>
868         </tr>
869         <!--  Status  -->
870         <tr>
871           <td class="fieldName">
872             Status:
873           </td>
874           <td>
875             <xsl:choose>
876               <xsl:when test="/bedeworkadmin/formElements/form/status = 'TENTATIVE'">
877                 <input type="radio" name="event.status" value="CONFIRMED"/>confirmed <input type="radio" name="event.status" value="TENTATIVE" checked="checked"/>tentative <input type="radio" name="event.status" value="CANCELLED"/>cancelled
878               </xsl:when>
879               <xsl:when test="/bedeworkadmin/formElements/form/status = 'CANCELLED'">
880                 <input type="radio" name="event.status" value="CONFIRMED"/>confirmed <input type="radio" name="event.status" value="TENTATIVE"/>tentative <input type="radio" name="event.status" value="CANCELLED" checked="checked"/>cancelled
881               </xsl:when>
882               <xsl:otherwise>
883                 <input type="radio" name="event.status" value="CONFIRMED" checked="checked"/>confirmed <input type="radio" name="event.status" value="TENTATIVE"/>tentative <input type="radio" name="event.status" value="CANCELLED"/>cancelled
884               </xsl:otherwise>
885             </xsl:choose>
886           </td>
887         </tr>
888         <!--  Description  -->
889         <tr>
890           <td class="fieldName">
891             Description:
892           </td>
893           <td>
894             <xsl:copy-of select="/bedeworkadmin/formElements/form/desc/*"/>
895             <div class="fieldInfo">
896               Enter all pertinent information, including the academic titles of
897               all speakers and/or participants.
898               <span class="maxCharNotice">(<xsl:value-of select="/bedeworkadmin/formElements/form/descLength"/> characters max.)</span>
899             </div>
900           </td>
901         </tr>
902         <!-- Cost -->
903         <tr>
904           <td class="optional">
905             Price:
906           </td>
907           <td>
908             <xsl:copy-of select="/bedeworkadmin/formElements/form/cost/*"/>
909             <xsl:text> </xsl:text>
910             <span class="fieldInfo">(optional: if any, and place to purchase tickets)</span>
911           </td>
912         </tr>
913         <!-- Url -->
914         <tr>
915           <td class="optional">
916             URL:
917           </td>
918           <td>
919             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
920             <xsl:text> </xsl:text>
921             <span class="fieldInfo">(optional: for more information about the event)</span>
922           </td>
923         </tr>
924         <!-- Location -->
925         <tr>
926           <td class="fieldName">
927             Location:**
928           </td>
929           <td>
930             <xsl:if test="/bedeworkadmin/formElements/form/location/preferred/select/option">
931               <select name="prefLocationId" id="eventFormPrefLocationList">
932                 <option value="-1">
933                   Select preferred:
934                 </option>
935                 <xsl:copy-of select="/bedeworkadmin/formElements/form/location/preferred/select/*"/>
936               </select>
937               or Location (all):
938             </xsl:if>
939             <select name="allLocationId" id="eventFormLocationList">
940               <option value="-1">
941                 Select:
942               </option>
943               <xsl:copy-of select="/bedeworkadmin/formElements/form/location/all/select/*"/>
944             </select>
945           </td>
946         </tr>
947
948         <xsl:if test="/bedeworkadmin/formElements/form/location/address">
949           <tr>
950             <td class="fieldName" colspan="2">
951               <span class="std-text">
952                 <span class="bold">or</span> add</span>
953             </td>
954           </tr>
955           <tr>
956             <td class="fieldName">
957               Address:
958             </td>
959             <td>
960               <xsl:variable name="addressFieldName" select="/bedeworkadmin/formElements/form/location/address/input/@name"/>
961               <xsl:variable name="calLocations">
962                 <xsl:for-each select="/bedeworkadmin/formElements/form/location/all/select/option">"<xsl:value-of select="."/>"<xsl:if test="position()!=last()">,</xsl:if>
963                 </xsl:for-each>
964               </xsl:variable>
965               <input type="text" size="30" name="{$addressFieldName}" autocomplete="off" onfocus="autoComplete(this,event,new Array({$calLocations}));"/>
966               <div class="fieldInfo">
967                 Please include room, building, and campus (if not Seattle).
968               </div>
969             </td>
970           </tr>
971           <tr>
972             <td class="optional">
973               <span class="std-text">Location URL:</span>
974             </td>
975             <td>
976               <xsl:copy-of select="/bedeworkadmin/formElements/form/location/link/*"/>
977               <xsl:text> </xsl:text>
978               <span class="fieldInfo">(optional: for information about the location)</span>
979             </td>
980           </tr>
981         </xsl:if>
982
983         <!-- Contact -->
984         <tr>
985           <td class="fieldName">
986             Contact:**
987           </td>
988           <td>
989             <xsl:if test="/bedeworkadmin/formElements/form/contact/preferred/select/option">
990               <select name="prefContactId" id="eventFormContactList">
991                 <option value="-1">
992                   Select preferred:
993                 </option>option>
994                 <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/preferred/select/*"/>
995               </select>
996               or Contact (all):
997             </xsl:if>
998             <select name="allContactId" id="eventFormPrefContactList">
999               <option value="-1">
1000                 Select:
1001               </option>
1002               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/all/select/*"/>
1003             </select>
1004           </td>
1005         </tr>
1006
1007
1008         <!--  Category  -->
1009         <tr>
1010           <td class="fieldName">
1011             Categories:**
1012           </td>
1013           <td>
1014             <xsl:if test="/bedeworkadmin/formElements/form/categories/preferred/category and /bedeworkadmin/creating='true'">
1015               <input type="radio" name="categoryCheckboxes" value="preferred" checked="checked" onclick="changeClass('preferredCategoryCheckboxes','shown');changeClass('allCategoryCheckboxes','invisible');"/>show preferred
1016               <input type="radio" name="categoryCheckboxes" value="all" onclick="changeClass('preferredCategoryCheckboxes','invisible');changeClass('allCategoryCheckboxes','shown')"/>show all<br/>
1017               <table cellpadding="0" id="preferredCategoryCheckboxes">
1018                 <tr>
1019                   <xsl:variable name="catCount" select="count(/bedeworkadmin/formElements/form/categories/preferred/category)"/>
1020                   <td>
1021                     <xsl:for-each select="/bedeworkadmin/formElements/form/categories/preferred/category[position() &lt;= ceiling($catCount div 2)]">
1022                       <input type="checkbox" name="categoryKey">
1023                         <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1024                         <xsl:attribute name="id">pref-<xsl:value-of select="keyword"/></xsl:attribute>
1025                         <xsl:attribute name="onchange">setCatChBx('pref-<xsl:value-of select="keyword"/>','all-<xsl:value-of select="keyword"/>')</xsl:attribute>
1026                         <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
1027                         <xsl:value-of select="keyword"/>
1028                       </input><br/>
1029                     </xsl:for-each>
1030                   </td>
1031                   <td>
1032                     <xsl:for-each select="/bedeworkadmin/formElements/form/categories/preferred/category[position() &gt; ceiling($catCount div 2)]">
1033                       <input type="checkbox" name="categoryKey">
1034                         <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1035                         <xsl:attribute name="id">pref-<xsl:value-of select="keyword"/></xsl:attribute>
1036                         <xsl:attribute name="onchange">setCatChBx('pref-<xsl:value-of select="keyword"/>','all-<xsl:value-of select="keyword"/>')</xsl:attribute>
1037                         <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
1038                         <xsl:value-of select="keyword"/>
1039                       </input><br/>
1040                     </xsl:for-each>
1041                   </td>
1042                 </tr>
1043               </table>
1044             </xsl:if>
1045             <table cellpadding="0" id="allCategoryCheckboxes">
1046               <xsl:if test="/bedeworkadmin/formElements/form/categories/preferred/category and /bedeworkadmin/creating='true'">
1047                 <xsl:attribute name="class">invisible</xsl:attribute>
1048               </xsl:if>
1049               <tr>
1050                 <xsl:variable name="catCount" select="count(/bedeworkadmin/formElements/form/categories/all/category)"/>
1051                 <td>
1052                   <xsl:for-each select="/bedeworkadmin/formElements/form/categories/all/category[position() &lt;= ceiling($catCount div 2)]">
1053                     <input type="checkbox" name="categoryKey">
1054                       <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1055                       <xsl:if test="/bedeworkadmin/creating='true'">
1056                         <xsl:attribute name="id">all-<xsl:value-of select="keyword"/></xsl:attribute>
1057                         <xsl:attribute name="onchange">setCatChBx('all-<xsl:value-of select="keyword"/>','pref-<xsl:value-of select="keyword"/>')</xsl:attribute>
1058                       </xsl:if>
1059                       <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword">
1060                         <xsl:attribute name="checked">checked</xsl:attribute>
1061                       </xsl:if>
1062                       <xsl:value-of select="keyword"/>
1063                     </input><br/>
1064                   </xsl:for-each>
1065                 </td>
1066                 <td>
1067                   <xsl:for-each select="/bedeworkadmin/formElements/form/categories/all/category[position() &gt; ceiling($catCount div 2)]">
1068                     <input type="checkbox" name="categoryKey">
1069                       <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1070                       <xsl:if test="/bedeworkadmin/creating='true'">
1071                         <xsl:attribute name="id">all-<xsl:value-of select="keyword"/></xsl:attribute>
1072                         <xsl:attribute name="onchange">setCatChBx('all-<xsl:value-of select="keyword"/>','pref-<xsl:value-of select="keyword"/>')</xsl:attribute>
1073                       </xsl:if>
1074                       <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword">
1075                         <xsl:attribute name="checked">checked</xsl:attribute>
1076                       </xsl:if>
1077                       <xsl:value-of select="keyword"/>
1078                     </input><br/>
1079                   </xsl:for-each>
1080                 </td>
1081               </tr>
1082             </table>
1083           </td>
1084         </tr>
1085         <!-- note -->
1086         <tr>
1087           <td colspan="2" style="padding-top: 1em;">
1088             <span class="fieldInfo">
1089               **<strong>If "preferred values" are enabled</strong>
1090               by your administrator, the category, location, and contact lists will
1091               contain only those value you've used previously.  If you don't find the value
1092               you need in one of these lists, use the "all" list adjacent to each
1093               of these fields.  The event you select from the "all" list will be added
1094               to your preferred list from that point on.  <strong>Note: if you don't
1095               find a location or contact at all, you can add a new one from the
1096               <a href="{$setup}">main menu</a>.</strong>
1097               Only administrators can create categories, however.
1098               To make sure you've used the
1099               correct category, please see the
1100               <a href="" target="_blank">Calendar Definitions</a>
1101             </span>
1102           </td>
1103         </tr>
1104
1105         <xsl:if test="/bedeworkadmin/formElements/form/contact/name">
1106           <tr>
1107             <td class="fieldName" colspan="2">
1108               <span class="std-text">
1109                 <span class="bold">or</span> add</span>
1110             </td>
1111           </tr>
1112           <tr>
1113             <td class="fieldName">
1114               Contact (name):
1115             </td>
1116             <td>
1117               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/name/*"/>
1118             </td>
1119           </tr>
1120           <tr>
1121             <td class="fieldName">
1122               Contact Phone Number:
1123             </td>
1124             <td>
1125               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/phone/*"/>
1126               <xsl:text> </xsl:text>
1127               <span class="fieldInfo">(optional)</span>
1128             </td>
1129           </tr>
1130           <tr>
1131             <td class="optional">
1132               Contact's URL:
1133             </td>
1134             <td>
1135               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/link/*"/>
1136               <xsl:text> </xsl:text>
1137               <span class="fieldInfo">(optional)</span>
1138             </td>
1139           </tr>
1140           <tr>
1141             <td class="optional">
1142               Contact Email Address:
1143             </td>
1144             <td>
1145               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/email/*"/>
1146               <xsl:text> </xsl:text>
1147               <span class="fieldInfo">(optional)</span> test
1148               <div id="contactEmailAlert">&#160;</div> <!-- space for email warning -->
1149             </td>
1150           </tr>
1151         </xsl:if>
1152       </table>
1153
1154       <table border="0" id="submitTable">
1155         <tr>
1156           <xsl:choose>
1157             <xsl:when test="/bedeworkadmin/creating='true'">
1158               <td>
1159                 <input type="submit" name="addEvent" value="Add Event"/>
1160                 <input type="submit" name="cancelled" value="Cancel"/>
1161                 <input type="reset" value="Clear"/>
1162               </td>
1163             </xsl:when>
1164             <xsl:otherwise>
1165               <td>
1166                 <input type="submit" name="updateEvent" value="Update Event"/>
1167                 <input type="submit" name="cancelled" value="Cancel"/>
1168                 <input type="submit" name="copy" value="Duplicate Event"/>
1169               </td>
1170               <td align="right">
1171                 <input type="submit" name="delete" value="Delete Event"/>
1172               </td>
1173             </xsl:otherwise>
1174           </xsl:choose>
1175         </tr>
1176       </table>
1177     </form>
1178   </xsl:template>
1179
1180   <xsl:template name="clock">
1181     <div id="bwClock">
1182       <!-- Bedework 24-Hour Clock time selection widget
1183            used with resources/bwClock.js and resources/bwClock.css -->
1184       <div id="bwClockClock">
1185         <img id="clockMap" src="{$resourcesRoot}/resources/clockMap.gif" width="368" height="368" border="0" alt="" usemap="#bwClockMap" />
1186       </div>
1187       <div id="bwClockCover">
1188         <!-- this is a special effect div used simply to cover the pixelated edge
1189              where the clock meets the clock box title --></div>
1190       <div id="bwClockBox">
1191         <h2>
1192           Bedework 24-Hour Clock
1193         </h2>
1194         <div id="bwClockDateTypeIndicator">
1195           type
1196         </div>
1197         <div id="bwClockTime">
1198           select time
1199         </div>
1200         <div id="bwClockCloseText">
1201           close
1202         </div>
1203         <div id="bwClockCloseButton">
1204           <a href="javascript:bwClockClose();">X</a>
1205         </div>
1206       </div>
1207       <map name="bwClockMap" id="bwClockMap">
1208         <area shape="rect" alt="close clock" title="close clock" coords="160,167, 200,200" href="javascript:bwClockClose()"/>
1209         <area shape="poly" alt="minute 00:55" title="minute 00:55" coords="156,164, 169,155, 156,107, 123,128" href="javascript:bwClockUpdateDateTimeForm('minute','55')" />
1210         <area shape="poly" alt="minute 00:50" title="minute 00:50" coords="150,175, 156,164, 123,128, 103,161" href="javascript:bwClockUpdateDateTimeForm('minute','50')" />
1211         <area shape="poly" alt="minute 00:45" title="minute 00:45" coords="150,191, 150,175, 103,161, 103,206" href="javascript:bwClockUpdateDateTimeForm('minute','45')" />
1212         <area shape="poly" alt="minute 00:40" title="minute 00:40" coords="158,208, 150,191, 105,206, 123,237" href="javascript:bwClockUpdateDateTimeForm('minute','40')" />
1213         <area shape="poly" alt="minute 00:35" title="minute 00:35" coords="171,218, 158,208, 123,238, 158,261" href="javascript:bwClockUpdateDateTimeForm('minute','35')" />
1214         <area shape="poly" alt="minute 00:30" title="minute 00:30" coords="193,218, 172,218, 158,263, 209,263" href="javascript:bwClockUpdateDateTimeForm('minute','30')" />
1215         <area shape="poly" alt="minute 00:25" title="minute 00:25" coords="209,210, 193,218, 209,261, 241,240" href="javascript:bwClockUpdateDateTimeForm('minute','25')" />
1216         <area shape="poly" alt="minute 00:20" title="minute 00:20" coords="216,196, 209,210, 241,240, 261,206" href="javascript:bwClockUpdateDateTimeForm('minute','20')" />
1217         <area shape="poly" alt="minute 00:15" title="minute 00:15" coords="216,178, 216,196, 261,206, 261,159" href="javascript:bwClockUpdateDateTimeForm('minute','15')" />
1218         <area shape="poly" alt="minute 00:10" title="minute 00:10" coords="209,164, 216,178, 261,159, 240,126" href="javascript:bwClockUpdateDateTimeForm('minute','10')" />
1219         <area shape="poly" alt="minute 00:05" title="minute 00:05" coords="196,155, 209,164, 238,126, 206,107" href="javascript:bwClockUpdateDateTimeForm('minute','05')" />
1220         <area shape="poly" alt="minute 00:00" title="minute 00:00" coords="169,155, 196,155, 206,105, 156,105" href="javascript:bwClockUpdateDateTimeForm('minute','00')" />
1221         <area shape="poly" alt="11 PM, 2300 hour" title="11 PM, 2300 hour" coords="150,102, 172,96, 158,1, 114,14" href="javascript:bwClockUpdateDateTimeForm('hour','23')" />
1222         <area shape="poly" alt="10 PM, 2200 hour" title="10 PM, 2200 hour" coords="131,114, 150,102, 114,14, 74,36" href="javascript:bwClockUpdateDateTimeForm('hour','22')" />
1223         <area shape="poly" alt="9 PM, 2100 hour" title="9 PM, 2100 hour" coords="111,132, 131,114, 74,36, 40,69" href="javascript:bwClockUpdateDateTimeForm('hour','21')" />
1224         <area shape="poly" alt="8 PM, 2000 hour" title="8 PM, 2000 hour" coords="101,149, 111,132, 40,69, 15,113" href="javascript:bwClockUpdateDateTimeForm('hour','20')" />
1225         <area shape="poly" alt="7 PM, 1900 hour" title="7 PM, 1900 hour" coords="95,170, 101,149, 15,113, 1,159" href="javascript:bwClockUpdateDateTimeForm('hour','19')" />
1226         <area shape="poly" alt="6 PM, 1800 hour" title="6 PM, 1800 hour" coords="95,196, 95,170, 0,159, 0,204" href="javascript:bwClockUpdateDateTimeForm('hour','18')" />
1227         <area shape="poly" alt="5 PM, 1700 hour" title="5 PM, 1700 hour" coords="103,225, 95,196, 1,205, 16,256" href="javascript:bwClockUpdateDateTimeForm('hour','17')" />
1228         <area shape="poly" alt="4 PM, 1600 hour" title="4 PM, 1600 hour" coords="116,245, 103,225, 16,256, 41,298" href="javascript:bwClockUpdateDateTimeForm('hour','16')" />
1229         <area shape="poly" alt="3 PM, 1500 hour" title="3 PM, 1500 hour" coords="134,259, 117,245, 41,298, 76,332" href="javascript:bwClockUpdateDateTimeForm('hour','15')" />
1230         <area shape="poly" alt="2 PM, 1400 hour" title="2 PM, 1400 hour" coords="150,268, 134,259, 76,333, 121,355" href="javascript:bwClockUpdateDateTimeForm('hour','14')" />
1231         <area shape="poly" alt="1 PM, 1300 hour" title="1 PM, 1300 hour" coords="169,273, 150,268, 120,356, 165,365" href="javascript:bwClockUpdateDateTimeForm('hour','13')" />
1232         <area shape="poly" alt="Noon, 1200 hour" title="Noon, 1200 hour" coords="193,273, 169,273, 165,365, 210,364" href="javascript:bwClockUpdateDateTimeForm('hour','12')" />
1233         <area shape="poly" alt="11 AM, 1100 hour" title="11 AM, 1100 hour" coords="214,270, 193,273, 210,363, 252,352" href="javascript:bwClockUpdateDateTimeForm('hour','11')" />
1234         <area shape="poly" alt="10 AM, 1000 hour" title="10 AM, 1000 hour" coords="232,259, 214,270, 252,352, 291,330" href="javascript:bwClockUpdateDateTimeForm('hour','10')" />
1235         <area shape="poly" alt="9 AM, 0900 hour" title="9 AM, 0900 hour" coords="251,240, 232,258, 291,330, 323,301" href="javascript:bwClockUpdateDateTimeForm('hour','09')" />
1236         <area shape="poly" alt="8 AM, 0800 hour" title="8 AM, 0800 hour" coords="263,219, 251,239, 323,301, 349,261" href="javascript:bwClockUpdateDateTimeForm('hour','08')" />
1237         <area shape="poly" alt="7 AM, 0700 hour" title="7 AM, 0700 hour" coords="269,194, 263,219, 349,261, 363,212" href="javascript:bwClockUpdateDateTimeForm('hour','07')" />
1238         <area shape="poly" alt="6 AM, 0600 hour" title="6 AM, 0600 hour" coords="269,172, 269,193, 363,212, 363,155" href="javascript:bwClockUpdateDateTimeForm('hour','06')" />
1239         <area shape="poly" alt="5 AM, 0500 hour" title="5 AM, 0500 hour" coords="263,150, 269,172, 363,155, 351,109" href="javascript:bwClockUpdateDateTimeForm('hour','05')" />
1240         <area shape="poly" alt="4 AM, 0400 hour" title="4 AM, 0400 hour" coords="251,130, 263,150, 351,109, 325,68" href="javascript:bwClockUpdateDateTimeForm('hour','04')" />
1241         <area shape="poly" alt="3 AM, 0300 hour" title="3 AM, 0300 hour" coords="234,112, 251,130, 325,67, 295,37" href="javascript:bwClockUpdateDateTimeForm('hour','03')" />
1242         <area shape="poly" alt="2 AM, 0200 hour" title="2 AM, 0200 hour" coords="221,102, 234,112, 295,37, 247,11" href="javascript:bwClockUpdateDateTimeForm('hour','02')" />
1243         <area shape="poly" alt="1 AM, 0100 hour" title="1 AM, 0100 hour" coords="196,96, 221,102, 247,10, 209,-1, 201,61, 206,64, 205,74, 199,75" href="javascript:bwClockUpdateDateTimeForm('hour','01')" />
1244         <area shape="poly" alt="Midnight, 0000 hour" title="Midnight, 0000 hour" coords="172,96, 169,74, 161,73, 161,65, 168,63, 158,-1, 209,-1, 201,61, 200,62, 206,64, 205,74, 198,75, 196,96, 183,95" href="javascript:bwClockUpdateDateTimeForm('hour','00')" />
1245       </map>
1246     </div>
1247   </xsl:template>
1248
1249   <xsl:template match="event" mode="displayEvent">
1250     <xsl:variable name="calPath" select="calendar/path"/>
1251     <xsl:variable name="guid" select="guid"/>
1252     <xsl:variable name="recurrenceId" select="recurrenceId"/>
1253
1254     <xsl:choose>
1255       <xsl:when test="/bedeworkadmin/page='deleteEventConfirm'">
1256
1257         <h2>Ok to delete this event?</h2>
1258         <p style="width: 400px;">Note: we do not encourage deletion of old but correct events; we prefer to keep
1259            old events for historical reasons.  Please remove only those events
1260            that are truly erroneous.</p>
1261         <p id="confirmButtons">
1262           <form action="{$event-delete}" method="post">
1263             <input type="submit" name="cancelled" value="Cancel"/>
1264             <input type="submit" name="delete" value="Delete"/>
1265             <input type="hidden" name="calPath" value="{$calPath}"/>
1266             <input type="hidden" name="guid" value="{$guid}"/>
1267             <input type="hidden" name="recurrenceId" value="{$recurrenceId}"/>
1268           </form>
1269         </p>
1270       </xsl:when>
1271       <xsl:otherwise>
1272         <h2>Event Information</h2>
1273       </xsl:otherwise>
1274     </xsl:choose>
1275
1276     <table class="eventFormTable">
1277       <tr>
1278         <th>
1279           Title:
1280         </th>
1281         <td>
1282           <strong><xsl:value-of select="summary"/></strong>
1283         </td>
1284       </tr>
1285
1286       <tr>
1287         <th>
1288           When:
1289         </th>
1290         <td>
1291           <xsl:value-of select="start/dayname"/>, <xsl:value-of select="start/longdate"/><xsl:text> </xsl:text>
1292           <xsl:if test="start/allday = 'false'">
1293             <span class="time"><xsl:value-of select="start/time"/></span>
1294           </xsl:if>
1295           <xsl:if test="(end/longdate != start/longdate) or
1296                         ((end/longdate = start/longdate) and (end/time != start/time))"> - </xsl:if>
1297           <xsl:if test="end/longdate != start/longdate">
1298             <xsl:value-of select="substring(end/dayname,1,3)"/>, <xsl:value-of select="end/longdate"/><xsl:text> </xsl:text>
1299           </xsl:if>
1300           <xsl:choose>
1301             <xsl:when test="start/allday = 'true'">
1302               <span class="time"><em>(all day)</em></span>
1303             </xsl:when>
1304             <xsl:when test="end/longdate != start/longdate">
1305               <span class="time"><xsl:value-of select="end/time"/></span>
1306             </xsl:when>
1307             <xsl:when test="end/time != start/time">
1308               <span class="time"><xsl:value-of select="end/time"/></span>
1309             </xsl:when>
1310           </xsl:choose>
1311         </td>
1312       </tr>
1313
1314       <tr>
1315         <th>
1316           Calendar:
1317         </th>
1318         <td>
1319           <xsl:value-of select="calendar/path"/>
1320         </td>
1321       </tr>
1322
1323       <!--  Description  -->
1324       <tr>
1325         <th>
1326           Description:
1327         </th>
1328         <td>
1329           <xsl:value-of select="description"/>
1330         </td>
1331       </tr>
1332       <!-- Cost -->
1333       <tr>
1334         <th class="optional">
1335           Price:
1336         </th>
1337         <td>
1338           <xsl:value-of select="cost"/>
1339         </td>
1340       </tr>
1341       <!-- Url -->
1342       <tr>
1343         <th class="optional">
1344           URL:
1345         </th>
1346         <td>
1347           <xsl:variable name="eventLink" select="link"/>
1348           <a href="{$eventLink}">
1349             <xsl:value-of select="link"/>
1350           </a>
1351         </td>
1352       </tr>
1353
1354       <!-- Location -->
1355       <tr>
1356         <th>
1357           Location:
1358         </th>
1359         <td>
1360           <xsl:value-of select="location/address"/><br/>
1361           <xsl:value-of select="location/subaddress"/>
1362         </td>
1363       </tr>
1364
1365       <!-- Contact -->
1366       <tr>
1367         <th>
1368           Contact:
1369         </th>
1370         <td>
1371           <xsl:value-of select="contact/name"/><br/>
1372           <xsl:value-of select="contact/phone"/><br/>
1373           <xsl:variable name="mailto" select="email"/>
1374           <a href="mailto:{$mailto}"><xsl:value-of select="email"/></a>
1375           <xsl:variable name="link" select="link"/>
1376           <a href="mailto:{$link}"><xsl:value-of select="link"/></a>
1377         </td>
1378       </tr>
1379
1380       <!-- Owner -->
1381       <tr>
1382         <th>
1383           Owner:
1384         </th>
1385         <td>
1386           <strong><xsl:value-of select="creator"/></strong>
1387         </td>
1388       </tr>
1389
1390       <!--  Categories  -->
1391       <tr>
1392         <th>
1393           Categories:
1394         </th>
1395         <td>
1396           <xsl:for-each select="categories/category">
1397             <xsl:value-of select="word"/><br/>
1398           </xsl:for-each>
1399         </td>
1400       </tr>
1401
1402     </table>
1403
1404     <p>
1405       <xsl:if test="/bedeworkadmin/canEdit = 'true' or /bedeworkadmin/userInfo/superUser = 'true'">
1406         <input type="button" name="return" value="Edit event" onclick="javascript:location.replace('{$event-fetchForUpdate}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}')"/>
1407       </xsl:if>
1408
1409       <input type="button" name="return" value="Back" onclick="javascript:history.back()"/>
1410     </p>
1411   </xsl:template>
1412
1413   <!--+++++++++++++++ Contacts ++++++++++++++++++++-->
1414   <xsl:template name="contactList">
1415     <h2>Edit Contacts</h2>
1416     <p>
1417       Select the contact you would like to update:
1418       <input type="button" name="return" value="Add new contact" onclick="javascript:location.replace('{$contact-initAdd}')"/>
1419     </p>
1420
1421     <table id="commonListTable">
1422       <tr>
1423         <th>Name</th>
1424         <th>Phone</th>
1425         <th>Email</th>
1426         <th>URL</th>
1427       </tr>
1428
1429       <xsl:for-each select="/bedeworkadmin/contacts/contact">
1430         <tr>
1431           <td>
1432             <xsl:copy-of select="name" />
1433           </td>
1434           <td>
1435             <xsl:value-of select="phone" />
1436           </td>
1437           <td>
1438             <xsl:variable name="email" select="email"/>
1439             <a href="mailto:{$email}">
1440               <xsl:value-of select="email"/>
1441             </a>
1442           </td>
1443           <td>
1444             <xsl:variable name="link" select="link" />
1445             <a href="{$link}" target="linktest">
1446               <xsl:value-of select="link" />
1447             </a>
1448           </td>
1449         </tr>
1450       </xsl:for-each>
1451     </table>
1452   </xsl:template>
1453
1454   <xsl:template name="modContact">
1455     <form action="{$contact-update}" method="post">
1456       <h2>Contact Information</h2>
1457
1458       <table id="eventFormTable">
1459         <tr>
1460           <td class="fieldName">
1461             Contact:
1462           </td>
1463           <td>
1464             <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
1465           </td>
1466         </tr>
1467         <tr>
1468           <td class="fieldName">
1469             Contact Phone Number:
1470           </td>
1471           <td>
1472             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
1473             <span class="fieldInfo"> (optional)</span>
1474           </td>
1475         </tr>
1476         <tr>
1477           <td class="optional">
1478             Contact's URL:
1479           </td>
1480           <td>
1481             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
1482             <span class="fieldInfo"> (optional)</span>
1483           </td>
1484         </tr>
1485         <tr>
1486           <td class="optional">
1487             Contact Email Address:
1488           </td>
1489           <td>
1490             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
1491             <span class="fieldInfo"> (optional)</span>
1492           </td>
1493         </tr>
1494       </table>
1495
1496       <table border="0" id="submitTable">
1497         <tr>
1498           <xsl:choose>
1499             <xsl:when test="/bedeworkadmin/creating='true'">
1500               <td>
1501                 <input type="submit" name="addContact" value="Add Contact"/>
1502                 <input type="submit" name="cancelled" value="Cancel"/>
1503                 <input type="reset" value="Clear"/>
1504               </td>
1505             </xsl:when>
1506             <xsl:otherwise>
1507               <td>
1508                 <input type="submit" name="updateContact" value="Update Contact"/>
1509                 <input type="submit" name="cancelled" value="Cancel"/>
1510                 <input type="reset" value="Reset"/>
1511               </td>
1512               <td align="right">
1513                 <input type="submit" name="delete" value="Delete Contact"/>
1514               </td>
1515             </xsl:otherwise>
1516           </xsl:choose>
1517         </tr>
1518       </table>
1519
1520     </form>
1521   </xsl:template>
1522
1523   <xsl:template name="deleteContactConfirm">
1524     <h2>Ok to delete this contact?</h2>
1525     <p id="confirmButtons">
1526       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1527     </p>
1528
1529     <table class="eventFormTable">
1530       <tr>
1531         <th>Name</th>
1532         <td>
1533           <xsl:value-of select="/bedeworkadmin/contact/name" />
1534         </td>
1535       </tr>
1536       <tr>
1537         <th>Phone</th>
1538         <td>
1539           <xsl:value-of select="/bedeworkadmin/contact/phone" />
1540         </td>
1541       </tr>
1542       <tr>
1543         <th>Email</th>
1544         <td>
1545           <xsl:value-of select="/bedeworkadmin/contact/email" />
1546         </td>
1547       </tr>
1548       <tr>
1549         <th>URL</th>
1550         <td>
1551           <xsl:value-of select="/bedeworkadmin/contact/link" />
1552         </td>
1553       </tr>
1554     </table>
1555   </xsl:template>
1556
1557    <!--+++++++++++++++ Locations ++++++++++++++++++++-->
1558   <xsl:template name="locationList">
1559     <h2>Edit Locations</h2>
1560     <p>
1561       Select the location that you would like to update:
1562       <input type="button" name="return" value="Add new location" onclick="javascript:location.replace('{$location-initAdd}')"/>
1563     </p>
1564
1565     <table id="commonListTable">
1566       <tr>
1567         <th>Address</th>
1568         <th>Subaddress</th>
1569         <th>URL</th>
1570       </tr>
1571
1572       <xsl:for-each select="/bedeworkadmin/locations/location">
1573         <tr>
1574           <td>
1575             <xsl:copy-of select="address/*"/>
1576           </td>
1577           <td>
1578             <xsl:value-of select="subaddress"/>
1579           </td>
1580           <td>
1581             <xsl:variable name="link" select="link" />
1582             <a href="{$link}" target="linktest">
1583               <xsl:value-of select="link" />
1584             </a>
1585           </td>
1586         </tr>
1587       </xsl:for-each>
1588     </table>
1589   </xsl:template>
1590
1591   <xsl:template name="modLocation">
1592     <xsl:choose>
1593       <xsl:when test="/bedeworkadmin/creating='true'">
1594         <h2>Add Location</h2>
1595       </xsl:when>
1596       <xsl:otherwise>
1597         <h2>Update Location</h2>
1598       </xsl:otherwise>
1599     </xsl:choose>
1600
1601     <form action="{$location-update}" method="post">
1602       <table id="eventFormTable">
1603         <tr>
1604           <td class="fieldName">
1605             Address:
1606           </td>
1607           <td>
1608             <xsl:copy-of select="/bedeworkadmin/formElements/form/address/*"/>
1609           </td>
1610         </tr>
1611         <tr>
1612           <td class="optional">
1613             Subaddress:
1614           </td>
1615           <td>
1616             <xsl:copy-of select="/bedeworkadmin/formElements/form/subaddress/*"/>
1617             <span class="fieldInfo"> (optional)</span>
1618           </td>
1619         </tr>
1620         <tr>
1621           <td class="optional">
1622             Location's URL:
1623           </td>
1624           <td>
1625             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
1626             <span class="fieldInfo"> (optional)</span>
1627           </td>
1628         </tr>
1629       </table>
1630
1631       <table border="0" id="submitTable">
1632         <tr>
1633           <xsl:choose>
1634             <xsl:when test="/bedeworkadmin/creating='true'">
1635               <td>
1636                 <input type="submit" name="addLocation" value="Add Location"/>
1637                 <input type="submit" name="cancelled" value="Cancel"/>
1638                 <input type="reset" value="Clear"/>
1639               </td>
1640             </xsl:when>
1641             <xsl:otherwise>
1642               <td>
1643                 <input type="submit" name="updateLocation" value="Update Location"/>
1644                 <input type="submit" name="cancelled" value="Cancel"/>
1645                 <input type="reset" value="Reset"/>
1646               </td>
1647               <td align="right">
1648                 <input type="submit" name="delete" value="Delete Location"/>
1649               </td>
1650             </xsl:otherwise>
1651           </xsl:choose>
1652         </tr>
1653       </table>
1654     </form>
1655   </xsl:template>
1656
1657   <xsl:template name="deleteLocationConfirm">
1658     <h2>Ok to delete this location?</h2>
1659     <p id="confirmButtons">
1660       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1661     </p>
1662
1663     <table class="eventFormTable">
1664       <tr>
1665         <td class="fieldName">
1666             Address:
1667           </td>
1668         <td>
1669           <xsl:value-of select="/bedeworkadmin/location/address"/>
1670         </td>
1671       </tr>
1672       <tr>
1673         <td class="optional">
1674             Subaddress:
1675           </td>
1676         <td>
1677           <xsl:value-of select="/bedeworkadmin/location/subaddress"/>
1678         </td>
1679       </tr>
1680       <tr>
1681         <td class="optional">
1682             Location's URL:
1683           </td>
1684         <td>
1685           <xsl:variable name="link" select="/bedeworkadmin/location/link"/>
1686           <a href="{$link}">
1687             <xsl:value-of select="/bedeworkadmin/location/link"/>
1688           </a>
1689         </td>
1690       </tr>
1691     </table>
1692   </xsl:template>
1693
1694   <!--+++++++++++++++ Categories ++++++++++++++++++++-->
1695   <xsl:template name="categoryList">
1696     <h2>Edit Categories</h2>
1697     <p>
1698       Select the category you would like to update:
1699       <input type="button" name="return" value="Add new category" onclick="javascript:location.replace('{$category-initAdd}')"/>
1700     </p>
1701
1702     <table id="commonListTable">
1703       <tr>
1704         <th>Keyword</th>
1705         <th>Description</th>
1706       </tr>
1707
1708       <xsl:for-each select="/bedeworkadmin/categories/category">
1709         <xsl:variable name="categoryKey" select="normalize-space(keyword)"/>
1710         <tr>
1711           <td>
1712             <a href="{$category-fetchForUpdate}&amp;categoryKey={$categoryKey}">
1713               <xsl:value-of select="keyword"/>
1714             </a>
1715           </td>
1716           <td>
1717             <xsl:value-of select="desc"/>
1718           </td>
1719         </tr>
1720       </xsl:for-each>
1721     </table>
1722   </xsl:template>
1723
1724   <xsl:template name="modCategory">
1725     <xsl:choose>
1726       <xsl:when test="/bedeworkadmin/creating='true'">
1727         <h2>Add Category</h2>
1728         <form action="{$category-update}" method="post">
1729           <table id="eventFormTable">
1730             <tr>
1731               <td class="fieldName">
1732                 Keyword:
1733               </td>
1734               <td>
1735                 <input type="text" name="categoryWord.value" value="" size="40"/>
1736               </td>
1737             </tr>
1738             <tr>
1739               <td class="optional">
1740                 Description:
1741               </td>
1742               <td>
1743                 <textarea name="categoryDesc.value" rows="3" cols="60">
1744                 </textarea>
1745               </td>
1746             </tr>
1747           </table>
1748           <table border="0" id="submitTable">
1749             <tr>
1750               <td>
1751                 <input type="submit" name="addCategory" value="Add Category"/>
1752                 <input type="submit" name="cancelled" value="Cancel"/>
1753                 <input type="reset" value="Clear"/>
1754               </td>
1755             </tr>
1756           </table>
1757         </form>
1758       </xsl:when>
1759       <xsl:otherwise>
1760         <h2>Update Category</h2>
1761         <form action="{$category-update}" method="post">
1762           <table id="eventFormTable">
1763             <tr>
1764               <td class="fieldName">
1765             Keyword:
1766             </td>
1767               <td>
1768                 <xsl:variable name="keyword" select="normalize-space(/bedeworkadmin/currentCategory/category/keyword)"/>
1769                 <input type="text" name="categoryWord.value" value="{$keyword}" size="40"/>
1770               </td>
1771             </tr>
1772             <tr>
1773               <td class="optional">
1774             Description:
1775             </td>
1776               <td>
1777                 <textarea name="categoryDesc.value" rows="3" cols="60">
1778                   <xsl:value-of select="normalize-space(/bedeworkadmin/currentCategory/category/desc)"/>
1779                 </textarea>
1780               </td>
1781             </tr>
1782           </table>
1783
1784           <table border="0" id="submitTable">
1785             <tr>
1786               <td>
1787                 <input type="submit" name="updateCategory" value="Update Category"/>
1788                 <input type="submit" name="cancelled" value="Cancel"/>
1789                 <input type="reset" value="Reset"/>
1790               </td>
1791               <td align="right">
1792                 <input type="submit" name="delete" value="Delete Category"/>
1793               </td>
1794             </tr>
1795           </table>
1796         </form>
1797       </xsl:otherwise>
1798     </xsl:choose>
1799
1800
1801   </xsl:template>
1802
1803   <xsl:template name="deleteCategoryConfirm">
1804     <h2>Ok to delete this category?</h2>
1805
1806
1807     <table class="eventFormTable">
1808       <tr>
1809         <td class="fieldName">
1810           Keyword:
1811         </td>
1812         <td>
1813           <xsl:value-of select="/bedeworkadmin/currentCategory/category/keyword"/>
1814         </td>
1815       </tr>
1816       <tr>
1817         <td class="optional">
1818           Description:
1819         </td>
1820         <td>
1821           <xsl:value-of select="/bedeworkadmin/currentCategory/category/desc"/>
1822         </td>
1823       </tr>
1824     </table>
1825
1826     <form action="{$category-delete}" method="post">
1827       <input type="submit" name="updateCategory" value="Yes: Delete Category"/>
1828       <input type="submit" name="cancelled" value="No: Cancel"/>
1829     </form>
1830   </xsl:template>
1831
1832 <!--+++++++++++++++ Calendars ++++++++++++++++++++-->
1833   <xsl:template match="calendars">
1834     <table id="calendarTable">
1835       <tr>
1836         <td class="cals">
1837           <h3>Public calendars</h3>
1838           <ul id="calendarTree">
1839             <xsl:choose>
1840               <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
1841                 <xsl:apply-templates select="calendar" mode="listForDisplay"/>
1842               </xsl:when>
1843               <xsl:otherwise>
1844                 <xsl:apply-templates select="calendar" mode="listForUpdate"/>
1845               </xsl:otherwise>
1846             </xsl:choose>
1847           </ul>
1848         </td>
1849         <td class="calendarContent">
1850           <xsl:choose>
1851             <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='calendarReferenced'">
1852               <xsl:call-template name="calendarList"/>
1853             </xsl:when>
1854             <xsl:when test="/bedeworkadmin/page='calendarDescriptions'">
1855               <xsl:call-template name="calendarDescriptions"/>
1856             </xsl:when>
1857             <xsl:when test="/bedeworkadmin/page='displayCalendar'">
1858               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="displayCalendar"/>
1859             </xsl:when>
1860             <xsl:when test="/bedeworkadmin/page='deleteCalendarConfirm'">
1861               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="deleteCalendarConfirm"/>
1862             </xsl:when>
1863             <xsl:when test="/bedeworkadmin/creating='true'">
1864               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="addCalendar"/>
1865             </xsl:when>
1866             <xsl:otherwise>
1867               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="modCalendar"/>
1868             </xsl:otherwise>
1869           </xsl:choose>
1870         </td>
1871       </tr>
1872     </table>
1873   </xsl:template>
1874
1875   <xsl:template match="calendar" mode="listForUpdate">
1876     <xsl:variable name="calPath" select="encodedPath"/>
1877     <xsl:variable name="itemClass">
1878       <xsl:choose>
1879         <xsl:when test="calendarCollection='false'">folder</xsl:when>
1880         <xsl:otherwise>calendar</xsl:otherwise>
1881       </xsl:choose>
1882     </xsl:variable>
1883     <li class="{$itemClass}">
1884       <a href="{$calendar-fetchForUpdate}&amp;calPath={$calPath}" title="update">
1885         <xsl:value-of select="name"/>
1886       </a>
1887       <xsl:if test="calendarCollection='false'">
1888         <xsl:text> </xsl:text>
1889         <a href="{$calendar-initAdd}&amp;calPath={$calPath}" title="add a calendar or folder">
1890           <img src="{$resourcesRoot}/resources/calAddIcon.gif" width="13" height="13" alt="add a calendar or folder" border="0"/>
1891         </a>
1892       </xsl:if>
1893       <xsl:if test="calendar">
1894         <ul>
1895           <xsl:apply-templates select="calendar" mode="listForUpdate">
1896             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
1897         </ul>
1898       </xsl:if>
1899     </li>
1900   </xsl:template>
1901
1902   <xsl:template match="calendar" mode="listForDisplay">
1903     <xsl:variable name="calPath" select="encodedPath"/>
1904     <xsl:variable name="itemClass">
1905       <xsl:choose>
1906         <xsl:when test="calendarCollection='false'">folder</xsl:when>
1907         <xsl:otherwise>calendar</xsl:otherwise>
1908       </xsl:choose>
1909     </xsl:variable>
1910     <li class="{$itemClass}">
1911       <a href="{$calendar-fetchForDisplay}&amp;calPath={$calPath}" title="display">
1912         <xsl:value-of select="name"/>
1913       </a>
1914       <xsl:if test="calendar">
1915         <ul>
1916           <xsl:apply-templates select="calendar" mode="listForDisplay">
1917             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
1918         </ul>
1919       </xsl:if>
1920     </li>
1921   </xsl:template>
1922
1923   <xsl:template match="currentCalendar" mode="addCalendar">
1924     <h3>Add Calendar / Folder</h3>
1925     <form name="addCalForm" action="{$calendar-update}">
1926       <table class="eventFormTable">
1927         <tr>
1928           <th>Name:</th>
1929           <td>
1930             <xsl:variable name="curCalName" select="name"/>
1931             <input name="calendar.name" value="{$curCalName}" size="40"/>
1932           </td>
1933         </tr>
1934         <tr>
1935           <th>Summary:</th>
1936           <td>
1937             <xsl:variable name="curCalSummary" select="summary"/>
1938             <input type="text" name="calendar.summary" value="{$curCalSummary}" size="40"/>
1939           </td>
1940         </tr>
1941         <tr>
1942           <th>Description:</th>
1943           <td>
1944             <textarea name="calendar.description" cols="40" rows="4">
1945               <xsl:value-of select="desc"/>
1946             </textarea>
1947           </td>
1948         </tr>
1949         <tr>
1950           <th>Calendar/Folder:</th>
1951           <td>
1952             <xsl:choose>
1953               <xsl:when test="calendarCollection='true'">
1954                 <input type="radio" value="true" name="calendarCollection" checked="checked"/> Calendar
1955                 <input type="radio" value="false" name="calendarCollection"/> Folder
1956               </xsl:when>
1957               <xsl:otherwise>
1958                 <input type="radio" value="true" name="calendarCollection"/> Calendar
1959                 <input type="radio" value="false" name="calendarCollection" checked="checked"/> Folder
1960               </xsl:otherwise>
1961             </xsl:choose>
1962           </td>
1963         </tr>
1964       </table>
1965
1966       <table border="0" id="submitTable">
1967         <tr>
1968           <td>
1969             <input type="submit" name="addCalendar" value="Add Calendar/Folder"/>
1970             <input type="submit" name="cancelled" value="Cancel"/>
1971             <input type="reset" value="Clear"/>
1972           </td>
1973         </tr>
1974       </table>
1975     </form>
1976     <div id="sharingBox">
1977       <h3>Sharing</h3>
1978       Sharing may be added to a calendar once created.
1979     </div>
1980   </xsl:template>
1981
1982   <xsl:template match="currentCalendar" mode="modCalendar">
1983     <xsl:choose>
1984       <xsl:when test="calendarCollection='true'">
1985         <h3>Modify Calendar</h3>
1986       </xsl:when>
1987       <xsl:otherwise>
1988         <h3>Modify Folder</h3>
1989       </xsl:otherwise>
1990     </xsl:choose>
1991     <form name="modCalForm" action="{$calendar-update}">
1992       <table class="eventFormTable">
1993         <tr>
1994           <th>Path:</th>
1995           <td>
1996             <xsl:value-of select="path"/>
1997           </td>
1998         </tr>
1999         <tr>
2000           <th>Name:</th>
2001           <td>
2002             <xsl:value-of select="name"/>
2003           </td>
2004         </tr>
2005         <tr>
2006           <th>Mailing List ID:</th>
2007           <td>
2008             <xsl:value-of select="mailListId"/>
2009           </td>
2010         </tr>
2011         <tr>
2012           <th>Summary:</th>
2013           <td>
2014             <xsl:variable name="curCalSummary" select="summary"/>
2015             <input type="text" name="calendar.summary" value="{$curCalSummary}" size="40"/>
2016           </td>
2017         </tr>
2018         <tr>
2019           <th>Description:</th>
2020           <td>
2021             <textarea name="calendar.description" cols="40" rows="4">
2022               <xsl:value-of select="desc"/>
2023             </textarea>
2024           </td>
2025         </tr>
2026         <tr>
2027           <th>Calendar/Folder:</th>
2028           <td>
2029             <xsl:choose>
2030               <xsl:when test="calendarCollection='true'">
2031                 <input type="radio" value="true" name="calendarCollection" checked="checked"/> Calendar
2032                 <input type="radio" value="false" name="calendarCollection"/> Folder
2033               </xsl:when>
2034               <xsl:otherwise>
2035                 <input type="radio" value="true" name="calendarCollection"/> Calendar
2036                 <input type="radio" value="false" name="calendarCollection" checked="checked"/> Folder
2037               </xsl:otherwise>
2038             </xsl:choose>
2039           </td>
2040         </tr>
2041       </table>
2042
2043       <table border="0" id="submitTable">
2044         <tr>
2045           <td>
2046             <xsl:choose>
2047               <xsl:when test="calendarCollection='true'">
2048                 <input type="submit" name="updateCalendar" value="Update Calendar"/>
2049               </xsl:when>
2050               <xsl:otherwise>
2051                 <input type="submit" name="updateCalendar" value="Update Folder"/>
2052               </xsl:otherwise>
2053             </xsl:choose>
2054             <input type="submit" name="cancelled" value="Cancel"/>
2055             <input type="reset" value="Reset"/>
2056           </td>
2057           <td align="right">
2058             <xsl:choose>
2059               <xsl:when test="calendarCollection='true'">
2060                 <input type="submit" name="delete" value="Delete Calendar"/>
2061               </xsl:when>
2062               <xsl:otherwise>
2063                 <input type="submit" name="delete" value="Delete Folder"/>
2064               </xsl:otherwise>
2065             </xsl:choose>
2066           </td>
2067         </tr>
2068       </table>
2069     </form>
2070
2071
2072     <div id="sharingBox">
2073       <xsl:variable name="calPath" select="path"/>
2074       <xsl:variable name="encodedCalPath" select="encodedPath"/>
2075       <xsl:if test="currentAccess/current-user-privilege-set/privilege/read-acl or /bedeworkadmin/userInfo/superUser='true'">
2076         <h3>Sharing</h3>
2077         <table class="common" id="sharing">
2078           <tr>
2079             <th class="commonHeader">Who:</th>
2080             <th class="commonHeader">Current access:</th>
2081             <th class="commonHeader">Source:</th>
2082           </tr>
2083           <xsl:for-each select="acl/ace">
2084             <xsl:variable name="who">
2085               <xsl:choose>
2086                 <xsl:when test="invert">
2087                   <xsl:choose>
2088                     <xsl:when test="invert/principal/href"><xsl:value-of select="normalize-space(invert/principal/href)"/></xsl:when>
2089                     <xsl:when test="invert/principal/property"><xsl:value-of select="name(invert/principal/property/*)"/></xsl:when>
2090                     <xsl:otherwise><xsl:value-of select="name(invert/principal/*)"/></xsl:otherwise>
2091                   </xsl:choose>
2092                 </xsl:when>
2093                 <xsl:otherwise>
2094                   <xsl:choose>
2095                     <xsl:when test="principal/href"><xsl:value-of select="normalize-space(principal/href)"/></xsl:when>
2096                     <xsl:when test="principal/property"><xsl:value-of select="name(principal/property/*)"/></xsl:when>
2097                     <xsl:otherwise><xsl:value-of select="name(principal/*)"/></xsl:otherwise>
2098                   </xsl:choose>
2099                 </xsl:otherwise>
2100               </xsl:choose>
2101             </xsl:variable>
2102             <tr>
2103             <th class="thin">
2104                 <xsl:if test="invert">
2105                   Not
2106                 </xsl:if>
2107                 <xsl:choose>
2108                   <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)">
2109                     <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
2110                     <xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/userPrincipalRoot)),'/')"/>
2111                   </xsl:when>
2112                   <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)">
2113                     <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
2114                     <xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/groupPrincipalRoot)),'/')"/>
2115                   </xsl:when>
2116                   <xsl:when test="invert and $who='owner'">
2117                     <xsl:value-of select="$who"/> (other)
2118                   </xsl:when>
2119                   <xsl:otherwise>
2120                     <xsl:value-of select="$who"/>
2121                   </xsl:otherwise>
2122                 </xsl:choose>
2123               </th>
2124               <td>
2125                 <xsl:for-each select="grant/node()">
2126                   <xsl:value-of select="name(.)"/>&#160;&#160;
2127                 </xsl:for-each>
2128                 <xsl:for-each select="deny/node()">
2129                   <xsl:choose>
2130                     <xsl:when test="name(.)='all'">
2131                       none
2132                     </xsl:when>
2133                     <xsl:otherwise>
2134                       deny-<xsl:value-of select="name(.)"/>
2135                     </xsl:otherwise>
2136                   </xsl:choose>
2137                   &#160;&#160;
2138                 </xsl:for-each>
2139               </td>
2140               <td>
2141                 <xsl:choose>
2142                   <xsl:when test="inherited">
2143                     inherited from:
2144                     <a>
2145                       <xsl:attribute name="href"><xsl:value-of select="$calendar-fetchForUpdate"/>&amp;calPath=<xsl:value-of select="inherited/href"/></xsl:attribute>
2146                       <xsl:value-of select="inherited/href"/>
2147                     </a>
2148                   </xsl:when>
2149                   <xsl:otherwise>
2150                     local:
2151                     <xsl:variable name="whoType">
2152                       <xsl:choose>
2153                         <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)">user</xsl:when>
2154                         <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)">group</xsl:when>
2155                         <xsl:otherwise></xsl:otherwise>
2156                       </xsl:choose>
2157                     </xsl:variable>
2158                     <xsl:variable name="shortWho">
2159                       <xsl:choose>
2160                         <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)"><xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/userPrincipalRoot)),'/')"/></xsl:when>
2161                         <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)"><xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/groupPrincipalRoot)),'/')"/></xsl:when>
2162                         <xsl:otherwise><xsl:value-of select="$who"/></xsl:otherwise>
2163                       </xsl:choose>
2164                     </xsl:variable>
2165                     <xsl:choose>
2166                       <xsl:when test="invert">
2167                         <a href="{$calendar-setAccess}&amp;calPath={$encodedCalPath}&amp;how=default&amp;who={$shortWho}&amp;whoType={$whoType}&amp;notWho=yes">
2168                           reset to default
2169                         </a>
2170                       </xsl:when>
2171                       <xsl:otherwise>
2172                         <a href="{$calendar-setAccess}&amp;calPath={$encodedCalPath}&amp;how=default&amp;who={$shortWho}&amp;whoType={$whoType}">
2173                           reset to default
2174                         </a>
2175                       </xsl:otherwise>
2176                     </xsl:choose>
2177                   </xsl:otherwise>
2178                 </xsl:choose>
2179               </td>
2180             </tr>
2181           </xsl:for-each>
2182         </table>
2183       </xsl:if>
2184
2185       <xsl:if test="currentAccess/current-user-privilege-set/privilege/write-acl or /bedeworkadmin/userInfo/superUser='true'">
2186         <form name="calendarShareForm" action="{$calendar-setAccess}" id="shareForm" method="post">
2187           <input type="hidden" name="calPath" value="{$calPath}"/>
2188           <table cellpadding="0" id="shareFormTable" class="common">
2189             <tr>
2190               <th colspan="2" class="commonHeader">Set access:</th>
2191             </tr>
2192             <tr>
2193               <td>
2194                 <h5>Who:</h5>
2195                 <input type="text" name="who" size="20"/>
2196                 <br/>
2197                 <input type="radio" value="user" name="whoType" checked="checked"/> user
2198                 <input type="radio" value="group" name="whoType"/> group
2199                 <p>OR</p>
2200                 <p>
2201                   <input type="radio" value="auth" name="whoType"/> all authorized users<br/>
2202                   <input type="radio" value="other" name="whoType"/> other users<br/>
2203                   <input type="radio" value="owner" name="whoType"/> owner
2204                 </p>
2205                 <!-- we may never use the invert action ...it is probably
2206                      too confusing, and can be achieved in other ways -->
2207                 <!--
2208                 <p class="padTop">
2209                   <input type="checkbox" value="yes" name="notWho"/> invert (deny)
2210                 </p>-->
2211               </td>
2212               <td>
2213                 <h5>Rights:</h5>
2214                 <ul id="howList">
2215                   <li>
2216                     <input type="radio" value="A" name="how"/>
2217                     <strong>All</strong> (read, write, delete)</li>
2218                   <li class="padTop">
2219                     <input type="radio" value="R" name="how" checked="checked"/>
2220                     <strong>Read</strong> (content, access, freebusy)
2221                   </li>
2222                   <li>
2223                     <input type="radio" value="f" name="how"/> Read freebusy only
2224                   </li>
2225                   <li class="padTop">
2226                     <input type="radio" value="Rc" name="how"/>
2227                     <strong>Read</strong> and <strong>Write content only</strong>
2228                   </li>
2229                   <li class="padTop">
2230                     <input type="radio" value="W" name="how"/>
2231                     <strong>Write and delete</strong> (content, access, properties)
2232                   </li>
2233                   <li>
2234                     <input type="radio" value="c" name="how"/> Write content only
2235                   </li>
2236                   <li>
2237                     <input type="radio" value="u" name="how"/> Delete only
2238                   </li>
2239                   <li class="padTop">
2240                     <input type="radio" value="N" name="how"/>
2241                     <strong>None</strong>
2242                   </li>
2243                   <!--
2244                   <li class="padTop">
2245                     <input type="radio" value="default" name="how"/>
2246                     <strong>Restore default access</strong>
2247                   </li>-->
2248                 </ul>
2249               </td>
2250             </tr>
2251           </table>
2252           <input type="submit" name="submit" value="Submit"/>
2253         </form>
2254       </xsl:if>
2255     </div>
2256   </xsl:template>
2257
2258   <xsl:template name="calendarList">
2259     <h3>Manage Calendars</h3>
2260     <ul>
2261       <li>Select an item from the calendar list on the left to modify
2262       a calendar or folder.</li>
2263       <li>Select the
2264       <img src="{$resourcesRoot}/resources/calAddIcon.gif" width="13" height="13" alt="true" border="0"/>
2265       icon to add a new calendar or folder to the tree.
2266         <ul>
2267           <li>Folders may only contain calendars and subfolders.</li>
2268           <li>Calendars may only contain events (and other calendar items).</li>
2269           <li>
2270             If a calendar is empty, it may be converted to a folder and vice
2271             versa.  If a calendar or folder are not empty, it may not be
2272             converted.
2273           </li>
2274         </ul>
2275       </li>
2276     </ul>
2277   </xsl:template>
2278
2279   <xsl:template name="calendarDescriptions">
2280     <h2>Calendar Information</h2>
2281     <ul>
2282       <li>Select an item from the calendar tree on the left to view all information
2283       about that calendar or folder.  The tree on the left represents the calendar
2284       heirarchy.</li>
2285     </ul>
2286
2287     <p>
2288       <strong>All Calendar Descriptions:</strong>
2289     </p>
2290     <table id="flatCalendarDescriptions" cellspacing="0">
2291       <tr>
2292         <th>Name</th>
2293         <th>Description</th>
2294       </tr>
2295       <xsl:for-each select="//calendar">
2296         <xsl:variable name="descClass">
2297           <xsl:choose>
2298             <xsl:when test="position() mod 2 = 0">even</xsl:when>
2299             <xsl:otherwise>odd</xsl:otherwise>
2300           </xsl:choose>
2301         </xsl:variable>
2302         <tr class="{$descClass}">
2303           <td>
2304             <xsl:value-of select="name"/>
2305           </td>
2306           <td>
2307             <xsl:value-of select="desc"/>
2308           </td>
2309         </tr>
2310       </xsl:for-each>
2311     </table>
2312   </xsl:template>
2313
2314   <xsl:template match="currentCalendar" mode="displayCalendar">
2315     <h2>Calendar Information</h2>
2316     <table class="eventFormTable">
2317       <tr>
2318         <th>Name:</th>
2319         <td>
2320           <xsl:value-of select="name"/>
2321         </td>
2322       </tr>
2323       <tr>
2324         <th>Path:</th>
2325         <td>
2326           <xsl:value-of select="path"/>
2327         </td>
2328       </tr>
2329       <tr>
2330         <th>Summary:</th>
2331         <td>
2332           <xsl:value-of select="summary"/>
2333         </td>
2334       </tr>
2335       <tr>
2336         <th>Description:</th>
2337         <td>
2338           <xsl:value-of select="desc"/>
2339         </td>
2340       </tr>
2341     </table>
2342   </xsl:template>
2343
2344   <xsl:template match="currentCalendar" mode="deleteCalendarConfirm">
2345     <xsl:choose>
2346       <xsl:when test="calendarCollection='true'">
2347         <h3>Delete Calendar</h3>
2348         <p>
2349           The following calendar will be deleted.  Continue?
2350         </p>
2351       </xsl:when>
2352       <xsl:otherwise>
2353         <h3>Delete Folder</h3>
2354         <p>
2355           The following folder <em>and all its contents</em> will be deleted.
2356           Continue?
2357         </p>
2358       </xsl:otherwise>
2359     </xsl:choose>
2360
2361     <form name="delCalForm" action="{$calendar-delete}">
2362       <table class="eventFormTable">
2363         <tr>
2364           <th>Path:</th>
2365           <td>
2366             <xsl:value-of select="path"/>
2367           </td>
2368         </tr>
2369         <tr>
2370           <th>Name:</th>
2371           <td>
2372             <xsl:value-of select="name"/>
2373           </td>
2374         </tr>
2375         <tr>
2376           <th>Summary:</th>
2377           <td>
2378             <xsl:value-of select="summary"/>
2379           </td>
2380         </tr>
2381         <tr>
2382           <th>Description:</th>
2383           <td>
2384             <xsl:value-of select="desc"/>
2385           </td>
2386         </tr>
2387       </table>
2388
2389       <table border="0" id="submitTable">
2390         <tr>
2391           <td>
2392             <input type="submit" name="cancelled" value="Cancel"/>
2393           </td>
2394           <td align="right">
2395             <xsl:choose>
2396               <xsl:when test="calendarCollection='true'">
2397                 <input type="submit" name="delete" value="Yes: Delete Calendar!"/>
2398               </xsl:when>
2399               <xsl:otherwise>
2400                 <input type="submit" name="delete" value="Yes: Delete Folder!"/>
2401               </xsl:otherwise>
2402             </xsl:choose>
2403           </td>
2404         </tr>
2405       </table>
2406     </form>
2407   </xsl:template>
2408
2409   <!-- the selectCalForEvent listing creates a calendar tree in a pop-up window -->
2410   <xsl:template name="selectCalForEvent">
2411     <div id="calTreeBlock">
2412       <h2>Select a calendar</h2>
2413       <!--<form name="toggleCals" action="{$event-selectCalForEvent}">
2414         <xsl:choose>
2415           <xsl:when test="/bedework/appvar[key='showAllCalsForEvent']/value = 'true'">
2416             <input type="radio" name="setappvar" value="showAllCalsForEvent(false)" onclick="submit()"/>
2417             show only writable calendars
2418             <input type="radio" name="setappvar" value="showAllCalsForEvent(true)" checked="checked" onclick="submit()"/>
2419             show all calendars
2420           </xsl:when>
2421           <xsl:otherwise>
2422             <input type="radio" name="setappvar" value="showAllCalsForEvent(false)" checked="checked" onclick="submit()"/>
2423             show only writable calendars
2424             <input type="radio" name="setappvar" value="showAllCalsForEvent(true)" onclick="submit()"/>
2425             show all calendars
2426           </xsl:otherwise>
2427         </xsl:choose>
2428       </form>-->
2429       <h4>Calendars</h4>
2430       <ul id="calendarTree">
2431         <xsl:apply-templates select="/bedeworkadmin/calendars/calendar" mode="selectCalForEventCalTree"/>
2432       </ul>
2433     </div>
2434   </xsl:template>
2435
2436   <xsl:template match="calendar" mode="selectCalForEventCalTree">
2437     <xsl:variable name="id" select="id"/>
2438     <li>
2439       <xsl:attribute name="class">
2440         <xsl:choose>
2441           <xsl:when test="calendarCollection='false'">folder</xsl:when>
2442           <xsl:otherwise>calendar</xsl:otherwise>
2443         </xsl:choose>
2444       </xsl:attribute>
2445       <xsl:variable name="calPath" select="path"/><!-- not the encodedPath when put in a form - otherwise it gets double encoded -->
2446       <xsl:variable name="calDisplay" select="path"/>
2447       <xsl:choose>
2448         <xsl:when test="currentAccess/current-user-privilege-set/privilege/write-content and (calendarCollection = 'true')">
2449           <a href="javascript:updateEventFormCalendar('{$calPath}','{$calDisplay}')">
2450             <strong>
2451               <xsl:value-of select="name"/>
2452             </strong>
2453           </a>
2454         </xsl:when>
2455         <xsl:otherwise>
2456           <xsl:value-of select="name"/>
2457         </xsl:otherwise>
2458       </xsl:choose>
2459       <xsl:if test="calendar">
2460         <ul>
2461           <xsl:apply-templates select="calendar" mode="selectCalForEventCalTree"/>
2462         </ul>
2463       </xsl:if>
2464     </li>
2465   </xsl:template>
2466
2467   <!--+++++++++++++++ Subscriptions ++++++++++++++++++++-->
2468   <xsl:template match="subscriptions">
2469     <table id="subsTable">
2470       <tr>
2471         <td class="cals">
2472           <h3>Public calendars</h3>
2473           <p class="smaller">
2474             Select a calendar below to add a <em><strong>new</strong>
2475             </em>
2476             internal subscription. <!-- or
2477             <a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">
2478             subscribe to an external calendar</a>.-->
2479           </p>
2480           <ul id="calendarTree">
2481             <xsl:apply-templates select="/bedeworkadmin/subscriptions/subscribe/calendars/calendar" mode="subscribe"/>
2482           </ul>
2483         </td>
2484         <td class="subs">
2485           <xsl:choose>
2486             <xsl:when test="/bedeworkadmin/page='subscriptions'">
2487               <xsl:call-template name="subscriptionList"/>
2488             </xsl:when>
2489             <xsl:when test="/bedeworkadmin/creating='true'">
2490               <xsl:apply-templates select="subscription" mode="addSubscription"/>
2491             </xsl:when>
2492             <xsl:otherwise>
2493               <xsl:apply-templates select="subscription" mode="modSubscription"/>
2494             </xsl:otherwise>
2495           </xsl:choose>
2496         </td>
2497       </tr>
2498     </table>
2499   </xsl:template>
2500
2501   <xsl:template match="calendar" mode="subscribe">
2502     <xsl:variable name="calPath" select="encodedPath"/>
2503     <xsl:variable name="itemClass">
2504       <xsl:choose>
2505         <xsl:when test="calendarCollection='false'">folder</xsl:when>
2506         <xsl:otherwise>calendar</xsl:otherwise>
2507       </xsl:choose>
2508     </xsl:variable>
2509     <li class="{$itemClass}">
2510       <a href="{$subscriptions-initAdd}&amp;calPath={$calPath}">
2511         <xsl:value-of select="name"/>
2512       </a>
2513       <xsl:if test="calendar">
2514         <ul>
2515           <xsl:apply-templates select="calendar" mode="subscribe">
2516             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
2517         </ul>
2518       </xsl:if>
2519     </li>
2520   </xsl:template>
2521
2522   <xsl:template match="subscription" mode="addSubscription">
2523     <h2>Add New Subscription</h2>
2524     <p class="note">*the subsciption name must be unique</p>
2525     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
2526       <table class="eventFormTable">
2527         <tr>
2528           <th>Name*:</th>
2529           <td>
2530             <xsl:variable name="subName" select="name"/>
2531             <input type="text" value="{$subName}" name="subscription.name" size="60"/>
2532           </td>
2533         </tr>
2534         <xsl:if test="internal='false'">
2535           <tr>
2536             <th>Uri:</th>
2537             <td>
2538               <xsl:variable name="subUri" select="uri"/>
2539               <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
2540             </td>
2541           </tr>
2542         </xsl:if>
2543         <tr>
2544           <th>Display:</th>
2545           <td>
2546             <input type="radio" value="true" name="subscription.display"/> yes
2547             <input type="radio" value="false" name="subscription.display" checked="checked"/> no
2548           </td>
2549         </tr>
2550         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2551           <tr>
2552             <th>Unremovable:</th>
2553             <td>
2554               <input type="radio" value="true" name="unremoveable" size="60"/> true
2555               <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2556             </td>
2557           </tr>
2558         </xsl:if>
2559         <tr>
2560           <th>Style:</th>
2561           <td>
2562             <xsl:variable name="subStyle" select="style"/>
2563             <input type="text" value="{$subStyle}" name="subscription.style" size="50"/>
2564             <div style="width: 400px">
2565               Enter a css class to style events rendered in the list and grid
2566               views.  Leave blank to render with the default colors, or select from
2567               one of the system-wide choices:
2568               <select name="bwColors" onchange="document.subscribeForm['subscription.style'].value = this.value">
2569                 <option value="">default</option>
2570                 <xsl:for-each select="document('subColors.xml')/subscriptionColors/color">
2571                   <xsl:variable name="subColor" select="."/>
2572                   <option value="{$subColor}" class="{$subColor}">
2573                     <xsl:value-of select="@name"/>
2574                   </option>
2575                 </xsl:for-each>
2576               </select>
2577               <p class="note">Note: This class is added alongside the default class used
2578               in the list and grid views.  It does not replace it, so create your
2579               style appropriately.</p>
2580             </div>
2581           </td>
2582         </tr>
2583       </table>
2584       <table border="0" id="submitTable">
2585         <tr>
2586           <td>
2587             <input type="submit" name="addSubscription" value="Add Subscription"/>
2588             <input type="submit" name="cancelled" value="Cancel"/>
2589             <input type="reset" value="Clear"/>
2590           </td>
2591         </tr>
2592       </table>
2593     </form>
2594   </xsl:template>
2595
2596   <xsl:template match="subscription" mode="modSubscription">
2597     <h2>Modify Subscription</h2>
2598     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
2599       <table class="eventFormTable">
2600         <tr>
2601           <th>Name*:</th>
2602           <td>
2603             <xsl:value-of select="name"/>
2604             <xsl:variable name="subName" select="name"/>
2605             <input type="hidden" value="{$subName}" name="name"/>
2606           </td>
2607         </tr>
2608         <xsl:choose>
2609           <xsl:when test="internal='false'">
2610             <tr>
2611               <th>Uri:</th>
2612               <td>
2613                 <xsl:variable name="subUri" select="uri"/>
2614                 <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
2615               </td>
2616             </tr>
2617           </xsl:when>
2618           <xsl:otherwise>
2619             <tr>
2620               <th>Uri:</th>
2621               <td>
2622                 <xsl:value-of select="uri"/>
2623               </td>
2624             </tr>
2625           </xsl:otherwise>
2626         </xsl:choose>
2627         <tr>
2628           <th>Display:</th>
2629           <td>
2630             <xsl:choose>
2631               <xsl:when test="display='true'">
2632                 <input type="radio" value="true" name="subscription.display" checked="checked"/> yes
2633                 <input type="radio" value="false" name="subscription.display"/> no
2634               </xsl:when>
2635               <xsl:otherwise>
2636                 <input type="radio" value="true" name="subscription.display"/> yes
2637                 <input type="radio" value="false" name="subscription.display" checked="checked"/> no
2638               </xsl:otherwise>
2639             </xsl:choose>
2640           </td>
2641         </tr>
2642         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2643           <tr>
2644             <th>Unremovable:</th>
2645             <td>
2646               <xsl:choose>
2647                 <xsl:when test="unremoveable='true'">
2648                   <input type="radio" value="true" name="unremoveable" size="60" checked="checked"/> true
2649                   <input type="radio" value="false" name="unremoveable" size="60"/> false
2650                 </xsl:when>
2651                 <xsl:otherwise>
2652                   <input type="radio" value="true" name="unremoveable" size="60"/> true
2653                   <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2654                 </xsl:otherwise>
2655               </xsl:choose>
2656             </td>
2657           </tr>
2658         </xsl:if>
2659         <tr>
2660           <th>Style:</th>
2661           <td>
2662             <xsl:variable name="subStyle" select="style"/>
2663             <input type="text" value="{$subStyle}" name="subscription.style" size="60"/>
2664             <div style="width: 400px">
2665               Enter a css class to style events rendered in the list and grid
2666               views.  Leave blank to render with the default colors, or select from
2667               one of the system-wide choices:
2668               <select name="bwColors" onchange="document.subscribeForm['subscription.style'].value = this.value">
2669                 <option value="">default</option>
2670                 <xsl:for-each select="document('subColors.xml')/subscriptionColors/color">
2671                   <xsl:variable name="subColor" select="."/>
2672                   <option value="{$subColor}" class="{$subColor}">
2673                     <xsl:value-of select="@name"/>
2674                   </option>
2675                 </xsl:for-each>
2676               </select>
2677               <p class="note">Note: This class is added alongside the default class used
2678               in the list and grid views.  It does not replace it, so create your
2679               style appropriately.</p>
2680             </div>
2681           </td>
2682         </tr>
2683       </table>
2684       <table border="0" id="submitTable">
2685         <tr>
2686           <td>
2687             <input type="submit" name="updateSubscription" value="Update Subscription"/>
2688             <input type="submit" name="cancelled" value="Cancel"/>
2689             <input type="reset" value="Reset"/>
2690           </td>
2691           <td align="right">
2692             <input type="submit" name="delete" value="Delete Subscription"/>
2693           </td>
2694         </tr>
2695       </table>
2696     </form>
2697   </xsl:template>
2698
2699   <xsl:template name="subscriptionList">
2700     <h3>Current subscriptions</h3>
2701     <table id="commonListTable">
2702       <tr>
2703         <th>Name</th>
2704         <th>URI</th>
2705         <th>Style</th>
2706         <th>Display</th>
2707         <th>Unremovable</th>
2708         <th>External</th>
2709         <th>Deleted?</th>
2710       </tr>
2711       <xsl:for-each select="subscription">
2712         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2713         <tr>
2714           <td>
2715             <xsl:variable name="subname" select="name"/>
2716             <a href="{$subscriptions-fetchForUpdate}&amp;subname={$subname}">
2717               <xsl:value-of select="name"/>
2718             </a>
2719           </td>
2720           <td>
2721             <xsl:value-of select="uri"/>
2722           </td>
2723           <td>
2724             <xsl:value-of select="style"/>
2725           </td>
2726           <td class="center">
2727             <xsl:if test="display='true'">
2728               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2729             </xsl:if>
2730           </td>
2731           <td class="center">
2732             <xsl:if test="unremoveable='true'">
2733               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2734             </xsl:if>
2735           </td>
2736           <td class="center">
2737             <xsl:if test="internal='false'">
2738               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2739             </xsl:if>
2740           </td>
2741           <td class="center">
2742             <xsl:if test="calendarDeleted='true'">
2743               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2744             </xsl:if>
2745           </td>
2746         </tr>
2747       </xsl:for-each>
2748     </table>
2749     <!--<h4><a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">Subscribe to a remote calendar</a> (by URI)</h4>-->
2750   </xsl:template>
2751
2752   <!--+++++++++++++++ Views ++++++++++++++++++++-->
2753   <xsl:template match="views" mode="viewList">
2754
2755     <h3>Add a new view</h3>
2756     <form name="addView" action="{$view-addView}" method="post">
2757       <input type="text" name="name" size="60"/>
2758       <input type="submit" value="add view" name="addview"/>
2759     </form>
2760
2761     <h3>Views</h3>
2762     <table id="commonListTable">
2763       <tr>
2764         <th>Name</th>
2765         <th>Included subscriptions</th>
2766       </tr>
2767
2768       <xsl:for-each select="view">
2769         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2770         <tr>
2771           <td>
2772             <xsl:variable name="viewName" select="name"/>
2773             <a href="{$view-fetchForUpdate}&amp;name={$viewName}">
2774               <xsl:value-of select="name"/>
2775             </a>
2776           </td>
2777           <td>
2778             <xsl:for-each select="subscriptions/subscription">
2779               <xsl:value-of select="name"/>
2780               <xsl:if test="position()!=last()">, </xsl:if>
2781             </xsl:for-each>
2782           </td>
2783         </tr>
2784       </xsl:for-each>
2785     </table>
2786   </xsl:template>
2787
2788   <xsl:template name="modView">
2789     <h2>Update View</h2>
2790     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
2791     <h3 class="viewName">
2792       <xsl:value-of select="$viewName"/>
2793     </h3>
2794     <table id="viewsTable">
2795       <tr>
2796         <td class="subs">
2797           <h3>Available Subscriptions:</h3>
2798
2799           <table class="subscriptionsListSubs">
2800             <xsl:for-each select="/bedeworkadmin/subscriptions/subscription">
2801               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2802               <xsl:if test="not(/bedeworkadmin/views/view/subscriptions/subscription/name=name)">
2803                 <tr>
2804                   <td>
2805                     <xsl:value-of select="name"/>
2806                   </td>
2807                   <td class="arrows">
2808                     <xsl:variable name="subAddName" select="name"/>
2809                     <a href="{$view-update}&amp;name={$viewName}&amp;add={$subAddName}">
2810                       <img src="{$resourcesRoot}/resources/arrowRight.gif"
2811                           width="13" height="13" border="0"
2812                           alt="add subscription"/>
2813                     </a>
2814                   </td>
2815                 </tr>
2816               </xsl:if>
2817             </xsl:for-each>
2818           </table>
2819         </td>
2820         <td class="view">
2821           <h3>Active Subscriptions:</h3>
2822           <table class="subscriptionsListView">
2823             <xsl:for-each select="/bedeworkadmin/views/view/subscriptions/subscription">
2824               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2825               <tr>
2826                 <td class="arrows">
2827                   <xsl:variable name="subRemoveName" select="name"/>
2828                   <a href="{$view-update}&amp;name={$viewName}&amp;remove={$subRemoveName}">
2829                     <img src="{$resourcesRoot}/resources/arrowLeft.gif"
2830                         width="13" height="13" border="0"
2831                         alt="add subscription"/>
2832                   </a>
2833                 </td>
2834                 <td>
2835                   <xsl:value-of select="name"/>
2836                 </td>
2837               </tr>
2838             </xsl:for-each>
2839           </table>
2840         </td>
2841       </tr>
2842     </table>
2843     <table border="0" id="submitTable">
2844       <tr>
2845         <td>
2846           <input type="button" name="return" value="Return to Views Listing" onclick="javascript:location.replace('{$view-fetch}')"/>
2847         </td>
2848         <td align="right">
2849           <form name="deleteViewForm" action="{$view-fetchForUpdate}" method="post">
2850             <input type="submit" name="deleteButton" value="Delete View"/>
2851             <input type="hidden" name="name" value="{$viewName}"/>
2852             <input type="hidden" name="delete" value="yes"/>
2853           </form>
2854         </td>
2855       </tr>
2856     </table>
2857   </xsl:template>
2858
2859   <xsl:template name="deleteViewConfirm">
2860     <h2>Remove View?</h2>
2861
2862     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
2863     <p>The following view will be removed. Continue?</p>
2864
2865     <h3 class="viewName">
2866       <xsl:value-of select="$viewName"/>
2867     </h3>
2868     <form name="removeView" action="{$view-remove}">
2869       <input type="hidden" name="name" value="{$viewName}"/>
2870       <input type="submit" name="delete" value="Yes: Remove View"/>
2871       <input type="submit" name="cancelled" value="No: Cancel"/>
2872     </form>
2873
2874   </xsl:template>
2875
2876   <!--==== UPLOAD ====-->
2877   <xsl:template name="upload">
2878   <!-- The name "eventForm" is referenced by several javascript functions. Do not
2879     change it without modifying includes.js -->
2880     <form name="eventForm" method="post" action="{$event-upload}" id="standardForm" enctype="multipart/form-data">
2881       <h2>Upload iCAL File</h2>
2882       <table class="common" cellspacing="0">
2883         <tr>
2884           <td class="fieldname">
2885             Filename:
2886           </td>
2887           <td align="left">
2888             <input type="file" name="uploadFile" size="60" />
2889           </td>
2890         </tr>
2891         <tr>
2892           <td class="fieldname padMeTop">
2893             Into calendar:
2894           </td>
2895           <td align="left" class="padMeTop">
2896             <input type="hidden" name="newCalPath" value=""/>
2897             <span id="bwEventCalDisplay">
2898               <em>none selected</em>
2899             </span>
2900             <xsl:text> </xsl:text>
2901             [<a href="javascript:launchCalSelectWindow('{$event-selectCalForEvent}')" class="small">change</a>]
2902           </td>
2903         </tr>
2904         <!--<tr>
2905           <td class="fieldname padMeTop">
2906             Effects free/busy:
2907           </td>
2908           <td align="left" class="padMeTop">
2909             <input type="radio" value="" name="transparency" checked="checked"/> accept event's settings<br/>
2910             <input type="radio" value="OPAQUE" name="transparency"/> yes <span class="note">(opaque: event status affects your free/busy)</span><br/>
2911             <input type="radio" value="TRANSPARENT" name="transparency"/> no <span class="note">(transparent: event status does not affect your free/busy)</span><br/>
2912           </td>
2913         </tr>-->
2914         <tr>
2915           <td class="fieldname padMeTop">
2916             Status:
2917           </td>
2918           <td align="left" class="padMeTop">
2919             <input type="radio" value="" name="status" checked="checked"/> accept event's status<br/>
2920             <input type="radio" value="CONFIRMED" name="status"/> confirmed<br/>
2921             <input type="radio" value="TENTATIVE" name="status"/> tentative<br/>
2922             <input type="radio" value="CANCELLED" name="status"/> cancelled<br/>
2923           </td>
2924         </tr>
2925       </table>
2926       <table border="0" id="submitTable">
2927         <tr>
2928           <td>
2929             <input name="submit" type="submit" value="Continue"/>
2930             <input name="cancelled" type="submit" value="Cancel"/>
2931           </td>
2932         </tr>
2933       </table>
2934     </form>
2935   </xsl:template>
2936
2937   <!--+++++++++++++++ System Parameters (preferences) ++++++++++++++++++++-->
2938   <xsl:template name="modSyspars">
2939     <h2>Modify System Parameters</h2>
2940     <p>
2941       Do not change unless you know what you're doing.<br/>
2942       Changes to these parameters have wide impact on the system.
2943     </p>
2944     <form name="systemParamsForm" action="{$system-update}" method="post">
2945       <table class="eventFormTable">
2946         <tr>
2947           <th>Default timezone:</th>
2948           <td>
2949             <xsl:variable name="tzid" select="/bedeworkadmin/system/tzid"/>
2950             <input value="{$tzid}" name="tzid" size="20"/>
2951           </td>
2952           <td>
2953             Default timezone id for date/time values. This should normally be your local timezone
2954           </td>
2955         </tr>
2956         <tr>
2957           <th>Default user view name:</th>
2958           <td>
2959             <xsl:variable name="defaultViewName" select="/bedeworkadmin/system/defaultUserViewName"/>
2960             <input value="{$defaultViewName}" name="defaultUserViewName" size="20"/>
2961           </td>
2962           <td>
2963             Name used for default view created when a new user is added
2964           </td>
2965         </tr>
2966         <tr>
2967           <th>Http connections per user:</th>
2968           <td>
2969             <xsl:variable name="httpPerUser" select="/bedeworkadmin/system/httpConnectionsPerUser"/>
2970             <input value="{$httpPerUser}" name="httpConnectionsPerUser" size="20"/>
2971           </td>
2972           <td></td>
2973         </tr>
2974         <tr>
2975           <th>Http connections per host:</th>
2976           <td>
2977             <xsl:variable name="httpPerHost" select="/bedeworkadmin/system/httpConnectionsPerHost"/>
2978             <input value="{$httpPerHost}" name="httpConnectionsPerHost" size="20"/>
2979           </td>
2980           <td></td>
2981         </tr>
2982         <tr>
2983           <th>Total http connections:</th>
2984           <td>
2985             <xsl:variable name="httpTotal" select="/bedeworkadmin/system/httpConnections"/>
2986             <input value="{$httpTotal}" name="httpConnections" size="20"/>
2987           </td>
2988           <td></td>
2989         </tr>
2990         <tr>
2991           <th>Maximum length of public event description:</th>
2992           <td>
2993             <xsl:variable name="maxPublicDescriptionLength" select="/bedeworkadmin/system/maxPublicDescriptionLength"/>
2994             <input value="{$maxPublicDescriptionLength}" name="maxPublicDescriptionLength" size="20"/>
2995           </td>
2996           <td></td>
2997         </tr>
2998         <tr>
2999           <th>Maximum length of user event description:</th>
3000           <td>
3001             <xsl:variable name="maxUserDescriptionLength" select="/bedeworkadmin/system/maxUserDescriptionLength"/>
3002             <input value="{$maxUserDescriptionLength}" name="maxUserDescriptionLength" size="20"/>
3003           </td>
3004           <td></td>
3005         </tr>
3006         <tr>
3007           <th>Maximum size of a user entity:</th>
3008           <td>
3009             <xsl:variable name="maxUserEntitySize" select="/bedeworkadmin/system/maxUserEntitySize"/>
3010             <input value="{$maxUserEntitySize}" name="maxUserEntitySize" size="20"/>
3011           </td>
3012           <td></td>
3013         </tr>
3014         <tr>
3015           <th>Default user quota:</th>
3016           <td>
3017             <xsl:variable name="defaultUserQuota" select="/bedeworkadmin/system/defaultUserQuota"/>
3018             <input value="{$defaultUserQuota}" name="defaultUserQuota" size="20"/>
3019           </td>
3020           <td></td>
3021         </tr>
3022       </table>
3023       <table border="0" id="submitTable">
3024         <tr>
3025           <td>
3026             <input type="submit" name="updateSystemParams" value="Update"/>
3027             <input type="submit" name="cancelled" value="Cancel"/>
3028             <input type="reset" value="Reset"/>
3029           </td>
3030         </tr>
3031       </table>
3032     </form>
3033   </xsl:template>
3034
3035   <!--+++++++++++++++ Calendar Suites (calsuite) ++++++++++++++++++++-->
3036   <xsl:template match="calSuites" mode="calSuiteList">
3037     <h2>Manage Calendar Suites</h2>
3038
3039     <h4>Calendar suites:</h4>
3040     <p>
3041       <input type="button" name="return" value="Add calendar suite" onclick="javascript:location.replace('{$calsuite-showAddForm}')"/>
3042     </p>
3043
3044     <ul>
3045       <xsl:for-each select="calSuite">
3046         <li>
3047           <xsl:variable name="name" select="name"/>
3048           <a href="{$calsuite-fetchForUpdate}&amp;name={$name}">
3049             <xsl:value-of select="name"/>
3050           </a>
3051         </li>
3052       </xsl:for-each>
3053     </ul>
3054
3055   </xsl:template>
3056
3057   <xsl:template name="addCalSuite">
3058     <h2>Add Calendar Suite</h2>
3059     <form name="calSuiteForm" action="{$calsuite-add}" method="post">
3060       <table class="eventFormTable">
3061         <tr>
3062           <th>Name:</th>
3063           <td>
3064             <input name="name" size="20"/>
3065           </td>
3066           <td>
3067             Name of your calendar suite
3068           </td>
3069         </tr>
3070         <tr>
3071           <th>Group:</th>
3072           <td>
3073             <input name="groupName" size="20"/>
3074           </td>
3075           <td>
3076             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3077           </td>
3078         </tr>
3079         <tr>
3080           <th>Root calendar:</th>
3081           <td>
3082             <input name="calPath" size="20"/>
3083           </td>
3084           <td>
3085             Path of root calendar (not required if suite only consists of subscriptions and views)
3086           </td>
3087         </tr>
3088       </table>
3089       <table border="0" id="submitTable">
3090         <tr>
3091           <td>
3092             <input type="submit" name="updateCalSuite" value="Add"/>
3093             <input type="submit" name="cancelled" value="Cancel"/>
3094             <input type="reset" value="Reset"/>
3095           </td>
3096         </tr>
3097       </table>
3098     </form>
3099   </xsl:template>
3100
3101   <xsl:template match="calSuite" name="modCalSuite">
3102     <h2>Modify Calendar Suite</h2>
3103     <xsl:variable name="calSuiteName" select="name"/>
3104     <form name="calSuiteForm" action="{$calsuite-update}" method="post">
3105       <table class="eventFormTable">
3106         <tr>
3107           <th>Name:</th>
3108           <td>
3109             <input name="name" value="{$calSuiteName}" size="20"/>
3110           </td>
3111           <td>
3112             Name of your calendar suite
3113           </td>
3114         </tr>
3115         <tr>
3116           <th>Group:</th>
3117           <td>
3118             <xsl:variable name="group" select="group"/>
3119             <input name="groupName" value="{$group}" size="20"/>
3120           </td>
3121           <td>
3122             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3123           </td>
3124         </tr>
3125         <tr>
3126           <th>Root calendar:</th>
3127           <td>
3128             <xsl:variable name="calPath" select="calPath"/>
3129             <input name="calPath" value="{$calPath}" size="20"/>
3130           </td>
3131           <td>
3132             Path of root calendar (not required if suite only consists of subscriptions and views)
3133           </td>
3134         </tr>
3135       </table>
3136       <table border="0" id="submitTable">
3137         <tr>
3138           <td>
3139             <input type="submit" name="updateCalSuite" value="Update"/>
3140             <input type="submit" name="cancelled" value="Cancel"/>
3141             <input type="reset" value="Reset"/>
3142           </td>
3143         </tr>
3144       </table>
3145     </form>
3146     <div id="sharingBox">
3147       <h3>Manage suite administrators</h3>
3148       <table class="common">
3149         <tr>
3150           <th class="commonHeader" colspan="2">Current access:</th>
3151         </tr>
3152
3153         <xsl:for-each select="acl/ace">
3154           <tr>
3155             <th class="thin">
3156               <xsl:choose>
3157                 <xsl:when test="invert">
3158                   <em>Deny to
3159                   <xsl:choose>
3160                     <xsl:when test="invert/principal/href">
3161                       <xsl:value-of select="invert/principal/href"/>
3162                       </xsl:when>
3163                       <xsl:when test="invert/principal/property">
3164                         <xsl:value-of select="name(invert/principal/property/*)"/>
3165                       </xsl:when>
3166                       <xsl:otherwise>
3167                         <xsl:value-of select="name(invert/principal/*)"/>
3168                       </xsl:otherwise>
3169                     </xsl:choose>
3170                   </em>
3171                 </xsl:when>
3172                 <xsl:otherwise>
3173                   <xsl:choose>
3174                     <xsl:when test="principal/href">
3175                       <xsl:value-of select="principal/href"/>
3176                     </xsl:when>
3177                     <xsl:when test="principal/property">
3178                       <xsl:value-of select="name(principal/property/*)"/>
3179                     </xsl:when>
3180                     <xsl:otherwise>
3181                       <xsl:value-of select="name(principal/*)"/>
3182                     </xsl:otherwise>
3183                   </xsl:choose>
3184                 </xsl:otherwise>
3185               </xsl:choose>
3186             </th>
3187             <td>
3188               <xsl:for-each select="grant/node()">
3189                 <xsl:value-of select="name(.)"/>&#160;&#160;
3190               </xsl:for-each>
3191             </td>
3192           </tr>
3193         </xsl:for-each>
3194       </table>
3195       <form name="calsuiteShareForm" action="{$calsuite-setAccess}" id="shareForm" method="post">
3196         <input type="hidden" name="calSuiteName" value="{$calSuiteName}"/>
3197         <input type="hidden" name="how" value="RW" />
3198         <p>
3199           Add administrator:<br/>
3200           <input type="text" name="who" size="20"/>
3201           <input type="radio" value="user" name="whoType" checked="checked"/> user
3202           <input type="radio" value="group" name="whoType"/> group
3203         </p>
3204         <input type="submit" name="submit" value="Submit"/>
3205       </form>
3206     </div>
3207   </xsl:template>
3208
3209   <xsl:template name="calSuitePrefs">
3210     <h2>Edit Calendar Suite Preferences</h2>
3211     <form name="userPrefsForm" method="post" action="{$calsuite-updatePrefs}">
3212       <table id="eventFormTable">
3213         <tr>
3214           <td class="fieldName">
3215             Calendar Suite:
3216           </td>
3217           <td>
3218             <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
3219           </td>
3220         </tr>
3221         <tr>
3222           <td class="fieldName">
3223             Preferred view:
3224           </td>
3225           <td>
3226             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
3227             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
3228           </td>
3229         </tr>
3230         <tr>
3231           <td class="fieldName">
3232             Preferred view period:
3233           </td>
3234           <td>
3235             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
3236             <select name="viewPeriod">
3237               <!-- picking the selected item could be done with javascript. for
3238                    now, this will do.  -->
3239               <xsl:choose>
3240                 <xsl:when test="$preferredViewPeriod = 'dayView'">
3241                   <option value="dayView" selected="selected">day</option>
3242                 </xsl:when>
3243                 <xsl:otherwise>
3244                   <option value="dayView">day</option>
3245                 </xsl:otherwise>
3246               </xsl:choose>
3247               <xsl:choose>
3248                 <xsl:when test="$preferredViewPeriod = 'todayView'">
3249                   <option value="todayView" selected="selected">today</option>
3250                 </xsl:when>
3251                 <xsl:otherwise>
3252                   <option value="todayView">today</option>
3253                 </xsl:otherwise>
3254               </xsl:choose>
3255               <xsl:choose>
3256                 <xsl:when test="$preferredViewPeriod = 'weekView'">
3257                   <option value="weekView" selected="selected">week</option>
3258                 </xsl:when>
3259                 <xsl:otherwise>
3260                   <option value="weekView">week</option>
3261                 </xsl:otherwise>
3262               </xsl:choose>
3263               <xsl:choose>
3264                 <xsl:when test="$preferredViewPeriod = 'monthView'">
3265                   <option value="monthView" selected="selected">month</option>
3266                 </xsl:when>
3267                 <xsl:otherwise>
3268                   <option value="monthView">month</option>
3269                 </xsl:otherwise>
3270               </xsl:choose>
3271               <xsl:choose>
3272                 <xsl:when test="$preferredViewPeriod = 'yearView'">
3273                   <option value="yearView" selected="selected">year</option>
3274                 </xsl:when>
3275                 <xsl:otherwise>
3276                   <option value="yearView">year</option>
3277                 </xsl:otherwise>
3278               </xsl:choose>
3279             </select>
3280           </td>
3281         </tr>
3282         <tr>
3283           <td class="fieldName">
3284             Skin name:
3285           </td>
3286           <td>
3287             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
3288             <input type="text" name="skin" value="{$skinName}" size="40"/>
3289           </td>
3290         </tr>
3291         <tr>
3292           <td class="fieldName">
3293             Skin style:
3294           </td>
3295           <td>
3296             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
3297             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
3298           </td>
3299         </tr>
3300       </table>
3301       <br />
3302
3303       <input type="submit" name="modPrefs" value="Update"/>
3304       <input type="reset" value="Reset"/>
3305       <input type="submit" name="cancelled" value="Cancel"/>
3306     </form>
3307   </xsl:template>
3308
3309   <!--+++++++++++++++ Timezones ++++++++++++++++++++-->
3310   <xsl:template name="uploadTimezones">
3311     <h2>Upload Timezones</h2>
3312     <form name="peForm" method="post" action="{$timezones-upload}" enctype="multipart/form-data">
3313       <input type="file" name="uploadFile" size="40" value=""/>
3314       <input type="submit" name="doUpload" value="Upload Timezones"/>
3315       <input type="submit" name="cancelled" value="Cancel"/>
3316     </form>
3317   </xsl:template>
3318
3319   <!--+++++++++++++++ Authuser ++++++++++++++++++++-->
3320   <xsl:template name="authUserList">
3321     <h2>Modify Administrators</h2>
3322
3323     <div id="authUserInputForms">
3324       <form name="getUserRolesForm" action="{$authuser-fetchForUpdate}" method="post">
3325         Edit admin roles by userid: <input type="text" name="editAuthUserId" size="20"/>
3326         <input type="submit" value="go" name="submit"/>
3327       </form>
3328     </div>
3329
3330     <table id="commonListTable">
3331       <tr>
3332         <th>UserId</th>
3333         <th>Roles</th>
3334         <th></th>
3335       </tr>
3336
3337       <xsl:for-each select="bedeworkadmin/authUsers/authUser">
3338         <!--<xsl:sort select="account" order="ascending" case-order="upper-first"/>-->
3339         <tr>
3340           <td>
3341             <xsl:value-of select="account"/>
3342           </td>
3343           <td>
3344             <xsl:if test="publicEventUser='true'">
3345               publicEvent; <xsl:text> </xsl:text>
3346             </xsl:if>
3347             <xsl:if test="superUser='true'">
3348               superUser; <xsl:text> </xsl:text>
3349             </xsl:if>
3350             <xsl:if test="alertUser='true'">
3351               alert; <xsl:text> </xsl:text>
3352             </xsl:if>
3353           </td>
3354           <td>
3355             <xsl:variable name="account" select="account"/>
3356             <a href="{$authuser-fetchForUpdate}&amp;editAuthUserId={$account}">
3357               edit
3358             </a>
3359           </td>
3360         </tr>
3361       </xsl:for-each>
3362     </table>
3363   </xsl:template>
3364
3365   <xsl:template name="modAuthUser">
3366     <h2>Update Administrator</h2>
3367     <xsl:variable name="modAuthUserAction" select="/bedeworkadmin/formElements/form/@action"/>
3368     <form action="{$modAuthUserAction}" method="post">
3369       <table id="eventFormTable">
3370         <tr>
3371           <td class="fieldName">
3372             Account:
3373           </td>
3374           <td>
3375             <xsl:value-of select="/bedeworkadmin/formElements/form/account"/>
3376           </td>
3377         </tr>
3378         <tr>
3379           <td class="fieldName">
3380             Alerts:
3381           </td>
3382           <td>
3383             <xsl:copy-of select="/bedeworkadmin/formElements/form/alerts/*"/>
3384           </td>
3385         </tr>
3386         <tr>
3387           <td class="fieldName">
3388             Public Events:
3389           </td>
3390           <td>
3391             <xsl:copy-of select="/bedeworkadmin/formElements/form/publicEvents/*"/>
3392           </td>
3393         </tr>
3394         <tr>
3395           <td class="fieldName">
3396             Super User:
3397           </td>
3398           <td>
3399             <xsl:copy-of select="/bedeworkadmin/formElements/form/superUser/*"/>
3400           </td>
3401         </tr>
3402         <!--<tr>
3403           <td class="optional">
3404             Email:
3405           </td>
3406           <td>
3407             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
3408             <span class="fieldInfo"></span>
3409           </td>
3410         </tr>
3411         <tr>
3412           <td class="optional">
3413             Phone:
3414           </td>
3415           <td>
3416             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
3417             <span class="fieldInfo"></span>
3418           </td>
3419         </tr>
3420         <tr>
3421           <td class="optional">
3422             Department:
3423           </td>
3424           <td>
3425             <xsl:copy-of select="/bedeworkadmin/formElements/form/dept/*"/>
3426             <span class="fieldInfo"></span>
3427           </td>
3428         </tr>
3429         <tr>
3430           <td class="optional">
3431             Last name:
3432           </td>
3433           <td>
3434             <xsl:copy-of select="/bedeworkadmin/formElements/form/lastName/*"/>
3435             <span class="fieldInfo"></span>
3436           </td>
3437         </tr>
3438         <tr>
3439           <td class="optional">
3440             First name:
3441           </td>
3442           <td>
3443             <xsl:copy-of select="/bedeworkadmin/formElements/form/firstName/*"/>
3444             <span class="fieldInfo"></span>
3445           </td>
3446         </tr>-->
3447       </table>
3448       <br />
3449
3450       <input type="submit" name="modAuthUser" value="Update"/>
3451       <input type="reset" value="Reset"/>
3452       <input type="submit" name="cancelled" value="Cancel"/>
3453     </form>
3454   </xsl:template>
3455
3456   <!--+++++++++++++++ User Prefs ++++++++++++++++++++-->
3457   <xsl:template name="modPrefs">
3458     <h2>Edit User Preferences</h2>
3459     <form name="userPrefsForm" method="post" action="{$prefs-update}">
3460       <table id="eventFormTable">
3461         <tr>
3462           <td class="fieldName">
3463             User:
3464           </td>
3465           <td>
3466             <xsl:value-of select="/bedeworkadmin/prefs/user"/>
3467             <xsl:variable name="user" select="/bedeworkadmin/prefs/user"/>
3468             <input type="hidden" name="user" value="{$user}"/>
3469           </td>
3470         </tr>
3471         <tr>
3472           <td class="fieldName">
3473             Preferred view:
3474           </td>
3475           <td>
3476             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
3477             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
3478           </td>
3479         </tr>
3480         <tr>
3481           <td class="fieldName">
3482             Preferred view period:
3483           </td>
3484           <td>
3485             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
3486             <select name="viewPeriod">
3487               <!-- picking the selected item could be done with javascript. for
3488                    now, this will do.  -->
3489               <xsl:choose>
3490                 <xsl:when test="$preferredViewPeriod = 'dayView'">
3491                   <option value="dayView" selected="selected">day</option>
3492                 </xsl:when>
3493                 <xsl:otherwise>
3494                   <option value="dayView">day</option>
3495                 </xsl:otherwise>
3496               </xsl:choose>
3497               <xsl:choose>
3498                 <xsl:when test="$preferredViewPeriod = 'todayView'">
3499                   <option value="todayView" selected="selected">today</option>
3500                 </xsl:when>
3501                 <xsl:otherwise>
3502                   <option value="todayView">today</option>
3503                 </xsl:otherwise>
3504               </xsl:choose>
3505               <xsl:choose>
3506                 <xsl:when test="$preferredViewPeriod = 'weekView'">
3507                   <option value="weekView" selected="selected">week</option>
3508                 </xsl:when>
3509                 <xsl:otherwise>
3510                   <option value="weekView">week</option>
3511                 </xsl:otherwise>
3512               </xsl:choose>
3513               <xsl:choose>
3514                 <xsl:when test="$preferredViewPeriod = 'monthView'">
3515                   <option value="monthView" selected="selected">month</option>
3516                 </xsl:when>
3517                 <xsl:otherwise>
3518                   <option value="monthView">month</option>
3519                 </xsl:otherwise>
3520               </xsl:choose>
3521               <xsl:choose>
3522                 <xsl:when test="$preferredViewPeriod = 'yearView'">
3523                   <option value="yearView" selected="selected">year</option>
3524                 </xsl:when>
3525                 <xsl:otherwise>
3526                   <option value="yearView">year</option>
3527                 </xsl:otherwise>
3528               </xsl:choose>
3529             </select>
3530           </td>
3531         </tr>
3532         <tr>
3533           <td class="fieldName">
3534             Skin name:
3535           </td>
3536           <td>
3537             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
3538             <input type="text" name="skin" value="{$skinName}" size="40"/>
3539           </td>
3540         </tr>
3541         <tr>
3542           <td class="fieldName">
3543             Skin style:
3544           </td>
3545           <td>
3546             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
3547             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
3548           </td>
3549         </tr>
3550       </table>
3551       <br />
3552
3553       <input type="submit" name="modPrefs" value="Update"/>
3554       <input type="reset" value="Reset"/>
3555       <input type="submit" name="cancelled" value="Cancel"/>
3556     </form>
3557   </xsl:template>
3558
3559   <!--+++++++++++++++ Admin Groups ++++++++++++++++++++-->
3560   <xsl:template name="listAdminGroups">
3561     <h2>Modify Groups</h2>
3562     <form name="adminGroupMembersForm" method="post" action="{$admingroup-initUpdate}">
3563       <xsl:choose>
3564         <xsl:when test="/bedeworkadmin/groups/showMembers='true'">
3565           <input type="radio" name="showAgMembers" value="false" onclick="document.adminGroupMembersForm.submit();"/>
3566           Hide members
3567           <input type="radio" name="showAgMembers" value="true" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
3568           Show members
3569         </xsl:when>
3570         <xsl:otherwise>
3571           <input type="radio" name="showAgMembers" value="false" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
3572           Hide members
3573           <input type="radio" name="showAgMembers" value="true" onclick="document.adminGroupMembersForm.submit();"/>
3574           Show members
3575         </xsl:otherwise>
3576       </xsl:choose>
3577     </form>
3578
3579     <p>Click on the group name to modify the group owner or description.<br/>
3580     Click "add/remove members" to modify group membership.</p>
3581     <p>
3582       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
3583     </p>
3584     <table id="commonListTable">
3585       <tr>
3586         <th>Name</th>
3587         <th>Description</th>
3588         <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
3589           <th>Members</th>
3590         </xsl:if>
3591         <th></th>
3592       </tr>
3593       <xsl:for-each select="/bedeworkadmin/groups/group">
3594         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3595         <xsl:variable name="groupName" select="name"/>
3596         <tr>
3597           <td>
3598             <a href="{$admingroup-fetchForUpdate}&amp;adminGroupName={$groupName}">
3599               <xsl:value-of select="name"/>
3600             </a>
3601           </td>
3602           <td>
3603             <xsl:value-of select="desc"/>
3604           </td>
3605           <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
3606             <td>
3607               <xsl:for-each select="members/member/account">
3608                 <xsl:value-of select="."/>&#160;
3609               </xsl:for-each>
3610             </td>
3611           </xsl:if>
3612           <td>
3613             <a href="{$admingroup-fetchForUpdateMembers}&amp;adminGroupName={$groupName}">Add/Remove members</a>
3614           </td>
3615         </tr>
3616       </xsl:for-each>
3617     </table>
3618     <p>
3619       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
3620     </p>
3621   </xsl:template>
3622
3623   <xsl:template match="groups" mode="chooseGroup">
3624     <h2>Choose Your Administrative Group</h2>
3625
3626     <table id="commonListTable">
3627
3628       <tr>
3629         <th>Name</th>
3630         <th>Description</th>
3631       </tr>
3632
3633       <xsl:for-each select="group">
3634         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3635         <tr>
3636           <td>
3637             <xsl:variable name="admGroupName" select="name"/>
3638             <a href="{$setup}&amp;adminGroupName={$admGroupName}">
3639               <xsl:copy-of select="name"/>
3640             </a>
3641           </td>
3642           <td>
3643             <xsl:value-of select="desc"/>
3644           </td>
3645         </tr>
3646       </xsl:for-each>
3647     </table>
3648   </xsl:template>
3649
3650   <xsl:template name="modAdminGroup">
3651     <xsl:choose>
3652       <xsl:when test="/bedeworkadmin/creating = 'true'">
3653         <h2>Add Group</h2>
3654       </xsl:when>
3655       <xsl:otherwise>
3656         <h2>Modify Group</h2>
3657       </xsl:otherwise>
3658     </xsl:choose>
3659     <form name="peForm" method="post" action="{$admingroup-update}">
3660       <table id="adminGroupFormTable">
3661         <tr>
3662           <td class="fieldName">
3663             Name:
3664           </td>
3665           <td>
3666             <xsl:choose>
3667               <xsl:when test="/bedeworkadmin/creating = 'true'">
3668                 <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
3669               </xsl:when>
3670               <xsl:otherwise>
3671                 <xsl:value-of select="/bedeworkadmin/formElements/form/name"/>
3672               </xsl:otherwise>
3673             </xsl:choose>
3674           </td>
3675         </tr>
3676         <tr>
3677           <td class="fieldName">
3678             Description:
3679           </td>
3680           <td>
3681             <xsl:copy-of select="/bedeworkadmin/formElements/form/desc/*"/>
3682           </td>
3683         </tr>
3684         <tr>
3685           <td class="fieldName">
3686             Group owner:
3687           </td>
3688           <td>
3689             <xsl:copy-of select="/bedeworkadmin/formElements/form/groupOwner/*"/>
3690           </td>
3691         </tr>
3692         <tr>
3693           <td class="fieldName">
3694             Events owner:
3695           </td>
3696           <td>
3697             <xsl:copy-of select="/bedeworkadmin/formElements/form/eventsOwner/*"/>
3698           </td>
3699         </tr>
3700       </table>
3701       <table border="0" id="submitTable">
3702         <tr>
3703           <td>
3704             <xsl:choose>
3705               <xsl:when test="/bedeworkadmin/creating = 'true'">
3706                 <input type="submit" name="updateAdminGroup" value="Add Admin Group"/>
3707                 <input type="submit" name="cancelled" value="Cancel"/>
3708                 <input type="reset" value="Clear"/>
3709               </xsl:when>
3710               <xsl:otherwise>
3711                 <input type="submit" name="updateAdminGroup" value="Update Admin Group"/>
3712                 <input type="submit" name="cancelled" value="Cancel"/>
3713                 <input type="reset" value="Reset"/>
3714               </xsl:otherwise>
3715             </xsl:choose>
3716           </td>
3717           <td align="right">
3718             <input type="submit" name="delete" value="Delete"/>
3719           </td>
3720         </tr>
3721       </table>
3722     </form>
3723   </xsl:template>
3724
3725   <xsl:template name="modAdminGroupMembers">
3726     <h2>Update Group Membership</h2>
3727     <p>Enter a userid (for user or group) and click "add" to update group membership.
3728     Click the trash icon to remove a user from the group.</p>
3729
3730     <form name="adminGroupMembersForm" method="post" action="{$admingroup-updateMembers}">
3731       <p>Add member:
3732         <input type="text" name="updGroupMember" size="15"/>
3733         <input type="radio" value="user" name="kind" checked="checked"/>user
3734         <input type="radio" value="group" name="kind"/>group
3735         <input type="submit" name="addGroupMember" value="Add"/>
3736       </p>
3737     </form>
3738     <p>
3739       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initUpdate}')" value="Return to Admin Group listing"/>
3740     </p>
3741
3742     <table id="adminGroupFormTable">
3743       <tr>
3744         <td class="fieldName">
3745           Name:
3746         </td>
3747         <td>
3748           <xsl:value-of select="/bedeworkadmin/adminGroup/name"/>
3749         </td>
3750       </tr>
3751       <tr>
3752         <td class="fieldName">
3753           Members:
3754         </td>
3755         <td>
3756           <table id="memberAccountList">
3757             <xsl:for-each select="/bedeworkadmin/adminGroup/members/member">
3758               <xsl:choose>
3759                 <xsl:when test="kind='0'"><!-- kind = user -->
3760                   <tr>
3761                     <td>
3762                       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
3763                     </td>
3764                     <td>
3765                       <xsl:value-of select="account"/>
3766                     </td>
3767                     <td>
3768                       <xsl:variable name="acct" select="account"/>
3769                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=user" title="remove">
3770                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
3771                       </a>
3772                     </td>
3773                   </tr>
3774                 </xsl:when>
3775                 <xsl:otherwise><!-- kind = group -->
3776                   <tr>
3777                     <td>
3778                       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3779                     </td>
3780                     <td>
3781                       <strong>
3782                         <xsl:value-of select="account"/>
3783                       </strong>
3784                     </td>
3785                     <td>
3786                       <xsl:variable name="acct" select="account"/>
3787                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=group" title="remove">
3788                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
3789                       </a>
3790                     </td>
3791                   </tr>
3792                 </xsl:otherwise>
3793               </xsl:choose>
3794             </xsl:for-each>
3795           </table>
3796         </td>
3797       </tr>
3798     </table>
3799     <p>
3800       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/> user,
3801       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3802       <xsl:text> </xsl:text>
3803       <strong>group</strong>
3804     </p>
3805   </xsl:template>
3806
3807   <xsl:template name="deleteAdminGroupConfirm">
3808     <h2>Delete Admin Group?</h2>
3809     <p>The following group will be deleted. Continue?</p>
3810     <p>
3811       <strong>
3812         <xsl:value-of select="/bedeworkadmin/groups/group/name"/>
3813       </strong>:
3814       <xsl:value-of select="/bedeworkadmin/groups/group/desc"/>
3815     </p>
3816     <form name="adminGroupDelete" method="post" action="{$admingroup-delete}">
3817       <input type="submit" name="removeAdminGroupOK" value="Yes: Delete!"/>
3818       <input type="submit" name="cancelled" value="No: Cancel"/>
3819     </form>
3820   </xsl:template>
3821
3822   <!--+++++++++++++++ System Stats ++++++++++++++++++++-->
3823
3824   <xsl:template match="sysStats" mode="showSysStats">
3825     <h2>System Statistics</h2>
3826
3827     <p>
3828       Stats collection:
3829     </p>
3830     <ul>
3831       <li>
3832         <a href="{$stats-update}&amp;enable=yes">enable</a> |
3833         <a href="{$stats-update}&amp;disable=yes">disable</a>
3834       </li>
3835       <li>
3836         <a href="{$stats-update}&amp;fetch=yes">fetch statistics</a>
3837       </li>
3838       <li>
3839         <a href="{$stats-update}&amp;dump=yes">dump stats to log</a>
3840       </li>
3841     </ul>
3842     <table id="statsTable" cellpadding="0">
3843       <xsl:for-each select="*">
3844         <xsl:choose>
3845           <xsl:when test="name(.) = 'header'">
3846             <tr>
3847               <th colspan="2">
3848                 <xsl:value-of select="."/>
3849               </th>
3850             </tr>
3851           </xsl:when>
3852           <xsl:otherwise>
3853             <tr>
3854               <td class="label">
3855                 <xsl:value-of select="label"/>
3856               </td>
3857               <td class="value">
3858                 <xsl:value-of select="value"/>
3859               </td>
3860             </tr>
3861           </xsl:otherwise>
3862         </xsl:choose>
3863       </xsl:for-each>
3864     </table>
3865   </xsl:template>
3866
3867   <!--==== SEARCH RESULT ====-->
3868   <xsl:template name="searchResult">
3869     <h2 class="bwStatusConfirmed">
3870       <div id="searchFilter">
3871         <form name="searchForm" method="post" action="{$search}">
3872           Search:
3873           <input type="text" name="query" size="15">
3874             <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/searchResults/query"/></xsl:attribute>
3875           </input>
3876           <input type="submit" name="submit" value="go"/>
3877           Limit:
3878           <xsl:choose>
3879             <xsl:when test="/bedeworkadmin/searchResults/searchLimits = 'beforeToday'">
3880               <input type="radio" name="searchLimits" value="fromToday"/>today forward
3881               <input type="radio" name="searchLimits" value="beforeToday" checked="checked"/>past dates
3882               <input type="radio" name="searchLimits" value="none"/>all dates
3883             </xsl:when>
3884             <xsl:when test="/bedeworkadmin/searchResults/searchLimits = 'none'">
3885               <input type="radio" name="searchLimits" value="fromToday"/>today forward
3886               <input type="radio" name="searchLimits" value="beforeToday"/>past dates
3887               <input type="radio" name="searchLimits" value="none" checked="checked"/>all dates
3888             </xsl:when>
3889             <xsl:otherwise>
3890               <input type="radio" name="searchLimits" value="fromToday" checked="checked"/>today forward
3891               <input type="radio" name="searchLimits" value="beforeToday"/>past dates
3892               <input type="radio" name="searchLimits" value="none"/>all dates
3893             </xsl:otherwise>
3894           </xsl:choose>
3895         </form>
3896       </div>
3897       Search Result
3898     </h2>
3899     <table id="searchTable" cellpadding="0" cellspacing="0">
3900       <tr>
3901         <th colspan="5">
3902           <xsl:if test="/bedeworkadmin/searchResults/numPages &gt; 1">
3903             <xsl:variable name="curPage" select="/bedeworkadmin/searchResults/curPage"/>
3904             <div id="searchPageForm">
3905               page:
3906               <xsl:if test="/bedeworkadmin/searchResults/curPage != 1">
3907                 <xsl:variable name="prevPage" select="number($curPage) - 1"/>
3908                 &lt;<a href="{$search-next}&amp;pageNum={$prevPage}">prev</a>
3909               </xsl:if>
3910               <xsl:text> </xsl:text>
3911
3912               <xsl:call-template name="searchResultPageNav">
3913                 <xsl:with-param name="page">
3914                   <xsl:choose>
3915                     <xsl:when test="number($curPage) - 10 &lt; 1">1</xsl:when>
3916                     <xsl:otherwise><xsl:value-of select="number($curPage) - 6"/></xsl:otherwise>
3917                   </xsl:choose>
3918                 </xsl:with-param>
3919               </xsl:call-template>
3920
3921               <xsl:text> </xsl:text>
3922               <xsl:choose>
3923                 <xsl:when test="$curPage != /bedeworkadmin/searchResults/numPages">
3924                   <xsl:variable name="nextPage" select="number($curPage) + 1"/>
3925                   <a href="{$search-next}&amp;pageNum={$nextPage}">next</a>&gt;
3926                 </xsl:when>
3927                 <xsl:otherwise>
3928                   <span class="hidden">next&gt;</span><!-- occupy the space to keep the navigation from moving around -->
3929                 </xsl:otherwise>
3930               </xsl:choose>
3931             </div>
3932           </xsl:if>
3933           <xsl:value-of select="/bedeworkadmin/searchResults/resultSize"/>
3934           result<xsl:if test="/bedeworkadmin/searchResults/resultSize != 1">s</xsl:if> returned
3935           for <em><xsl:value-of select="/bedeworkadmin/searchResults/query"/></em>
3936         </th>
3937       </tr>
3938       <xsl:if test="/bedeworkadmin/searchResults/searchResult">
3939         <tr class="fieldNames">
3940           <td>
3941             relevance
3942           </td>
3943           <td>
3944             summary
3945           </td>
3946           <td>
3947             date &amp; time
3948           </td>
3949           <td>
3950             calendar
3951           </td>
3952           <td>
3953             location
3954           </td>
3955         </tr>
3956       </xsl:if>
3957       <xsl:for-each select="/bedeworkadmin/searchResults/searchResult">
3958         <xsl:variable name="subscriptionId" select="event/subscription/id"/>
3959         <xsl:variable name="calPath" select="event/calendar/encodedPath"/>
3960         <xsl:variable name="guid" select="event/guid"/>
3961         <xsl:variable name="recurrenceId" select="event/recurrenceId"/>
3962         <tr>
3963           <td class="relevance">
3964             <xsl:value-of select="ceiling(number(score)*100)"/>%
3965             <img src="{$resourcesRoot}/images/spacer.gif" height="4" class="searchRelevance">
3966               <xsl:attribute name="width"><xsl:value-of select="ceiling((number(score)*100) div 1.5)"/></xsl:attribute>
3967             </img>
3968           </td>
3969           <td>
3970             <a href="{$event-fetchForDisplay}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
3971               <xsl:value-of select="event/summary"/>
3972             </a>
3973           </td>
3974           <td>
3975             <xsl:value-of select="event/start/longdate"/>
3976             <xsl:text> </xsl:text>
3977             <xsl:value-of select="event/start/time"/>
3978             <xsl:choose>
3979               <xsl:when test="event/start/longdate != event/end/longdate">
3980                 - <xsl:value-of select="event/start/longdate"/>
3981                 <xsl:text> </xsl:text>
3982                 <xsl:value-of select="event/end/time"/>
3983               </xsl:when>
3984               <xsl:when test="event/start/time != event/end/time">
3985                 - <xsl:value-of select="event/end/time"/>
3986               </xsl:when>
3987             </xsl:choose>
3988           </td>
3989           <td>
3990             <xsl:value-of select="event/calendar/name"/>
3991           </td>
3992           <td>
3993             <xsl:value-of select="event/location/address"/>
3994           </td>
3995         </tr>
3996       </xsl:for-each>
3997     </table>
3998   </xsl:template>
3999
4000   <xsl:template name="searchResultPageNav">
4001     <xsl:param name="page">1</xsl:param>
4002     <xsl:variable name="curPage" select="/bedeworkadmin/searchResults/curPage"/>
4003     <xsl:variable name="numPages" select="/bedeworkadmin/searchResults/numPages"/>
4004     <xsl:variable name="endPage">
4005       <xsl:choose>
4006         <xsl:when test="number($curPage) + 6 &gt; number($numPages)"><xsl:value-of select="$numPages"/></xsl:when>
4007         <xsl:otherwise><xsl:value-of select="number($curPage) + 6"/></xsl:otherwise>
4008       </xsl:choose>
4009     </xsl:variable>
4010     <xsl:choose>
4011       <xsl:when test="$page = $curPage">
4012         <xsl:value-of select="$page"/>
4013       </xsl:when>
4014       <xsl:otherwise>
4015         <a href="{$search-next}&amp;pageNum={$page}">
4016           <xsl:value-of select="$page"/>
4017         </a>
4018       </xsl:otherwise>
4019     </xsl:choose>
4020     <xsl:text> </xsl:text>
4021     <xsl:if test="$page &lt; $endPage">
4022        <xsl:call-template name="searchResultPageNav">
4023          <xsl:with-param name="page" select="number($page)+1"/>
4024       </xsl:call-template>
4025     </xsl:if>
4026   </xsl:template>
4027
4028   <!--==== HEADER TEMPLATES and NAVIGATION  ====-->
4029
4030   <xsl:template name="header">
4031     <div id="header">
4032       <a href="{$urlPrefix}">
4033         <img id="logo"
4034             alt="logo"
4035             src="{$resourcesRoot}/resources/bedeworkAdminLogo.gif"
4036             width="217"
4037             height="40"
4038             border="0"/>
4039       </a>
4040       <!-- set the page heading: -->
4041       <h1>
4042         <xsl:choose>
4043           <xsl:when test="/bedeworkadmin/page='modEvent' or /bedeworkadmin/page='eventList' or /bedeworkadmin/page='displayEvent'">
4044             Manage Events
4045           </xsl:when>
4046           <xsl:when test="/bedeworkadmin/page='contactList' or /bedeworkadmin/page='modContact' or /bedeworkadmin/page='deleteContactConfirm'">
4047             Manage Contacts
4048           </xsl:when>
4049           <xsl:when test="/bedeworkadmin/page='locationList' or /bedeworkadmin/page='modLocation' or /bedeworkadmin/page='deleteLocationConfirm'">
4050             Manage Locations
4051           </xsl:when>
4052           <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='modCalendar' or /bedeworkadmin/page='calendarReferenced' or /bedeworkadmin/page='deleteCalendarConfirm'">
4053             Manage Calendars
4054           </xsl:when>
4055           <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
4056             Public Calendars
4057           </xsl:when>
4058           <xsl:when test="/bedeworkadmin/page='subscriptions' or /bedeworkadmin/page='modSubscription'">
4059             Manage Subscriptions
4060           </xsl:when>
4061           <xsl:when test="/bedeworkadmin/page='views' or /bedeworkadmin/page='modView'">
4062             Manage Views
4063           </xsl:when>
4064           <xsl:when test="/bedeworkadmin/page='modSyspars'">
4065             Manage System Preferences
4066           </xsl:when>
4067           <xsl:when test="/bedeworkadmin/page='authUserList' or /bedeworkadmin/page='modAuthUser'">
4068             Manage Public Events Administrators
4069           </xsl:when>
4070           <xsl:when test="/bedeworkadmin/page='chooseGroup'">
4071             Choose Administrative Group
4072           </xsl:when>
4073           <xsl:when test="/bedeworkadmin/page='adminGroupList' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroupMembers'">
4074             Manage Administrative Groups
4075           </xsl:when>
4076           <xsl:when test="/bedeworkadmin/page='noGroup'">
4077             No Administrative Group
4078           </xsl:when>
4079           <xsl:when test="/bedeworkadmin/page='uploadTimezones'">
4080             Manage Time Zones
4081           </xsl:when>
4082           <xsl:when test="/bedeworkadmin/page='noAccess'">
4083             Access Denied
4084           </xsl:when>
4085           <xsl:when test="/bedeworkadmin/page='error'">
4086             Error
4087           </xsl:when>
4088           <xsl:otherwise>
4089             Bedework Calendar Administration
4090           </xsl:otherwise>
4091         </xsl:choose>
4092       </h1>
4093
4094       <xsl:if test="/bedeworkadmin/message">
4095         <div id="messages">
4096           <p>
4097             <xsl:apply-templates select="/bedeworkadmin/message"/>
4098           </p>
4099         </div>
4100       </xsl:if>
4101       <xsl:if test="/bedeworkadmin/error">
4102         <div id="errors">
4103           <p>
4104             <xsl:apply-templates select="/bedeworkadmin/error"/>
4105           </p>
4106         </div>
4107       </xsl:if>
4108
4109     </div>
4110     <table id="statusBarTable">
4111       <tr>
4112         <td class="leftCell">
4113           <a href="{$setup}">Main Menu</a> |
4114           <a href="{$publicCal}" target="calendar">Launch Calendar</a> |
4115           <a href="{$logout}">Log Out</a>
4116         </td>
4117         <xsl:if test="/bedeworkadmin/userInfo/user">
4118           <td class="rightCell">
4119             <xsl:if test="/bedeworkadmin/currentCalSuite/name">
4120               Calendar Suite:
4121               <span class="status">
4122                 <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
4123               </span>
4124               &#160;
4125             </xsl:if>
4126             Logged in as:
4127             <span class="status">
4128               <xsl:value-of select="/bedeworkadmin/userInfo/user"/>
4129             </span>
4130             &#160;
4131             <xsl:if test="/bedeworkadmin/userInfo/group">
4132               Group:
4133               <span class="status">
4134                 <xsl:value-of select="/bedeworkadmin/userInfo/group"/>
4135               </span>
4136             </xsl:if>
4137           </td>
4138         </xsl:if>
4139       </tr>
4140     </table>
4141     <div id="titleBar">
4142       CALENDAR of EVENTS
4143     </div>
4144   </xsl:template>
4145
4146   <!--==== FOOTER ====-->
4147   <xsl:template name="footer">
4148     <div id="footer">
4149       <a href="http://www.bedework.org/">Bedework Website</a> |
4150       <!-- Enable the following two items when debugging skins only -->
4151       <a href="?noxslt=yes">show XML</a> |
4152       <a href="?refreshXslt=yes">refresh XSLT</a>
4153     </div>
4154   </xsl:template>
4155 </xsl:stylesheet>
Note: See TracBrowser for help on using the browser.