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

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

adding better category support to admin UI

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