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

Revision 1085 (checked in by douglm, 7 years ago)

Large number of updates mostly due to renaming sponsor to contact.
BwContact? class is used for rfc contact field with some non-rfc extensions used as contact in public events.

Renamed all sponsor admin jsp pages to contact
Changed jsp to refer to contact
Changed struts-config

Changed admin and public events stylesheet to refer to contact - contacts largely unused in user client to date.

Changes to configuration properties and xml files - change sponsor to contact

Sponsor code removed from admin app and added to common code

In addition the contact class has a language capable name. The icalendar classes have been modified appropriately

Collation classes and methods added to allow correct sorting of entities

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