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

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

adding better category support to admin UI

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