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

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

Fixes to get categories working in admin client

Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3   <xsl:output
4       method="html"
5       indent="yes"
6       media-type="text/html"
7       doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
8       doctype-system="http://www.w3.org/TR/html4/strict.dtd"
9       standalone="yes"
10       omit-xml-declaration="yes"/>
11
12   <!-- ======================================== -->
13   <!--      BEDEWORK ADMIN CLIENT STYLESHEET     -->
14   <!-- ========================================= -->
15
16   <!-- **********************************************************************
17     Copyright 2006 Rensselaer Polytechnic Institute. All worldwide rights reserved.
18
19     Redistribution and use of this distribution in source and binary forms,
20     with or without modification, are permitted provided that:
21        The above copyright notice and this permission notice appear in all
22         copies and supporting documentation;
23
24         The name, identifiers, and trademarks of Rensselaer Polytechnic
25         Institute are not used in advertising or publicity without the
26         express prior written permission of Rensselaer Polytechnic Institute;
27
28     DISCLAIMER: The software is distributed" AS IS" without any express or
29     implied warranty, including but not limited to, any implied warranties
30     of merchantability or fitness for a particular purpose or any warrant)'
31     of non-infringement of any current or pending patent rights. The authors
32     of the software make no representations about the suitability of this
33     software for any particular purpose. The entire risk as to the quality
34     and performance of the software is with the user. Should the software
35     prove defective, the user assumes the cost of all necessary servicing,
36     repair or correction. In particular, neither Rensselaer Polytechnic
37     Institute, nor the authors of the software are liable for any indirect,
38     special, consequential, or incidental damages related to the software,
39     to the maximum extent the law permits. -->
40
41   <!-- DEFINE INCLUDES -->
42   <xsl:include href="errors.xsl"/>
43   <xsl:include href="messages.xsl"/>
44
45   <!-- DEFINE GLOBAL CONSTANTS -->
46   <!-- URL of html resources (images, css, other html); by default this is
47        set to the application root, but for the admin client
48        this should be changed to point to a
49        web server over https to avoid mixed content errors, e.g.,
50   <xsl:variable name="resourcesRoot" select="'https://mywebserver.edu/myresourcesdir'"/>
51     -->
52   <xsl:variable name="resourcesRoot" select="/bedeworkadmin/approot"/>
53
54   <!-- URL of the XSL template directory -->
55   <!-- The approot is an appropriate place to put
56        included stylesheets and xml fragments. These are generally
57        referenced relatively (like errors.xsl and messages.xsl above);
58        this variable is here for your convenience if you choose to
59        reference it explicitly.  It is not used in this stylesheet, however,
60        and can be safely removed if you so choose. -->
61   <xsl:variable name="appRoot" select="/bedeworkadmin/approot"/>
62
63   <!-- Properly encoded prefixes to the application actions; use these to build
64        urls; allows the application to be used without cookies or within a portal.
65        we will probably change the way we create these before long (e.g. build them
66        dynamically in the xslt). -->
67   <xsl:variable name="setup" select="/bedeworkadmin/urlPrefixes/setup/a/@href"/>
68   <xsl:variable name="logout" select="/bedeworkadmin/urlPrefixes/logout/a/@href"/>
69   <!-- events -->
70   <xsl:variable name="event-showEvent" select="/bedeworkadmin/urlPrefixes/event/showEvent/a/@href"/>
71   <xsl:variable name="event-showModForm" select="/bedeworkadmin/urlPrefixes/event/showModForm/a/@href"/>
72   <xsl:variable name="event-showUpdateList" select="/bedeworkadmin/urlPrefixes/event/showUpdateList/a/@href"/>
73   <xsl:variable name="event-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/event/showDeleteConfirm/a/@href"/>
74   <xsl:variable name="event-initAddEvent" select="/bedeworkadmin/urlPrefixes/event/initAddEvent/a/@href"/>
75   <xsl:variable name="event-initUpdateEvent" select="/bedeworkadmin/urlPrefixes/event/initUpdateEvent/a/@href"/>
76   <xsl:variable name="event-delete" select="/bedeworkadmin/urlPrefixes/event/delete/a/@href"/>
77   <xsl:variable name="event-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/event/fetchForDisplay/a/@href"/>
78   <xsl:variable name="event-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/event/fetchForUpdate/a/@href"/>
79   <xsl:variable name="event-update" select="/bedeworkadmin/urlPrefixes/event/update/a/@href"/>
80   <xsl:variable name="event-selectCalForEvent" select="/bedeworkadmin/urlPrefixes/event/selectCalForEvent/a/@href"/>
81   <xsl:variable name="event-initUpload" select="/bedeworkadmin/urlPrefixes/event/initUpload/a/@href"/>
82   <xsl:variable name="event-upload" select="/bedeworkadmin/urlPrefixes/event/upload/a/@href"/>
83   <!-- sponsors -->
84   <xsl:variable name="sponsor-showSponsor" select="/bedeworkadmin/urlPrefixes/sponsor/showSponsor/a/@href"/>
85   <xsl:variable name="sponsor-showReferenced" select="/bedeworkadmin/urlPrefixes/sponsor/showReferenced/a/@href"/>
86   <xsl:variable name="sponsor-showModForm" select="/bedeworkadmin/urlPrefixes/sponsor/showModForm/a/@href"/>
87   <xsl:variable name="sponsor-showUpdateList" select="/bedeworkadmin/urlPrefixes/sponsor/showUpdateList/a/@href"/>
88   <xsl:variable name="sponsor-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/sponsor/showDeleteConfirm/a/@href"/>
89   <xsl:variable name="sponsor-initAdd" select="/bedeworkadmin/urlPrefixes/sponsor/initAdd/a/@href"/>
90   <xsl:variable name="sponsor-initUpdate" select="/bedeworkadmin/urlPrefixes/sponsor/initUpdate/a/@href"/>
91   <xsl:variable name="sponsor-delete" select="/bedeworkadmin/urlPrefixes/sponsor/delete/a/@href"/>
92   <xsl:variable name="sponsor-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/sponsor/fetchForDisplay/a/@href"/>
93   <xsl:variable name="sponsor-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/sponsor/fetchForUpdate/a/@href"/>
94   <xsl:variable name="sponsor-update" select="/bedeworkadmin/urlPrefixes/sponsor/update/a/@href"/>
95   <!-- locations -->
96   <xsl:variable name="location-showLocation" select="/bedeworkadmin/urlPrefixes/location/showLocation/a/@href"/>
97   <xsl:variable name="location-showReferenced" select="/bedeworkadmin/urlPrefixes/location/showReferenced/a/@href"/>
98   <xsl:variable name="location-showModForm" select="/bedeworkadmin/urlPrefixes/location/showModForm/a/@href"/>
99   <xsl:variable name="location-showUpdateList" select="/bedeworkadmin/urlPrefixes/location/showUpdateList/a/@href"/>
100   <xsl:variable name="location-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/location/showDeleteConfirm/a/@href"/>
101   <xsl:variable name="location-initAdd" select="/bedeworkadmin/urlPrefixes/location/initAdd/a/@href"/>
102   <xsl:variable name="location-initUpdate" select="/bedeworkadmin/urlPrefixes/location/initUpdate/a/@href"/>
103   <xsl:variable name="location-delete" select="/bedeworkadmin/urlPrefixes/location/delete/a/@href"/>
104   <xsl:variable name="location-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/location/fetchForDisplay/a/@href"/>
105   <xsl:variable name="location-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/location/fetchForUpdate/a/@href"/>
106   <xsl:variable name="location-update" select="/bedeworkadmin/urlPrefixes/location/update/a/@href"/>
107   <!-- categories -->
108   <xsl:variable name="category-showReferenced" select="/bedeworkadmin/urlPrefixes/category/showReferenced/a/@href"/>
109   <xsl:variable name="category-showModForm" select="/bedeworkadmin/urlPrefixes/category/showModForm/a/@href"/>
110   <xsl:variable name="category-showUpdateList" select="/bedeworkadmin/urlPrefixes/category/showUpdateList/a/@href"/>
111   <xsl:variable name="category-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/category/showDeleteConfirm/a/@href"/>
112   <xsl:variable name="category-initAdd" select="/bedeworkadmin/urlPrefixes/category/initAdd/a/@href"/>
113   <xsl:variable name="category-initUpdate" select="/bedeworkadmin/urlPrefixes/category/initUpdate/a/@href"/>
114   <xsl:variable name="category-delete" select="/bedeworkadmin/urlPrefixes/category/delete/a/@href"/>
115   <xsl:variable name="category-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/category/fetchForUpdate/a/@href"/>
116   <xsl:variable name="category-update" select="/bedeworkadmin/urlPrefixes/category/update/a/@href"/>
117   <!-- calendars -->
118   <xsl:variable name="calendar-fetch" select="/bedeworkadmin/urlPrefixes/calendar/fetch/a/@href"/>
119   <xsl:variable name="calendar-fetchDescriptions" select="/bedeworkadmin/urlPrefixes/calendar/fetchDescriptions/a/@href"/>
120   <xsl:variable name="calendar-initAdd" select="/bedeworkadmin/urlPrefixes/calendar/initAdd/a/@href"/>
121   <xsl:variable name="calendar-delete" select="/bedeworkadmin/urlPrefixes/calendar/delete/a/@href"/>
122   <xsl:variable name="calendar-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/calendar/fetchForDisplay/a/@href"/>
123   <xsl:variable name="calendar-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/calendar/fetchForUpdate/a/@href"/>
124   <xsl:variable name="calendar-update" select="/bedeworkadmin/urlPrefixes/calendar/update/a/@href"/>
125   <xsl:variable name="calendar-setAccess" select="/bedeworkadmin/urlPrefixes/calendar/setAccess/a/@href"/>
126   <!-- subscriptions -->
127   <xsl:variable name="subscriptions-fetch" select="/bedeworkadmin/urlPrefixes/subscriptions/fetch/a/@href"/>
128   <xsl:variable name="subscriptions-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/subscriptions/fetchForUpdate/a/@href"/>
129   <xsl:variable name="subscriptions-initAdd" select="/bedeworkadmin/urlPrefixes/subscriptions/initAdd/a/@href"/>
130   <xsl:variable name="subscriptions-subscribe" select="/bedeworkadmin/urlPrefixes/subscriptions/subscribe/a/@href"/>
131   <!-- views -->
132   <xsl:variable name="view-fetch" select="/bedeworkadmin/urlPrefixes/view/fetch/a/@href"/>
133   <xsl:variable name="view-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/view/fetchForUpdate/a/@href"/>
134   <xsl:variable name="view-addView" select="/bedeworkadmin/urlPrefixes/view/addView/a/@href"/>
135   <xsl:variable name="view-update" select="/bedeworkadmin/urlPrefixes/view/update/a/@href"/>
136   <xsl:variable name="view-remove" select="/bedeworkadmin/urlPrefixes/view/remove/a/@href"/>
137   <!-- system -->
138   <xsl:variable name="system-fetch" select="/bedeworkadmin/urlPrefixes/system/fetch/a/@href"/>
139   <xsl:variable name="system-update" select="/bedeworkadmin/urlPrefixes/system/update/a/@href"/>
140   <!-- calsuites -->
141   <xsl:variable name="calsuite-fetch" select="/bedeworkadmin/urlPrefixes/calsuite/fetch/a/@href"/>
142   <xsl:variable name="calsuite-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/calsuite/fetchForUpdate/a/@href"/>
143   <xsl:variable name="calsuite-add" select="/bedeworkadmin/urlPrefixes/calsuite/add/a/@href"/>
144   <xsl:variable name="calsuite-update" select="/bedeworkadmin/urlPrefixes/calsuite/update/a/@href"/>
145   <xsl:variable name="calsuite-showAddForm" select="/bedeworkadmin/urlPrefixes/calsuite/showAddForm/a/@href"/>
146   <xsl:variable name="calsuite-setAccess" select="/bedeworkadmin/urlPrefixes/calsuite/setAccess/a/@href"/>
147   <xsl:variable name="calsuite-fetchPrefsForUpdate" select="/bedeworkadmin/urlPrefixes/calsuite/fetchPrefsForUpdate/a/@href"/>
148   <xsl:variable name="calsuite-updatePrefs" select="/bedeworkadmin/urlPrefixes/calsuite/updatePrefs/a/@href"/>
149   <!-- timezones and stats -->
150   <xsl:variable name="timezones-initUpload" select="/bedeworkadmin/urlPrefixes/timezones/initUpload/a/@href"/>
151   <xsl:variable name="timezones-upload" select="/bedeworkadmin/urlPrefixes/timezones/upload/a/@href"/>
152   <xsl:variable name="stats-update" select="/bedeworkadmin/urlPrefixes/stats/update/a/@href"/>
153   <!-- authuser and prefs -->
154   <xsl:variable name="authuser-showModForm" select="/bedeworkadmin/urlPrefixes/authuser/showModForm/a/@href"/>
155   <xsl:variable name="authuser-showUpdateList" select="/bedeworkadmin/urlPrefixes/authuser/showUpdateList/a/@href"/>
156   <xsl:variable name="authuser-initUpdate" select="/bedeworkadmin/urlPrefixes/authuser/initUpdate/a/@href"/>
157   <xsl:variable name="authuser-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/authuser/fetchForUpdate/a/@href"/>
158   <xsl:variable name="authuser-update" select="/bedeworkadmin/urlPrefixes/authuser/update/a/@href"/>
159   <xsl:variable name="prefs-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/prefs/fetchForUpdate/a/@href"/>
160   <xsl:variable name="prefs-update" select="/bedeworkadmin/urlPrefixes/prefs/update/a/@href"/>
161   <!-- admin groups -->
162   <xsl:variable name="admingroup-showModForm" select="/bedeworkadmin/urlPrefixes/admingroup/showModForm/a/@href"/>
163   <xsl:variable name="admingroup-showModMembersForm" select="/bedeworkadmin/urlPrefixes/admingroup/showModMembersForm/a/@href"/>
164   <xsl:variable name="admingroup-showUpdateList" select="/bedeworkadmin/urlPrefixes/admingroup/showUpdateList/a/@href"/>
165   <xsl:variable name="admingroup-showChooseGroup" select="/bedeworkadmin/urlPrefixes/admingroup/showChooseGroup/a/@href"/>
166   <xsl:variable name="admingroup-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/admingroup/showDeleteConfirm/a/@href"/>
167   <xsl:variable name="admingroup-initAdd" select="/bedeworkadmin/urlPrefixes/admingroup/initAdd/a/@href"/>
168   <xsl:variable name="admingroup-initUpdate" select="/bedeworkadmin/urlPrefixes/admingroup/initUpdate/a/@href"/>
169   <xsl:variable name="admingroup-delete" select="/bedeworkadmin/urlPrefixes/admingroup/delete/a/@href"/>
170   <xsl:variable name="admingroup-fetchUpdateList" select="/bedeworkadmin/urlPrefixes/admingroup/fetchUpdateList/a/@href"/>
171   <xsl:variable name="admingroup-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/admingroup/fetchForUpdate/a/@href"/>
172   <xsl:variable name="admingroup-fetchForUpdateMembers" select="/bedeworkadmin/urlPrefixes/admingroup/fetchForUpdateMembers/a/@href"/>
173   <xsl:variable name="admingroup-update" select="/bedeworkadmin/urlPrefixes/admingroup/update/a/@href"/>
174   <xsl:variable name="admingroup-updateMembers" select="/bedeworkadmin/urlPrefixes/admingroup/updateMembers/a/@href"/>
175   <xsl:variable name="admingroup-switch" select="/bedeworkadmin/urlPrefixes/admingroup/switch/a/@href"/>
176
177   <!-- URL of the web application - includes web context
178   <xsl:variable name="urlPrefix" select="/bedeworkadmin/urlprefix"/> -->
179
180   <!-- Other generally useful global variables -->
181   <xsl:variable name="publicCal">/cal</xsl:variable>
182
183   <!--==== MAIN TEMPLATE  ====-->
184   <xsl:template match="/">
185     <html lang="en">
186       <head>
187         <title>Calendar Admin: Events Calendar Administration</title>
188         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
189         <link rel="stylesheet" href="{$resourcesRoot}/default/default/default.css"/>
190         <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             <table cellspacing="0">
986               <tr>
987                 <xsl:if test="/bedeworkadmin/formElements/form/calendar/preferred/select/option">
988                   <td>
989                     Select preferred:
990                     <select name="categoryKey" multiple="multiple" size="4">
991                       <xsl:for-each select="/bedeworkadmin/formElements/form/categories/preferred/category">
992                         <option><xsl:value-of select="keyword"/></option>
993                       </xsl:for-each>
994                     </select>
995                   </td>
996                 </xsl:if>
997                 <td>
998                   Select category (all):
999                   <select name="categoryKey" multiple="multiple" size="4">
1000                     <xsl:for-each select="/bedeworkadmin/formElements/form/categories/all/category">
1001                       <option><xsl:value-of select="keyword"/></option>
1002                     </xsl:for-each>
1003                   </select>
1004                 </td>
1005               </tr>
1006             </table>
1007             <div class="fieldInfo">
1008               Use CTRL-click to select multiple categories
1009             </div>
1010           </td>
1011         </tr>
1012         <!-- note -->
1013         <tr>
1014           <td colspan="2" style="padding-top: 1em;">
1015             <span class="fieldInfo">
1016               **<strong>If "preferred values" are enabled</strong>
1017               by your administrator, the category, location, and contact lists will
1018               contain only those value you've used previously.  If you don't find the value
1019               you need in one of these lists, use the "all" list adjacent to each
1020               of these fields.  The event you select from the "all" list will be added
1021               to your preferred list from that point on.  <strong>Note: if you don't
1022               find a location or contact at all, you can add a new one from the
1023               <a href="{$setup}">main menu</a>.</strong>
1024               Only administrators can create categories, however.
1025               To make sure you've used the
1026               correct category, please see the
1027               <a href="" target="_blank">Calendar Definitions</a>
1028             </span>
1029           </td>
1030         </tr>
1031
1032         <xsl:if test="/bedeworkadmin/formElements/form/sponsor/name">
1033           <tr>
1034             <td class="fieldName" colspan="2">
1035               <span class="std-text">
1036                 <span class="bold">or</span> add</span>
1037             </td>
1038           </tr>
1039           <tr>
1040             <td class="fieldName">
1041               Contact (name):
1042             </td>
1043             <td>
1044               <xsl:copy-of select="/bedeworkadmin/formElements/form/sponsor/name/*"/>
1045             </td>
1046           </tr>
1047           <tr>
1048             <td class="fieldName">
1049               Contact Phone Number:
1050             </td>
1051             <td>
1052               <xsl:copy-of select="/bedeworkadmin/formElements/form/sponsor/phone/*"/>
1053               <xsl:text> </xsl:text>
1054               <span class="fieldInfo">(optional)</span>
1055             </td>
1056           </tr>
1057           <tr>
1058             <td class="optional">
1059               Contact's URL:
1060             </td>
1061             <td>
1062               <xsl:copy-of select="/bedeworkadmin/formElements/form/sponsor/link/*"/>
1063               <xsl:text> </xsl:text>
1064               <span class="fieldInfo">(optional)</span>
1065             </td>
1066           </tr>
1067           <tr>
1068             <td class="optional">
1069               Contact Email Address:
1070             </td>
1071             <td>
1072               <xsl:copy-of select="/bedeworkadmin/formElements/form/sponsor/email/*"/>
1073               <xsl:text> </xsl:text>
1074               <span class="fieldInfo">(optional)</span> test
1075               <div id="sponsorEmailAlert">&#160;</div> <!-- space for email warning -->
1076             </td>
1077           </tr>
1078         </xsl:if>
1079       </table>
1080
1081       <table border="0" id="submitTable">
1082         <tr>
1083           <xsl:choose>
1084             <xsl:when test="/bedeworkadmin/creating='true'">
1085               <td>
1086                 <input type="submit" name="addEvent" value="Add Event"/>
1087                 <input type="submit" name="cancelled" value="Cancel"/>
1088                 <input type="reset" value="Clear"/>
1089               </td>
1090             </xsl:when>
1091             <xsl:otherwise>
1092               <td>
1093                 <input type="submit" name="updateEvent" value="Update Event"/>
1094                 <input type="submit" name="cancelled" value="Cancel"/>
1095                 <input type="submit" name="copy" value="Duplicate Event"/>
1096               </td>
1097               <td align="right">
1098                 <input type="submit" name="delete" value="Delete Event"/>
1099               </td>
1100             </xsl:otherwise>
1101           </xsl:choose>
1102         </tr>
1103       </table>
1104     </form>
1105   </xsl:template>
1106
1107   <xsl:template name="clock">
1108     <div id="bwClock">
1109       <!-- Bedework 24-Hour Clock time selection widget
1110            used with resources/bwClock.js and resources/bwClock.css -->
1111       <div id="bwClockClock">
1112         <img id="clockMap" src="{$resourcesRoot}/resources/clockMap.gif" width="368" height="368" border="0" alt="" usemap="#bwClockMap" />
1113       </div>
1114       <div id="bwClockCover">
1115         <!-- this is a special effect div used simply to cover the pixelated edge
1116              where the clock meets the clock box title --></div>
1117       <div id="bwClockBox">
1118         <h2>
1119           Bedework 24-Hour Clock
1120         </h2>
1121         <div id="bwClockDateTypeIndicator">
1122           type
1123         </div>
1124         <div id="bwClockTime">
1125           select time
1126         </div>
1127         <div id="bwClockCloseText">
1128           close
1129         </div>
1130         <div id="bwClockCloseButton">
1131           <a href="javascript:bwClockClose();">X</a>
1132         </div>
1133       </div>
1134       <map name="bwClockMap" id="bwClockMap">
1135         <area shape="rect" alt="close clock" title="close clock" coords="160,167, 200,200" href="javascript:bwClockClose()"/>
1136         <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')" />
1137         <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')" />
1138         <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')" />
1139         <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')" />
1140         <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')" />
1141         <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')" />
1142         <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')" />
1143         <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')" />
1144         <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')" />
1145         <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')" />
1146         <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')" />
1147         <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')" />
1148         <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')" />
1149         <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')" />
1150         <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')" />
1151         <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')" />
1152         <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')" />
1153         <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')" />
1154         <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')" />
1155         <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')" />
1156         <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')" />
1157         <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')" />
1158         <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')" />
1159         <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')" />
1160         <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')" />
1161         <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')" />
1162         <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')" />
1163         <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')" />
1164         <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')" />
1165         <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')" />
1166         <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')" />
1167         <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')" />
1168         <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')" />
1169         <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')" />
1170         <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')" />
1171         <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')" />
1172       </map>
1173     </div>
1174   </xsl:template>
1175
1176   <xsl:template match="event" mode="displayEvent">
1177     <xsl:choose>
1178       <xsl:when test="/bedeworkadmin/page='deleteEventConfirm'">
1179         <h2>Ok to delete this event?</h2>
1180         <p style="width: 400px;">Note: we do not encourage deletion of old but correct events; we prefer to keep
1181            old events for historical reasons.  Please remove only those events
1182            that are truly erroneous.</p>
1183         <p id="confirmButtons">
1184           <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1185         </p>
1186       </xsl:when>
1187       <xsl:otherwise>
1188         <h2>Event Information</h2>
1189       </xsl:otherwise>
1190     </xsl:choose>
1191
1192     <table class="eventFormTable">
1193       <tr>
1194         <th>
1195           ID:
1196         </th>
1197         <td>
1198           <xsl:value-of select="id"/>
1199         </td>
1200       </tr>
1201
1202       <tr>
1203         <th>
1204           Title:
1205         </th>
1206         <td>
1207           <xsl:value-of select="title"/>
1208         </td>
1209       </tr>
1210
1211       <tr>
1212         <th>
1213           Calendar:
1214         </th>
1215         <td>
1216           <xsl:value-of select="calendar"/>
1217         </td>
1218       </tr>
1219
1220       <tr>
1221         <th>
1222           Start:
1223         </th>
1224         <td>
1225           <xsl:value-of select="start/year"/>-<xsl:value-of select="start/month"/>-<xsl:value-of select="start/day"/>
1226           <xsl:text> </xsl:text>
1227           <xsl:choose>
1228             <xsl:when test="start/allDay='true'">
1229               <strong>all day event</strong>
1230             </xsl:when>
1231             <xsl:otherwise>
1232               <xsl:value-of select="start/hour"/>:<xsl:value-of select="start/minute"/>
1233               <xsl:if test="start/ampm">
1234                 <xsl:value-of select="start/ampm"/>
1235               </xsl:if>
1236             </xsl:otherwise>
1237           </xsl:choose>
1238         </td>
1239       </tr>
1240       <tr>
1241         <th>
1242           End:
1243         </th>
1244         <td>
1245           <xsl:choose>
1246             <xsl:when test="end/endtype = 'none'">
1247               <div class="dateFields" id="noDuration">
1248                 This event has no duration / end date
1249               </div>
1250             </xsl:when>
1251             <xsl:when test="end/endtype = 'duration'">
1252               <div class="dateFields">
1253                 <div class="invisible" id="endDuration">
1254                   <div class="durationBox">
1255                     <input type="text" name="eventDuration.daysStr" size="2" value="0" onChange="window.document.peForm.durationType[0].checked = true;"/>days
1256                     <input type="text" name="eventDuration.hoursStr" size="2" value="1" onChange="window.document.peForm.durationType[0].checked = true;"/>hours
1257                     <input type="text" name="eventDuration.minutesStr" size="2" value="0" onChange="window.document.peForm.durationType[0].checked = true;"/>minutes
1258                   </div>
1259                   <span class="durationSpacerText">or</span>
1260                   <div class="durationBox">
1261                     <input type="text" name="eventDuration.weeksStr" size="2" value="0" onChange="window.document.peForm.durationType[1].checked = true;"/>weeks
1262                   </div>
1263                 </div>
1264               </div>
1265             </xsl:when>
1266             <xsl:otherwise>
1267               <xsl:value-of select="end/dateTime/year"/>-<xsl:value-of select="end/dateTime/month"/>-<xsl:value-of select="end/dateTime/day"/>
1268               <xsl:text> </xsl:text>
1269               <xsl:value-of select="end/dateTime/hour"/>:<xsl:value-of select="end/dateTime/minute"/>
1270               <xsl:text> </xsl:text>
1271               <xsl:if test="end/dateTime/ampm">
1272                 <xsl:value-of select="end/dateTime/ampm"/>
1273               </xsl:if>
1274             </xsl:otherwise>
1275           </xsl:choose>
1276         </td>
1277       </tr>
1278
1279       <!--  Category  -->
1280       <tr>
1281         <th>
1282           Category:
1283         </th>
1284         <td>
1285           <xsl:value-of select="category"/>
1286         </td>
1287       </tr>
1288
1289       <!--  Description  -->
1290       <tr>
1291         <th>
1292           Description:
1293         </th>
1294         <td>
1295           <xsl:value-of select="desc"/>
1296         </td>
1297       </tr>
1298       <!-- Cost -->
1299       <tr>
1300         <th class="optional">
1301           Price:
1302         </th>
1303         <td>
1304           <xsl:value-of select="cost"/>
1305         </td>
1306       </tr>
1307       <!-- Url -->
1308       <tr>
1309         <th class="optional">
1310           URL:
1311         </th>
1312         <td>
1313           <xsl:variable name="eventLink" select="link"/>
1314           <a href="{$eventLink}">
1315             <xsl:value-of select="link"/>
1316           </a>
1317         </td>
1318       </tr>
1319       <!-- Location -->
1320       <tr>
1321         <th>
1322           Location:
1323         </th>
1324         <td>
1325           <xsl:value-of select="location"/>
1326         </td>
1327       </tr>
1328
1329       <!-- Sponsor -->
1330       <tr>
1331         <th>
1332           Contact:
1333         </th>
1334         <td>
1335           <xsl:value-of select="sponsor"/>
1336         </td>
1337       </tr>
1338
1339       <!-- Owner -->
1340       <tr>
1341         <th>
1342           Owner:
1343         </th>
1344         <td>
1345           <xsl:value-of select="creator"/>
1346         </td>
1347       </tr>
1348
1349     </table>
1350
1351
1352     <!--<xsl:if test="/bedeworkadmin/canEdit = 'true' or /bedeworkadmin/userInfo/superUser = 'true'">
1353       <xsl:variable name="subscriptionId" select="subscription/id"/>
1354       <xsl:variable name="calPath" select="calendar/encodedPath"/>
1355       <xsl:variable name="guid" select="guid"/>
1356       <xsl:variable name="recurrenceId" select="recurrenceId"/>
1357       <h3>
1358         <a href="{$event-fetchForUpdate}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
1359           Edit Event
1360         </a>
1361       </h3>
1362     </xsl:if>-->
1363   </xsl:template>
1364
1365   <!--+++++++++++++++ Sponsors (Contacts) ++++++++++++++++++++-->
1366   <xsl:template name="sponsorList">
1367     <h2>Edit Contacts</h2>
1368     <p>
1369       Select the contact you would like to update:
1370       <input type="button" name="return" value="Add new contact" onclick="javascript:location.replace('{$sponsor-initAdd}')"/>
1371     </p>
1372
1373     <table id="commonListTable">
1374       <tr>
1375         <th>Name</th>
1376         <th>Phone</th>
1377         <th>Email</th>
1378         <th>URL</th>
1379       </tr>
1380
1381       <xsl:for-each select="/bedeworkadmin/sponsors/sponsor">
1382         <tr>
1383           <td>
1384             <xsl:copy-of select="name" />
1385           </td>
1386           <td>
1387             <xsl:value-of select="phone" />
1388           </td>
1389           <td>
1390             <xsl:variable name="email" select="email"/>
1391             <a href="mailto:{$email}">
1392               <xsl:value-of select="email"/>
1393             </a>
1394           </td>
1395           <td>
1396             <xsl:variable name="link" select="link" />
1397             <a href="{$link}" target="linktest">
1398               <xsl:value-of select="link" />
1399             </a>
1400           </td>
1401         </tr>
1402       </xsl:for-each>
1403     </table>
1404   </xsl:template>
1405
1406   <xsl:template name="modSponsor">
1407     <form action="{$sponsor-update}" method="post">
1408       <h2>Contact Information</h2>
1409
1410       <table id="eventFormTable">
1411         <tr>
1412           <td class="fieldName">
1413             Contact:
1414           </td>
1415           <td>
1416             <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
1417           </td>
1418         </tr>
1419         <tr>
1420           <td class="fieldName">
1421             Contact Phone Number:
1422           </td>
1423           <td>
1424             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
1425             <span class="fieldInfo"> (optional)</span>
1426           </td>
1427         </tr>
1428         <tr>
1429           <td class="optional">
1430             Contact's URL:
1431           </td>
1432           <td>
1433             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
1434             <span class="fieldInfo"> (optional)</span>
1435           </td>
1436         </tr>
1437         <tr>
1438           <td class="optional">
1439             Contact Email Address:
1440           </td>
1441           <td>
1442             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
1443             <span class="fieldInfo"> (optional)</span>
1444           </td>
1445         </tr>
1446       </table>
1447
1448       <table border="0" id="submitTable">
1449         <tr>
1450           <xsl:choose>
1451             <xsl:when test="/bedeworkadmin/creating='true'">
1452               <td>
1453                 <input type="submit" name="addSponsor" value="Add Contact"/>
1454                 <input type="submit" name="cancelled" value="Cancel"/>
1455                 <input type="reset" value="Clear"/>
1456               </td>
1457             </xsl:when>
1458             <xsl:otherwise>
1459               <td>
1460                 <input type="submit" name="updateSponsor" value="Update Contact"/>
1461                 <input type="submit" name="cancelled" value="Cancel"/>
1462                 <input type="reset" value="Reset"/>
1463               </td>
1464               <td align="right">
1465                 <input type="submit" name="delete" value="Delete Contact"/>
1466               </td>
1467             </xsl:otherwise>
1468           </xsl:choose>
1469         </tr>
1470       </table>
1471
1472     </form>
1473   </xsl:template>
1474
1475   <xsl:template name="deleteSponsorConfirm">
1476     <h2>Ok to delete this contact?</h2>
1477     <p id="confirmButtons">
1478       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1479     </p>
1480
1481     <table class="eventFormTable">
1482       <tr>
1483         <th>Name</th>
1484         <td>
1485           <xsl:value-of select="/bedeworkadmin/sponsor/name" />
1486         </td>
1487       </tr>
1488       <tr>
1489         <th>Phone</th>
1490         <td>
1491           <xsl:value-of select="/bedeworkadmin/sponsor/phone" />
1492         </td>
1493       </tr>
1494       <tr>
1495         <th>Email</th>
1496         <td>
1497           <xsl:value-of select="/bedeworkadmin/sponsor/email" />
1498         </td>
1499       </tr>
1500       <tr>
1501         <th>URL</th>
1502         <td>
1503           <xsl:value-of select="/bedeworkadmin/sponsor/link" />
1504         </td>
1505       </tr>
1506     </table>
1507   </xsl:template>
1508
1509    <!--+++++++++++++++ Locations ++++++++++++++++++++-->
1510   <xsl:template name="locationList">
1511     <h2>Edit Locations</h2>
1512     <p>
1513       Select the location that you would like to update:
1514       <input type="button" name="return" value="Add new location" onclick="javascript:location.replace('{$location-initAdd}')"/>
1515     </p>
1516
1517     <table id="commonListTable">
1518       <tr>
1519         <th>Address</th>
1520         <th>Subaddress</th>
1521         <th>URL</th>
1522       </tr>
1523
1524       <xsl:for-each select="/bedeworkadmin/locations/location">
1525         <tr>
1526           <td>
1527             <xsl:copy-of select="address/*"/>
1528           </td>
1529           <td>
1530             <xsl:value-of select="subaddress"/>
1531           </td>
1532           <td>
1533             <xsl:variable name="link" select="link" />
1534             <a href="{$link}" target="linktest">
1535               <xsl:value-of select="link" />
1536             </a>
1537           </td>
1538         </tr>
1539       </xsl:for-each>
1540     </table>
1541   </xsl:template>
1542
1543   <xsl:template name="modLocation">
1544     <xsl:choose>
1545       <xsl:when test="/bedeworkadmin/creating='true'">
1546         <h2>Add Location</h2>
1547       </xsl:when>
1548       <xsl:otherwise>
1549         <h2>Update Location</h2>
1550       </xsl:otherwise>
1551     </xsl:choose>
1552
1553     <form action="{$location-update}" method="post">
1554       <table id="eventFormTable">
1555         <tr>
1556           <td class="fieldName">
1557             Address:
1558           </td>
1559           <td>
1560             <xsl:copy-of select="/bedeworkadmin/formElements/form/address/*"/>
1561           </td>
1562         </tr>
1563         <tr>
1564           <td class="optional">
1565             Subaddress:
1566           </td>
1567           <td>
1568             <xsl:copy-of select="/bedeworkadmin/formElements/form/subaddress/*"/>
1569             <span class="fieldInfo"> (optional)</span>
1570           </td>
1571         </tr>
1572         <tr>
1573           <td class="optional">
1574             Location's URL:
1575           </td>
1576           <td>
1577             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
1578             <span class="fieldInfo"> (optional)</span>
1579           </td>
1580         </tr>
1581       </table>
1582
1583       <table border="0" id="submitTable">
1584         <tr>
1585           <xsl:choose>
1586             <xsl:when test="/bedeworkadmin/creating='true'">
1587               <td>
1588                 <input type="submit" name="addLocation" value="Add Location"/>
1589                 <input type="submit" name="cancelled" value="Cancel"/>
1590                 <input type="reset" value="Clear"/>
1591               </td>
1592             </xsl:when>
1593             <xsl:otherwise>
1594               <td>
1595                 <input type="submit" name="updateLocation" value="Update Location"/>
1596                 <input type="submit" name="cancelled" value="Cancel"/>
1597                 <input type="reset" value="Reset"/>
1598               </td>
1599               <td align="right">
1600                 <input type="submit" name="delete" value="Delete Location"/>
1601               </td>
1602             </xsl:otherwise>
1603           </xsl:choose>
1604         </tr>
1605       </table>
1606     </form>
1607   </xsl:template>
1608
1609   <xsl:template name="deleteLocationConfirm">
1610     <h2>Ok to delete this location?</h2>
1611     <p id="confirmButtons">
1612       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1613     </p>
1614
1615     <table class="eventFormTable">
1616       <tr>
1617         <td class="fieldName">
1618             Address:
1619           </td>
1620         <td>
1621           <xsl:value-of select="/bedeworkadmin/location/address"/>
1622         </td>
1623       </tr>
1624       <tr>
1625         <td class="optional">
1626             Subaddress:
1627           </td>
1628         <td>
1629           <xsl:value-of select="/bedeworkadmin/location/subaddress"/>
1630         </td>
1631       </tr>
1632       <tr>
1633         <td class="optional">
1634             Location's URL:
1635           </td>
1636         <td>
1637           <xsl:variable name="link" select="/bedeworkadmin/location/link"/>
1638           <a href="{$link}">
1639             <xsl:value-of select="/bedeworkadmin/location/link"/>
1640           </a>
1641         </td>
1642       </tr>
1643     </table>
1644   </xsl:template>
1645
1646    <!--+++++++++++++++ Categories ++++++++++++++++++++-->
1647   <xsl:template name="categoryList">
1648     <h2>Edit Categories</h2>
1649     <p>
1650       Select the category you would like to update:
1651       <input type="button" name="return" value="Add new category" onclick="javascript:location.replace('{$category-initAdd}')"/>
1652     </p>
1653
1654     <table id="commonListTable">
1655       <tr>
1656         <th>Keyword</th>
1657         <th>Description</th>
1658       </tr>
1659
1660       <xsl:for-each select="/bedeworkadmin/categories/category">
1661         <xsl:variable name="categoryId" select="id"/>
1662         <tr>
1663           <td>
1664             <a href="{$category-fetchForUpdate}&amp;categoryId={$categoryId}">
1665               <xsl:copy-of select="keyword"/>
1666             </a>
1667           </td>
1668           <td>
1669             <xsl:value-of select="desc"/>
1670           </td>
1671         </tr>
1672       </xsl:for-each>
1673     </table>
1674   </xsl:template>
1675
1676   <xsl:template name="modCategory">
1677     <xsl:choose>
1678       <xsl:when test="/bedeworkadmin/creating='true'">
1679         <h2>Add Category</h2>
1680         <form action="{$category-update}" method="post">
1681           <table id="eventFormTable">
1682             <tr>
1683               <td class="fieldName">
1684                 Keyword:
1685               </td>
1686               <td>
1687                 <input type="text" name="category.word" value="" size="40"/>
1688               </td>
1689             </tr>
1690             <tr>
1691               <td class="optional">
1692                 Description:
1693               </td>
1694               <td>
1695                 <textarea name="category.description" rows="3" cols="60">
1696                 </textarea>
1697               </td>
1698             </tr>
1699           </table>
1700           <table border="0" id="submitTable">
1701             <tr>
1702               <td>
1703                 <input type="submit" name="addCategory" value="Add Category"/>
1704                 <input type="submit" name="cancelled" value="Cancel"/>
1705                 <input type="reset" value="Clear"/>
1706               </td>
1707             </tr>
1708           </table>
1709         </form>
1710       </xsl:when>
1711       <xsl:otherwise>
1712         <h2>Update Category</h2>
1713         <form action="{$category-update}" method="post">
1714           <table id="eventFormTable">
1715             <tr>
1716               <td class="fieldName">
1717             Keyword:
1718             </td>
1719               <td>
1720                 <xsl:variable name="keyword" select="normalize-space(/bedeworkadmin/currentCategory/category/keyword)"/>
1721                 <input type="text" name="category.word" value="{$keyword}" size="40"/>
1722               </td>
1723             </tr>
1724             <tr>
1725               <td class="optional">
1726             Description:
1727             </td>
1728               <td>
1729                 <textarea name="category.description" rows="3" cols="60">
1730                   <xsl:value-of select="normalize-space(/bedeworkadmin/currentCategory/category/desc)"/>
1731                 </textarea>
1732               </td>
1733             </tr>
1734           </table>
1735
1736           <table border="0" id="submitTable">
1737             <tr>
1738               <td>
1739                 <input type="submit" name="updateCategory" value="Update Category"/>
1740                 <input type="submit" name="cancelled" value="Cancel"/>
1741                 <input type="reset" value="Reset"/>
1742               </td>
1743               <td align="right">
1744                 <input type="submit" name="delete" value="Delete Category"/>
1745               </td>
1746             </tr>
1747           </table>
1748         </form>
1749       </xsl:otherwise>
1750     </xsl:choose>
1751
1752
1753   </xsl:template>
1754
1755   <xsl:template name="deleteCategoryConfirm">
1756     <h2>Ok to delete this category?</h2>
1757     <p id="confirmButtons">
1758       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1759     </p>
1760
1761     <table class="eventFormTable">
1762       <tr>
1763         <td class="fieldName">
1764           Keyword:
1765         </td>
1766         <td>
1767           <xsl:value-of select="/bedeworkadmin/currentCategory/category/keyword"/>
1768         </td>
1769       </tr>
1770       <tr>
1771         <td class="optional">
1772           Description:
1773         </td>
1774         <td>
1775           <xsl:value-of select="/bedeworkadmin/currentCategory/category/desc"/>
1776         </td>
1777       </tr>
1778     </table>
1779   </xsl:template>
1780
1781 <!--+++++++++++++++ Calendars ++++++++++++++++++++-->
1782   <xsl:template match="calendars">
1783     <table id="calendarTable">
1784       <tr>
1785         <td class="cals">
1786           <h3>Public calendars</h3>
1787           <ul id="calendarTree">
1788             <xsl:choose>
1789               <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
1790                 <xsl:apply-templates select="calendar" mode="listForDisplay"/>
1791               </xsl:when>
1792               <xsl:otherwise>
1793                 <xsl:apply-templates select="calendar" mode="listForUpdate"/>
1794               </xsl:otherwise>
1795             </xsl:choose>
1796           </ul>
1797         </td>
1798         <td class="calendarContent">
1799           <xsl:choose>
1800             <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='calendarReferenced'">
1801               <xsl:call-template name="calendarList"/>
1802             </xsl:when>
1803             <xsl:when test="/bedeworkadmin/page='calendarDescriptions'">
1804               <xsl:call-template name="calendarDescriptions"/>
1805             </xsl:when>
1806             <xsl:when test="/bedeworkadmin/page='displayCalendar'">
1807               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="displayCalendar"/>
1808             </xsl:when>
1809             <xsl:when test="/bedeworkadmin/page='deleteCalendarConfirm'">
1810               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="deleteCalendarConfirm"/>
1811             </xsl:when>
1812             <xsl:when test="/bedeworkadmin/creating='true'">
1813               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="addCalendar"/>
1814             </xsl:when>
1815             <xsl:otherwise>
1816               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="modCalendar"/>
1817             </xsl:otherwise>
1818           </xsl:choose>
1819         </td>
1820       </tr>
1821     </table>
1822   </xsl:template>
1823
1824   <xsl:template match="calendar" mode="listForUpdate">
1825     <xsl:variable name="calPath" select="encodedPath"/>
1826     <xsl:variable name="itemClass">
1827       <xsl:choose>
1828         <xsl:when test="calendarCollection='false'">folder</xsl:when>
1829         <xsl:otherwise>calendar</xsl:otherwise>
1830       </xsl:choose>
1831     </xsl:variable>
1832     <li class="{$itemClass}">
1833       <a href="{$calendar-fetchForUpdate}&amp;calPath={$calPath}" title="update">
1834         <xsl:value-of select="name"/>
1835       </a>
1836       <xsl:if test="calendarCollection='false'">
1837         <xsl:text> </xsl:text>
1838         <a href="{$calendar-initAdd}&amp;calPath={$calPath}" title="add a calendar or folder">
1839           <img src="{$resourcesRoot}/resources/calAddIcon.gif" width="13" height="13" alt="add a calendar or folder" border="0"/>
1840         </a>
1841       </xsl:if>
1842       <xsl:if test="calendar">
1843         <ul>
1844           <xsl:apply-templates select="calendar" mode="listForUpdate">
1845             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
1846         </ul>
1847       </xsl:if>
1848     </li>
1849   </xsl:template>
1850
1851   <xsl:template match="calendar" mode="listForDisplay">
1852     <xsl:variable name="calPath" select="encodedPath"/>
1853     <xsl:variable name="itemClass">
1854       <xsl:choose>
1855         <xsl:when test="calendarCollection='false'">folder</xsl:when>
1856         <xsl:otherwise>calendar</xsl:otherwise>
1857       </xsl:choose>
1858     </xsl:variable>
1859     <li class="{$itemClass}">
1860       <a href="{$calendar-fetchForDisplay}&amp;calPath={$calPath}" title="display">
1861         <xsl:value-of select="name"/>
1862       </a>
1863       <xsl:if test="calendar">
1864         <ul>
1865           <xsl:apply-templates select="calendar" mode="listForDisplay">
1866             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
1867         </ul>
1868       </xsl:if>
1869     </li>
1870   </xsl:template>
1871
1872   <xsl:template match="currentCalendar" mode="addCalendar">
1873     <h3>Add Calendar / Folder</h3>
1874     <form name="addCalForm" action="{$calendar-update}">
1875       <table class="eventFormTable">
1876         <tr>
1877           <th>Name:</th>
1878           <td>
1879             <xsl:variable name="curCalName" select="name"/>
1880             <input name="calendar.name" value="{$curCalName}" size="40"/>
1881           </td>
1882         </tr>
1883         <tr>
1884           <th>Summary:</th>
1885           <td>
1886             <xsl:variable name="curCalSummary" select="summary"/>
1887             <input type="text" name="calendar.summary" value="{$curCalSummary}" size="40"/>
1888           </td>
1889         </tr>
1890         <tr>
1891           <th>Description:</th>
1892           <td>
1893             <textarea name="calendar.description" cols="40" rows="4">
1894               <xsl:value-of select="desc"/>
1895             </textarea>
1896           </td>
1897         </tr>
1898         <tr>
1899           <th>Calendar/Folder:</th>
1900           <td>
1901             <xsl:choose>
1902               <xsl:when test="calendarCollection='true'">
1903                 <input type="radio" value="true" name="calendarCollection" checked="checked"/> Calendar
1904                 <input type="radio" value="false" name="calendarCollection"/> Folder
1905               </xsl:when>
1906               <xsl:otherwise>
1907                 <input type="radio" value="true" name="calendarCollection"/> Calendar
1908                 <input type="radio" value="false" name="calendarCollection" checked="checked"/> Folder
1909               </xsl:otherwise>
1910             </xsl:choose>
1911           </td>
1912         </tr>
1913       </table>
1914
1915       <table border="0" id="submitTable">
1916         <tr>
1917           <td>
1918             <input type="submit" name="addCalendar" value="Add Calendar/Folder"/>
1919             <input type="submit" name="cancelled" value="Cancel"/>
1920             <input type="reset" value="Clear"/>
1921           </td>
1922         </tr>
1923       </table>
1924     </form>
1925     <div id="sharingBox">
1926       <h3>Sharing</h3>
1927       Sharing may be added to a calendar once created.
1928     </div>
1929   </xsl:template>
1930
1931   <xsl:template match="currentCalendar" mode="modCalendar">
1932     <xsl:choose>
1933       <xsl:when test="calendarCollection='true'">
1934         <h3>Modify Calendar</h3>
1935       </xsl:when>
1936       <xsl:otherwise>
1937         <h3>Modify Folder</h3>
1938       </xsl:otherwise>
1939     </xsl:choose>
1940     <form name="modCalForm" action="{$calendar-update}">
1941       <table class="eventFormTable">
1942         <tr>
1943           <th>Path:</th>
1944           <td>
1945             <xsl:value-of select="path"/>
1946           </td>
1947         </tr>
1948         <tr>
1949           <th>Name:</th>
1950           <td>
1951             <xsl:value-of select="name"/>
1952           </td>
1953         </tr>
1954         <tr>
1955           <th>Mailing List ID:</th>
1956           <td>
1957             <xsl:value-of select="mailListId"/>
1958           </td>
1959         </tr>
1960         <tr>
1961           <th>Summary:</th>
1962           <td>
1963             <xsl:variable name="curCalSummary" select="summary"/>
1964             <input type="text" name="calendar.summary" value="{$curCalSummary}" size="40"/>
1965           </td>
1966         </tr>
1967         <tr>
1968           <th>Description:</th>
1969           <td>
1970             <textarea name="calendar.description" cols="40" rows="4">
1971               <xsl:value-of select="desc"/>
1972             </textarea>
1973           </td>
1974         </tr>
1975         <tr>
1976           <th>Calendar/Folder:</th>
1977           <td>
1978             <xsl:choose>
1979               <xsl:when test="calendarCollection='true'">
1980                 <input type="radio" value="true" name="calendarCollection" checked="checked"/> Calendar
1981                 <input type="radio" value="false" name="calendarCollection"/> Folder
1982               </xsl:when>
1983               <xsl:otherwise>
1984                 <input type="radio" value="true" name="calendarCollection"/> Calendar
1985                 <input type="radio" value="false" name="calendarCollection" checked="checked"/> Folder
1986               </xsl:otherwise>
1987             </xsl:choose>
1988           </td>
1989         </tr>
1990       </table>
1991
1992       <table border="0" id="submitTable">
1993         <tr>
1994           <td>
1995             <xsl:choose>
1996               <xsl:when test="calendarCollection='true'">
1997                 <input type="submit" name="updateCalendar" value="Update Calendar"/>
1998               </xsl:when>
1999               <xsl:otherwise>
2000                 <input type="submit" name="updateCalendar" value="Update Folder"/>
2001               </xsl:otherwise>
2002             </xsl:choose>
2003             <input type="submit" name="cancelled" value="Cancel"/>
2004             <input type="reset" value="Reset"/>
2005           </td>
2006           <td align="right">
2007             <xsl:choose>
2008               <xsl:when test="calendarCollection='true'">
2009                 <input type="submit" name="delete" value="Delete Calendar"/>
2010               </xsl:when>
2011               <xsl:otherwise>
2012                 <input type="submit" name="delete" value="Delete Folder"/>
2013               </xsl:otherwise>
2014             </xsl:choose>
2015           </td>
2016         </tr>
2017       </table>
2018     </form>
2019     <div id="sharingBox">
2020       <xsl:variable name="calPath" select="path"/>
2021       <h3>Sharing</h3>
2022       <table class="common">
2023         <tr>
2024           <th class="commonHeader" colspan="2">Current access:</th>
2025         </tr>
2026         <xsl:for-each select="acl/ace">
2027           <tr>
2028             <th class="thin">
2029               <xsl:choose>
2030                 <xsl:when test="invert">
2031                   <em>Deny to
2032                   <xsl:choose>
2033                     <xsl:when test="invert/principal/href">
2034                       <xsl:value-of select="invert/principal/href"/>
2035                       </xsl:when>
2036                       <xsl:when test="invert/principal/property">
2037                         <xsl:value-of select="name(invert/principal/property/*)"/>
2038                       </xsl:when>
2039                       <xsl:otherwise>
2040                         <xsl:value-of select="name(invert/principal/*)"/>
2041                       </xsl:otherwise>
2042                     </xsl:choose>
2043                   </em>
2044                 </xsl:when>
2045                 <xsl:otherwise>
2046                   <xsl:choose>
2047                     <xsl:when test="principal/href">
2048                       <xsl:value-of select="principal/href"/>
2049                     </xsl:when>
2050                     <xsl:when test="principal/property">
2051                       <xsl:value-of select="name(principal/property/*)"/>
2052                     </xsl:when>
2053                     <xsl:otherwise>
2054                       <xsl:value-of select="name(principal/*)"/>
2055                     </xsl:otherwise>
2056                   </xsl:choose>
2057                 </xsl:otherwise>
2058               </xsl:choose>
2059             </th>
2060             <td>
2061               <xsl:for-each select="grant/node()">
2062                 <xsl:value-of select="name(.)"/>&#160;&#160;
2063               </xsl:for-each>
2064             </td>
2065           </tr>
2066         </xsl:for-each>
2067       </table>
2068       <form name="calendarShareForm" action="{$calendar-setAccess}" id="shareForm" method="post">
2069         <input type="hidden" name="calPath" value="{$calPath}"/>
2070         <table cellpadding="0" id="shareFormTable" class="common">
2071           <tr>
2072             <th colspan="2" class="commonHeader">Add:</th>
2073           </tr>
2074           <tr>
2075             <td>
2076               <h5>Who:</h5>
2077               <input type="text" name="who" size="20"/>
2078               <br/>
2079               <input type="radio" value="user" name="whoType" checked="checked"/> user
2080               <input type="radio" value="group" name="whoType"/> group
2081               <p>OR</p>
2082               <p>
2083                 <input type="radio" value="auth" name="whoType"/> all authorized users<br/>
2084                 <input type="radio" value="other" name="whoType"/> other users
2085               </p>
2086             </td>
2087             <td>
2088               <h5>Rights:</h5>
2089               <ul id="howList">
2090
2091                 <!--<li>
2092                   <input type="radio" value="A" name="how"/> All
2093                   <ul>
2094                     <li>
2095                       <input type="radio" value="R" name="how" checked="checked"/> Read
2096                       <ul>
2097                         <li>
2098                           <input type="radio" value="r" name="how" disabled="disabled"/> Read acl
2099                         </li>
2100                         <li>
2101                           <input type="radio" value="P" name="how" disabled="disabled"/> Read current user privilege set
2102                         </li>
2103                         <li>
2104                           <input type="radio" value="f" name="how"/> Read free/busy
2105                         </li>
2106                       </ul>
2107                     </li>
2108                     <li>
2109                       <input type="radio" value="W" name="how"/> Write
2110                       <ul>
2111                         <li>
2112                           <input type="radio" value="a" name="how" disabled="disabled"/> Write acl
2113                         </li>
2114                         <li>
2115                           <input type="radio" value="p" name="how" disabled="disabled"/> Write properties
2116                         </li>
2117                         <li>
2118                           <input type="radio" value="c" name="how"/> Write content
2119                         </li>
2120                         <li>
2121                           <input type="radio" value="b" name="how" disabled="disabled"/> Bind (includes scheduling)
2122                         </li>
2123                         <li>
2124                           <input type="radio" value="u" name="how"/> Unbind (destroy)
2125                         </li>
2126                       </ul>
2127                     </li>
2128                   </ul>
2129                 </li>
2130                 <li>
2131                   <input type="radio" value="N" name="how"/> None
2132                 </li>-->
2133
2134                 <li>
2135                   <input type="radio" value="A" name="how"/>
2136                   <strong>All</strong> (read, write, delete)</li>
2137                 <li class="padTop">
2138                   <input type="radio" value="R" name="how" checked="checked"/>
2139                   <strong>Read</strong> (content, access, freebusy)
2140                 </li>
2141                 <li>
2142                   <input type="radio" value="f" name="how"/> Read freebusy only
2143                 </li>
2144                 <li class="padTop">
2145                   <input type="radio" value="W" name="how"/>
2146                   <strong>Write and delete</strong> (content, access, properties)
2147                 </li>
2148                 <li>
2149                   <input type="radio" value="c" name="how"/> Write content only
2150                 </li>
2151                 <li>
2152                   <input type="radio" value="u" name="how"/> Delete only
2153                 </li>
2154                 <li class="padTop">
2155                   <input type="radio" value="Rc" name="how"/>
2156                   <strong>Read</strong> and <strong>Write content only</strong>
2157                 </li>
2158                 <li class="padTop">
2159                   <input type="radio" value="N" name="how"/>
2160                   <strong>None</strong>
2161                 </li>
2162               </ul>
2163             </td>
2164           </tr>
2165         </table>
2166         <input type="submit" name="submit" value="Submit"/>
2167       </form>
2168     </div>
2169   </xsl:template>
2170
2171   <xsl:template name="calendarList">
2172     <h3>Manage Calendars</h3>
2173     <ul>
2174       <li>Select an item from the calendar list on the left to modify
2175       a calendar or folder.</li>
2176       <li>Select the
2177       <img src="{$resourcesRoot}/resources/calAddIcon.gif" width="13" height="13" alt="true" border="0"/>
2178       icon to add a new calendar or folder to the tree.
2179         <ul>
2180           <li>Folders may only contain calendars and subfolders.</li>
2181           <li>Calendars may only contain events (and other calendar items).</li>
2182           <li>
2183             If a calendar is empty, it may be converted to a folder and vice
2184             versa.  If a calendar or folder are not empty, it may not be
2185             converted.
2186           </li>
2187         </ul>
2188       </li>
2189     </ul>
2190   </xsl:template>
2191
2192   <xsl:template name="calendarDescriptions">
2193     <h2>Calendar Information</h2>
2194     <ul>
2195       <li>Select an item from the calendar tree on the left to view all information
2196       about that calendar or folder.  The tree on the left represents the calendar
2197       heirarchy.</li>
2198     </ul>
2199
2200     <p>
2201       <strong>All Calendar Descriptions:</strong>
2202     </p>
2203     <table id="flatCalendarDescriptions" cellspacing="0">
2204       <tr>
2205         <th>Name</th>
2206         <th>Description</th>
2207       </tr>
2208       <xsl:for-each select="//calendar">
2209         <xsl:variable name="descClass">
2210           <xsl:choose>
2211             <xsl:when test="position() mod 2 = 0">even</xsl:when>
2212             <xsl:otherwise>odd</xsl:otherwise>
2213           </xsl:choose>
2214         </xsl:variable>
2215         <tr class="{$descClass}">
2216           <td>
2217             <xsl:value-of select="name"/>
2218           </td>
2219           <td>
2220             <xsl:value-of select="desc"/>
2221           </td>
2222         </tr>
2223       </xsl:for-each>
2224     </table>
2225   </xsl:template>
2226
2227   <xsl:template match="currentCalendar" mode="displayCalendar">
2228     <h2>Calendar Information</h2>
2229     <table class="eventFormTable">
2230       <tr>
2231         <th>Name:</th>
2232         <td>
2233           <xsl:value-of select="name"/>
2234         </td>
2235       </tr>
2236       <tr>
2237         <th>Path:</th>
2238         <td>
2239           <xsl:value-of select="path"/>
2240         </td>
2241       </tr>
2242       <tr>
2243         <th>Summary:</th>
2244         <td>
2245           <xsl:value-of select="summary"/>
2246         </td>
2247       </tr>
2248       <tr>
2249         <th>Description:</th>
2250         <td>
2251           <xsl:value-of select="desc"/>
2252         </td>
2253       </tr>
2254     </table>
2255   </xsl:template>
2256
2257   <xsl:template match="currentCalendar" mode="deleteCalendarConfirm">
2258     <xsl:choose>
2259       <xsl:when test="calendarCollection='true'">
2260         <h3>Delete Calendar</h3>
2261         <p>
2262           The following calendar will be deleted.  Continue?
2263         </p>
2264       </xsl:when>
2265       <xsl:otherwise>
2266         <h3>Delete Folder</h3>
2267         <p>
2268           The following folder <em>and all its contents</em> will be deleted.
2269           Continue?
2270         </p>
2271       </xsl:otherwise>
2272     </xsl:choose>
2273
2274     <form name="delCalForm" action="{$calendar-delete}">
2275       <table class="eventFormTable">
2276         <tr>
2277           <th>Path:</th>
2278           <td>
2279             <xsl:value-of select="path"/>
2280           </td>
2281         </tr>
2282         <tr>
2283           <th>Name:</th>
2284           <td>
2285             <xsl:value-of select="name"/>
2286           </td>
2287         </tr>
2288         <tr>
2289           <th>Summary:</th>
2290           <td>
2291             <xsl:value-of select="summary"/>
2292           </td>
2293         </tr>
2294         <tr>
2295           <th>Description:</th>
2296           <td>
2297             <xsl:value-of select="desc"/>
2298           </td>
2299         </tr>
2300       </table>
2301
2302       <table border="0" id="submitTable">
2303         <tr>
2304           <td>
2305             <input type="submit" name="cancelled" value="Cancel"/>
2306           </td>
2307           <td align="right">
2308             <xsl:choose>
2309               <xsl:when test="calendarCollection='true'">
2310                 <input type="submit" name="delete" value="Yes: Delete Calendar!"/>
2311               </xsl:when>
2312               <xsl:otherwise>
2313                 <input type="submit" name="delete" value="Yes: Delete Folder!"/>
2314               </xsl:otherwise>
2315             </xsl:choose>
2316           </td>
2317         </tr>
2318       </table>
2319     </form>
2320   </xsl:template>
2321
2322   <!-- the selectCalForEvent listing creates a calendar tree in a pop-up window -->
2323   <xsl:template name="selectCalForEvent">
2324     <div id="calTreeBlock">
2325       <h2>Select a calendar</h2>
2326       <!--<form name="toggleCals" action="{$event-selectCalForEvent}">
2327         <xsl:choose>
2328           <xsl:when test="/bedework/appvar[key='showAllCalsForEvent']/value = 'true'">
2329             <input type="radio" name="setappvar" value="showAllCalsForEvent(false)" onclick="submit()"/>
2330             show only writable calendars
2331             <input type="radio" name="setappvar" value="showAllCalsForEvent(true)" checked="checked" onclick="submit()"/>
2332             show all calendars
2333           </xsl:when>
2334           <xsl:otherwise>
2335             <input type="radio" name="setappvar" value="showAllCalsForEvent(false)" checked="checked" onclick="submit()"/>
2336             show only writable calendars
2337             <input type="radio" name="setappvar" value="showAllCalsForEvent(true)" onclick="submit()"/>
2338             show all calendars
2339           </xsl:otherwise>
2340         </xsl:choose>
2341       </form>-->
2342       <h4>Calendars</h4>
2343       <ul id="calendarTree">
2344         <xsl:apply-templates select="/bedeworkadmin/calendars/calendar" mode="selectCalForEventCalTree"/>
2345       </ul>
2346     </div>
2347   </xsl:template>
2348
2349   <xsl:template match="calendar" mode="selectCalForEventCalTree">
2350     <xsl:variable name="id" select="id"/>
2351     <li>
2352       <xsl:attribute name="class">
2353         <xsl:choose>
2354           <xsl:when test="calendarCollection='false'">folder</xsl:when>
2355           <xsl:otherwise>calendar</xsl:otherwise>
2356         </xsl:choose>
2357       </xsl:attribute>
2358       <xsl:variable name="calPath" select="path"/><!-- not the encodedPath when put in a form - otherwise it gets double encoded -->
2359       <xsl:variable name="calDisplay" select="path"/>
2360       <xsl:choose>
2361         <xsl:when test="currentAccess/current-user-privilege-set/privilege/write-content and (calendarCollection = 'true')">
2362           <a href="javascript:updateEventFormCalendar('{$calPath}','{$calDisplay}')">
2363             <strong>
2364               <xsl:value-of select="name"/>
2365             </strong>
2366           </a>
2367         </xsl:when>
2368         <xsl:otherwise>
2369           <xsl:value-of select="name"/>
2370         </xsl:otherwise>
2371       </xsl:choose>
2372       <xsl:if test="calendar">
2373         <ul>
2374           <xsl:apply-templates select="calendar" mode="selectCalForEventCalTree"/>
2375         </ul>
2376       </xsl:if>
2377     </li>
2378   </xsl:template>
2379
2380   <!--+++++++++++++++ Subscriptions ++++++++++++++++++++-->
2381   <xsl:template match="subscriptions">
2382     <table id="subsTable">
2383       <tr>
2384         <td class="cals">
2385           <h3>Public calendars</h3>
2386           <p class="smaller">
2387             Select a calendar below to add a <em><strong>new</strong>
2388             </em>
2389             internal subscription. <!-- or
2390             <a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">
2391             subscribe to an external calendar</a>.-->
2392           </p>
2393           <ul id="calendarTree">
2394             <xsl:apply-templates select="/bedeworkadmin/subscriptions/subscribe/calendars/calendar" mode="subscribe"/>
2395           </ul>
2396         </td>
2397         <td class="subs">
2398           <xsl:choose>
2399             <xsl:when test="/bedeworkadmin/page='subscriptions'">
2400               <xsl:call-template name="subscriptionList"/>
2401             </xsl:when>
2402             <xsl:when test="/bedeworkadmin/creating='true'">
2403               <xsl:apply-templates select="subscription" mode="addSubscription"/>
2404             </xsl:when>
2405             <xsl:otherwise>
2406               <xsl:apply-templates select="subscription" mode="modSubscription"/>
2407             </xsl:otherwise>
2408           </xsl:choose>
2409         </td>
2410       </tr>
2411     </table>
2412   </xsl:template>
2413
2414   <xsl:template match="calendar" mode="subscribe">
2415     <xsl:variable name="calPath" select="encodedPath"/>
2416     <xsl:variable name="itemClass">
2417       <xsl:choose>
2418         <xsl:when test="calendarCollection='false'">folder</xsl:when>
2419         <xsl:otherwise>calendar</xsl:otherwise>
2420       </xsl:choose>
2421     </xsl:variable>
2422     <li class="{$itemClass}">
2423       <a href="{$subscriptions-initAdd}&amp;calPath={$calPath}">
2424         <xsl:value-of select="name"/>
2425       </a>
2426       <xsl:if test="calendar">
2427         <ul>
2428           <xsl:apply-templates select="calendar" mode="subscribe">
2429             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
2430         </ul>
2431       </xsl:if>
2432     </li>
2433   </xsl:template>
2434
2435   <xsl:template match="subscription" mode="addSubscription">
2436     <h2>Add New Subscription</h2>
2437     <p class="note">*the subsciption name must be unique</p>
2438     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
2439       <table class="eventFormTable">
2440         <tr>
2441           <th>Name*:</th>
2442           <td>
2443             <xsl:variable name="subName" select="name"/>
2444             <input type="text" value="{$subName}" name="subscription.name" size="60"/>
2445           </td>
2446         </tr>
2447         <xsl:if test="internal='false'">
2448           <tr>
2449             <th>Uri:</th>
2450             <td>
2451               <xsl:variable name="subUri" select="uri"/>
2452               <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
2453             </td>
2454           </tr>
2455         </xsl:if>
2456         <tr>
2457           <th>Display:</th>
2458           <td>
2459             <input type="radio" value="true" name="subscription.display"/> yes
2460             <input type="radio" value="false" name="subscription.display" checked="checked"/> no
2461           </td>
2462         </tr>
2463         <tr>
2464           <th>Style:</th>
2465           <td>
2466             <xsl:variable name="subStyle" select="style"/>
2467             <input type="text" value="{$subStyle}" name="subscription.style" size="60"/>
2468           </td>
2469         </tr>
2470         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2471           <tr>
2472             <th>Unremovable:</th>
2473             <td>
2474               <input type="radio" value="true" name="unremoveable" size="60"/> true
2475               <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2476             </td>
2477           </tr>
2478         </xsl:if>
2479       </table>
2480       <table border="0" id="submitTable">
2481         <tr>
2482           <td>
2483             <input type="submit" name="addSubscription" value="Add Subscription"/>
2484             <input type="submit" name="cancelled" value="Cancel"/>
2485             <input type="reset" value="Clear"/>
2486           </td>
2487         </tr>
2488       </table>
2489     </form>
2490   </xsl:template>
2491
2492   <xsl:template match="subscription" mode="modSubscription">
2493     <h2>Modify Subscription</h2>
2494     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
2495       <table class="eventFormTable">
2496         <tr>
2497           <th>Name*:</th>
2498           <td>
2499             <xsl:value-of select="name"/>
2500             <xsl:variable name="subName" select="name"/>
2501             <input type="hidden" value="{$subName}" name="name"/>
2502           </td>
2503         </tr>
2504         <xsl:choose>
2505           <xsl:when test="internal='false'">
2506             <tr>
2507               <th>Uri:</th>
2508               <td>
2509                 <xsl:variable name="subUri" select="uri"/>
2510                 <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
2511               </td>
2512             </tr>
2513           </xsl:when>
2514           <xsl:otherwise>
2515             <tr>
2516               <th>Uri:</th>
2517               <td>
2518                 <xsl:value-of select="uri"/>
2519               </td>
2520             </tr>
2521           </xsl:otherwise>
2522         </xsl:choose>
2523         <tr>
2524           <th>Display:</th>
2525           <td>
2526             <xsl:choose>
2527               <xsl:when test="display='true'">
2528                 <input type="radio" value="true" name="subscription.display" checked="checked"/> yes
2529                 <input type="radio" value="false" name="subscription.display"/> no
2530               </xsl:when>
2531               <xsl:otherwise>
2532                 <input type="radio" value="true" name="subscription.display"/> yes
2533                 <input type="radio" value="false" name="subscription.display" checked="checked"/> no
2534               </xsl:otherwise>
2535             </xsl:choose>
2536           </td>
2537         </tr>
2538         <tr>
2539           <th>Style:</th>
2540           <td>
2541             <xsl:variable name="subStyle" select="style"/>
2542             <input type="text" value="{$subStyle}" name="subscription.style" size="60"/>
2543           </td>
2544         </tr>
2545         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2546           <tr>
2547             <th>Unremovable:</th>
2548             <td>
2549               <xsl:choose>
2550                 <xsl:when test="unremoveable='true'">
2551                   <input type="radio" value="true" name="unremoveable" size="60" checked="checked"/> true
2552                   <input type="radio" value="false" name="unremoveable" size="60"/> false
2553                 </xsl:when>
2554                 <xsl:otherwise>
2555                   <input type="radio" value="true" name="unremoveable" size="60"/> true
2556                   <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2557                 </xsl:otherwise>
2558               </xsl:choose>
2559             </td>
2560           </tr>
2561         </xsl:if>
2562       </table>
2563       <table border="0" id="submitTable">
2564         <tr>
2565           <td>
2566             <input type="submit" name="updateSubscription" value="Update Subscription"/>
2567             <input type="submit" name="cancelled" value="Cancel"/>
2568             <input type="reset" value="Reset"/>
2569           </td>
2570           <td align="right">
2571             <input type="submit" name="delete" value="Delete Subscription"/>
2572           </td>
2573         </tr>
2574       </table>
2575     </form>
2576   </xsl:template>
2577
2578   <xsl:template name="subscriptionList">
2579     <h3>Current subscriptions</h3>
2580     <table id="commonListTable">
2581       <tr>
2582         <th>Name</th>
2583         <th>URI</th>
2584         <th>Style</th>
2585         <th>Display</th>
2586         <th>Unremovable</th>
2587         <th>External</th>
2588         <th>Deleted?</th>
2589       </tr>
2590       <xsl:for-each select="subscription">
2591         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2592         <tr>
2593           <td>
2594             <xsl:variable name="subname" select="name"/>
2595             <a href="{$subscriptions-fetchForUpdate}&amp;subname={$subname}">
2596               <xsl:value-of select="name"/>
2597             </a>
2598           </td>
2599           <td>
2600             <xsl:value-of select="uri"/>
2601           </td>
2602           <td>
2603             <xsl:value-of select="style"/>
2604           </td>
2605           <td class="center">
2606             <xsl:if test="display='true'">
2607               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2608             </xsl:if>
2609           </td>
2610           <td class="center">
2611             <xsl:if test="unremoveable='true'">
2612               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2613             </xsl:if>
2614           </td>
2615           <td class="center">
2616             <xsl:if test="internal='false'">
2617               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2618             </xsl:if>
2619           </td>
2620           <td class="center">
2621             <xsl:if test="calendarDeleted='true'">
2622               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2623             </xsl:if>
2624           </td>
2625         </tr>
2626       </xsl:for-each>
2627     </table>
2628     <!--<h4><a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">Subscribe to a remote calendar</a> (by URI)</h4>-->
2629   </xsl:template>
2630
2631   <!--+++++++++++++++ Views ++++++++++++++++++++-->
2632   <xsl:template match="views" mode="viewList">
2633
2634     <h3>Add a new view</h3>
2635     <form name="addView" action="{$view-addView}" method="post">
2636       <input type="text" name="name" size="60"/>
2637       <input type="submit" value="add view" name="addview"/>
2638     </form>
2639
2640     <h3>Views</h3>
2641     <table id="commonListTable">
2642       <tr>
2643         <th>Name</th>
2644         <th>Included subscriptions</th>
2645       </tr>
2646
2647       <xsl:for-each select="view">
2648         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2649         <tr>
2650           <td>
2651             <xsl:variable name="viewName" select="name"/>
2652             <a href="{$view-fetchForUpdate}&amp;name={$viewName}">
2653               <xsl:value-of select="name"/>
2654             </a>
2655           </td>
2656           <td>
2657             <xsl:for-each select="subscriptions/subscription">
2658               <xsl:value-of select="name"/>
2659               <xsl:if test="position()!=last()">, </xsl:if>
2660             </xsl:for-each>
2661           </td>
2662         </tr>
2663       </xsl:for-each>
2664     </table>
2665   </xsl:template>
2666
2667   <xsl:template name="modView">
2668     <h2>Update View</h2>
2669     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
2670     <h3 class="viewName">
2671       <xsl:value-of select="$viewName"/>
2672     </h3>
2673     <table id="viewsTable">
2674       <tr>
2675         <td class="subs">
2676           <h3>Available Subscriptions:</h3>
2677
2678           <table class="subscriptionsListSubs">
2679             <xsl:for-each select="/bedeworkadmin/subscriptions/subscription">
2680               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2681               <xsl:if test="not(/bedeworkadmin/views/view/subscriptions/subscription/name=name)">
2682                 <tr>
2683                   <td>
2684                     <xsl:value-of select="name"/>
2685                   </td>
2686                   <td class="arrows">
2687                     <xsl:variable name="subAddName" select="name"/>
2688                     <a href="{$view-update}&amp;name={$viewName}&amp;add={$subAddName}">
2689                       <img src="{$resourcesRoot}/resources/arrowRight.gif"
2690                           width="13" height="13" border="0"
2691                           alt="add subscription"/>
2692                     </a>
2693                   </td>
2694                 </tr>
2695               </xsl:if>
2696             </xsl:for-each>
2697           </table>
2698         </td>
2699         <td class="view">
2700           <h3>Active Subscriptions:</h3>
2701           <table class="subscriptionsListView">
2702             <xsl:for-each select="/bedeworkadmin/views/view/subscriptions/subscription">
2703               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2704               <tr>
2705                 <td class="arrows">
2706                   <xsl:variable name="subRemoveName" select="name"/>
2707                   <a href="{$view-update}&amp;name={$viewName}&amp;remove={$subRemoveName}">
2708                     <img src="{$resourcesRoot}/resources/arrowLeft.gif"
2709                         width="13" height="13" border="0"
2710                         alt="add subscription"/>
2711                   </a>
2712                 </td>
2713                 <td>
2714                   <xsl:value-of select="name"/>
2715                 </td>
2716               </tr>
2717             </xsl:for-each>
2718           </table>
2719         </td>
2720       </tr>
2721     </table>
2722     <table border="0" id="submitTable">
2723       <tr>
2724         <td>
2725           <input type="button" name="return" value="Return to Views Listing" onclick="javascript:location.replace('{$view-fetch}')"/>
2726         </td>
2727         <td align="right">
2728           <form name="deleteViewForm" action="{$view-fetchForUpdate}" method="post">
2729             <input type="submit" name="deleteButton" value="Delete View"/>
2730             <input type="hidden" name="name" value="{$viewName}"/>
2731             <input type="hidden" name="delete" value="yes"/>
2732           </form>
2733         </td>
2734       </tr>
2735     </table>
2736   </xsl:template>
2737
2738   <xsl:template name="deleteViewConfirm">
2739     <h2>Remove View?</h2>
2740
2741     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
2742     <p>The following view will be removed. Continue?</p>
2743
2744     <h3 class="viewName">
2745       <xsl:value-of select="$viewName"/>
2746     </h3>
2747     <form name="removeView" action="{$view-remove}">
2748       <input type="hidden" name="name" value="{$viewName}"/>
2749       <input type="submit" name="delete" value="Yes: Remove View"/>
2750       <input type="submit" name="cancelled" value="No: Cancel"/>
2751     </form>
2752
2753   </xsl:template>
2754
2755   <!--==== UPLOAD ====-->
2756   <xsl:template name="upload">
2757   <!-- The name "eventForm" is referenced by several javascript functions. Do not
2758     change it without modifying includes.js -->
2759     <form name="eventForm" method="post" action="{$event-upload}" id="standardForm" enctype="multipart/form-data">
2760       <h2>Upload iCAL File</h2>
2761       <table class="common" cellspacing="0">
2762         <tr>
2763           <td class="fieldname">
2764             Filename:
2765           </td>
2766           <td align="left">
2767             <input type="file" name="uploadFile" size="60" />
2768           </td>
2769         </tr>
2770         <tr>
2771           <td class="fieldname padMeTop">
2772             Into calendar:
2773           </td>
2774           <td align="left" class="padMeTop">
2775             <input type="hidden" name="newCalPath" value=""/>
2776             <span id="bwEventCalDisplay">
2777               <em>none selected</em>
2778             </span>
2779             <xsl:text> </xsl:text>
2780             [<a href="javascript:launchCalSelectWindow('{$event-selectCalForEvent}')" class="small">change</a>]
2781           </td>
2782         </tr>
2783         <!--<tr>
2784           <td class="fieldname padMeTop">
2785             Effects free/busy:
2786           </td>
2787           <td align="left" class="padMeTop">
2788             <input type="radio" value="" name="transparency" checked="checked"/> accept event's settings<br/>
2789             <input type="radio" value="OPAQUE" name="transparency"/> yes <span class="note">(opaque: event status affects your free/busy)</span><br/>
2790             <input type="radio" value="TRANSPARENT" name="transparency"/> no <span class="note">(transparent: event status does not affect your free/busy)</span><br/>
2791           </td>
2792         </tr>-->
2793         <tr>
2794           <td class="fieldname padMeTop">
2795             Status:
2796           </td>
2797           <td align="left" class="padMeTop">
2798             <input type="radio" value="" name="status" checked="checked"/> accept event's status<br/>
2799             <input type="radio" value="CONFIRMED" name="status"/> confirmed<br/>
2800             <input type="radio" value="TENTATIVE" name="status"/> tentative<br/>
2801             <input type="radio" value="CANCELLED" name="status"/> cancelled<br/>
2802           </td>
2803         </tr>
2804       </table>
2805       <table border="0" id="submitTable">
2806         <tr>
2807           <td>
2808             <input name="submit" type="submit" value="Continue"/>
2809             <input name="cancelled" type="submit" value="Cancel"/>
2810           </td>
2811         </tr>
2812       </table>
2813     </form>
2814   </xsl:template>
2815
2816   <!--+++++++++++++++ System Parameters (preferences) ++++++++++++++++++++-->
2817   <xsl:template name="modSyspars">
2818     <h2>Modify System Parameters</h2>
2819     <p>
2820       Do not change unless you know what you're doing.<br/>
2821       Changes to these parameters have wide impact on the system.
2822     </p>
2823     <form name="systemParamsForm" action="{$system-update}" method="post">
2824       <table class="eventFormTable">
2825         <tr>
2826           <th>Default timezone:</th>
2827           <td>
2828             <xsl:variable name="tzid" select="/bedeworkadmin/system/tzid"/>
2829             <input value="{$tzid}" name="tzid" size="20"/>
2830           </td>
2831           <td>
2832             Default timezone id for date/time values. This should normally be your local timezone
2833           </td>
2834         </tr>
2835         <tr>
2836           <th>Default user view name:</th>
2837           <td>
2838             <xsl:variable name="defaultViewName" select="/bedeworkadmin/system/defaultUserViewName"/>
2839             <input value="{$defaultViewName}" name="defaultUserViewName" size="20"/>
2840           </td>
2841           <td>
2842             Name used for default view created when a new user is added
2843           </td>
2844         </tr>
2845         <tr>
2846           <th>Http connections per user:</th>
2847           <td>
2848             <xsl:variable name="httpPerUser" select="/bedeworkadmin/system/httpConnectionsPerUser"/>
2849             <input value="{$httpPerUser}" name="httpConnectionsPerUser" size="20"/>
2850           </td>
2851           <td></td>
2852         </tr>
2853         <tr>
2854           <th>Http connections per host:</th>
2855           <td>
2856             <xsl:variable name="httpPerHost" select="/bedeworkadmin/system/httpConnectionsPerHost"/>
2857             <input value="{$httpPerHost}" name="httpConnectionsPerHost" size="20"/>
2858           </td>
2859           <td></td>
2860         </tr>
2861         <tr>
2862           <th>Total http connections:</th>
2863           <td>
2864             <xsl:variable name="httpTotal" select="/bedeworkadmin/system/httpConnections"/>
2865             <input value="{$httpTotal}" name="httpConnections" size="20"/>
2866           </td>
2867           <td></td>
2868         </tr>
2869         <tr>
2870           <th>Maximum length of public event description:</th>
2871           <td>
2872             <xsl:variable name="maxPublicDescriptionLength" select="/bedeworkadmin/system/maxPublicDescriptionLength"/>
2873             <input value="{$maxPublicDescriptionLength}" name="maxPublicDescriptionLength" size="20"/>
2874           </td>
2875           <td></td>
2876         </tr>
2877         <tr>
2878           <th>Maximum length of user event description:</th>
2879           <td>
2880             <xsl:variable name="maxUserDescriptionLength" select="/bedeworkadmin/system/maxUserDescriptionLength"/>
2881             <input value="{$maxUserDescriptionLength}" name="maxUserDescriptionLength" size="20"/>
2882           </td>
2883           <td></td>
2884         </tr>
2885         <tr>
2886           <th>Maximum size of a user entity:</th>
2887           <td>
2888             <xsl:variable name="maxUserEntitySize" select="/bedeworkadmin/system/maxUserEntitySize"/>
2889             <input value="{$maxUserEntitySize}" name="maxUserEntitySize" size="20"/>
2890           </td>
2891           <td></td>
2892         </tr>
2893         <tr>
2894           <th>Default user quota:</th>
2895           <td>
2896             <xsl:variable name="defaultUserQuota" select="/bedeworkadmin/system/defaultUserQuota"/>
2897             <input value="{$defaultUserQuota}" name="defaultUserQuota" size="20"/>
2898           </td>
2899           <td></td>
2900         </tr>
2901       </table>
2902       <table border="0" id="submitTable">
2903         <tr>
2904           <td>
2905             <input type="submit" name="updateSystemParams" value="Update"/>
2906             <input type="submit" name="cancelled" value="Cancel"/>
2907             <input type="reset" value="Reset"/>
2908           </td>
2909         </tr>
2910       </table>
2911     </form>
2912   </xsl:template>
2913
2914   <!--+++++++++++++++ Calendar Suites (calsuite) ++++++++++++++++++++-->
2915   <xsl:template match="calSuites" mode="calSuiteList">
2916     <h2>Manage Calendar Suites</h2>
2917
2918     <h4>Calendar suites:</h4>
2919     <p>
2920       <input type="button" name="return" value="Add calendar suite" onclick="javascript:location.replace('{$calsuite-showAddForm}')"/>
2921     </p>
2922
2923     <ul>
2924       <xsl:for-each select="calSuite">
2925         <li>
2926           <xsl:variable name="name" select="name"/>
2927           <a href="{$calsuite-fetchForUpdate}&amp;name={$name}">
2928             <xsl:value-of select="name"/>
2929           </a>
2930         </li>
2931       </xsl:for-each>
2932     </ul>
2933
2934   </xsl:template>
2935
2936   <xsl:template name="addCalSuite">
2937     <h2>Add Calendar Suite</h2>
2938     <form name="calSuiteForm" action="{$calsuite-add}" method="post">
2939       <table class="eventFormTable">
2940         <tr>
2941           <th>Name:</th>
2942           <td>
2943             <input name="name" size="20"/>
2944           </td>
2945           <td>
2946             Name of your calendar suite
2947           </td>
2948         </tr>
2949         <tr>
2950           <th>Group:</th>
2951           <td>
2952             <input name="groupName" size="20"/>
2953           </td>
2954           <td>
2955             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
2956           </td>
2957         </tr>
2958         <tr>
2959           <th>Root calendar:</th>
2960           <td>
2961             <input name="calPath" size="20"/>
2962           </td>
2963           <td>
2964             Path of root calendar (not required if suite only consists of subscriptions and views)
2965           </td>
2966         </tr>
2967       </table>
2968       <table border="0" id="submitTable">
2969         <tr>
2970           <td>
2971             <input type="submit" name="updateCalSuite" value="Add"/>
2972             <input type="submit" name="cancelled" value="Cancel"/>
2973             <input type="reset" value="Reset"/>
2974           </td>
2975         </tr>
2976       </table>
2977     </form>
2978   </xsl:template>
2979
2980   <xsl:template match="calSuite" name="modCalSuite">
2981     <h2>Modify Calendar Suite</h2>
2982     <xsl:variable name="calSuiteName" select="name"/>
2983     <form name="calSuiteForm" action="{$calsuite-update}" method="post">
2984       <table class="eventFormTable">
2985         <tr>
2986           <th>Name:</th>
2987           <td>
2988             <input name="name" value="{$calSuiteName}" size="20"/>
2989           </td>
2990           <td>
2991             Name of your calendar suite
2992           </td>
2993         </tr>
2994         <tr>
2995           <th>Group:</th>
2996           <td>
2997             <xsl:variable name="group" select="group"/>
2998             <input name="groupName" value="{$group}" size="20"/>
2999           </td>
3000           <td>
3001             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3002           </td>
3003         </tr>
3004         <tr>
3005           <th>Root calendar:</th>
3006           <td>
3007             <xsl:variable name="calPath" select="calPath"/>
3008             <input name="calPath" value="{$calPath}" size="20"/>
3009           </td>
3010           <td>
3011             Path of root calendar (not required if suite only consists of subscriptions and views)
3012           </td>
3013         </tr>
3014       </table>
3015       <table border="0" id="submitTable">
3016         <tr>
3017           <td>
3018             <input type="submit" name="updateCalSuite" value="Update"/>
3019             <input type="submit" name="cancelled" value="Cancel"/>
3020             <input type="reset" value="Reset"/>
3021           </td>
3022         </tr>
3023       </table>
3024     </form>
3025     <div id="sharingBox">
3026       <h3>Manage suite administrators</h3>
3027       <table class="common">
3028         <tr>
3029           <th class="commonHeader" colspan="2">Current access:</th>
3030         </tr>
3031
3032         <xsl:for-each select="acl/ace">
3033           <tr>
3034             <th class="thin">
3035               <xsl:choose>
3036                 <xsl:when test="invert">
3037                   <em>Deny to
3038                   <xsl:choose>
3039                     <xsl:when test="invert/principal/href">
3040                       <xsl:value-of select="invert/principal/href"/>
3041                       </xsl:when>
3042                       <xsl:when test="invert/principal/property">
3043                         <xsl:value-of select="name(invert/principal/property/*)"/>
3044                       </xsl:when>
3045                       <xsl:otherwise>
3046                         <xsl:value-of select="name(invert/principal/*)"/>
3047                       </xsl:otherwise>
3048                     </xsl:choose>
3049                   </em>
3050                 </xsl:when>
3051                 <xsl:otherwise>
3052                   <xsl:choose>
3053                     <xsl:when test="principal/href">
3054                       <xsl:value-of select="principal/href"/>
3055                     </xsl:when>
3056                     <xsl:when test="principal/property">
3057                       <xsl:value-of select="name(principal/property/*)"/>
3058                     </xsl:when>
3059                     <xsl:otherwise>
3060                       <xsl:value-of select="name(principal/*)"/>
3061                     </xsl:otherwise>
3062                   </xsl:choose>
3063                 </xsl:otherwise>
3064               </xsl:choose>
3065             </th>
3066             <td>
3067               <xsl:for-each select="grant/node()">
3068                 <xsl:value-of select="name(.)"/>&#160;&#160;
3069               </xsl:for-each>
3070             </td>
3071           </tr>
3072         </xsl:for-each>
3073       </table>
3074       <form name="calsuiteShareForm" action="{$calsuite-setAccess}" id="shareForm" method="post">
3075         <input type="hidden" name="calSuiteName" value="{$calSuiteName}"/>
3076         <input type="hidden" name="how" value="RW" />
3077         <p>
3078           Add administrator:<br/>
3079           <input type="text" name="who" size="20"/>
3080           <input type="radio" value="user" name="whoType" checked="checked"/> user
3081           <input type="radio" value="group" name="whoType"/> group
3082         </p>
3083         <input type="submit" name="submit" value="Submit"/>
3084       </form>
3085     </div>
3086   </xsl:template>
3087
3088   <xsl:template name="calSuitePrefs">
3089     <h2>Edit Calendar Suite Preferences</h2>
3090     <form name="userPrefsForm" method="post" action="{$calsuite-updatePrefs}">
3091       <table id="eventFormTable">
3092         <tr>
3093           <td class="fieldName">
3094             Calendar Suite:
3095           </td>
3096           <td>
3097             <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
3098           </td>
3099         </tr>
3100         <tr>
3101           <td class="fieldName">
3102             Preferred view:
3103           </td>
3104           <td>
3105             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
3106             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
3107           </td>
3108         </tr>
3109         <tr>
3110           <td class="fieldName">
3111             Preferred view period:
3112           </td>
3113           <td>
3114             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
3115             <select name="viewPeriod">
3116               <!-- picking the selected item could be done with javascript. for
3117                    now, this will do.  -->
3118               <xsl:choose>
3119                 <xsl:when test="$preferredViewPeriod = 'dayView'">
3120                   <option value="dayView" selected="selected">day</option>
3121                 </xsl:when>
3122                 <xsl:otherwise>
3123                   <option value="dayView">day</option>
3124                 </xsl:otherwise>
3125               </xsl:choose>
3126               <xsl:choose>
3127                 <xsl:when test="$preferredViewPeriod = 'todayView'">
3128                   <option value="todayView" selected="selected">today</option>
3129                 </xsl:when>
3130                 <xsl:otherwise>
3131                   <option value="todayView">today</option>
3132                 </xsl:otherwise>
3133               </xsl:choose>
3134               <xsl:choose>
3135                 <xsl:when test="$preferredViewPeriod = 'weekView'">
3136                   <option value="weekView" selected="selected">week</option>
3137                 </xsl:when>
3138                 <xsl:otherwise>
3139                   <option value="weekView">week</option>
3140                 </xsl:otherwise>
3141               </xsl:choose>
3142               <xsl:choose>
3143                 <xsl:when test="$preferredViewPeriod = 'monthView'">
3144                   <option value="monthView" selected="selected">month</option>
3145                 </xsl:when>
3146                 <xsl:otherwise>
3147                   <option value="monthView">month</option>
3148                 </xsl:otherwise>
3149               </xsl:choose>
3150               <xsl:choose>
3151                 <xsl:when test="$preferredViewPeriod = 'yearView'">
3152                   <option value="yearView" selected="selected">year</option>
3153                 </xsl:when>
3154                 <xsl:otherwise>
3155                   <option value="yearView">year</option>
3156                 </xsl:otherwise>
3157               </xsl:choose>
3158             </select>
3159           </td>
3160         </tr>
3161         <tr>
3162           <td class="fieldName">
3163             Skin name:
3164           </td>
3165           <td>
3166             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
3167             <input type="text" name="skin" value="{$skinName}" size="40"/>
3168           </td>
3169         </tr>
3170         <tr>
3171           <td class="fieldName">
3172             Skin style:
3173           </td>
3174           <td>
3175             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
3176             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
3177           </td>
3178         </tr>
3179       </table>
3180       <br />
3181
3182       <input type="submit" name="modPrefs" value="Update"/>
3183       <input type="reset" value="Reset"/>
3184       <input type="submit" name="cancelled" value="Cancel"/>
3185     </form>
3186   </xsl:template>
3187
3188   <!--+++++++++++++++ Timezones ++++++++++++++++++++-->
3189   <xsl:template name="uploadTimezones">
3190     <h2>Upload Timezones</h2>
3191     <form name="peForm" method="post" action="{$timezones-upload}" enctype="multipart/form-data">
3192       <input type="file" name="uploadFile" size="40" value=""/>
3193       <input type="submit" name="doUpload" value="Upload Timezones"/>
3194       <input type="submit" name="cancelled" value="Cancel"/>
3195     </form>
3196   </xsl:template>
3197
3198   <!--+++++++++++++++ Authuser ++++++++++++++++++++-->
3199   <xsl:template name="authUserList">
3200     <h2>Modify Administrators</h2>
3201
3202     <div id="authUserInputForms">
3203       <form name="getUserRolesForm" action="{$authuser-fetchForUpdate}" method="post">
3204         Edit admin roles by userid: <input type="text" name="editAuthUserId" size="20"/>
3205         <input type="submit" value="go" name="submit"/>
3206       </form>
3207     </div>
3208
3209     <table id="commonListTable">
3210       <tr>
3211         <th>UserId</th>
3212         <th>Roles</th>
3213         <th></th>
3214       </tr>
3215
3216       <xsl:for-each select="bedeworkadmin/authUsers/authUser">
3217         <!--<xsl:sort select="account" order="ascending" case-order="upper-first"/>-->
3218         <tr>
3219           <td>
3220             <xsl:value-of select="account"/>
3221           </td>
3222           <td>
3223             <xsl:if test="publicEventUser='true'">
3224               publicEvent; <xsl:text> </xsl:text>
3225             </xsl:if>
3226             <xsl:if test="superUser='true'">
3227               superUser; <xsl:text> </xsl:text>
3228             </xsl:if>
3229             <xsl:if test="alertUser='true'">
3230               alert; <xsl:text> </xsl:text>
3231             </xsl:if>
3232           </td>
3233           <td>
3234             <xsl:variable name="account" select="account"/>
3235             <a href="{$authuser-fetchForUpdate}&amp;editAuthUserId={$account}">
3236               edit
3237             </a>
3238           </td>
3239         </tr>
3240       </xsl:for-each>
3241     </table>
3242   </xsl:template>
3243
3244   <xsl:template name="modAuthUser">
3245     <h2>Update Administrator</h2>
3246     <xsl:variable name="modAuthUserAction" select="/bedeworkadmin/formElements/form/@action"/>
3247     <form action="{$modAuthUserAction}" method="post">
3248       <table id="eventFormTable">
3249         <tr>
3250           <td class="fieldName">
3251             Account:
3252           </td>
3253           <td>
3254             <xsl:value-of select="/bedeworkadmin/formElements/form/account"/>
3255           </td>
3256         </tr>
3257         <tr>
3258           <td class="fieldName">
3259             Alerts:
3260           </td>
3261           <td>
3262             <xsl:copy-of select="/bedeworkadmin/formElements/form/alerts/*"/>
3263           </td>
3264         </tr>
3265         <tr>
3266           <td class="fieldName">
3267             Public Events:
3268           </td>
3269           <td>
3270             <xsl:copy-of select="/bedeworkadmin/formElements/form/publicEvents/*"/>
3271           </td>
3272         </tr>
3273         <tr>
3274           <td class="fieldName">
3275             Super User:
3276           </td>
3277           <td>
3278             <xsl:copy-of select="/bedeworkadmin/formElements/form/superUser/*"/>
3279           </td>
3280         </tr>
3281         <!--<tr>
3282           <td class="optional">
3283             Email:
3284           </td>
3285           <td>
3286             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
3287             <span class="fieldInfo"></span>
3288           </td>
3289         </tr>
3290         <tr>
3291           <td class="optional">
3292             Phone:
3293           </td>
3294           <td>
3295             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
3296             <span class="fieldInfo"></span>
3297           </td>
3298         </tr>
3299         <tr>
3300           <td class="optional">
3301             Department:
3302           </td>
3303           <td>
3304             <xsl:copy-of select="/bedeworkadmin/formElements/form/dept/*"/>
3305             <span class="fieldInfo"></span>
3306           </td>
3307         </tr>
3308         <tr>
3309           <td class="optional">
3310             Last name:
3311           </td>
3312           <td>
3313             <xsl:copy-of select="/bedeworkadmin/formElements/form/lastName/*"/>
3314             <span class="fieldInfo"></span>
3315           </td>
3316         </tr>
3317         <tr>
3318           <td class="optional">
3319             First name:
3320           </td>
3321           <td>
3322             <xsl:copy-of select="/bedeworkadmin/formElements/form/firstName/*"/>
3323             <span class="fieldInfo"></span>
3324           </td>
3325         </tr>-->
3326       </table>
3327       <br />
3328
3329       <input type="submit" name="modAuthUser" value="Update"/>
3330       <input type="reset" value="Reset"/>
3331       <input type="submit" name="cancelled" value="Cancel"/>
3332     </form>
3333   </xsl:template>
3334
3335   <!--+++++++++++++++ User Prefs ++++++++++++++++++++-->
3336   <xsl:template name="modPrefs">
3337     <h2>Edit User Preferences</h2>
3338     <form name="userPrefsForm" method="post" action="{$prefs-update}">
3339       <table id="eventFormTable">
3340         <tr>
3341           <td class="fieldName">
3342             User:
3343           </td>
3344           <td>
3345             <xsl:value-of select="/bedeworkadmin/prefs/user"/>
3346             <xsl:variable name="user" select="/bedeworkadmin/prefs/user"/>
3347             <input type="hidden" name="user" value="{$user}"/>
3348           </td>
3349         </tr>
3350         <tr>
3351           <td class="fieldName">
3352             Preferred view:
3353           </td>
3354           <td>
3355             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
3356             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
3357           </td>
3358         </tr>
3359         <tr>
3360           <td class="fieldName">
3361             Preferred view period:
3362           </td>
3363           <td>
3364             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
3365             <select name="viewPeriod">
3366               <!-- picking the selected item could be done with javascript. for
3367                    now, this will do.  -->
3368               <xsl:choose>
3369                 <xsl:when test="$preferredViewPeriod = 'dayView'">
3370                   <option value="dayView" selected="selected">day</option>
3371                 </xsl:when>
3372                 <xsl:otherwise>
3373                   <option value="dayView">day</option>
3374                 </xsl:otherwise>
3375               </xsl:choose>
3376               <xsl:choose>
3377                 <xsl:when test="$preferredViewPeriod = 'todayView'">
3378                   <option value="todayView" selected="selected">today</option>
3379                 </xsl:when>
3380                 <xsl:otherwise>
3381                   <option value="todayView">today</option>
3382                 </xsl:otherwise>
3383               </xsl:choose>
3384               <xsl:choose>
3385                 <xsl:when test="$preferredViewPeriod = 'weekView'">
3386                   <option value="weekView" selected="selected">week</option>
3387                 </xsl:when>
3388                 <xsl:otherwise>
3389                   <option value="weekView">week</option>
3390                 </xsl:otherwise>
3391               </xsl:choose>
3392               <xsl:choose>
3393                 <xsl:when test="$preferredViewPeriod = 'monthView'">
3394                   <option value="monthView" selected="selected">month</option>
3395                 </xsl:when>
3396                 <xsl:otherwise>
3397                   <option value="monthView">month</option>
3398                 </xsl:otherwise>
3399               </xsl:choose>
3400               <xsl:choose>
3401                 <xsl:when test="$preferredViewPeriod = 'yearView'">
3402                   <option value="yearView" selected="selected">year</option>
3403                 </xsl:when>
3404                 <xsl:otherwise>
3405                   <option value="yearView">year</option>
3406                 </xsl:otherwise>
3407               </xsl:choose>
3408             </select>
3409           </td>
3410         </tr>
3411         <tr>
3412           <td class="fieldName">
3413             Skin name:
3414           </td>
3415           <td>
3416             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
3417             <input type="text" name="skin" value="{$skinName}" size="40"/>
3418           </td>
3419         </tr>
3420         <tr>
3421           <td class="fieldName">
3422             Skin style:
3423           </td>
3424           <td>
3425             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
3426             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
3427           </td>
3428         </tr>
3429       </table>
3430       <br />
3431
3432       <input type="submit" name="modPrefs" value="Update"/>
3433       <input type="reset" value="Reset"/>
3434       <input type="submit" name="cancelled" value="Cancel"/>
3435     </form>
3436   </xsl:template>
3437
3438   <!--+++++++++++++++ Admin Groups ++++++++++++++++++++-->
3439   <xsl:template name="listAdminGroups">
3440     <h2>Modify Groups</h2>
3441     <form name="adminGroupMembersForm" method="post" action="{$admingroup-initUpdate}">
3442       <xsl:choose>
3443         <xsl:when test="/bedeworkadmin/groups/showMembers='true'">
3444           <input type="radio" name="showAgMembers" value="false" onclick="document.adminGroupMembersForm.submit();"/>
3445           Hide members
3446           <input type="radio" name="showAgMembers" value="true" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
3447           Show members
3448         </xsl:when>
3449         <xsl:otherwise>
3450           <input type="radio" name="showAgMembers" value="false" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
3451           Hide members
3452           <input type="radio" name="showAgMembers" value="true" onclick="document.adminGroupMembersForm.submit();"/>
3453           Show members
3454         </xsl:otherwise>
3455       </xsl:choose>
3456     </form>
3457
3458     <p>Click on the group name to modify the group owner or description.<br/>
3459     Click "add/remove members" to modify group membership.</p>
3460     <p>
3461       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
3462     </p>
3463     <table id="commonListTable">
3464       <tr>
3465         <th>Name</th>
3466         <th>Description</th>
3467         <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
3468           <th>Members</th>
3469         </xsl:if>
3470         <th></th>
3471       </tr>
3472       <xsl:for-each select="/bedeworkadmin/groups/group">
3473         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3474         <xsl:variable name="groupName" select="name"/>
3475         <tr>
3476           <td>
3477             <a href="{$admingroup-fetchForUpdate}&amp;adminGroupName={$groupName}">
3478               <xsl:value-of select="name"/>
3479             </a>
3480           </td>
3481           <td>
3482             <xsl:value-of select="desc"/>
3483           </td>
3484           <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
3485             <td>
3486               <xsl:for-each select="members/member/account">
3487                 <xsl:value-of select="."/>&#160;
3488               </xsl:for-each>
3489             </td>
3490           </xsl:if>
3491           <td>
3492             <a href="{$admingroup-fetchForUpdateMembers}&amp;adminGroupName={$groupName}">Add/Remove members</a>
3493           </td>
3494         </tr>
3495       </xsl:for-each>
3496     </table>
3497     <p>
3498       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
3499     </p>
3500   </xsl:template>
3501
3502   <xsl:template match="groups" mode="chooseGroup">
3503     <h2>Choose Your Administrative Group</h2>
3504
3505     <table id="commonListTable">
3506
3507       <tr>
3508         <th>Name</th>
3509         <th>Description</th>
3510       </tr>
3511
3512       <xsl:for-each select="group">
3513         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3514         <tr>
3515           <td>
3516             <xsl:variable name="admGroupName" select="name"/>
3517             <a href="{$setup}&amp;adminGroupName={$admGroupName}">
3518               <xsl:copy-of select="name"/>
3519             </a>
3520           </td>
3521           <td>
3522             <xsl:value-of select="desc"/>
3523           </td>
3524         </tr>
3525       </xsl:for-each>
3526     </table>
3527   </xsl:template>
3528
3529   <xsl:template name="modAdminGroup">
3530     <xsl:choose>
3531       <xsl:when test="/bedeworkadmin/creating = 'true'">
3532         <h2>Add Group</h2>
3533       </xsl:when>
3534       <xsl:otherwise>
3535         <h2>Modify Group</h2>
3536       </xsl:otherwise>
3537     </xsl:choose>
3538     <form name="peForm" method="post" action="{$admingroup-update}">
3539       <table id="adminGroupFormTable">
3540         <tr>
3541           <td class="fieldName">
3542             Name:
3543           </td>
3544           <td>
3545             <xsl:choose>
3546               <xsl:when test="/bedeworkadmin/creating = 'true'">
3547                 <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
3548               </xsl:when>
3549               <xsl:otherwise>
3550                 <xsl:value-of select="/bedeworkadmin/formElements/form/name"/>
3551               </xsl:otherwise>
3552             </xsl:choose>
3553           </td>
3554         </tr>
3555         <tr>
3556           <td class="fieldName">
3557             Description:
3558           </td>
3559           <td>
3560             <xsl:copy-of select="/bedeworkadmin/formElements/form/desc/*"/>
3561           </td>
3562         </tr>
3563         <tr>
3564           <td class="fieldName">
3565             Group owner:
3566           </td>
3567           <td>
3568             <xsl:copy-of select="/bedeworkadmin/formElements/form/groupOwner/*"/>
3569           </td>
3570         </tr>
3571         <tr>
3572           <td class="fieldName">
3573             Events owner:
3574           </td>
3575           <td>
3576             <xsl:copy-of select="/bedeworkadmin/formElements/form/eventsOwner/*"/>
3577           </td>
3578         </tr>
3579       </table>
3580       <table border="0" id="submitTable">
3581         <tr>
3582           <td>
3583             <xsl:choose>
3584               <xsl:when test="/bedeworkadmin/creating = 'true'">
3585                 <input type="submit" name="updateAdminGroup" value="Add Admin Group"/>
3586                 <input type="submit" name="cancelled" value="Cancel"/>
3587                 <input type="reset" value="Clear"/>
3588               </xsl:when>
3589               <xsl:otherwise>
3590                 <input type="submit" name="updateAdminGroup" value="Update Admin Group"/>
3591                 <input type="submit" name="cancelled" value="Cancel"/>
3592                 <input type="reset" value="Reset"/>
3593               </xsl:otherwise>
3594             </xsl:choose>
3595           </td>
3596           <td align="right">
3597             <input type="submit" name="delete" value="Delete"/>
3598           </td>
3599         </tr>
3600       </table>
3601     </form>
3602   </xsl:template>
3603
3604   <xsl:template name="modAdminGroupMembers">
3605     <h2>Update Group Membership</h2>
3606     <p>Enter a userid (for user or group) and click "add" to update group membership.
3607     Click the trash icon to remove a user from the group.</p>
3608
3609     <form name="adminGroupMembersForm" method="post" action="{$admingroup-updateMembers}">
3610       <p>Add member:
3611         <input type="text" name="updGroupMember" size="15"/>
3612         <input type="radio" value="user" name="kind" checked="checked"/>user
3613         <input type="radio" value="group" name="kind"/>group
3614         <input type="submit" name="addGroupMember" value="Add"/>
3615       </p>
3616     </form>
3617     <p>
3618       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initUpdate}')" value="Return to Admin Group listing"/>
3619     </p>
3620
3621     <table id="adminGroupFormTable">
3622       <tr>
3623         <td class="fieldName">
3624           Name:
3625         </td>
3626         <td>
3627           <xsl:value-of select="/bedeworkadmin/adminGroup/name"/>
3628         </td>
3629       </tr>
3630       <tr>
3631         <td class="fieldName">
3632           Members:
3633         </td>
3634         <td>
3635           <table id="memberAccountList">
3636             <xsl:for-each select="/bedeworkadmin/adminGroup/members/member">
3637               <xsl:choose>
3638                 <xsl:when test="kind='0'"><!-- kind = user -->
3639                   <tr>
3640                     <td>
3641                       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
3642                     </td>
3643                     <td>
3644                       <xsl:value-of select="account"/>
3645                     </td>
3646                     <td>
3647                       <xsl:variable name="acct" select="account"/>
3648                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=user" title="remove">
3649                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
3650                       </a>
3651                     </td>
3652                   </tr>
3653                 </xsl:when>
3654                 <xsl:otherwise><!-- kind = group -->
3655                   <tr>
3656                     <td>
3657                       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3658                     </td>
3659                     <td>
3660                       <strong>
3661                         <xsl:value-of select="account"/>
3662                       </strong>
3663                     </td>
3664                     <td>
3665                       <xsl:variable name="acct" select="account"/>
3666                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=group" title="remove">
3667                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
3668                       </a>
3669                     </td>
3670                   </tr>
3671                 </xsl:otherwise>
3672               </xsl:choose>
3673             </xsl:for-each>
3674           </table>
3675         </td>
3676       </tr>
3677     </table>
3678     <p>
3679       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/> user,
3680       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3681       <xsl:text> </xsl:text>
3682       <strong>group</strong>
3683     </p>
3684   </xsl:template>
3685
3686   <xsl:template name="deleteAdminGroupConfirm">
3687     <h2>Delete Admin Group?</h2>
3688     <p>The following group will be deleted. Continue?</p>
3689     <p>
3690       <strong>
3691         <xsl:value-of select="/bedeworkadmin/groups/group/name"/>
3692       </strong>:
3693       <xsl:value-of select="/bedeworkadmin/groups/group/desc"/>
3694     </p>
3695     <form name="adminGroupDelete" method="post" action="{$admingroup-delete}">
3696       <input type="submit" name="removeAdminGroupOK" value="Yes: Delete!"/>
3697       <input type="submit" name="cancelled" value="No: Cancel"/>
3698     </form>
3699   </xsl:template>
3700
3701   <!--+++++++++++++++ System Stats ++++++++++++++++++++-->
3702
3703   <xsl:template match="sysStats" mode="showSysStats">
3704     <h2>System Statistics</h2>
3705
3706     <p>
3707       Stats collection:
3708     </p>
3709     <ul>
3710       <li>
3711         <a href="{$stats-update}&amp;enable=yes">enable</a> |
3712         <a href="{$stats-update}&amp;disable=yes">disable</a>
3713       </li>
3714       <li>
3715         <a href="{$stats-update}&amp;fetch=yes">fetch statistics</a>
3716       </li>
3717       <li>
3718         <a href="{$stats-update}&amp;dump=yes">dump stats to log</a>
3719       </li>
3720     </ul>
3721     <table id="statsTable" cellpadding="0">
3722       <xsl:for-each select="*">
3723         <xsl:choose>
3724           <xsl:when test="name(.) = 'header'">
3725             <tr>
3726               <th colspan="2">
3727                 <xsl:value-of select="."/>
3728               </th>
3729             </tr>
3730           </xsl:when>
3731           <xsl:otherwise>
3732             <tr>
3733               <td class="label">
3734                 <xsl:value-of select="label"/>
3735               </td>
3736               <td class="value">
3737                 <xsl:value-of select="value"/>
3738               </td>
3739             </tr>
3740           </xsl:otherwise>
3741         </xsl:choose>
3742       </xsl:for-each>
3743     </table>
3744   </xsl:template>
3745
3746   <!--==== HEADER TEMPLATES and NAVIGATION  ====-->
3747
3748   <xsl:template name="header">
3749     <div id="header">
3750       <a href="http://www.bedework.org">
3751         <img id="logo"
3752             alt="logo"
3753             src="{$resourcesRoot}/resources/bedeworkAdminLogo.gif"
3754             width="217"
3755             height="40"
3756             border="0"/>
3757       </a>
3758       <!-- set the page heading: -->
3759       <h1>
3760         <xsl:choose>
3761           <xsl:when test="/bedeworkadmin/page='modEvent' or /bedeworkadmin/page='eventList' or /bedeworkadmin/page='displayEvent'">
3762             Manage Events
3763           </xsl:when>
3764           <xsl:when test="/bedeworkadmin/page='sponsorList' or /bedeworkadmin/page='modSponsor' or /bedeworkadmin/page='deleteSponsorConfirm'">
3765             Manage Contacts
3766           </xsl:when>
3767           <xsl:when test="/bedeworkadmin/page='locationList' or /bedeworkadmin/page='modLocation' or /bedeworkadmin/page='deleteLocationConfirm'">
3768             Manage Locations
3769           </xsl:when>
3770           <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='modCalendar' or /bedeworkadmin/page='calendarReferenced' or /bedeworkadmin/page='deleteCalendarConfirm'">
3771             Manage Calendars
3772           </xsl:when>
3773           <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
3774             Public Calendars
3775           </xsl:when>
3776           <xsl:when test="/bedeworkadmin/page='subscriptions' or /bedeworkadmin/page='modSubscription'">
3777             Manage Subscriptions
3778           </xsl:when>
3779           <xsl:when test="/bedeworkadmin/page='views' or /bedeworkadmin/page='modView'">
3780             Manage Views
3781           </xsl:when>
3782           <xsl:when test="/bedeworkadmin/page='modSyspars'">
3783             Manage System Preferences
3784           </xsl:when>
3785           <xsl:when test="/bedeworkadmin/page='authUserList' or /bedeworkadmin/page='modAuthUser'">
3786             Manage Public Events Administrators
3787           </xsl:when>
3788           <xsl:when test="/bedeworkadmin/page='chooseGroup'">
3789             Choose Administrative Group
3790           </xsl:when>
3791           <xsl:when test="/bedeworkadmin/page='adminGroupList' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroupMembers'">
3792             Manage Administrative Groups
3793           </xsl:when>
3794           <xsl:when test="/bedeworkadmin/page='noGroup'">
3795             No Administrative Group
3796           </xsl:when>
3797           <xsl:when test="/bedeworkadmin/page='uploadTimezones'">
3798             Manage Time Zones
3799           </xsl:when>
3800           <xsl:when test="/bedeworkadmin/page='noAccess'">
3801             Access Denied
3802           </xsl:when>
3803           <xsl:when test="/bedeworkadmin/page='error'">
3804             Error
3805           </xsl:when>
3806           <xsl:otherwise>
3807             Bedework Calendar Administration
3808           </xsl:otherwise>
3809         </xsl:choose>
3810       </h1>
3811
3812       <xsl:if test="/bedeworkadmin/message">
3813         <div id="messages">
3814           <p>
3815             <xsl:apply-templates select="/bedeworkadmin/message"/>
3816           </p>
3817         </div>
3818       </xsl:if>
3819       <xsl:if test="/bedeworkadmin/error">
3820         <div id="errors">
3821           <p>
3822             <xsl:apply-templates select="/bedeworkadmin/error"/>
3823           </p>
3824         </div>
3825       </xsl:if>
3826
3827     </div>
3828     <table id="statusBarTable">
3829       <tr>
3830         <td class="leftCell">
3831           <a href="{$setup}">Main Menu</a> |
3832           <a href="{$publicCal}" target="calendar">Launch Calendar</a> |
3833           <a href="{$logout}">Log Out</a>
3834           <!-- Enable the following two items when debugging skins only -->
3835           | <a href="?refreshXslt=yes">Refresh XSL</a> |
3836           <a href="?noxslt=yes">Show XML</a> (view source)
3837         </td>
3838         <xsl:if test="/bedeworkadmin/userInfo/user">
3839           <td class="rightCell">
3840             <xsl:if test="/bedeworkadmin/currentCalSuite/name">
3841               Calendar Suite:
3842               <span class="status">
3843                 <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
3844               </span>
3845               &#160;
3846             </xsl:if>
3847             Logged in as:
3848             <span class="status">
3849               <xsl:value-of select="/bedeworkadmin/userInfo/user"/>
3850             </span>
3851             &#160;
3852             <xsl:if test="/bedeworkadmin/userInfo/group">
3853               Group:
3854               <span class="status">
3855                 <xsl:value-of select="/bedeworkadmin/userInfo/group"/>
3856               </span>
3857             </xsl:if>
3858           </td>
3859         </xsl:if>
3860       </tr>
3861     </table>
3862     <div id="titleBar">
3863       CALENDAR of EVENTS
3864     </div>
3865   </xsl:template>
3866
3867   <!--==== FOOTER ====-->
3868   <xsl:template name="footer">
3869     <div id="footer">
3870       <a href="http://www.bedework.org/">Bedework website</a>
3871     </div>
3872   </xsl:template>
3873 </xsl:stylesheet>
Note: See TracBrowser for help on using the browser.