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

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

Subscriptions now pass css style information into public client as set in the admin client. The subscription style is an open field, but a default set of colors are provided (like those in the personal client). This feature may be used to override the default colors and other styles of events as they appear in the grid and list views of the public 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         <tr>
2509           <th>Style:</th>
2510           <td>
2511             <xsl:variable name="subStyle" select="style"/>
2512             <input type="text" value="{$subStyle}" name="subscription.style" size="50"/><br/>
2513             <div style="width: 400px">
2514               Enter a css class to style events rendered in the list and grid
2515               views.  Leave blank to render with the default colors, or select from
2516               one of the system-wide choices:
2517               <select name="bwColors" onchange="document.subscribeForm['subscription.style'].value = this.value">
2518                 <option value="">default</option>
2519                 <xsl:for-each select="document('subColors.xml')/subscriptionColors/color">
2520                   <xsl:variable name="subColor" select="."/>
2521                   <option value="{$subColor}" class="{$subColor}">
2522                     <xsl:value-of select="@name"/>
2523                   </option>
2524                 </xsl:for-each>
2525               </select>
2526             </div>
2527           </td>
2528         </tr>
2529         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2530           <tr>
2531             <th>Unremovable:</th>
2532             <td>
2533               <input type="radio" value="true" name="unremoveable" size="60"/> true
2534               <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2535             </td>
2536           </tr>
2537         </xsl:if>
2538       </table>
2539       <table border="0" id="submitTable">
2540         <tr>
2541           <td>
2542             <input type="submit" name="addSubscription" value="Add Subscription"/>
2543             <input type="submit" name="cancelled" value="Cancel"/>
2544             <input type="reset" value="Clear"/>
2545           </td>
2546         </tr>
2547       </table>
2548     </form>
2549   </xsl:template>
2550
2551   <xsl:template match="subscription" mode="modSubscription">
2552     <h2>Modify Subscription</h2>
2553     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
2554       <table class="eventFormTable">
2555         <tr>
2556           <th>Name*:</th>
2557           <td>
2558             <xsl:value-of select="name"/>
2559             <xsl:variable name="subName" select="name"/>
2560             <input type="hidden" value="{$subName}" name="name"/>
2561           </td>
2562         </tr>
2563         <xsl:choose>
2564           <xsl:when test="internal='false'">
2565             <tr>
2566               <th>Uri:</th>
2567               <td>
2568                 <xsl:variable name="subUri" select="uri"/>
2569                 <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
2570               </td>
2571             </tr>
2572           </xsl:when>
2573           <xsl:otherwise>
2574             <tr>
2575               <th>Uri:</th>
2576               <td>
2577                 <xsl:value-of select="uri"/>
2578               </td>
2579             </tr>
2580           </xsl:otherwise>
2581         </xsl:choose>
2582         <tr>
2583           <th>Display:</th>
2584           <td>
2585             <xsl:choose>
2586               <xsl:when test="display='true'">
2587                 <input type="radio" value="true" name="subscription.display" checked="checked"/> yes
2588                 <input type="radio" value="false" name="subscription.display"/> no
2589               </xsl:when>
2590               <xsl:otherwise>
2591                 <input type="radio" value="true" name="subscription.display"/> yes
2592                 <input type="radio" value="false" name="subscription.display" checked="checked"/> no
2593               </xsl:otherwise>
2594             </xsl:choose>
2595           </td>
2596         </tr>
2597         <tr>
2598           <th>Style:</th>
2599           <td>
2600             <xsl:variable name="subStyle" select="style"/>
2601             <input type="text" value="{$subStyle}" name="subscription.style" size="60"/>
2602             <div style="width: 400px">
2603               Enter a css class to style events rendered in the list and grid
2604               views.  Leave blank to render with the default colors, or select from
2605               one of the system-wide choices:
2606               <select name="bwColors" onchange="document.subscribeForm['subscription.style'].value = this.value">
2607                 <option value="">default</option>
2608                 <xsl:for-each select="document('subColors.xml')/subscriptionColors/color">
2609                   <xsl:variable name="subColor" select="."/>
2610                   <option value="{$subColor}" class="{$subColor}">
2611                     <xsl:value-of select="@name"/>
2612                   </option>
2613                 </xsl:for-each>
2614               </select>
2615             </div>
2616           </td>
2617         </tr>
2618         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2619           <tr>
2620             <th>Unremovable:</th>
2621             <td>
2622               <xsl:choose>
2623                 <xsl:when test="unremoveable='true'">
2624                   <input type="radio" value="true" name="unremoveable" size="60" checked="checked"/> true
2625                   <input type="radio" value="false" name="unremoveable" size="60"/> false
2626                 </xsl:when>
2627                 <xsl:otherwise>
2628                   <input type="radio" value="true" name="unremoveable" size="60"/> true
2629                   <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2630                 </xsl:otherwise>
2631               </xsl:choose>
2632             </td>
2633           </tr>
2634         </xsl:if>
2635       </table>
2636       <table border="0" id="submitTable">
2637         <tr>
2638           <td>
2639             <input type="submit" name="updateSubscription" value="Update Subscription"/>
2640             <input type="submit" name="cancelled" value="Cancel"/>
2641             <input type="reset" value="Reset"/>
2642           </td>
2643           <td align="right">
2644             <input type="submit" name="delete" value="Delete Subscription"/>
2645           </td>
2646         </tr>
2647       </table>
2648     </form>
2649   </xsl:template>
2650
2651   <xsl:template name="subscriptionList">
2652     <h3>Current subscriptions</h3>
2653     <table id="commonListTable">
2654       <tr>
2655         <th>Name</th>
2656         <th>URI</th>
2657         <th>Style</th>
2658         <th>Display</th>
2659         <th>Unremovable</th>
2660         <th>External</th>
2661         <th>Deleted?</th>
2662       </tr>
2663       <xsl:for-each select="subscription">
2664         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2665         <tr>
2666           <td>
2667             <xsl:variable name="subname" select="name"/>
2668             <a href="{$subscriptions-fetchForUpdate}&amp;subname={$subname}">
2669               <xsl:value-of select="name"/>
2670             </a>
2671           </td>
2672           <td>
2673             <xsl:value-of select="uri"/>
2674           </td>
2675           <td>
2676             <xsl:value-of select="style"/>
2677           </td>
2678           <td class="center">
2679             <xsl:if test="display='true'">
2680               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2681             </xsl:if>
2682           </td>
2683           <td class="center">
2684             <xsl:if test="unremoveable='true'">
2685               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2686             </xsl:if>
2687           </td>
2688           <td class="center">
2689             <xsl:if test="internal='false'">
2690               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2691             </xsl:if>
2692           </td>
2693           <td class="center">
2694             <xsl:if test="calendarDeleted='true'">
2695               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2696             </xsl:if>
2697           </td>
2698         </tr>
2699       </xsl:for-each>
2700     </table>
2701     <!--<h4><a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">Subscribe to a remote calendar</a> (by URI)</h4>-->
2702   </xsl:template>
2703
2704   <!--+++++++++++++++ Views ++++++++++++++++++++-->
2705   <xsl:template match="views" mode="viewList">
2706
2707     <h3>Add a new view</h3>
2708     <form name="addView" action="{$view-addView}" method="post">
2709       <input type="text" name="name" size="60"/>
2710       <input type="submit" value="add view" name="addview"/>
2711     </form>
2712
2713     <h3>Views</h3>
2714     <table id="commonListTable">
2715       <tr>
2716         <th>Name</th>
2717         <th>Included subscriptions</th>
2718       </tr>
2719
2720       <xsl:for-each select="view">
2721         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2722         <tr>
2723           <td>
2724             <xsl:variable name="viewName" select="name"/>
2725             <a href="{$view-fetchForUpdate}&amp;name={$viewName}">
2726               <xsl:value-of select="name"/>
2727             </a>
2728           </td>
2729           <td>
2730             <xsl:for-each select="subscriptions/subscription">
2731               <xsl:value-of select="name"/>
2732               <xsl:if test="position()!=last()">, </xsl:if>
2733             </xsl:for-each>
2734           </td>
2735         </tr>
2736       </xsl:for-each>
2737     </table>
2738   </xsl:template>
2739
2740   <xsl:template name="modView">
2741     <h2>Update View</h2>
2742     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
2743     <h3 class="viewName">
2744       <xsl:value-of select="$viewName"/>
2745     </h3>
2746     <table id="viewsTable">
2747       <tr>
2748         <td class="subs">
2749           <h3>Available Subscriptions:</h3>
2750
2751           <table class="subscriptionsListSubs">
2752             <xsl:for-each select="/bedeworkadmin/subscriptions/subscription">
2753               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2754               <xsl:if test="not(/bedeworkadmin/views/view/subscriptions/subscription/name=name)">
2755                 <tr>
2756                   <td>
2757                     <xsl:value-of select="name"/>
2758                   </td>
2759                   <td class="arrows">
2760                     <xsl:variable name="subAddName" select="name"/>
2761                     <a href="{$view-update}&amp;name={$viewName}&amp;add={$subAddName}">
2762                       <img src="{$resourcesRoot}/resources/arrowRight.gif"
2763                           width="13" height="13" border="0"
2764                           alt="add subscription"/>
2765                     </a>
2766                   </td>
2767                 </tr>
2768               </xsl:if>
2769             </xsl:for-each>
2770           </table>
2771         </td>
2772         <td class="view">
2773           <h3>Active Subscriptions:</h3>
2774           <table class="subscriptionsListView">
2775             <xsl:for-each select="/bedeworkadmin/views/view/subscriptions/subscription">
2776               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2777               <tr>
2778                 <td class="arrows">
2779                   <xsl:variable name="subRemoveName" select="name"/>
2780                   <a href="{$view-update}&amp;name={$viewName}&amp;remove={$subRemoveName}">
2781                     <img src="{$resourcesRoot}/resources/arrowLeft.gif"
2782                         width="13" height="13" border="0"
2783                         alt="add subscription"/>
2784                   </a>
2785                 </td>
2786                 <td>
2787                   <xsl:value-of select="name"/>
2788                 </td>
2789               </tr>
2790             </xsl:for-each>
2791           </table>
2792         </td>
2793       </tr>
2794     </table>
2795     <table border="0" id="submitTable">
2796       <tr>
2797         <td>
2798           <input type="button" name="return" value="Return to Views Listing" onclick="javascript:location.replace('{$view-fetch}')"/>
2799         </td>
2800         <td align="right">
2801           <form name="deleteViewForm" action="{$view-fetchForUpdate}" method="post">
2802             <input type="submit" name="deleteButton" value="Delete View"/>
2803             <input type="hidden" name="name" value="{$viewName}"/>
2804             <input type="hidden" name="delete" value="yes"/>
2805           </form>
2806         </td>
2807       </tr>
2808     </table>
2809   </xsl:template>
2810
2811   <xsl:template name="deleteViewConfirm">
2812     <h2>Remove View?</h2>
2813
2814     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
2815     <p>The following view will be removed. Continue?</p>
2816
2817     <h3 class="viewName">
2818       <xsl:value-of select="$viewName"/>
2819     </h3>
2820     <form name="removeView" action="{$view-remove}">
2821       <input type="hidden" name="name" value="{$viewName}"/>
2822       <input type="submit" name="delete" value="Yes: Remove View"/>
2823       <input type="submit" name="cancelled" value="No: Cancel"/>
2824     </form>
2825
2826   </xsl:template>
2827
2828   <!--==== UPLOAD ====-->
2829   <xsl:template name="upload">
2830   <!-- The name "eventForm" is referenced by several javascript functions. Do not
2831     change it without modifying includes.js -->
2832     <form name="eventForm" method="post" action="{$event-upload}" id="standardForm" enctype="multipart/form-data">
2833       <h2>Upload iCAL File</h2>
2834       <table class="common" cellspacing="0">
2835         <tr>
2836           <td class="fieldname">
2837             Filename:
2838           </td>
2839           <td align="left">
2840             <input type="file" name="uploadFile" size="60" />
2841           </td>
2842         </tr>
2843         <tr>
2844           <td class="fieldname padMeTop">
2845             Into calendar:
2846           </td>
2847           <td align="left" class="padMeTop">
2848             <input type="hidden" name="newCalPath" value=""/>
2849             <span id="bwEventCalDisplay">
2850               <em>none selected</em>
2851             </span>
2852             <xsl:text> </xsl:text>
2853             [<a href="javascript:launchCalSelectWindow('{$event-selectCalForEvent}')" class="small">change</a>]
2854           </td>
2855         </tr>
2856         <!--<tr>
2857           <td class="fieldname padMeTop">
2858             Effects free/busy:
2859           </td>
2860           <td align="left" class="padMeTop">
2861             <input type="radio" value="" name="transparency" checked="checked"/> accept event's settings<br/>
2862             <input type="radio" value="OPAQUE" name="transparency"/> yes <span class="note">(opaque: event status affects your free/busy)</span><br/>
2863             <input type="radio" value="TRANSPARENT" name="transparency"/> no <span class="note">(transparent: event status does not affect your free/busy)</span><br/>
2864           </td>
2865         </tr>-->
2866         <tr>
2867           <td class="fieldname padMeTop">
2868             Status:
2869           </td>
2870           <td align="left" class="padMeTop">
2871             <input type="radio" value="" name="status" checked="checked"/> accept event's status<br/>
2872             <input type="radio" value="CONFIRMED" name="status"/> confirmed<br/>
2873             <input type="radio" value="TENTATIVE" name="status"/> tentative<br/>
2874             <input type="radio" value="CANCELLED" name="status"/> cancelled<br/>
2875           </td>
2876         </tr>
2877       </table>
2878       <table border="0" id="submitTable">
2879         <tr>
2880           <td>
2881             <input name="submit" type="submit" value="Continue"/>
2882             <input name="cancelled" type="submit" value="Cancel"/>
2883           </td>
2884         </tr>
2885       </table>
2886     </form>
2887   </xsl:template>
2888
2889   <!--+++++++++++++++ System Parameters (preferences) ++++++++++++++++++++-->
2890   <xsl:template name="modSyspars">
2891     <h2>Modify System Parameters</h2>
2892     <p>
2893       Do not change unless you know what you're doing.<br/>
2894       Changes to these parameters have wide impact on the system.
2895     </p>
2896     <form name="systemParamsForm" action="{$system-update}" method="post">
2897       <table class="eventFormTable">
2898         <tr>
2899           <th>Default timezone:</th>
2900           <td>
2901             <xsl:variable name="tzid" select="/bedeworkadmin/system/tzid"/>
2902             <input value="{$tzid}" name="tzid" size="20"/>
2903           </td>
2904           <td>
2905             Default timezone id for date/time values. This should normally be your local timezone
2906           </td>
2907         </tr>
2908         <tr>
2909           <th>Default user view name:</th>
2910           <td>
2911             <xsl:variable name="defaultViewName" select="/bedeworkadmin/system/defaultUserViewName"/>
2912             <input value="{$defaultViewName}" name="defaultUserViewName" size="20"/>
2913           </td>
2914           <td>
2915             Name used for default view created when a new user is added
2916           </td>
2917         </tr>
2918         <tr>
2919           <th>Http connections per user:</th>
2920           <td>
2921             <xsl:variable name="httpPerUser" select="/bedeworkadmin/system/httpConnectionsPerUser"/>
2922             <input value="{$httpPerUser}" name="httpConnectionsPerUser" size="20"/>
2923           </td>
2924           <td></td>
2925         </tr>
2926         <tr>
2927           <th>Http connections per host:</th>
2928           <td>
2929             <xsl:variable name="httpPerHost" select="/bedeworkadmin/system/httpConnectionsPerHost"/>
2930             <input value="{$httpPerHost}" name="httpConnectionsPerHost" size="20"/>
2931           </td>
2932           <td></td>
2933         </tr>
2934         <tr>
2935           <th>Total http connections:</th>
2936           <td>
2937             <xsl:variable name="httpTotal" select="/bedeworkadmin/system/httpConnections"/>
2938             <input value="{$httpTotal}" name="httpConnections" size="20"/>
2939           </td>
2940           <td></td>
2941         </tr>
2942         <tr>
2943           <th>Maximum length of public event description:</th>
2944           <td>
2945             <xsl:variable name="maxPublicDescriptionLength" select="/bedeworkadmin/system/maxPublicDescriptionLength"/>
2946             <input value="{$maxPublicDescriptionLength}" name="maxPublicDescriptionLength" size="20"/>
2947           </td>
2948           <td></td>
2949         </tr>
2950         <tr>
2951           <th>Maximum length of user event description:</th>
2952           <td>
2953             <xsl:variable name="maxUserDescriptionLength" select="/bedeworkadmin/system/maxUserDescriptionLength"/>
2954             <input value="{$maxUserDescriptionLength}" name="maxUserDescriptionLength" size="20"/>
2955           </td>
2956           <td></td>
2957         </tr>
2958         <tr>
2959           <th>Maximum size of a user entity:</th>
2960           <td>
2961             <xsl:variable name="maxUserEntitySize" select="/bedeworkadmin/system/maxUserEntitySize"/>
2962             <input value="{$maxUserEntitySize}" name="maxUserEntitySize" size="20"/>
2963           </td>
2964           <td></td>
2965         </tr>
2966         <tr>
2967           <th>Default user quota:</th>
2968           <td>
2969             <xsl:variable name="defaultUserQuota" select="/bedeworkadmin/system/defaultUserQuota"/>
2970             <input value="{$defaultUserQuota}" name="defaultUserQuota" size="20"/>
2971           </td>
2972           <td></td>
2973         </tr>
2974       </table>
2975       <table border="0" id="submitTable">
2976         <tr>
2977           <td>
2978             <input type="submit" name="updateSystemParams" value="Update"/>
2979             <input type="submit" name="cancelled" value="Cancel"/>
2980             <input type="reset" value="Reset"/>
2981           </td>
2982         </tr>
2983       </table>
2984     </form>
2985   </xsl:template>
2986
2987   <!--+++++++++++++++ Calendar Suites (calsuite) ++++++++++++++++++++-->
2988   <xsl:template match="calSuites" mode="calSuiteList">
2989     <h2>Manage Calendar Suites</h2>
2990
2991     <h4>Calendar suites:</h4>
2992     <p>
2993       <input type="button" name="return" value="Add calendar suite" onclick="javascript:location.replace('{$calsuite-showAddForm}')"/>
2994     </p>
2995
2996     <ul>
2997       <xsl:for-each select="calSuite">
2998         <li>
2999           <xsl:variable name="name" select="name"/>
3000           <a href="{$calsuite-fetchForUpdate}&amp;name={$name}">
3001             <xsl:value-of select="name"/>
3002           </a>
3003         </li>
3004       </xsl:for-each>
3005     </ul>
3006
3007   </xsl:template>
3008
3009   <xsl:template name="addCalSuite">
3010     <h2>Add Calendar Suite</h2>
3011     <form name="calSuiteForm" action="{$calsuite-add}" method="post">
3012       <table class="eventFormTable">
3013         <tr>
3014           <th>Name:</th>
3015           <td>
3016             <input name="name" size="20"/>
3017           </td>
3018           <td>
3019             Name of your calendar suite
3020           </td>
3021         </tr>
3022         <tr>
3023           <th>Group:</th>
3024           <td>
3025             <input name="groupName" size="20"/>
3026           </td>
3027           <td>
3028             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3029           </td>
3030         </tr>
3031         <tr>
3032           <th>Root calendar:</th>
3033           <td>
3034             <input name="calPath" size="20"/>
3035           </td>
3036           <td>
3037             Path of root calendar (not required if suite only consists of subscriptions and views)
3038           </td>
3039         </tr>
3040       </table>
3041       <table border="0" id="submitTable">
3042         <tr>
3043           <td>
3044             <input type="submit" name="updateCalSuite" value="Add"/>
3045             <input type="submit" name="cancelled" value="Cancel"/>
3046             <input type="reset" value="Reset"/>
3047           </td>
3048         </tr>
3049       </table>
3050     </form>
3051   </xsl:template>
3052
3053   <xsl:template match="calSuite" name="modCalSuite">
3054     <h2>Modify Calendar Suite</h2>
3055     <xsl:variable name="calSuiteName" select="name"/>
3056     <form name="calSuiteForm" action="{$calsuite-update}" method="post">
3057       <table class="eventFormTable">
3058         <tr>
3059           <th>Name:</th>
3060           <td>
3061             <input name="name" value="{$calSuiteName}" size="20"/>
3062           </td>
3063           <td>
3064             Name of your calendar suite
3065           </td>
3066         </tr>
3067         <tr>
3068           <th>Group:</th>
3069           <td>
3070             <xsl:variable name="group" select="group"/>
3071             <input name="groupName" value="{$group}" size="20"/>
3072           </td>
3073           <td>
3074             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3075           </td>
3076         </tr>
3077         <tr>
3078           <th>Root calendar:</th>
3079           <td>
3080             <xsl:variable name="calPath" select="calPath"/>
3081             <input name="calPath" value="{$calPath}" size="20"/>
3082           </td>
3083           <td>
3084             Path of root calendar (not required if suite only consists of subscriptions and views)
3085           </td>
3086         </tr>
3087       </table>
3088       <table border="0" id="submitTable">
3089         <tr>
3090           <td>
3091             <input type="submit" name="updateCalSuite" value="Update"/>
3092             <input type="submit" name="cancelled" value="Cancel"/>
3093             <input type="reset" value="Reset"/>
3094           </td>
3095         </tr>
3096       </table>
3097     </form>
3098     <div id="sharingBox">
3099       <h3>Manage suite administrators</h3>
3100       <table class="common">
3101         <tr>
3102           <th class="commonHeader" colspan="2">Current access:</th>
3103         </tr>
3104
3105         <xsl:for-each select="acl/ace">
3106           <tr>
3107             <th class="thin">
3108               <xsl:choose>
3109                 <xsl:when test="invert">
3110                   <em>Deny to
3111                   <xsl:choose>
3112                     <xsl:when test="invert/principal/href">
3113                       <xsl:value-of select="invert/principal/href"/>
3114                       </xsl:when>
3115                       <xsl:when test="invert/principal/property">
3116                         <xsl:value-of select="name(invert/principal/property/*)"/>
3117                       </xsl:when>
3118                       <xsl:otherwise>
3119                         <xsl:value-of select="name(invert/principal/*)"/>
3120                       </xsl:otherwise>
3121                     </xsl:choose>
3122                   </em>
3123                 </xsl:when>
3124                 <xsl:otherwise>
3125                   <xsl:choose>
3126                     <xsl:when test="principal/href">
3127                       <xsl:value-of select="principal/href"/>
3128                     </xsl:when>
3129                     <xsl:when test="principal/property">
3130                       <xsl:value-of select="name(principal/property/*)"/>
3131                     </xsl:when>
3132                     <xsl:otherwise>
3133                       <xsl:value-of select="name(principal/*)"/>
3134                     </xsl:otherwise>
3135                   </xsl:choose>
3136                 </xsl:otherwise>
3137               </xsl:choose>
3138             </th>
3139             <td>
3140               <xsl:for-each select="grant/node()">
3141                 <xsl:value-of select="name(.)"/>&#160;&#160;
3142               </xsl:for-each>
3143             </td>
3144           </tr>
3145         </xsl:for-each>
3146       </table>
3147       <form name="calsuiteShareForm" action="{$calsuite-setAccess}" id="shareForm" method="post">
3148         <input type="hidden" name="calSuiteName" value="{$calSuiteName}"/>
3149         <input type="hidden" name="how" value="RW" />
3150         <p>
3151           Add administrator:<br/>
3152           <input type="text" name="who" size="20"/>
3153           <input type="radio" value="user" name="whoType" checked="checked"/> user
3154           <input type="radio" value="group" name="whoType"/> group
3155         </p>
3156         <input type="submit" name="submit" value="Submit"/>
3157       </form>
3158     </div>
3159   </xsl:template>
3160
3161   <xsl:template name="calSuitePrefs">
3162     <h2>Edit Calendar Suite Preferences</h2>
3163     <form name="userPrefsForm" method="post" action="{$calsuite-updatePrefs}">
3164       <table id="eventFormTable">
3165         <tr>
3166           <td class="fieldName">
3167             Calendar Suite:
3168           </td>
3169           <td>
3170             <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
3171           </td>
3172         </tr>
3173         <tr>
3174           <td class="fieldName">
3175             Preferred view:
3176           </td>
3177           <td>
3178             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
3179             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
3180           </td>
3181         </tr>
3182         <tr>
3183           <td class="fieldName">
3184             Preferred view period:
3185           </td>
3186           <td>
3187             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
3188             <select name="viewPeriod">
3189               <!-- picking the selected item could be done with javascript. for
3190                    now, this will do.  -->
3191               <xsl:choose>
3192                 <xsl:when test="$preferredViewPeriod = 'dayView'">
3193                   <option value="dayView" selected="selected">day</option>
3194                 </xsl:when>
3195                 <xsl:otherwise>
3196                   <option value="dayView">day</option>
3197                 </xsl:otherwise>
3198               </xsl:choose>
3199               <xsl:choose>
3200                 <xsl:when test="$preferredViewPeriod = 'todayView'">
3201                   <option value="todayView" selected="selected">today</option>
3202                 </xsl:when>
3203                 <xsl:otherwise>
3204                   <option value="todayView">today</option>
3205                 </xsl:otherwise>
3206               </xsl:choose>
3207               <xsl:choose>
3208                 <xsl:when test="$preferredViewPeriod = 'weekView'">
3209                   <option value="weekView" selected="selected">week</option>
3210                 </xsl:when>
3211                 <xsl:otherwise>
3212                   <option value="weekView">week</option>
3213                 </xsl:otherwise>
3214               </xsl:choose>
3215               <xsl:choose>
3216                 <xsl:when test="$preferredViewPeriod = 'monthView'">
3217                   <option value="monthView" selected="selected">month</option>
3218                 </xsl:when>
3219                 <xsl:otherwise>
3220                   <option value="monthView">month</option>
3221                 </xsl:otherwise>
3222               </xsl:choose>
3223               <xsl:choose>
3224                 <xsl:when test="$preferredViewPeriod = 'yearView'">
3225                   <option value="yearView" selected="selected">year</option>
3226                 </xsl:when>
3227                 <xsl:otherwise>
3228                   <option value="yearView">year</option>
3229                 </xsl:otherwise>
3230               </xsl:choose>
3231             </select>
3232           </td>
3233         </tr>
3234         <tr>
3235           <td class="fieldName">
3236             Skin name:
3237           </td>
3238           <td>
3239             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
3240             <input type="text" name="skin" value="{$skinName}" size="40"/>
3241           </td>
3242         </tr>
3243         <tr>
3244           <td class="fieldName">
3245             Skin style:
3246           </td>
3247           <td>
3248             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
3249             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
3250           </td>
3251         </tr>
3252       </table>
3253       <br />
3254
3255       <input type="submit" name="modPrefs" value="Update"/>
3256       <input type="reset" value="Reset"/>
3257       <input type="submit" name="cancelled" value="Cancel"/>
3258     </form>
3259   </xsl:template>
3260
3261   <!--+++++++++++++++ Timezones ++++++++++++++++++++-->
3262   <xsl:template name="uploadTimezones">
3263     <h2>Upload Timezones</h2>
3264     <form name="peForm" method="post" action="{$timezones-upload}" enctype="multipart/form-data">
3265       <input type="file" name="uploadFile" size="40" value=""/>
3266       <input type="submit" name="doUpload" value="Upload Timezones"/>
3267       <input type="submit" name="cancelled" value="Cancel"/>
3268     </form>
3269   </xsl:template>
3270
3271   <!--+++++++++++++++ Authuser ++++++++++++++++++++-->
3272   <xsl:template name="authUserList">
3273     <h2>Modify Administrators</h2>
3274
3275     <div id="authUserInputForms">
3276       <form name="getUserRolesForm" action="{$authuser-fetchForUpdate}" method="post">
3277         Edit admin roles by userid: <input type="text" name="editAuthUserId" size="20"/>
3278         <input type="submit" value="go" name="submit"/>
3279       </form>
3280     </div>
3281
3282     <table id="commonListTable">
3283       <tr>
3284         <th>UserId</th>
3285         <th>Roles</th>
3286         <th></th>
3287       </tr>
3288
3289       <xsl:for-each select="bedeworkadmin/authUsers/authUser">
3290         <!--<xsl:sort select="account" order="ascending" case-order="upper-first"/>-->
3291         <tr>
3292           <td>
3293             <xsl:value-of select="account"/>
3294           </td>
3295           <td>
3296             <xsl:if test="publicEventUser='true'">
3297               publicEvent; <xsl:text> </xsl:text>
3298             </xsl:if>
3299             <xsl:if test="superUser='true'">
3300               superUser; <xsl:text> </xsl:text>
3301             </xsl:if>
3302             <xsl:if test="alertUser='true'">
3303               alert; <xsl:text> </xsl:text>
3304             </xsl:if>
3305           </td>
3306           <td>
3307             <xsl:variable name="account" select="account"/>
3308             <a href="{$authuser-fetchForUpdate}&amp;editAuthUserId={$account}">
3309               edit
3310             </a>
3311           </td>
3312         </tr>
3313       </xsl:for-each>
3314     </table>
3315   </xsl:template>
3316
3317   <xsl:template name="modAuthUser">
3318     <h2>Update Administrator</h2>
3319     <xsl:variable name="modAuthUserAction" select="/bedeworkadmin/formElements/form/@action"/>
3320     <form action="{$modAuthUserAction}" method="post">
3321       <table id="eventFormTable">
3322         <tr>
3323           <td class="fieldName">
3324             Account:
3325           </td>
3326           <td>
3327             <xsl:value-of select="/bedeworkadmin/formElements/form/account"/>
3328           </td>
3329         </tr>
3330         <tr>
3331           <td class="fieldName">
3332             Alerts:
3333           </td>
3334           <td>
3335             <xsl:copy-of select="/bedeworkadmin/formElements/form/alerts/*"/>
3336           </td>
3337         </tr>
3338         <tr>
3339           <td class="fieldName">
3340             Public Events:
3341           </td>
3342           <td>
3343             <xsl:copy-of select="/bedeworkadmin/formElements/form/publicEvents/*"/>
3344           </td>
3345         </tr>
3346         <tr>
3347           <td class="fieldName">
3348             Super User:
3349           </td>
3350           <td>
3351             <xsl:copy-of select="/bedeworkadmin/formElements/form/superUser/*"/>
3352           </td>
3353         </tr>
3354         <!--<tr>
3355           <td class="optional">
3356             Email:
3357           </td>
3358           <td>
3359             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
3360             <span class="fieldInfo"></span>
3361           </td>
3362         </tr>
3363         <tr>
3364           <td class="optional">
3365             Phone:
3366           </td>
3367           <td>
3368             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
3369             <span class="fieldInfo"></span>
3370           </td>
3371         </tr>
3372         <tr>
3373           <td class="optional">
3374             Department:
3375           </td>
3376           <td>
3377             <xsl:copy-of select="/bedeworkadmin/formElements/form/dept/*"/>
3378             <span class="fieldInfo"></span>
3379           </td>
3380         </tr>
3381         <tr>
3382           <td class="optional">
3383             Last name:
3384           </td>
3385           <td>
3386             <xsl:copy-of select="/bedeworkadmin/formElements/form/lastName/*"/>
3387             <span class="fieldInfo"></span>
3388           </td>
3389         </tr>
3390         <tr>
3391           <td class="optional">
3392             First name:
3393           </td>
3394           <td>
3395             <xsl:copy-of select="/bedeworkadmin/formElements/form/firstName/*"/>
3396             <span class="fieldInfo"></span>
3397           </td>
3398         </tr>-->
3399       </table>
3400       <br />
3401
3402       <input type="submit" name="modAuthUser" value="Update"/>
3403       <input type="reset" value="Reset"/>
3404       <input type="submit" name="cancelled" value="Cancel"/>
3405     </form>
3406   </xsl:template>
3407
3408   <!--+++++++++++++++ User Prefs ++++++++++++++++++++-->
3409   <xsl:template name="modPrefs">
3410     <h2>Edit User Preferences</h2>
3411     <form name="userPrefsForm" method="post" action="{$prefs-update}">
3412       <table id="eventFormTable">
3413         <tr>
3414           <td class="fieldName">
3415             User:
3416           </td>
3417           <td>
3418             <xsl:value-of select="/bedeworkadmin/prefs/user"/>
3419             <xsl:variable name="user" select="/bedeworkadmin/prefs/user"/>
3420             <input type="hidden" name="user" value="{$user}"/>
3421           </td>
3422         </tr>
3423         <tr>
3424           <td class="fieldName">
3425             Preferred view:
3426           </td>
3427           <td>
3428             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
3429             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
3430           </td>
3431         </tr>
3432         <tr>
3433           <td class="fieldName">
3434             Preferred view period:
3435           </td>
3436           <td>
3437             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
3438             <select name="viewPeriod">
3439               <!-- picking the selected item could be done with javascript. for
3440                    now, this will do.  -->
3441               <xsl:choose>
3442                 <xsl:when test="$preferredViewPeriod = 'dayView'">
3443                   <option value="dayView" selected="selected">day</option>
3444                 </xsl:when>
3445                 <xsl:otherwise>
3446                   <option value="dayView">day</option>
3447                 </xsl:otherwise>
3448               </xsl:choose>
3449               <xsl:choose>
3450                 <xsl:when test="$preferredViewPeriod = 'todayView'">
3451                   <option value="todayView" selected="selected">today</option>
3452                 </xsl:when>
3453                 <xsl:otherwise>
3454                   <option value="todayView">today</option>
3455                 </xsl:otherwise>
3456               </xsl:choose>
3457               <xsl:choose>
3458                 <xsl:when test="$preferredViewPeriod = 'weekView'">
3459                   <option value="weekView" selected="selected">week</option>
3460                 </xsl:when>
3461                 <xsl:otherwise>
3462                   <option value="weekView">week</option>
3463                 </xsl:otherwise>
3464               </xsl:choose>
3465               <xsl:choose>
3466                 <xsl:when test="$preferredViewPeriod = 'monthView'">
3467                   <option value="monthView" selected="selected">month</option>
3468                 </xsl:when>
3469                 <xsl:otherwise>
3470                   <option value="monthView">month</option>
3471                 </xsl:otherwise>
3472               </xsl:choose>
3473               <xsl:choose>
3474                 <xsl:when test="$preferredViewPeriod = 'yearView'">
3475                   <option value="yearView" selected="selected">year</option>
3476                 </xsl:when>
3477                 <xsl:otherwise>
3478                   <option value="yearView">year</option>
3479                 </xsl:otherwise>
3480               </xsl:choose>
3481             </select>
3482           </td>
3483         </tr>
3484         <tr>
3485           <td class="fieldName">
3486             Skin name:
3487           </td>
3488           <td>
3489             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
3490             <input type="text" name="skin" value="{$skinName}" size="40"/>
3491           </td>
3492         </tr>
3493         <tr>
3494           <td class="fieldName">
3495             Skin style:
3496           </td>
3497           <td>
3498             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
3499             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
3500           </td>
3501         </tr>
3502       </table>
3503       <br />
3504
3505       <input type="submit" name="modPrefs" value="Update"/>
3506       <input type="reset" value="Reset"/>
3507       <input type="submit" name="cancelled" value="Cancel"/>
3508     </form>
3509   </xsl:template>
3510
3511   <!--+++++++++++++++ Admin Groups ++++++++++++++++++++-->
3512   <xsl:template name="listAdminGroups">
3513     <h2>Modify Groups</h2>
3514     <form name="adminGroupMembersForm" method="post" action="{$admingroup-initUpdate}">
3515       <xsl:choose>
3516         <xsl:when test="/bedeworkadmin/groups/showMembers='true'">
3517           <input type="radio" name="showAgMembers" value="false" onclick="document.adminGroupMembersForm.submit();"/>
3518           Hide members
3519           <input type="radio" name="showAgMembers" value="true" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
3520           Show members
3521         </xsl:when>
3522         <xsl:otherwise>
3523           <input type="radio" name="showAgMembers" value="false" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
3524           Hide members
3525           <input type="radio" name="showAgMembers" value="true" onclick="document.adminGroupMembersForm.submit();"/>
3526           Show members
3527         </xsl:otherwise>
3528       </xsl:choose>
3529     </form>
3530
3531     <p>Click on the group name to modify the group owner or description.<br/>
3532     Click "add/remove members" to modify group membership.</p>
3533     <p>
3534       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
3535     </p>
3536     <table id="commonListTable">
3537       <tr>
3538         <th>Name</th>
3539         <th>Description</th>
3540         <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
3541           <th>Members</th>
3542         </xsl:if>
3543         <th></th>
3544       </tr>
3545       <xsl:for-each select="/bedeworkadmin/groups/group">
3546         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3547         <xsl:variable name="groupName" select="name"/>
3548         <tr>
3549           <td>
3550             <a href="{$admingroup-fetchForUpdate}&amp;adminGroupName={$groupName}">
3551               <xsl:value-of select="name"/>
3552             </a>
3553           </td>
3554           <td>
3555             <xsl:value-of select="desc"/>
3556           </td>
3557           <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
3558             <td>
3559               <xsl:for-each select="members/member/account">
3560                 <xsl:value-of select="."/>&#160;
3561               </xsl:for-each>
3562             </td>
3563           </xsl:if>
3564           <td>
3565             <a href="{$admingroup-fetchForUpdateMembers}&amp;adminGroupName={$groupName}">Add/Remove members</a>
3566           </td>
3567         </tr>
3568       </xsl:for-each>
3569     </table>
3570     <p>
3571       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
3572     </p>
3573   </xsl:template>
3574
3575   <xsl:template match="groups" mode="chooseGroup">
3576     <h2>Choose Your Administrative Group</h2>
3577
3578     <table id="commonListTable">
3579
3580       <tr>
3581         <th>Name</th>
3582         <th>Description</th>
3583       </tr>
3584
3585       <xsl:for-each select="group">
3586         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3587         <tr>
3588           <td>
3589             <xsl:variable name="admGroupName" select="name"/>
3590             <a href="{$setup}&amp;adminGroupName={$admGroupName}">
3591               <xsl:copy-of select="name"/>
3592             </a>
3593           </td>
3594           <td>
3595             <xsl:value-of select="desc"/>
3596           </td>
3597         </tr>
3598       </xsl:for-each>
3599     </table>
3600   </xsl:template>
3601
3602   <xsl:template name="modAdminGroup">
3603     <xsl:choose>
3604       <xsl:when test="/bedeworkadmin/creating = 'true'">
3605         <h2>Add Group</h2>
3606       </xsl:when>
3607       <xsl:otherwise>
3608         <h2>Modify Group</h2>
3609       </xsl:otherwise>
3610     </xsl:choose>
3611     <form name="peForm" method="post" action="{$admingroup-update}">
3612       <table id="adminGroupFormTable">
3613         <tr>
3614           <td class="fieldName">
3615             Name:
3616           </td>
3617           <td>
3618             <xsl:choose>
3619               <xsl:when test="/bedeworkadmin/creating = 'true'">
3620                 <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
3621               </xsl:when>
3622               <xsl:otherwise>
3623                 <xsl:value-of select="/bedeworkadmin/formElements/form/name"/>
3624               </xsl:otherwise>
3625             </xsl:choose>
3626           </td>
3627         </tr>
3628         <tr>
3629           <td class="fieldName">
3630             Description:
3631           </td>
3632           <td>
3633             <xsl:copy-of select="/bedeworkadmin/formElements/form/desc/*"/>
3634           </td>
3635         </tr>
3636         <tr>
3637           <td class="fieldName">
3638             Group owner:
3639           </td>
3640           <td>
3641             <xsl:copy-of select="/bedeworkadmin/formElements/form/groupOwner/*"/>
3642           </td>
3643         </tr>
3644         <tr>
3645           <td class="fieldName">
3646             Events owner:
3647           </td>
3648           <td>
3649             <xsl:copy-of select="/bedeworkadmin/formElements/form/eventsOwner/*"/>
3650           </td>
3651         </tr>
3652       </table>
3653       <table border="0" id="submitTable">
3654         <tr>
3655           <td>
3656             <xsl:choose>
3657               <xsl:when test="/bedeworkadmin/creating = 'true'">
3658                 <input type="submit" name="updateAdminGroup" value="Add Admin Group"/>
3659                 <input type="submit" name="cancelled" value="Cancel"/>
3660                 <input type="reset" value="Clear"/>
3661               </xsl:when>
3662               <xsl:otherwise>
3663                 <input type="submit" name="updateAdminGroup" value="Update Admin Group"/>
3664                 <input type="submit" name="cancelled" value="Cancel"/>
3665                 <input type="reset" value="Reset"/>
3666               </xsl:otherwise>
3667             </xsl:choose>
3668           </td>
3669           <td align="right">
3670             <input type="submit" name="delete" value="Delete"/>
3671           </td>
3672         </tr>
3673       </table>
3674     </form>
3675   </xsl:template>
3676
3677   <xsl:template name="modAdminGroupMembers">
3678     <h2>Update Group Membership</h2>
3679     <p>Enter a userid (for user or group) and click "add" to update group membership.
3680     Click the trash icon to remove a user from the group.</p>
3681
3682     <form name="adminGroupMembersForm" method="post" action="{$admingroup-updateMembers}">
3683       <p>Add member:
3684         <input type="text" name="updGroupMember" size="15"/>
3685         <input type="radio" value="user" name="kind" checked="checked"/>user
3686         <input type="radio" value="group" name="kind"/>group
3687         <input type="submit" name="addGroupMember" value="Add"/>
3688       </p>
3689     </form>
3690     <p>
3691       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initUpdate}')" value="Return to Admin Group listing"/>
3692     </p>
3693
3694     <table id="adminGroupFormTable">
3695       <tr>
3696         <td class="fieldName">
3697           Name:
3698         </td>
3699         <td>
3700           <xsl:value-of select="/bedeworkadmin/adminGroup/name"/>
3701         </td>
3702       </tr>
3703       <tr>
3704         <td class="fieldName">
3705           Members:
3706         </td>
3707         <td>
3708           <table id="memberAccountList">
3709             <xsl:for-each select="/bedeworkadmin/adminGroup/members/member">
3710               <xsl:choose>
3711                 <xsl:when test="kind='0'"><!-- kind = user -->
3712                   <tr>
3713                     <td>
3714                       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
3715                     </td>
3716                     <td>
3717                       <xsl:value-of select="account"/>
3718                     </td>
3719                     <td>
3720                       <xsl:variable name="acct" select="account"/>
3721                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=user" title="remove">
3722                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
3723                       </a>
3724                     </td>
3725                   </tr>
3726                 </xsl:when>
3727                 <xsl:otherwise><!-- kind = group -->
3728                   <tr>
3729                     <td>
3730                       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3731                     </td>
3732                     <td>
3733                       <strong>
3734                         <xsl:value-of select="account"/>
3735                       </strong>
3736                     </td>
3737                     <td>
3738                       <xsl:variable name="acct" select="account"/>
3739                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=group" title="remove">
3740                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
3741                       </a>
3742                     </td>
3743                   </tr>
3744                 </xsl:otherwise>
3745               </xsl:choose>
3746             </xsl:for-each>
3747           </table>
3748         </td>
3749       </tr>
3750     </table>
3751     <p>
3752       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/> user,
3753       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3754       <xsl:text> </xsl:text>
3755       <strong>group</strong>
3756     </p>
3757   </xsl:template>
3758
3759   <xsl:template name="deleteAdminGroupConfirm">
3760     <h2>Delete Admin Group?</h2>
3761     <p>The following group will be deleted. Continue?</p>
3762     <p>
3763       <strong>
3764         <xsl:value-of select="/bedeworkadmin/groups/group/name"/>
3765       </strong>:
3766       <xsl:value-of select="/bedeworkadmin/groups/group/desc"/>
3767     </p>
3768     <form name="adminGroupDelete" method="post" action="{$admingroup-delete}">
3769       <input type="submit" name="removeAdminGroupOK" value="Yes: Delete!"/>
3770       <input type="submit" name="cancelled" value="No: Cancel"/>
3771     </form>
3772   </xsl:template>
3773
3774   <!--+++++++++++++++ System Stats ++++++++++++++++++++-->
3775
3776   <xsl:template match="sysStats" mode="showSysStats">
3777     <h2>System Statistics</h2>
3778
3779     <p>
3780       Stats collection:
3781     </p>
3782     <ul>
3783       <li>
3784         <a href="{$stats-update}&amp;enable=yes">enable</a> |
3785         <a href="{$stats-update}&amp;disable=yes">disable</a>
3786       </li>
3787       <li>
3788         <a href="{$stats-update}&amp;fetch=yes">fetch statistics</a>
3789       </li>
3790       <li>
3791         <a href="{$stats-update}&amp;dump=yes">dump stats to log</a>
3792       </li>
3793     </ul>
3794     <table id="statsTable" cellpadding="0">
3795       <xsl:for-each select="*">
3796         <xsl:choose>
3797           <xsl:when test="name(.) = 'header'">
3798             <tr>
3799               <th colspan="2">
3800                 <xsl:value-of select="."/>
3801               </th>
3802             </tr>
3803           </xsl:when>
3804           <xsl:otherwise>
3805             <tr>
3806               <td class="label">
3807                 <xsl:value-of select="label"/>
3808               </td>
3809               <td class="value">
3810                 <xsl:value-of select="value"/>
3811               </td>
3812             </tr>
3813           </xsl:otherwise>
3814         </xsl:choose>
3815       </xsl:for-each>
3816     </table>
3817   </xsl:template>
3818
3819   <!--==== HEADER TEMPLATES and NAVIGATION  ====-->
3820
3821   <xsl:template name="header">
3822     <div id="header">
3823       <a href="http://www.bedework.org">
3824         <img id="logo"
3825             alt="logo"
3826             src="{$resourcesRoot}/resources/bedeworkAdminLogo.gif"
3827             width="217"
3828             height="40"
3829             border="0"/>
3830       </a>
3831       <!-- set the page heading: -->
3832       <h1>
3833         <xsl:choose>
3834           <xsl:when test="/bedeworkadmin/page='modEvent' or /bedeworkadmin/page='eventList' or /bedeworkadmin/page='displayEvent'">
3835             Manage Events
3836           </xsl:when>
3837           <xsl:when test="/bedeworkadmin/page='sponsorList' or /bedeworkadmin/page='modSponsor' or /bedeworkadmin/page='deleteSponsorConfirm'">
3838             Manage Contacts
3839           </xsl:when>
3840           <xsl:when test="/bedeworkadmin/page='locationList' or /bedeworkadmin/page='modLocation' or /bedeworkadmin/page='deleteLocationConfirm'">
3841             Manage Locations
3842           </xsl:when>
3843           <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='modCalendar' or /bedeworkadmin/page='calendarReferenced' or /bedeworkadmin/page='deleteCalendarConfirm'">
3844             Manage Calendars
3845           </xsl:when>
3846           <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
3847             Public Calendars
3848           </xsl:when>
3849           <xsl:when test="/bedeworkadmin/page='subscriptions' or /bedeworkadmin/page='modSubscription'">
3850             Manage Subscriptions
3851           </xsl:when>
3852           <xsl:when test="/bedeworkadmin/page='views' or /bedeworkadmin/page='modView'">
3853             Manage Views
3854           </xsl:when>
3855           <xsl:when test="/bedeworkadmin/page='modSyspars'">
3856             Manage System Preferences
3857           </xsl:when>
3858           <xsl:when test="/bedeworkadmin/page='authUserList' or /bedeworkadmin/page='modAuthUser'">
3859             Manage Public Events Administrators
3860           </xsl:when>
3861           <xsl:when test="/bedeworkadmin/page='chooseGroup'">
3862             Choose Administrative Group
3863           </xsl:when>
3864           <xsl:when test="/bedeworkadmin/page='adminGroupList' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroupMembers'">
3865             Manage Administrative Groups
3866           </xsl:when>
3867           <xsl:when test="/bedeworkadmin/page='noGroup'">
3868             No Administrative Group
3869           </xsl:when>
3870           <xsl:when test="/bedeworkadmin/page='uploadTimezones'">
3871             Manage Time Zones
3872           </xsl:when>
3873           <xsl:when test="/bedeworkadmin/page='noAccess'">
3874             Access Denied
3875           </xsl:when>
3876           <xsl:when test="/bedeworkadmin/page='error'">
3877             Error
3878           </xsl:when>
3879           <xsl:otherwise>
3880             Bedework Calendar Administration
3881           </xsl:otherwise>
3882         </xsl:choose>
3883       </h1>
3884
3885       <xsl:if test="/bedeworkadmin/message">
3886         <div id="messages">
3887           <p>
3888             <xsl:apply-templates select="/bedeworkadmin/message"/>
3889           </p>
3890         </div>
3891       </xsl:if>
3892       <xsl:if test="/bedeworkadmin/error">
3893         <div id="errors">
3894           <p>
3895             <xsl:apply-templates select="/bedeworkadmin/error"/>
3896           </p>
3897         </div>
3898       </xsl:if>
3899
3900     </div>
3901     <table id="statusBarTable">
3902       <tr>
3903         <td class="leftCell">
3904           <a href="{$setup}">Main Menu</a> |
3905           <a href="{$publicCal}" target="calendar">Launch Calendar</a> |
3906           <a href="{$logout}">Log Out</a>
3907           <!-- Enable the following two items when debugging skins only -->
3908           | <a href="?refreshXslt=yes">Refresh XSL</a> |
3909           <a href="?noxslt=yes">Show XML</a> (view source)
3910         </td>
3911         <xsl:if test="/bedeworkadmin/userInfo/user">
3912           <td class="rightCell">
3913             <xsl:if test="/bedeworkadmin/currentCalSuite/name">
3914               Calendar Suite:
3915               <span class="status">
3916                 <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
3917               </span>
3918               &#160;
3919             </xsl:if>
3920             Logged in as:
3921             <span class="status">
3922               <xsl:value-of select="/bedeworkadmin/userInfo/user"/>
3923             </span>
3924             &#160;
3925             <xsl:if test="/bedeworkadmin/userInfo/group">
3926               Group:
3927               <span class="status">
3928                 <xsl:value-of select="/bedeworkadmin/userInfo/group"/>
3929               </span>
3930             </xsl:if>
3931           </td>
3932         </xsl:if>
3933       </tr>
3934     </table>
3935     <div id="titleBar">
3936       CALENDAR of EVENTS
3937     </div>
3938   </xsl:template>
3939
3940   <!--==== FOOTER ====-->
3941   <xsl:template name="footer">
3942     <div id="footer">
3943       <a href="http://www.bedework.org/">Bedework website</a>
3944     </div>
3945   </xsl:template>
3946 </xsl:stylesheet>
Note: See TracBrowser for help on using the browser.