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

Revision 1060 (checked in by johnsa, 7 years ago)

some clean up of subscription style form input in admin client

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