[Bedework-commit] bedework r1716 - in trunk/deployment: webpublic/webapp/resources/demoskins/MainCampus/default/PDA webpublic/webapp/resources/demoskins/MainCampus/default/default webpublic/webapp/resources/demoskins/SoEDepartmental/default webpublic/webapp/resources/demoskins/SoEDepartmental/default/default webuser/webapp/resources/demoskins/default/default

svnadmin at bedework.org svnadmin at bedework.org
Fri Jan 25 17:26:14 EST 2008


Author: johnsa
Date: 2008-01-25 17:26:13 -0500 (Fri, 25 Jan 2008)
New Revision: 1716

Added:
   trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/rss-list.xsl
   trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/rss-list.xsl
   trunk/deployment/webuser/webapp/resources/demoskins/default/default/rss-list.xsl
Removed:
   trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/PDA/
Modified:
   trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/PDA/default.xsl
   trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/PDA/pda.css
   trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/blue.css
   trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/default.xsl
   trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/green.css
   trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/red.css
   trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/rss.xsl
   trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/default.xsl
   trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/rss.xsl
   trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/soe.css
   trunk/deployment/webuser/webapp/resources/demoskins/default/default/default.xsl
Log:
user clients: 
 - RSS feeds now use listEvent action to return discrete 
   events for an arbitrary number of days (3 in the 
   default stylesheets); rss.xsl is deprecated in favor 
   of rss-list.xsl
 - RSS switched to UTC
 - updated the mobile web skin to be more usable and added 
   it to the list of example skins
 - some general cleanup

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/PDA/default.xsl
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/PDA/default.xsl	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/PDA/default.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -1,717 +1,704 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:output method="xhtml"
-    indent="yes"
-    media-type="text/html"
-    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
-    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-    standalone="yes"
-    omit-xml-declaration="yes"/>
-
-  <!-- ================ -->
-  <!--  PDA STYLESHEET -->
-  <!-- ================  -->
-   <!-- URL of resources common to all bedework apps (javascript, images) -->
-  <xsl:variable name="resourceCommons">http://www.rpi.edu/dept/cct/apps/rpi-bedework-3-3/bedework-common</xsl:variable>
-
-  <!-- DEFINE INCLUDES -->
-  <!-- cannot use the resourceCommons variable in xsl:include paths -->
-  <xsl:include href="../../../bedework-common/default/default/errors.xsl"/>
-  <xsl:include href="../../../bedework-common/default/default/messages.xsl"/>
-
-  <!-- DEFINE GLOBAL CONSTANTS -->
-
-  <!-- URL of the XSL template directory -->
-  <!-- The approot is an appropriate place to put
-       included stylesheets and xml fragments. These are generally
-       referenced relatively (like errors.xsl and messages.xsl above);
-       this variable is here for your convenience if you choose to
-       reference it explicitly.  It is not used in this stylesheet, however,
-       and can be safely removed if you so choose. -->
-  <xsl:variable name="appRoot" select="/bedework/approot"/>
-
-  <!-- URL of html resources (images, css, other html); by default this is
-       set to the application root -->
-  <xsl:variable name="resourcesRoot" select="/bedework/approot"/>
-
-  <!-- Properly encoded prefixes to the application actions; use these to build
-       urls; allows the application to be used without cookies or within a portal.
-       These urls are rewritten in header.jsp and simply passed through for use
-       here. Every url includes a query string (either ?b=de or a real query
-       string) so that all links constructed in this stylesheet may begin the
-       query string with an ampersand. -->
-  <xsl:variable name="setup" select="/bedework/urlPrefixes/setup"/>
-  <xsl:variable name="setSelection" select="/bedework/urlPrefixes/main/setSelection"/>
-  <xsl:variable name="fetchPublicCalendars" select="/bedework/urlPrefixes/calendar/fetchPublicCalendars"/>
-  <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/main/setViewPeriod"/>
-  <xsl:variable name="eventView" select="/bedework/urlPrefixes/event/eventView"/>
-  <xsl:variable name="addEventRef" select="/bedework/urlPrefixes/event/addEventRef"/>
-  <xsl:variable name="export" select="/bedework/urlPrefixes/misc/export/a/@href"/>
-  <xsl:variable name="search" select="/bedework/urlPrefixes/search/search"/>
-  <xsl:variable name="search-next" select="/bedework/urlPrefixes/search/next"/>
-  <xsl:variable name="mailEvent" select="/bedework/urlPrefixes/mail/mailEvent"/>
-  <xsl:variable name="showPage" select="/bedework/urlPrefixes/main/showPage"/>
-  <xsl:variable name="stats" select="/bedework/urlPrefixes/stats/stats"/>
-
-  <!-- URL of the web application - includes web context -->
-  <xsl:variable name="urlPrefix" select="/bedework/urlprefix"/>
-
-  <!-- Other generally useful global variables -->
-  <xsl:variable name="privateCal">/ucal</xsl:variable>
-  <xsl:variable name="prevdate" select="/bedework/previousdate"/>
-  <xsl:variable name="nextdate" select="/bedework/nextdate"/>
-  <xsl:variable name="curdate" select="/bedework/currentdate/date"/>
-
-
-  <!-- MAIN TEMPLATE -->
-  <xsl:template match="/">
-    <html lang="en">
-      <head>
-        <title>RPI Calendar of Events</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" href="{$resourcesRoot}/default/PDA/pda.css"/>
-      </head>
-      <body>
-        <div id="titleBar">
-          Rensselaer Events Calendar
-            <span id="homeLink">
-              [<a href="http://www.rpi.edu/pda/index.html">rpi-pda</a>]
-            </span>
-        </div>
-        <xsl:call-template name="infoAndNavigation"/>
-        <xsl:choose>
-          <xsl:when test="/bedework/page='event'">
-            <!-- show an event -->
-            <xsl:apply-templates select="/bedework/event"/>
-          </xsl:when>
-          <xsl:when test="/bedework/page='calendarList'">
-            <!-- show a list of all calendars -->
-            <xsl:apply-templates select="/bedework/calendars"/>
-          </xsl:when>
-          <xsl:otherwise>
-            <!-- otherwise, show the eventsCalendar -->
-            <!-- main eventCalendar content -->
-            <xsl:call-template name="listView"/>
-          </xsl:otherwise>
-        </xsl:choose>
-        <!-- footer -->
-        <p id="footer">
-          <br/><br/><!-- why, you ask? ...blackberry -->
-          <a href="{$setup}&amp;browserTypeSticky=PDA">Events Calendar</a> |
-          <a href="http://www.rpi.edu/pda">Portable Rensselaer</a><br/>
-          <small>Maintained by C&amp;MT, DotCIO, Rensselaer Polytechnic Institute</small>
-        </p>
-      </body>
-    </html>
-  </xsl:template>
-
-  <!-- === Date Info and Navigation == -->
-  <xsl:template name="infoAndNavigation">
-    <div id="dateInfo">
-      <xsl:if test="/bedework/page!='calendars' and /bedework/page!='event'">
-        &lt;<a href="{$setViewPeriod}&amp;date={$prevdate}">prev</a>
-        <xsl:text> </xsl:text>
-        <strong>
-          <xsl:choose>
-            <xsl:when test="/bedework/periodname='Day'">
-              <xsl:value-of select="substring(/bedework/eventscalendar/year/month/week/day/name,1,3)"/>, <xsl:value-of select="/bedework/eventscalendar/year/month/shortname"/>&#160;<xsl:value-of select="/bedework/eventscalendar/year/month/week/day/value"/>, <xsl:value-of select="/bedework/eventscalendar/year/value"/>
-            </xsl:when>
-            <xsl:when test="/bedework/periodname='Week' or /bedework/periodname=''">
-              Week of <xsl:value-of select="/bedework/eventscalendar/year/month/shortname"/>&#160;<xsl:value-of select="/bedework/eventscalendar/year/month/week/day/value"/>, <xsl:value-of select="/bedework/eventscalendar/year/value"/>
-            </xsl:when>
-            <xsl:when test="/bedework/periodname='Month'">
-              <xsl:value-of select="/bedework/eventscalendar/year/month/longname"/>, <xsl:value-of select="/bedework/eventscalendar/year/value"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="/bedework/eventscalendar/year/value"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </strong>
-        <xsl:text> </xsl:text>
-        <a href="{$setViewPeriod}&amp;date={$nextdate}">next</a>&gt;
-        <br />
-      </xsl:if>
-    </div>
-    <div id="mainNav">
-      <xsl:choose>
-        <xsl:when test="/bedework/page='eventscalendar'">
-          <xsl:choose>
-            <xsl:when test="/bedework/periodname='Day'">
-              day
-            </xsl:when>
-            <xsl:otherwise>
-              <a href="{$setViewPeriod}&amp;viewType=dayView&amp;date={$curdate}">day</a>
-            </xsl:otherwise>
-          </xsl:choose> |
-          <xsl:choose>
-            <xsl:when test="/bedework/periodname='Week' or /bedework/periodname=''">
-              week
-             </xsl:when>
-            <xsl:otherwise>
-              <a href="{$setViewPeriod}&amp;viewType=weekView&amp;date={$curdate}">week</a>
-             </xsl:otherwise>
-          </xsl:choose> |
-          <xsl:choose>
-            <xsl:when test="/bedework/periodname='Month'">
-              month
-            </xsl:when>
-            <xsl:otherwise>
-              <a href="{$setViewPeriod}&amp;viewType=monthView&amp;date={$curdate}">month</a>
-            </xsl:otherwise>
-          </xsl:choose> |
-        </xsl:when>
-        <xsl:otherwise>
-          <a href="{$setViewPeriod}&amp;viewType=dayView&amp;date={$curdate}">day</a> |
-          <a href="{$setViewPeriod}&amp;viewType=weekView&amp;date={$curdate}">week</a> |
-          <a href="{$setViewPeriod}&amp;viewType=monthView&amp;date={$curdate}">month</a> |
-        </xsl:otherwise>
-      </xsl:choose>
-      <a href="{$setViewPeriod}&amp;viewType=todayView&amp;date={$curdate}">
-        today
-      </a><br />
-      <xsl:choose>
-        <xsl:when test="/bedework/selectionState/selectionType = 'calendar'">
-          Calendar: <xsl:value-of select="/bedework/selectionState/subscriptions/subscription/calendar/name"/>
-          <span class="link">[<a href="{$setSelection}">default view</a>]</span>
-        </xsl:when>
-        <xsl:when test="/bedework/selectionState/selectionType = 'search'">
-          Current search: <xsl:value-of select="/bedework/search"/>
-          <span class="link">[<a href="{$setSelection}">default view</a>]</span>
-        </xsl:when>
-        <xsl:when test="/bedework/selectionState/selectionType = 'subscription'">
-          Subscription: (not implemented yet)
-          <span class="link">[<a href="{$setSelection}">default view</a>]</span>
-        </xsl:when>
-        <xsl:when test="/bedework/selectionState/selectionType = 'filter'">
-          Filter: (not implemented yet)
-          <span class="link">[<a href="{$setSelection}">default view</a>]</span>
-        </xsl:when>
-        <xsl:otherwise><!-- view -->
-          <!--<form name="selectViewForm" method="post" action="{$setSelection}">
-            View:
-            <select name="viewName" onChange="submit()" >
-              <xsl:for-each select="/bedework/views/view">
-                <xsl:variable name="name" select="name"/>
-                <xsl:choose>
-                  <xsl:when test="name=/bedework/selectionState/view/name">
-                    <option value="{$name}" selected="selected"><xsl:value-of select="name"/></option>
-                  </xsl:when>
-                  <xsl:otherwise>
-                    <option value="{$name}"><xsl:value-of select="name"/></option>
-                  </xsl:otherwise>
-                </xsl:choose>
-              </xsl:for-each>
-            </select>
-          </form>-->
-          <span class="calLinks"><a href="{$fetchPublicCalendars}">available calendars</a></span>
-        </xsl:otherwise>
-      </xsl:choose>
-    </div><br/><br/>
-  </xsl:template>
-
-  <!--==== SINGLE EVENT ====-->
-  <xsl:template match="event">
-    <xsl:variable name="subscriptionId" select="subscription/id"/>
-    <xsl:variable name="calPath" select="calendar/encodedPath"/>
-    <xsl:variable name="guid" select="guid"/>
-    <xsl:variable name="recurrenceId" select="recurrenceId"/>
-    <xsl:variable name="statusClass">
-      <xsl:choose>
-        <xsl:when test="status='CANCELLED'">bwStatusCancelled</xsl:when>
-        <xsl:when test="status='TENTATIVE'">bwStatusTentative</xsl:when>
-        <xsl:otherwise>bwStatusConfirmed</xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <h2 class="{$statusClass}">
-      <xsl:if test="status='CANCELLED'">CANCELLED: </xsl:if>
-      <xsl:choose>
-        <xsl:when test="link != ''">
-          <xsl:variable name="link" select="link"/>
-          <a href="{$link}">
-            <xsl:value-of select="summary"/>
-          </a>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="summary"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </h2>
-    <table id="eventTable" cellpadding="0" cellspacing="0">
-      <tr>
-        <td class="fieldname">When:</td>
-        <td class="fieldval">
-          <!-- always display local time -->
-          <xsl:value-of select="start/dayname"/>, <xsl:value-of select="start/longdate"/><xsl:text> </xsl:text>
-          <xsl:if test="start/allday = 'false'">
-            <span class="time"><xsl:value-of select="start/time"/></span>
-          </xsl:if>
-          <xsl:if test="(end/longdate != start/longdate) or
-                        ((end/longdate = start/longdate) and (end/time != start/time))"> - </xsl:if>
-          <xsl:if test="end/longdate != start/longdate">
-            <xsl:value-of select="substring(end/dayname,1,3)"/>, <xsl:value-of select="end/longdate"/><xsl:text> </xsl:text>
-          </xsl:if>
-          <xsl:choose>
-            <xsl:when test="start/allday = 'true'">
-              <span class="time"><em>(all day)</em></span>
-            </xsl:when>
-            <xsl:when test="end/longdate != start/longdate">
-              <span class="time"><xsl:value-of select="end/time"/></span>
-            </xsl:when>
-            <xsl:when test="end/time != start/time">
-              <span class="time"><xsl:value-of select="end/time"/></span>
-            </xsl:when>
-          </xsl:choose>
-          <!-- if timezones are not local, or if floating add labels: -->
-          <xsl:if test="start/timezone/islocal = 'false' or end/timezone/islocal = 'false'">
-            <xsl:text> </xsl:text>
-            --
-            <strong>
-              <xsl:choose>
-                <xsl:when test="start/floating = 'true'">
-                  Floating time
-                </xsl:when>
-                <xsl:otherwise>
-                  Local time
-                </xsl:otherwise>
-              </xsl:choose>
-            </strong>
-            <br/>
-          </xsl:if>
-          <!-- display in timezone if not local or floating time) -->
-          <xsl:if test="(start/timezone/islocal = 'false' or end/timezone/islocal = 'false') and start/floating = 'false'">
-            <xsl:choose>
-              <xsl:when test="start/timezone/id != end/timezone/id">
-                <!-- need to display both timezones if they differ from start to end -->
-                <table border="0" cellspacing="0" id="tztable">
-                  <tr>
-                    <td>
-                      <strong>Start:</strong>
-                    </td>
-                    <td>
-                      <xsl:choose>
-                        <xsl:when test="start/timezone/islocal='true'">
-                          <xsl:value-of select="start/dayname"/>,
-                          <xsl:value-of select="start/longdate"/>
-                          <xsl:text> </xsl:text>
-                          <span class="time"><xsl:value-of select="start/time"/></span>
-                        </xsl:when>
-                        <xsl:otherwise>
-                          <xsl:value-of select="start/timezone/dayname"/>,
-                          <xsl:value-of select="start/timezone/longdate"/>
-                          <xsl:text> </xsl:text>
-                          <span class="time"><xsl:value-of select="start/timezone/time"/></span>
-                        </xsl:otherwise>
-                      </xsl:choose>
-                    </td>
-                    <td>
-                      --
-                      <strong><xsl:value-of select="start/timezone/id"/></strong>
-                    </td>
-                  </tr>
-                  <tr>
-                    <td>
-                      <strong>End:</strong>
-                    </td>
-                    <td>
-                      <xsl:choose>
-                        <xsl:when test="end/timezone/islocal='true'">
-                          <xsl:value-of select="end/dayname"/>,
-                          <xsl:value-of select="end/longdate"/>
-                          <xsl:text> </xsl:text>
-                          <span class="time"><xsl:value-of select="end/time"/></span>
-                        </xsl:when>
-                        <xsl:otherwise>
-                          <xsl:value-of select="end/timezone/dayname"/>,
-                          <xsl:value-of select="end/timezone/longdate"/>
-                          <xsl:text> </xsl:text>
-                          <span class="time"><xsl:value-of select="end/timezone/time"/></span>
-                        </xsl:otherwise>
-                      </xsl:choose>
-                    </td>
-                    <td>
-                      --
-                      <strong><xsl:value-of select="end/timezone/id"/></strong>
-                    </td>
-                  </tr>
-                </table>
-              </xsl:when>
-              <xsl:otherwise>
-                <!-- otherwise, timezones are the same: display as a single line  -->
-                <xsl:value-of select="start/timezone/dayname"/>, <xsl:value-of select="start/timezone/longdate"/><xsl:text> </xsl:text>
-                <xsl:if test="start/allday = 'false'">
-                  <span class="time"><xsl:value-of select="start/timezone/time"/></span>
-                </xsl:if>
-                <xsl:if test="(end/timezone/longdate != start/timezone/longdate) or
-                              ((end/timezone/longdate = start/timezone/longdate) and (end/timezone/time != start/timezone/time))"> - </xsl:if>
-                <xsl:if test="end/timezone/longdate != start/timezone/longdate">
-                  <xsl:value-of select="substring(end/timezone/dayname,1,3)"/>, <xsl:value-of select="end/timezone/longdate"/><xsl:text> </xsl:text>
-                </xsl:if>
-                <xsl:choose>
-                  <xsl:when test="start/allday = 'true'">
-                    <span class="time"><em>(all day)</em></span>
-                  </xsl:when>
-                  <xsl:when test="end/timezone/longdate != start/timezone/longdate">
-                    <span class="time"><xsl:value-of select="end/timezone/time"/></span>
-                  </xsl:when>
-                  <xsl:when test="end/timezone/time != start/timezone/time">
-                    <span class="time"><xsl:value-of select="end/timezone/time"/></span>
-                  </xsl:when>
-                </xsl:choose>
-                <xsl:text> </xsl:text>
-                --
-                <strong><xsl:value-of select="start/timezone/id"/></strong>
-              </xsl:otherwise>
-            </xsl:choose>
-          </xsl:if>
-        </td>
-        <th class="icalIcon" rowspan="2">
-          <div id="eventIcons">
-            <!--<a href="{$privateCal}/event/addEventRef.do?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}" title="Add event to MyCalendar" target="myCalendar">
-              <img class="addref" src="{$resourcesRoot}/images/add2mycal-icon.gif" width="20" height="26" border="0" alt="Add event to MyCalendar"/>
-            add to my calendar</a>-->
-            <!--<xsl:variable name="eventIcalName" select="concat($guid,'.ics')"/>
-            <a href="{$export}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}&amp;nocache=no&amp;skinName=ical&amp;contentType=text/calendar&amp;contentName={$eventIcalName}" title="Download event as ical - for Outlook, PDAs, iCal, and other desktop calendars">
-              <img src="{$resourcesRoot}/images/std-ical_icon.gif" width="20" height="26" border="0" alt="Download this event"/>
-             download</a>-->
-          </div>
-        </th>
-      </tr>
-      <tr>
-        <td class="fieldname">Where:</td>
-        <td class="fieldval">
-          <xsl:choose>
-            <xsl:when test="location/link=''">
-              <xsl:value-of select="location/address"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:variable name="locationLink" select="location/link"/>
-              <a href="{$locationLink}">
-                <xsl:value-of select="location/address"/>
-              </a>
-            </xsl:otherwise>
-          </xsl:choose>
-          <xsl:if test="location/subaddress!=''">
-            <br/><xsl:value-of select="location/subaddress"/>
-          </xsl:if>
-        </td>
-      </tr>
-      <tr>
-        <td class="fieldname">Description:</td>
-        <td colspan="2" class="fieldval description">
-          <xsl:call-template name="replace">
-            <xsl:with-param name="string" select="description"/>
-            <xsl:with-param name="pattern" select="'&#xA;'"/>
-            <xsl:with-param name="replacement"><br/></xsl:with-param>
-          </xsl:call-template>
-        </td>
-      </tr>
-      <xsl:if test="status !='' and status != 'CONFIRMED'">
-        <tr>
-          <td class="fieldname">Status:</td>
-          <td class="fieldval">
-            <xsl:value-of select="status"/>
-          </td>
-        </tr>
-      </xsl:if>
-      <xsl:if test="cost!=''">
-        <tr>
-          <td class="fieldname">Cost:</td>
-          <td colspan="2" class="fieldval"><xsl:value-of select="cost"/></td>
-        </tr>
-      </xsl:if>
-      <xsl:if test="link != ''">
-        <tr>
-          <td class="fieldname">See:</td>
-          <td colspan="2" class="fieldval">
-            <xsl:variable name="link" select="link"/>
-            <a href="{$link}"><xsl:value-of select="link"/></a>
-          </td>
-        </tr>
-      </xsl:if>
-      <xsl:if test="contact/name!='none'">
-        <tr>
-          <td class="fieldname">Contact:</td>
-          <td colspan="2" class="fieldval">
-            <xsl:choose>
-              <xsl:when test="contact/link=''">
-                <xsl:value-of select="contact/name"/>
-              </xsl:when>
-              <xsl:otherwise>
-                <xsl:variable name="sponsorLink" select="contact/link"/>
-                <a href="{$sponsorLink}">
-                  <xsl:value-of select="contact/name"/>
-                </a>
-              </xsl:otherwise>
-            </xsl:choose>
-            <xsl:if test="contact/phone!=''">
-              <br /><xsl:value-of select="contact/phone"/>
-            </xsl:if>
-            <!-- If you want to display email addresses, uncomment the
-                 following 8 lines. -->
-            <!-- <xsl:if test="contact/email!=''">
-              <br />
-              <xsl:variable name="email" select="contact/email"/>
-              <xsl:variable name="subject" select="summary"/>
-              <a href="mailto:{$email}&amp;subject={$subject}">
-                <xsl:value-of select="contact/email"/>
-              </a>
-            </xsl:if> -->
-          </td>
-        </tr>
-      </xsl:if>
-      <xsl:if test="calendar/path!=''">
-        <tr>
-          <td class="fieldname">Calendar:</td>
-          <td class="fieldval">
-            <xsl:variable name="calUrl" select="calendar/encodedPath"/>
-            <a href="{$setSelection}&amp;calUrl={$calUrl}">
-              <xsl:value-of select="calendar/name"/>
-            </a>
-          </td>
-        </tr>
-      </xsl:if>
-      <xsl:if test="categories/category">
-        <tr>
-          <td class="fieldname">Categories:</td>
-          <td class="fieldval">
-            <xsl:for-each select="categories/category">
-              <xsl:value-of select="word"/><xsl:if test="position() != last()">, </xsl:if>
-            </xsl:for-each>
-          </td>
-        </tr>
-      </xsl:if>
-    </table>
-  </xsl:template>
-
-  <!--==== LIST VIEW  (for day, week, and month) ====-->
-  <xsl:template name="listView">
-    <xsl:choose>
-      <xsl:when test="not(/bedework/eventscalendar/year/month/week/day/event)">
-        <p>No events to display.</p>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:for-each select="/bedework/eventscalendar/year/month/week/day[count(event)!=0]">
-          <xsl:if test="/bedework/periodname='Week' or /bedework/periodname='Month' or /bedework/periodname=''">
-            <br/><br/><!-- why? css isn't stong on blackberry -->
-            <h3>
-              <xsl:variable name="date" select="date"/>
-              <a href="{$setViewPeriod}&amp;viewType=dayView&amp;date={$date}">
-                <xsl:value-of select="name"/>, <xsl:value-of select="longdate"/>
-              </a>
-            </h3>
-          </xsl:if>
-          <xsl:for-each select="event">
-            <xsl:variable name="id" select="id"/>
-            <xsl:variable name="subscriptionId" select="subscription/id"/>
-            <xsl:variable name="calPath" select="calendar/encodedPath"/>
-            <xsl:variable name="guid" select="guid"/>
-            <xsl:variable name="recurrenceId" select="recurrenceId"/>
-            <dl>
-              <dt>
-                <xsl:choose>
-                  <xsl:when test="start/allday = 'true' and
-                                  start/shortdate = end/shortdate">
-                    all day
-                  </xsl:when>
-                  <xsl:when test="start/shortdate = end/shortdate and
-                                  start/time = end/time">
-                    <xsl:value-of select="start/time"/>
-                  </xsl:when>
-                  <xsl:otherwise>
-                    <xsl:choose>
-                      <xsl:when test="start/allday = 'true' and
-                                      parent::day/shortdate = start/shortdate">
-                        today
-                      </xsl:when>
-                      <xsl:when test="parent::day/shortdate != start/shortdate">
-                        <span class="littleArrow">&#171;</span>&#160;
-                        <xsl:value-of select="start/month"/>/<xsl:value-of select="start/day"/>
-                      </xsl:when>
-                      <xsl:otherwise>
-                        <xsl:value-of select="start/time"/>
-                      </xsl:otherwise>
-                    </xsl:choose>
-                    -
-                    <xsl:choose>
-                      <xsl:when test="end/allday = 'true' and
-                                      parent::day/shortdate = end/shortdate">
-                        today
-                      </xsl:when>
-                      <xsl:when test="parent::day/shortdate != end/shortdate">
-                        <xsl:value-of select="end/month"/>/<xsl:value-of select="end/day"/>
-                        &#160;<span class="littleArrow">&#187;</span>
-                      </xsl:when>
-                      <xsl:otherwise>
-                        <xsl:value-of select="end/time"/>
-                      </xsl:otherwise>
-                    </xsl:choose>
-                  </xsl:otherwise>
-                </xsl:choose>
-              </dt>
-              <dd>
-                <xsl:if test="status='CANCELLED'"><strong>CANCELLED: </strong></xsl:if>
-                <xsl:choose>
-                  <xsl:when test="/bedework/appvar[key='summaryMode']/value='details'">
-                    <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
-                      <strong>
-                        <xsl:value-of select="summary"/>:
-                      </strong>
-                      <xsl:value-of select="description"/>&#160;
-                      <em>
-                        <xsl:value-of select="location/address"/>
-                        <xsl:if test="location/subaddress != ''">
-                          , <xsl:value-of select="location/subaddress"/>
-                        </xsl:if>.&#160;
-                        <xsl:if test="cost!=''">
-                          <xsl:value-of select="cost"/>.&#160;
-                        </xsl:if>
-                        <xsl:if test="contact/name!='none'">
-                          Contact: <xsl:value-of select="contact/name"/>
-                        </xsl:if>
-                      </em>
-                      - <xsl:value-of select="calendar/name"/>
-                    </a>
-                    <xsl:if test="link != ''">
-                      <xsl:variable name="link" select="link"/>
-                      <a href="{$link}" class="moreLink"><xsl:value-of select="link"/></a>
-                    </xsl:if>
-                  </xsl:when>
-                  <xsl:otherwise>
-                    <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
-                      <xsl:value-of select="summary"/>
-                      <xsl:if test="location/address != ''">, <xsl:value-of select="location/address"/></xsl:if>
-                    </a>
-                    - <em><xsl:value-of select="calendar/name"/></em>
-                  </xsl:otherwise>
-                </xsl:choose>
-              </dd>
-            </dl>
-          </xsl:for-each>
-        </xsl:for-each>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-  <!--==== CALENDARS PAGE ====-->
-  <xsl:template match="calendars">
-    <p><b>All Calendars</b><br />
-    Select a calendar from the list below to see only that calendar's events.</p>
-    <xsl:apply-templates select="calendar/calendar" mode="calTree"/>
-  </xsl:template>
-
-  <xsl:template match="calendar" mode="calTree">
-    <xsl:variable name="itemClass">
-      <xsl:choose>
-        <xsl:when test="calendarCollection='false'">folder</xsl:when>
-        <xsl:otherwise>calendar</xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:variable name="url" select="encodedPath"/>
-    <li class="{$itemClass}">
-      <a href="{$setSelection}&amp;calUrl={$url}" title="view calendar"><xsl:value-of select="name"/></a>
-      <xsl:if test="calendarCollection='true'">
-        <xsl:variable name="name" select="name"/>
-        <xsl:variable name="calPath" select="path"/>
-        <span class="exportCalLink">
-          <a href="javascript:launchExportWidget('exportCalendarForm','{$name}','{$calPath}')" id="{$calPath}" title="export calendar as iCal">
-            <img src="{$resourcesRoot}/images/calIconExport-sm.gif" width="13" height="13" alt="export calendar" border="0"/>
-          </a>
-        </span>
-      </xsl:if>
-      <xsl:if test="calendar">
-        <ul>
-          <xsl:apply-templates select="calendar" mode="calTree"/>
-        </ul>
-      </xsl:if>
-    </li>
-  </xsl:template>
-
-
-
-  <!--==== NAVIGATION  ====-->
-
-  <xsl:template name="dateSelect">
-    <form name="calForm" method="post" action="{$urlPrefix}/setView.do">
-      <table border="0" cellpadding="0" cellspacing="0">
-        <tr>
-          <xsl:if test="/bedework/periodname!='Year'">
-            <td>
-              <select name="viewStartDate.month">
-                <xsl:for-each select="/bedework/monthvalues/val">
-                  <xsl:variable name="temp" select="."/>
-                  <xsl:variable name="pos" select="position()"/>
-                  <xsl:choose>
-                    <xsl:when test="/bedework/monthvalues[start=$temp]">
-                      <option value="{$temp}" selected="selected">
-                        <xsl:value-of select="/bedework/monthlabels/val[position()=$pos]"/>
-                      </option>
-                    </xsl:when>
-                    <xsl:otherwise>
-                      <option value="{$temp}">
-                        <xsl:value-of select="/bedework/monthlabels/val[position()=$pos]"/>
-                      </option>
-                    </xsl:otherwise>
-                  </xsl:choose>
-                </xsl:for-each>
-              </select>
-            </td>
-            <xsl:if test="/bedework/periodname!='Month'">
-              <td>
-                <select name="viewStartDate.day">
-                  <xsl:for-each select="/bedework/dayvalues/val">
-                    <xsl:variable name="temp" select="."/>
-                    <xsl:variable name="pos" select="position()"/>
-                    <xsl:choose>
-                      <xsl:when test="/bedework/dayvalues[start=$temp]">
-                        <option value="{$temp}" selected="selected">
-                          <xsl:value-of select="/bedework/daylabels/val[position()=$pos]"/>
-                        </option>
-                      </xsl:when>
-                      <xsl:otherwise>
-                        <option value="{$temp}">
-                          <xsl:value-of select="/bedework/daylabels/val[position()=$pos]"/>
-                        </option>
-                      </xsl:otherwise>
-                    </xsl:choose>
-                  </xsl:for-each>
-                </select>
-              </td>
-            </xsl:if>
-          </xsl:if>
-          <td>
-            <xsl:variable name="temp" select="/bedework/yearvalues/start"/>
-            <input type="text" name="viewStartDate.year" maxlength="4" size="4" value="{$temp}"/>
-          </td>
-          <td>
-            <input name="submit" type="submit" value="go"/>
-          </td>
-        </tr>
-      </table>
-    </form>
-  </xsl:template>
-
-  <!--==== UTILITY TEMPLATES ====-->
-
-  <!-- search and replace template taken from
-       http://www.biglist.com/lists/xsl-list/archives/200211/msg00337.html -->
-  <xsl:template name="replace">
-    <xsl:param name="string" select="''"/>
-    <xsl:param name="pattern" select="''"/>
-    <xsl:param name="replacement" select="''"/>
-    <xsl:choose>
-      <xsl:when test="$pattern != '' and $string != '' and contains($string, $pattern)">
-        <xsl:value-of select="substring-before($string, $pattern)"/>
-        <xsl:copy-of select="$replacement"/>
-        <xsl:call-template name="replace">
-          <xsl:with-param name="string" select="substring-after($string, $pattern)"/>
-          <xsl:with-param name="pattern" select="$pattern"/>
-          <xsl:with-param name="replacement" select="$replacement"/>
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="$string"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="xhtml"
+    indent="yes"
+    media-type="text/html"
+    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+    standalone="yes"
+    omit-xml-declaration="yes"/>
+
+  <!-- ===============================================
+             BEDEWORK MOBILE STYLESHEET
+
+        Renders Bedework public client for mobile
+        devices.  Call this stylesheet using:
+
+        http://localhost:8080/cal/setup.do?browserTypeSticky=PDA
+        to revert to the default browserType, use
+        http://localhost:8080/cal/setup.do?browserTypeSticky=default
+
+       ==============================================  -->
+
+  <!-- URL of resources common to all bedework apps (javascript, images) -->
+  <xsl:variable name="resourceCommons">../../../bedework-common</xsl:variable>
+
+  <!-- DEFINE INCLUDES -->
+  <!-- cannot use the resourceCommons variable in xsl:include paths -->
+  <xsl:include href="../../../bedework-common/default/default/errors.xsl"/>
+  <xsl:include href="../../../bedework-common/default/default/messages.xsl"/>
+
+  <!-- DEFINE GLOBAL CONSTANTS -->
+
+  <!-- URL of the XSL template directory -->
+  <!-- The approot is an appropriate place to put
+       included stylesheets and xml fragments. These are generally
+       referenced relatively (like errors.xsl and messages.xsl above);
+       this variable is here for your convenience if you choose to
+       reference it explicitly.  It is not used in this stylesheet, however,
+       and can be safely removed if you so choose. -->
+  <xsl:variable name="appRoot" select="/bedework/approot"/>
+
+  <!-- URL of html resources (images, css, other html); by default this is
+       set to the application root -->
+  <xsl:variable name="resourcesRoot" select="/bedework/approot"/>
+
+  <!-- Properly encoded prefixes to the application actions; use these to build
+       urls; allows the application to be used without cookies or within a portal.
+       These urls are rewritten in header.jsp and simply passed through for use
+       here. Every url includes a query string (either ?b=de or a real query
+       string) so that all links constructed in this stylesheet may begin the
+       query string with an ampersand. -->
+  <xsl:variable name="setup" select="/bedework/urlPrefixes/setup"/>
+  <xsl:variable name="setSelection" select="/bedework/urlPrefixes/main/setSelection"/>
+  <xsl:variable name="fetchPublicCalendars" select="/bedework/urlPrefixes/calendar/fetchPublicCalendars"/>
+  <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/main/setViewPeriod"/>
+  <xsl:variable name="eventView" select="/bedework/urlPrefixes/event/eventView"/>
+  <xsl:variable name="addEventRef" select="/bedework/urlPrefixes/event/addEventRef"/>
+  <xsl:variable name="export" select="/bedework/urlPrefixes/misc/export/a/@href"/>
+  <xsl:variable name="search" select="/bedework/urlPrefixes/search/search"/>
+  <xsl:variable name="search-next" select="/bedework/urlPrefixes/search/next"/>
+  <xsl:variable name="mailEvent" select="/bedework/urlPrefixes/mail/mailEvent"/>
+  <xsl:variable name="showPage" select="/bedework/urlPrefixes/main/showPage"/>
+  <xsl:variable name="stats" select="/bedework/urlPrefixes/stats/stats"/>
+
+  <!-- URL of the web application - includes web context -->
+  <xsl:variable name="urlPrefix" select="/bedework/urlprefix"/>
+
+  <!-- Other generally useful global variables -->
+  <xsl:variable name="privateCal">/ucal</xsl:variable>
+  <xsl:variable name="prevdate" select="/bedework/previousdate"/>
+  <xsl:variable name="nextdate" select="/bedework/nextdate"/>
+  <xsl:variable name="curdate" select="/bedework/currentdate/date"/>
+
+
+  <!-- MAIN TEMPLATE -->
+  <xsl:template match="/">
+    <html xml:lang="en">
+      <head>
+        <title>Bedework Events Calendar</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta http-equiv="Pragma" content="no-cache"/>
+        <meta http-equiv="Expires" content="-1"/>
+        <link rel="stylesheet" href="{$resourcesRoot}/default/PDA/pda.css"/>
+      </head>
+      <body>
+        <h1 id="homeTitle">
+          Home Title Here
+          <span id="homeLink">
+            [<a href="{$setup}&amp;browserTypeSticky=default">home</a>]
+          </span>
+        </h1>
+        <div id="titleBar">
+          Bedework Events Calendar
+        </div>
+        <xsl:call-template name="infoAndNavigation"/>
+        <xsl:choose>
+          <xsl:when test="/bedework/page='event'">
+            <!-- show an event -->
+            <xsl:apply-templates select="/bedework/event"/>
+          </xsl:when>
+          <xsl:when test="/bedework/page='calendarList'">
+            <!-- show a list of all calendars -->
+            <xsl:apply-templates select="/bedework/calendars"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <!-- otherwise, show the eventsCalendar -->
+            <!-- main eventCalendar content -->
+            <xsl:call-template name="listView"/>
+          </xsl:otherwise>
+        </xsl:choose>
+        <!-- footer -->
+        <p id="footer">
+          <a href="{$setup}&amp;browserTypeSticky=PDA">Events Calendar</a> |
+          <a href="{$setup}&amp;browserTypeSticky=default">Home Link</a><br/>
+          <small>Footer Text</small>
+        </p>
+      </body>
+    </html>
+  </xsl:template>
+
+  <!-- === Date Info and Navigation == -->
+  <xsl:template name="infoAndNavigation">
+    <div id="dateInfo">
+      <xsl:if test="/bedework/page!='calendarList' and /bedework/page!='event'">
+        &lt;<a href="{$setViewPeriod}&amp;date={$prevdate}">prev</a>
+        <xsl:text> </xsl:text>
+        <strong>
+          <xsl:choose>
+            <xsl:when test="/bedework/periodname='Day'">
+              <xsl:value-of select="substring(/bedework/eventscalendar/year/month/week/day/name,1,3)"/>, <xsl:value-of select="/bedework/eventscalendar/year/month/shortname"/>&#160;<xsl:value-of select="/bedework/eventscalendar/year/month/week/day/value"/>, <xsl:value-of select="/bedework/eventscalendar/year/value"/>
+            </xsl:when>
+            <xsl:when test="/bedework/periodname='Week' or /bedework/periodname=''">
+              Week of <xsl:value-of select="/bedework/eventscalendar/year/month/shortname"/>&#160;<xsl:value-of select="/bedework/eventscalendar/year/month/week/day/value"/>, <xsl:value-of select="/bedework/eventscalendar/year/value"/>
+            </xsl:when>
+            <xsl:when test="/bedework/periodname='Month'">
+              <xsl:value-of select="/bedework/eventscalendar/year/month/longname"/>, <xsl:value-of select="/bedework/eventscalendar/year/value"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="/bedework/eventscalendar/year/value"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </strong>
+        <xsl:text> </xsl:text>
+        <a href="{$setViewPeriod}&amp;date={$nextdate}">next</a>&gt;
+        <br />
+      </xsl:if>
+    </div>
+    <div id="mainNav">
+      <xsl:choose>
+        <xsl:when test="/bedework/page='eventscalendar'">
+          <xsl:choose>
+            <xsl:when test="/bedework/periodname='Day'">
+              day
+            </xsl:when>
+            <xsl:otherwise>
+              <a href="{$setViewPeriod}&amp;viewType=dayView&amp;date={$curdate}">day</a>
+            </xsl:otherwise>
+          </xsl:choose> |
+          <xsl:choose>
+            <xsl:when test="/bedework/periodname='Week' or /bedework/periodname=''">
+              week
+             </xsl:when>
+            <xsl:otherwise>
+              <a href="{$setViewPeriod}&amp;viewType=weekView&amp;date={$curdate}">week</a>
+             </xsl:otherwise>
+          </xsl:choose> |
+          <xsl:choose>
+            <xsl:when test="/bedework/periodname='Month'">
+              month
+            </xsl:when>
+            <xsl:otherwise>
+              <a href="{$setViewPeriod}&amp;viewType=monthView&amp;date={$curdate}">month</a>
+            </xsl:otherwise>
+          </xsl:choose> |
+        </xsl:when>
+        <xsl:otherwise>
+          <a href="{$setViewPeriod}&amp;viewType=dayView&amp;date={$curdate}">day</a> |
+          <a href="{$setViewPeriod}&amp;viewType=weekView&amp;date={$curdate}">week</a> |
+          <a href="{$setViewPeriod}&amp;viewType=monthView&amp;date={$curdate}">month</a> |
+        </xsl:otherwise>
+      </xsl:choose>
+      <a href="{$setViewPeriod}&amp;viewType=todayView&amp;date={$curdate}">
+        today
+      </a><br />
+      <xsl:choose>
+        <xsl:when test="/bedework/selectionState/selectionType = 'calendar'">
+          Calendar: <xsl:value-of select="/bedework/selectionState/subscriptions/subscription/calendar/name"/>
+          <span class="link">[<a href="{$setSelection}">show all</a>]</span>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:if test="/bedework/page != 'calendarList'">
+            <span class="calLinks"><a href="{$fetchPublicCalendars}">available calendars</a></span>
+          </xsl:if>
+        </xsl:otherwise>
+      </xsl:choose>
+    </div>
+  </xsl:template>
+
+  <!--==== SINGLE EVENT ====-->
+  <xsl:template match="event">
+    <xsl:variable name="subscriptionId" select="subscription/id"/>
+    <xsl:variable name="calPath" select="calendar/encodedPath"/>
+    <xsl:variable name="guid" select="guid"/>
+    <xsl:variable name="recurrenceId" select="recurrenceId"/>
+    <xsl:variable name="statusClass">
+      <xsl:choose>
+        <xsl:when test="status='CANCELLED'">bwStatusCancelled</xsl:when>
+        <xsl:when test="status='TENTATIVE'">bwStatusTentative</xsl:when>
+        <xsl:otherwise>bwStatusConfirmed</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <h2 class="{$statusClass}">
+      <xsl:if test="status='CANCELLED'">CANCELLED: </xsl:if>
+      <xsl:choose>
+        <xsl:when test="link != ''">
+          <xsl:variable name="link" select="link"/>
+          <a href="{$link}">
+            <xsl:value-of select="summary"/>
+          </a>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="summary"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </h2>
+    <table id="eventTable" cellpadding="0" cellspacing="0">
+      <tr>
+        <td class="fieldname">When:</td>
+        <td class="fieldval">
+          <!-- always display local time -->
+          <xsl:value-of select="start/dayname"/>, <xsl:value-of select="start/longdate"/><xsl:text> </xsl:text>
+          <xsl:if test="start/allday = 'false'">
+            <span class="time"><xsl:value-of select="start/time"/></span>
+          </xsl:if>
+          <xsl:if test="(end/longdate != start/longdate) or
+                        ((end/longdate = start/longdate) and (end/time != start/time))"> - </xsl:if>
+          <xsl:if test="end/longdate != start/longdate">
+            <xsl:value-of select="substring(end/dayname,1,3)"/>, <xsl:value-of select="end/longdate"/><xsl:text> </xsl:text>
+          </xsl:if>
+          <xsl:choose>
+            <xsl:when test="start/allday = 'true'">
+              <span class="time"><em>(all day)</em></span>
+            </xsl:when>
+            <xsl:when test="end/longdate != start/longdate">
+              <span class="time"><xsl:value-of select="end/time"/></span>
+            </xsl:when>
+            <xsl:when test="end/time != start/time">
+              <span class="time"><xsl:value-of select="end/time"/></span>
+            </xsl:when>
+          </xsl:choose>
+          <!-- if timezones are not local, or if floating add labels: -->
+          <xsl:if test="start/timezone/islocal = 'false' or end/timezone/islocal = 'false'">
+            <xsl:text> </xsl:text>
+            --
+            <strong>
+              <xsl:choose>
+                <xsl:when test="start/floating = 'true'">
+                  Floating time
+                </xsl:when>
+                <xsl:otherwise>
+                  Local time
+                </xsl:otherwise>
+              </xsl:choose>
+            </strong>
+            <br/>
+          </xsl:if>
+          <!-- display in timezone if not local or floating time) -->
+          <xsl:if test="(start/timezone/islocal = 'false' or end/timezone/islocal = 'false') and start/floating = 'false'">
+            <xsl:choose>
+              <xsl:when test="start/timezone/id != end/timezone/id">
+                <!-- need to display both timezones if they differ from start to end -->
+                <table border="0" cellspacing="0" id="tztable">
+                  <tr>
+                    <td>
+                      <strong>Start:</strong>
+                    </td>
+                    <td>
+                      <xsl:choose>
+                        <xsl:when test="start/timezone/islocal='true'">
+                          <xsl:value-of select="start/dayname"/>,
+                          <xsl:value-of select="start/longdate"/>
+                          <xsl:text> </xsl:text>
+                          <span class="time"><xsl:value-of select="start/time"/></span>
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <xsl:value-of select="start/timezone/dayname"/>,
+                          <xsl:value-of select="start/timezone/longdate"/>
+                          <xsl:text> </xsl:text>
+                          <span class="time"><xsl:value-of select="start/timezone/time"/></span>
+                        </xsl:otherwise>
+                      </xsl:choose>
+                    </td>
+                    <td>
+                      --
+                      <strong><xsl:value-of select="start/timezone/id"/></strong>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <strong>End:</strong>
+                    </td>
+                    <td>
+                      <xsl:choose>
+                        <xsl:when test="end/timezone/islocal='true'">
+                          <xsl:value-of select="end/dayname"/>,
+                          <xsl:value-of select="end/longdate"/>
+                          <xsl:text> </xsl:text>
+                          <span class="time"><xsl:value-of select="end/time"/></span>
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <xsl:value-of select="end/timezone/dayname"/>,
+                          <xsl:value-of select="end/timezone/longdate"/>
+                          <xsl:text> </xsl:text>
+                          <span class="time"><xsl:value-of select="end/timezone/time"/></span>
+                        </xsl:otherwise>
+                      </xsl:choose>
+                    </td>
+                    <td>
+                      --
+                      <strong><xsl:value-of select="end/timezone/id"/></strong>
+                    </td>
+                  </tr>
+                </table>
+              </xsl:when>
+              <xsl:otherwise>
+                <!-- otherwise, timezones are the same: display as a single line  -->
+                <xsl:value-of select="start/timezone/dayname"/>, <xsl:value-of select="start/timezone/longdate"/><xsl:text> </xsl:text>
+                <xsl:if test="start/allday = 'false'">
+                  <span class="time"><xsl:value-of select="start/timezone/time"/></span>
+                </xsl:if>
+                <xsl:if test="(end/timezone/longdate != start/timezone/longdate) or
+                              ((end/timezone/longdate = start/timezone/longdate) and (end/timezone/time != start/timezone/time))"> - </xsl:if>
+                <xsl:if test="end/timezone/longdate != start/timezone/longdate">
+                  <xsl:value-of select="substring(end/timezone/dayname,1,3)"/>, <xsl:value-of select="end/timezone/longdate"/><xsl:text> </xsl:text>
+                </xsl:if>
+                <xsl:choose>
+                  <xsl:when test="start/allday = 'true'">
+                    <span class="time"><em>(all day)</em></span>
+                  </xsl:when>
+                  <xsl:when test="end/timezone/longdate != start/timezone/longdate">
+                    <span class="time"><xsl:value-of select="end/timezone/time"/></span>
+                  </xsl:when>
+                  <xsl:when test="end/timezone/time != start/timezone/time">
+                    <span class="time"><xsl:value-of select="end/timezone/time"/></span>
+                  </xsl:when>
+                </xsl:choose>
+                <xsl:text> </xsl:text>
+                --
+                <strong><xsl:value-of select="start/timezone/id"/></strong>
+              </xsl:otherwise>
+            </xsl:choose>
+          </xsl:if>
+        </td>
+        <th class="icalIcon" rowspan="2">
+          <div id="eventIcons">
+            <!--<a href="{$privateCal}/event/addEventRef.do?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}" title="Add event to MyCalendar" target="myCalendar">
+              <img class="addref" src="{$resourcesRoot}/images/add2mycal-icon.gif" width="20" height="26" border="0" alt="Add event to MyCalendar"/>
+            add to my calendar</a>-->
+            <!--<xsl:variable name="eventIcalName" select="concat($guid,'.ics')"/>
+            <a href="{$export}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}&amp;nocache=no&amp;skinName=ical&amp;contentType=text/calendar&amp;contentName={$eventIcalName}" title="Download event as ical - for Outlook, PDAs, iCal, and other desktop calendars">
+              <img src="{$resourcesRoot}/images/std-ical_icon.gif" width="20" height="26" border="0" alt="Download this event"/>
+             download</a>-->
+          </div>
+        </th>
+      </tr>
+      <tr>
+        <td class="fieldname">Where:</td>
+        <td class="fieldval">
+          <xsl:choose>
+            <xsl:when test="location/link=''">
+              <xsl:value-of select="location/address"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:variable name="locationLink" select="location/link"/>
+              <a href="{$locationLink}">
+                <xsl:value-of select="location/address"/>
+              </a>
+            </xsl:otherwise>
+          </xsl:choose>
+          <xsl:if test="location/subaddress!=''">
+            <br/><xsl:value-of select="location/subaddress"/>
+          </xsl:if>
+        </td>
+      </tr>
+      <tr>
+        <td class="fieldname">Description:</td>
+        <td colspan="2" class="fieldval description">
+          <xsl:call-template name="replace">
+            <xsl:with-param name="string" select="description"/>
+            <xsl:with-param name="pattern" select="'&#xA;'"/>
+            <xsl:with-param name="replacement"><br/></xsl:with-param>
+          </xsl:call-template>
+        </td>
+      </tr>
+      <xsl:if test="status !='' and status != 'CONFIRMED'">
+        <tr>
+          <td class="fieldname">Status:</td>
+          <td class="fieldval">
+            <xsl:value-of select="status"/>
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="cost!=''">
+        <tr>
+          <td class="fieldname">Cost:</td>
+          <td colspan="2" class="fieldval"><xsl:value-of select="cost"/></td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="link != ''">
+        <tr>
+          <td class="fieldname">See:</td>
+          <td colspan="2" class="fieldval">
+            <xsl:variable name="link" select="link"/>
+            <a href="{$link}"><xsl:value-of select="link"/></a>
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="contact/name!='none'">
+        <tr>
+          <td class="fieldname">Contact:</td>
+          <td colspan="2" class="fieldval">
+            <xsl:choose>
+              <xsl:when test="contact/link=''">
+                <xsl:value-of select="contact/name"/>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:variable name="sponsorLink" select="contact/link"/>
+                <a href="{$sponsorLink}">
+                  <xsl:value-of select="contact/name"/>
+                </a>
+              </xsl:otherwise>
+            </xsl:choose>
+            <xsl:if test="contact/phone!=''">
+              <br /><xsl:value-of select="contact/phone"/>
+            </xsl:if>
+            <!-- If you want to display email addresses, uncomment the
+                 following 8 lines. -->
+            <!-- <xsl:if test="contact/email!=''">
+              <br />
+              <xsl:variable name="email" select="contact/email"/>
+              <xsl:variable name="subject" select="summary"/>
+              <a href="mailto:{$email}&amp;subject={$subject}">
+                <xsl:value-of select="contact/email"/>
+              </a>
+            </xsl:if> -->
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="calendar/path!=''">
+        <tr>
+          <td class="fieldname">Calendar:</td>
+          <td class="fieldval">
+            <xsl:variable name="calUrl" select="calendar/encodedPath"/>
+            <a href="{$setSelection}&amp;calUrl={$calUrl}">
+              <xsl:value-of select="calendar/name"/>
+            </a>
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="categories/category">
+        <tr>
+          <td class="fieldname">Categories:</td>
+          <td class="fieldval">
+            <xsl:for-each select="categories/category">
+              <xsl:value-of select="word"/><xsl:if test="position() != last()">, </xsl:if>
+            </xsl:for-each>
+          </td>
+        </tr>
+      </xsl:if>
+    </table>
+  </xsl:template>
+
+  <!--==== LIST VIEW  (for day, week, and month) ====-->
+  <xsl:template name="listView">
+    <xsl:choose>
+      <xsl:when test="not(/bedework/eventscalendar/year/month/week/day/event)">
+        <p>No events to display.</p>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:for-each select="/bedework/eventscalendar/year/month/week/day[count(event)!=0]">
+          <xsl:if test="/bedework/periodname='Week' or /bedework/periodname='Month' or /bedework/periodname=''">
+            <h3>
+              <xsl:variable name="date" select="date"/>
+              <a href="{$setViewPeriod}&amp;viewType=dayView&amp;date={$date}">
+                <xsl:value-of select="name"/>, <xsl:value-of select="longdate"/>
+              </a>
+            </h3>
+          </xsl:if>
+          <table class="eventList" border="0" cellpadding="0" cellspacing="0">
+            <xsl:for-each select="event">
+              <xsl:variable name="id" select="id"/>
+              <xsl:variable name="subscriptionId" select="subscription/id"/>
+              <xsl:variable name="calPath" select="calendar/encodedPath"/>
+              <xsl:variable name="guid" select="guid"/>
+              <xsl:variable name="recurrenceId" select="recurrenceId"/>
+              <tr>
+                <xsl:choose>
+                  <xsl:when test="position() mod 2 = 0">
+                    <xsl:attribute name="class">a</xsl:attribute>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:attribute name="class">b</xsl:attribute>
+                  </xsl:otherwise>
+                </xsl:choose>
+                <td class="date">
+                  <xsl:choose>
+                    <xsl:when test="start/allday = 'true' and
+                                    start/shortdate = end/shortdate">
+                      all day
+                    </xsl:when>
+                    <xsl:when test="start/shortdate = end/shortdate and
+                                    start/time = end/time">
+                      <xsl:value-of select="start/time"/>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <xsl:choose>
+                        <xsl:when test="start/allday = 'true' and
+                                        parent::day/shortdate = start/shortdate">
+                          today
+                        </xsl:when>
+                        <xsl:when test="parent::day/shortdate != start/shortdate">
+                          <span class="littleArrow">&#171;</span>
+                          <xsl:value-of select="start/month"/>/<xsl:value-of select="start/day"/>
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <xsl:value-of select="start/time"/>
+                        </xsl:otherwise>
+                      </xsl:choose>
+                      -
+                      <xsl:choose>
+                        <xsl:when test="end/allday = 'true' and
+                                        parent::day/shortdate = end/shortdate">
+                          today
+                        </xsl:when>
+                        <xsl:when test="parent::day/shortdate != end/shortdate">
+                          <xsl:value-of select="end/month"/>/<xsl:value-of select="end/day"/>
+                          <span class="littleArrow">&#187;</span>
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <xsl:value-of select="end/time"/>
+                        </xsl:otherwise>
+                      </xsl:choose>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </td>
+                <td class="description">
+                  <xsl:if test="status='CANCELLED'"><strong>CANCELLED: </strong></xsl:if>
+                  <xsl:choose>
+                    <xsl:when test="/bedework/appvar[key='summaryMode']/value='details'">
+                      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                        <strong>
+                          <xsl:value-of select="summary"/>:
+                        </strong>
+                        <xsl:value-of select="description"/>&#160;
+                        <em>
+                          <xsl:value-of select="location/address"/>
+                          <xsl:if test="location/subaddress != ''">
+                            , <xsl:value-of select="location/subaddress"/>
+                          </xsl:if>.&#160;
+                          <xsl:if test="cost!=''">
+                            <xsl:value-of select="cost"/>.&#160;
+                          </xsl:if>
+                          <xsl:if test="contact/name!='none'">
+                            Contact: <xsl:value-of select="contact/name"/>
+                          </xsl:if>
+                        </em>
+                        - <xsl:value-of select="calendar/name"/>
+                      </a>
+                      <xsl:if test="link != ''">
+                        <xsl:variable name="link" select="link"/>
+                        <a href="{$link}" class="moreLink"><xsl:value-of select="link"/></a>
+                      </xsl:if>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                        <xsl:value-of select="summary"/>
+                      </a>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </td>
+              </tr>
+            </xsl:for-each>
+          </table>
+        </xsl:for-each>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!--==== CALENDARS PAGE ====-->
+  <xsl:template match="calendars">
+    <p><b>All Calendars</b><br />
+    Select a calendar from the list below to see only that calendar's events.</p>
+    <ul class="calendarTree">
+      <xsl:apply-templates select="calendar/calendar" mode="calTree"/>
+    </ul>
+  </xsl:template>
+
+  <xsl:template match="calendar" mode="calTree">
+    <xsl:variable name="itemClass">
+      <xsl:choose>
+        <xsl:when test="calendarCollection='false'">folder</xsl:when>
+        <xsl:otherwise>calendar</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:variable name="url" select="encodedPath"/>
+    <li class="{$itemClass}">
+      <a href="{$setSelection}&amp;calUrl={$url}" title="view calendar"><xsl:value-of select="name"/></a>
+      <xsl:if test="calendar">
+        <ul>
+          <xsl:apply-templates select="calendar" mode="calTree"/>
+        </ul>
+      </xsl:if>
+    </li>
+  </xsl:template>
+
+
+
+  <!--==== NAVIGATION  ====-->
+
+  <xsl:template name="dateSelect">
+    <form name="calForm" method="post" action="{$urlPrefix}/setView.do">
+      <table border="0" cellpadding="0" cellspacing="0">
+        <tr>
+          <xsl:if test="/bedework/periodname!='Year'">
+            <td>
+              <select name="viewStartDate.month">
+                <xsl:for-each select="/bedework/monthvalues/val">
+                  <xsl:variable name="temp" select="."/>
+                  <xsl:variable name="pos" select="position()"/>
+                  <xsl:choose>
+                    <xsl:when test="/bedework/monthvalues[start=$temp]">
+                      <option value="{$temp}" selected="selected">
+                        <xsl:value-of select="/bedework/monthlabels/val[position()=$pos]"/>
+                      </option>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <option value="{$temp}">
+                        <xsl:value-of select="/bedework/monthlabels/val[position()=$pos]"/>
+                      </option>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </xsl:for-each>
+              </select>
+            </td>
+            <xsl:if test="/bedework/periodname!='Month'">
+              <td>
+                <select name="viewStartDate.day">
+                  <xsl:for-each select="/bedework/dayvalues/val">
+                    <xsl:variable name="temp" select="."/>
+                    <xsl:variable name="pos" select="position()"/>
+                    <xsl:choose>
+                      <xsl:when test="/bedework/dayvalues[start=$temp]">
+                        <option value="{$temp}" selected="selected">
+                          <xsl:value-of select="/bedework/daylabels/val[position()=$pos]"/>
+                        </option>
+                      </xsl:when>
+                      <xsl:otherwise>
+                        <option value="{$temp}">
+                          <xsl:value-of select="/bedework/daylabels/val[position()=$pos]"/>
+                        </option>
+                      </xsl:otherwise>
+                    </xsl:choose>
+                  </xsl:for-each>
+                </select>
+              </td>
+            </xsl:if>
+          </xsl:if>
+          <td>
+            <xsl:variable name="temp" select="/bedework/yearvalues/start"/>
+            <input type="text" name="viewStartDate.year" maxlength="4" size="4" value="{$temp}"/>
+          </td>
+          <td>
+            <input name="submit" type="submit" value="go"/>
+          </td>
+        </tr>
+      </table>
+    </form>
+  </xsl:template>
+
+  <!--==== UTILITY TEMPLATES ====-->
+
+  <!-- search and replace template taken from
+       http://www.biglist.com/lists/xsl-list/archives/200211/msg00337.html -->
+  <xsl:template name="replace">
+    <xsl:param name="string" select="''"/>
+    <xsl:param name="pattern" select="''"/>
+    <xsl:param name="replacement" select="''"/>
+    <xsl:choose>
+      <xsl:when test="$pattern != '' and $string != '' and contains($string, $pattern)">
+        <xsl:value-of select="substring-before($string, $pattern)"/>
+        <xsl:copy-of select="$replacement"/>
+        <xsl:call-template name="replace">
+          <xsl:with-param name="string" select="substring-after($string, $pattern)"/>
+          <xsl:with-param name="pattern" select="$pattern"/>
+          <xsl:with-param name="replacement" select="$replacement"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$string"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+</xsl:stylesheet>

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/PDA/pda.css
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/PDA/pda.css	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/PDA/pda.css	2008-01-25 22:26:13 UTC (rev 1716)
@@ -4,8 +4,24 @@
   color: #000;
   margin: 0;
   padding: 0;
-  font-size: 12px;
+  font-size: 10px;
 }
+h1#homeTitle {
+  text-align: center;
+  margin: 0;
+  padding: 2px 0;
+  background-color: #900;
+  color: white;
+  font-size: 10px;
+}
+#homeLink {
+  padding-left: 1em;
+  font-size: 0.8em;
+}
+#homeLink a {
+  background-color: transparent;
+  color: #eee;
+}
 #titleBar {
   background: #e2decc;
   color: #000;
@@ -14,24 +30,36 @@
   text-align: center;
   font-weight: bold;
 }
-#homeLink {
-  padding-left: 1em;
-  font-size: 0.8em;
-}
 #dateInfo,
 #mainNav {
   text-align: center;
   white-space: nowrap;
 }
+#mainNav {
+  margin-bottom: 1em;
+}
 h1 {
-  font-size: 12px;
+  font-size: 11px;
   margin: 0; /* must wrap h1s with <p> tags for blackberry */
   padding: 0;
 }
 h2,h3,h4,h5 {
-  font-size: 12px;
+  font-size: 11px;
   text-align: left;
 }
+h3 {
+  background-color: #e2decc;
+  color: black;
+  margin: 1em 0 0 0;
+}
+a:link,
+a:active,
+a:visited {
+  text-decoration: none;
+}
+a:hover {
+  text-decoration: underline;
+}
 dl {
   margin: 0.5em 1em;
 }
@@ -41,9 +69,43 @@
 #eventTable td.fieldname {
   padding-right: 1em;
 }
+.eventList {
+  width: 100%;
+  margin: 0;
+  padding: 0;
+}
+.eventList tr.a td {
+  color: black;
+  background-color: #F3F1E8;
+}
+.eventList td {
+  padding: 0;
+  border-bottom: 1px dotted #ccc;
+}
+.eventList td.date {
+  font-size: 8px;
+  white-space: nowrap;
+}
+ul.calendarTree {
+  text-align: left;
+}
+ul.calendarTree li {
+  font-weight: bold;
+}
+ul.calendarTree li ul li {
+  font-weight: normal;
+}
+ul.calendarTree li.folder {
+  list-style-image: url(../../images/catIcon.gif);
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+}
+ul.calendarTree li.calendar {
+  list-style-image: url(../../images/calIcon-sm.gif);
+}
 #footer {
   font-size: 0.8em;
   text-align: center;
   margin: 1em 0;
   padding: 2em 1em 1em 1em;
-}
\ No newline at end of file
+}

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/blue.css
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/blue.css	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/blue.css	2008-01-25 22:26:13 UTC (rev 1716)
@@ -528,6 +528,7 @@
   padding: 0.1em 0.2em 0.1em 0.2em;
   text-decoration: none;
   background-color: #ccc;
+  border-bottom: 1px solid #bbb;
   color: black;
 }
 #monthCalendarTable a.eventTentative:link,

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/default.xsl
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/default.xsl	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/default.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -85,7 +85,8 @@
   <xsl:variable name="setup" select="/bedework/urlPrefixes/setup"/>
   <xsl:variable name="setSelection" select="/bedework/urlPrefixes/main/setSelection"/>
   <xsl:variable name="fetchPublicCalendars" select="/bedework/urlPrefixes/calendar/fetchPublicCalendars"/>
-  <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/main/setViewPeriod"/>
+  <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/main/setViewPeriod"/>
+  <xsl:variable name="listEvents" select="/bedework/urlPrefixes/main/listEvents"/>
   <xsl:variable name="eventView" select="/bedework/urlPrefixes/event/eventView"/>
   <xsl:variable name="addEventRef" select="/bedework/urlPrefixes/event/addEventRef"/>
   <xsl:variable name="export" select="/bedework/urlPrefixes/misc/export"/>
@@ -271,7 +272,7 @@
           <a href="javascript:window.print()" title="print this view">
             <img alt="print this view" src="{$resourcesRoot}/images/std-print-icon.gif" width="20" height="14" border="0"/> print
           </a>
-          <a class="rss" href="{$setup}&amp;setappvar=summaryMode(details)&amp;skinName=rss" title="RSS feed">RSS</a>
+          <a class="rss" href="{$listEvents}&amp;setappvar=summaryMode(details)&amp;skinName=rss-list&amp;days=3" title="RSS feed">RSS</a>
         </td>
       </tr>
     </table>
@@ -1652,7 +1653,7 @@
           <a href="?refreshXslt=yes">refresh XSLT</a>
         </td>
         <td class="rightCell">
-          <form name="styleSelectForm" method="post" action="{$setup}">
+          <form name="styleSelectForm" method="get" action="{$setup}">
             <select name="setappvar" onchange="submit()">
               <option value="">example styles:</option>
               <option value="style(green)">green</option>
@@ -1664,8 +1665,9 @@
             <input type="hidden" name="setappvar" value="summaryMode(details)"/>
             <select name="skinPicker" onchange="window.location = this.value">
               <option value="{$setup}&amp;skinNameSticky=default">example skins:</option>
-              <option value="{$setViewPeriod}&amp;viewType=weekView&amp;skinName=rss&amp;setappvar=summaryMode(details)">rss feed</option>
-              <option value="{$setViewPeriod}&amp;viewType=todayView&amp;skinName=jsToday&amp;contentType=text/javascript&amp;contentName=bedework.js">javascript feed</option>
+              <option value="{$listEvents}&amp;setappvar=summaryMode(details)&amp;skinName=rss-list&amp;days=3">rss feed</option>
+              <option value="{$setViewPeriod}&amp;viewType=todayView&amp;skinName=jsToday&amp;contentType=text/javascript&amp;contentName=bedework.js">javascript feed</option>
+              <option value="{$setup}&amp;browserTypeSticky=PDA">for mobile browsers</option>
               <option value="{$setViewPeriod}&amp;viewType=todayView&amp;skinName=videocal">video feed</option>
               <option value="{$setup}&amp;skinNameSticky=default">reset to calendar default</option>
             </select>

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/green.css
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/green.css	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/green.css	2008-01-25 22:26:13 UTC (rev 1716)
@@ -541,6 +541,7 @@
   padding: 0.1em 0.2em 0.1em 0.2em;
   text-decoration: none;
   background-color: #ccc;
+  border-bottom: 1px solid #bbb;
   color: black;
 }
 #monthCalendarTable a.eventTentative:link,
@@ -1032,4 +1033,4 @@
 }
 html .dojoFloatingPaneClient #bwCalendarExportWidgetCalName {
   padding-left: 1em;
-}
\ No newline at end of file
+}

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/red.css
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/red.css	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/red.css	2008-01-25 22:26:13 UTC (rev 1716)
@@ -537,6 +537,7 @@
   padding: 0.1em 0.2em 0.1em 0.2em;
   text-decoration: none;
   background-color: #ccc;
+  border-bottom: 1px solid #bbb;
   color: black;
 }
 #monthCalendarTable a.eventTentative:link,
@@ -1033,4 +1034,4 @@
 }
 html .dojoFloatingPaneClient #bwCalendarExportWidgetCalName {
   padding-left: 1em;
-}
\ No newline at end of file
+}

Added: trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/rss-list.xsl
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/rss-list.xsl	                        (rev 0)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/rss-list.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output
+    method="xml"
+    omit-xml-declaration="no"
+    indent="yes"
+    doctype-public="'-//Netscape Communications//DTD RSS 0.91//EN' 'http://my.netscape.com/public/formats/rss-0.91.dtd'"
+    media-type="text/xml"
+    encoding="UTF-8"
+   />
+   <!-- =========================================================
+
+                      BEDEWORK RSS FEED
+
+     RSS for the Bedework events calendar.
+
+     Call the feed with the listEvents action to return
+     the discrete events in the next seven days (seven days is default):
+     http://localhost:8080/cal/main/listEvents.do?setappvar=summaryMode(details)&skinName=rss-list
+
+     _________________________________________________________
+     Optional parameters that may be added to the query string:
+
+     days=n    return n days from today into the future.
+               Example: http://localhost:8080/cal/main/listEvents.do?setappvar=summaryMode(details)&skinName=rss-list&days=5
+
+
+     Note: rss.xsl is an older file used to pull a list of events from the
+     day, week, or month views.  It is maintained for backwards
+     compatibility.
+
+     ===============================================================  -->
+<!-- **********************************************************************
+    Copyright 2008 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits. -->
+
+   <xsl:template match="/">
+     <rss version="2.0">
+      <channel>
+        <title>Bedework Events Calendar</title>
+        <link><xsl:value-of select="/bedework/urlprefix"/></link>
+        <description>
+          <xsl:choose>
+            <xsl:when test="/bedework/events/event/start/longdate = /bedework/events/event[position()=last()]/start/longdate"><xsl:value-of select="/bedework/events/event/start/longdate"/></xsl:when>
+            <xsl:otherwise><xsl:value-of select="/bedework/events/event/start/longdate"/> - <xsl:value-of select="/bedework/events/event[position()=last()]/start/longdate"/></xsl:otherwise>
+          </xsl:choose>
+        </description>
+        <pubDate><!-- takes the form: 11 Jan 2008 17:00:00 UT (note - do not output dayname - we only provide dayname in local time).
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,7,8)"/><xsl:text> </xsl:text><!--
+          --><xsl:call-template name="monthNumToName"><xsl:with-param name="monthNum" select="substring(/bedework/events/event/start/utcdate,5,6)"/></xsl:call-template><xsl:text> </xsl:text><!--
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,1,4)"/><xsl:text> </xsl:text><!--
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,10,11)"/>:<xsl:value-of select="substring(/bedework/events/event/start/utcdate,11,12)"/>:00 UT</pubDate>
+        <language>en-US</language>
+        <copyright>Copyright <xsl:value-of select="substring(/bedework/events/event/start/utcdate,1,4)"/>, Bedework</copyright>
+        <managingEditor>editor at mysite.edu, Editor Name</managingEditor>
+        <xsl:choose>
+           <xsl:when test="/bedework/page='searchResult'">
+             <xsl:apply-templates select="/bedework/searchResults/searchResult"/>
+           </xsl:when>
+           <xsl:otherwise>
+             <xsl:apply-templates select="/bedework/events/event"/>
+           </xsl:otherwise>
+        </xsl:choose>
+      </channel>
+    </rss>
+  </xsl:template>
+
+  <xsl:template match="event">
+    <item>
+      <title><xsl:if test="status = 'CANCELLED'">CANCELLED: </xsl:if><xsl:value-of select="summary"/> - <xsl:value-of select="substring(start/dayname,1,3)"/>, <xsl:value-of select="start/longdate"/></title>
+      <link><xsl:value-of select="/bedework/urlprefix"/>/event/eventView.do?subid=<xsl:value-of select="subscription/id"/>&amp;calPath=<xsl:value-of select="calendar/encodedPath"/>&amp;guid=<xsl:value-of select="guid"/>&amp;recurrenceId=<xsl:value-of select="recurrenceId"/></link>
+      <pubDate><!-- takes the form: 11 Jan 2008 17:00:00 UT (note - do not output dayname - we only provide dayname in local time).
+        --><xsl:value-of select="substring(start/utcdate,7,8)"/><xsl:text> </xsl:text><!--
+        --><xsl:call-template name="monthNumToName"><xsl:with-param name="monthNum" select="substring(start/utcdate,5,6)"/></xsl:call-template><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="substring(start/utcdate,1,4)"/><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="substring(start/utcdate,10,11)"/>:<xsl:value-of select="substring(start/utcdate,11,12)"/>:00 UT</pubDate>
+      <description><!--
+        --><xsl:value-of select="substring(start/dayname,1,3)"/>,<xsl:text> </xsl:text><!--
+        --><xsl:value-of select="start/longdate"/><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="start/time"/><!--
+        --><xsl:if test="end/time != ''"> - </xsl:if><!--
+        --><xsl:if test="end/dayname != start/dayname"><xsl:value-of select="substring(end/dayname,1,3)"/>, </xsl:if><!--
+        --><xsl:if test="end/longdate != start/longdate"><xsl:value-of select="end/longdate"/>, </xsl:if><!--
+        --><xsl:if test="end/time != ''"><xsl:value-of select="end/time"/></xsl:if><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="location/address"/>.<!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:if test="cost!=''"><xsl:value-of select="cost"/>.</xsl:if><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="description"/><!--
+        --><xsl:text> </xsl:text><xsl:if test="status = 'CANCELLED'">(CANCELLED)</xsl:if><!--
+      --></description>
+    </item>
+  </xsl:template>
+
+  <!-- convert 2-digit utc month numeric values to
+       short month names as expected by RFC 822 -->
+  <xsl:template name="monthNumToName">
+    <xsl:param name="monthNum">00</xsl:param>
+    <xsl:choose>
+      <xsl:when test="$monthNum = '01'">Jan</xsl:when>
+      <xsl:when test="$monthNum = '02'">Feb</xsl:when>
+      <xsl:when test="$monthNum = '03'">Mar</xsl:when>
+      <xsl:when test="$monthNum = '04'">Apr</xsl:when>
+      <xsl:when test="$monthNum = '05'">May</xsl:when>
+      <xsl:when test="$monthNum = '06'">Jun</xsl:when>
+      <xsl:when test="$monthNum = '07'">Jul</xsl:when>
+      <xsl:when test="$monthNum = '08'">Aug</xsl:when>
+      <xsl:when test="$monthNum = '09'">Sep</xsl:when>
+      <xsl:when test="$monthNum = '10'">Oct</xsl:when>
+      <xsl:when test="$monthNum = '11'">Nov</xsl:when>
+      <xsl:when test="$monthNum = '12'">Dec</xsl:when>
+      <xsl:otherwise>badMonthNum</xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+</xsl:stylesheet>

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/rss.xsl
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/rss.xsl	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/MainCampus/default/default/rss.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -8,6 +8,46 @@
     media-type="text/xml"
     encoding="UTF-8"
    />
+   <!-- =========================================================
+
+                      BEDEWORK RSS FEED (deprecated)
+
+     Deprecated: use rss-list.xsl instead.
+
+     This is an older file used to pull a list of events from the
+     day, week, or month views and was originally used to
+     produce "Today's Events".  rss-list.xsl takes timezones into
+     account.  This file does not.
+     .
+     Call the feed with the listEvents action like so:
+     http://localhost:8080/main/setViewPeriod.do?viewType=todayView&setappvar=summaryMode(details)&skinName=rss
+
+     ===============================================================  -->
+<!-- **********************************************************************
+    Copyright 2008 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits. -->
+
    <xsl:template match="/">
      <rss version="2.0">
       <channel>
@@ -20,7 +60,7 @@
           --><xsl:value-of select="/bedework/eventscalendar/year/month/week/day[event]/event/start/twodigitday"/><xsl:text> </xsl:text><!--
           --><xsl:value-of select="substring(/bedework/eventscalendar/year/month/week/day[event]/event/start/monthname,1,3)"/><xsl:text> </xsl:text><!--
           --><xsl:value-of select="/bedework/eventscalendar/year/month/week/day[event]/event/start/fourdigityear"/><xsl:text> </xsl:text><!--
-          --><xsl:value-of select="/bedework/eventscalendar/year/month/week/day[event]/event/start/twodigithour24"/>:<xsl:value-of select="/bedework/eventscalendar/year/month/week/day[event]/event/start/twodigitminute"/>:00 EST</pubDate>  
+          --><xsl:value-of select="/bedework/eventscalendar/year/month/week/day[event]/event/start/twodigithour24"/>:<xsl:value-of select="/bedework/eventscalendar/year/month/week/day[event]/event/start/twodigitminute"/>:00 EST</pubDate>
         <language>en-US</language>
         <copyright>Copyright <xsl:value-of select="substring(/bedework/currentdate/date,1,4)"/>, Rensselaer Polytechnic Institute</copyright>
         <managingEditor>editor at mysite.edu, Editor Name</managingEditor>

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/default.xsl
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/default.xsl	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/default.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -96,7 +96,8 @@
   <xsl:variable name="setup" select="/bedework/urlPrefixes/setup"/>
   <xsl:variable name="setSelection" select="/bedework/urlPrefixes/main/setSelection"/>
   <xsl:variable name="fetchPublicCalendars" select="/bedework/urlPrefixes/calendar/fetchPublicCalendars"/>
-  <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/main/setViewPeriod"/>
+  <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/main/setViewPeriod"/>
+  <xsl:variable name="listEvents" select="/bedework/urlPrefixes/main/listEvents"/>
   <xsl:variable name="eventView" select="/bedework/urlPrefixes/event/eventView"/>
   <xsl:variable name="addEventRef" select="/bedework/urlPrefixes/event/addEventRef"/>
   <xsl:variable name="export" select="/bedework/urlPrefixes/misc/export"/>
@@ -268,7 +269,7 @@
         <a href="javascript:window.print()" title="print this view">
           <img alt="print this view" src="{$resourcesRoot}/images/std-print-icon.gif" width="20" height="14" border="0"/> print
         </a>
-        <a class="rss" href="{$setSelection}&amp;setappvar=summaryMode(details)&amp;skinName=rss" title="RSS feed">RSS</a>
+        <a class="rss" href="{$listEvents}&amp;setappvar=summaryMode(details)&amp;skinName=rss-list&amp;days=3" title="RSS feed">RSS</a>
       </td>
     </table>-->
   </xsl:template>
@@ -322,7 +323,7 @@
               <a href="javascript:window.print()" title="print this view">
                 <img alt="print this view" src="{$resourcesRoot}/images/std-print-icon.gif" width="20" height="14" border="0"/> print
               </a>
-              <a class="rss" href="{$setup}&amp;setappvar=summaryMode(details)&amp;skinName=rss" title="RSS feed">RSS</a>
+              <a class="rss" href="{$listEvents}&amp;setappvar=summaryMode(details)&amp;skinName=rss-list&amp;days=3" title="RSS feed">RSS</a>
             </td>
           </tr>
         </table>

Added: trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/rss-list.xsl
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/rss-list.xsl	                        (rev 0)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/rss-list.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output
+    method="xml"
+    omit-xml-declaration="no"
+    indent="yes"
+    doctype-public="'-//Netscape Communications//DTD RSS 0.91//EN' 'http://my.netscape.com/public/formats/rss-0.91.dtd'"
+    media-type="text/xml"
+    encoding="UTF-8"
+   />
+   <!-- =========================================================
+
+                      BEDEWORK RSS FEED
+
+     RSS for the Bedework events calendar.
+
+     Call the feed with the listEvents action to return
+     the discrete events in the next seven days (seven days is default):
+     http://localhost:8080/cal/main/listEvents.do?setappvar=summaryMode(details)&skinName=rss-list
+
+     _________________________________________________________
+     Optional parameters that may be added to the query string:
+
+     days=n    return n days from today into the future.
+               Example: http://localhost:8080/cal/main/listEvents.do?setappvar=summaryMode(details)&skinName=rss-list&days=5
+
+
+     Note: rss.xsl is an older file used to pull a list of events from the
+     day, week, or month views.  It is maintained for backwards
+     compatibility.
+
+     ===============================================================  -->
+<!-- **********************************************************************
+    Copyright 2008 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits. -->
+
+   <xsl:template match="/">
+     <rss version="2.0">
+      <channel>
+        <title>Bedework Events Calendar</title>
+        <link><xsl:value-of select="/bedework/urlprefix"/></link>
+        <description>
+          <xsl:choose>
+            <xsl:when test="/bedework/events/event/start/longdate = /bedework/events/event[position()=last()]/start/longdate"><xsl:value-of select="/bedework/events/event/start/longdate"/></xsl:when>
+            <xsl:otherwise><xsl:value-of select="/bedework/events/event/start/longdate"/> - <xsl:value-of select="/bedework/events/event[position()=last()]/start/longdate"/></xsl:otherwise>
+          </xsl:choose>
+        </description>
+        <pubDate><!-- takes the form: 11 Jan 2008 17:00:00 UT (note - do not output dayname - we only provide dayname in local time).
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,7,8)"/><xsl:text> </xsl:text><!--
+          --><xsl:call-template name="monthNumToName"><xsl:with-param name="monthNum" select="substring(/bedework/events/event/start/utcdate,5,6)"/></xsl:call-template><xsl:text> </xsl:text><!--
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,1,4)"/><xsl:text> </xsl:text><!--
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,10,11)"/>:<xsl:value-of select="substring(/bedework/events/event/start/utcdate,11,12)"/>:00 UT</pubDate>
+        <language>en-US</language>
+        <copyright>Copyright <xsl:value-of select="substring(/bedework/events/event/start/utcdate,1,4)"/>, Bedework</copyright>
+        <managingEditor>editor at mysite.edu, Editor Name</managingEditor>
+        <xsl:choose>
+           <xsl:when test="/bedework/page='searchResult'">
+             <xsl:apply-templates select="/bedework/searchResults/searchResult"/>
+           </xsl:when>
+           <xsl:otherwise>
+             <xsl:apply-templates select="/bedework/events/event"/>
+           </xsl:otherwise>
+        </xsl:choose>
+      </channel>
+    </rss>
+  </xsl:template>
+
+  <xsl:template match="event">
+    <item>
+      <title><xsl:if test="status = 'CANCELLED'">CANCELLED: </xsl:if><xsl:value-of select="summary"/> - <xsl:value-of select="substring(start/dayname,1,3)"/>, <xsl:value-of select="start/longdate"/></title>
+      <link><xsl:value-of select="/bedework/urlprefix"/>/event/eventView.do?subid=<xsl:value-of select="subscription/id"/>&amp;calPath=<xsl:value-of select="calendar/encodedPath"/>&amp;guid=<xsl:value-of select="guid"/>&amp;recurrenceId=<xsl:value-of select="recurrenceId"/></link>
+      <pubDate><!-- takes the form: 11 Jan 2008 17:00:00 UT (note - do not output dayname - we only provide dayname in local time).
+        --><xsl:value-of select="substring(start/utcdate,7,8)"/><xsl:text> </xsl:text><!--
+        --><xsl:call-template name="monthNumToName"><xsl:with-param name="monthNum" select="substring(start/utcdate,5,6)"/></xsl:call-template><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="substring(start/utcdate,1,4)"/><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="substring(start/utcdate,10,11)"/>:<xsl:value-of select="substring(start/utcdate,11,12)"/>:00 UT</pubDate>
+      <description><!--
+        --><xsl:value-of select="substring(start/dayname,1,3)"/>,<xsl:text> </xsl:text><!--
+        --><xsl:value-of select="start/longdate"/><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="start/time"/><!--
+        --><xsl:if test="end/time != ''"> - </xsl:if><!--
+        --><xsl:if test="end/dayname != start/dayname"><xsl:value-of select="substring(end/dayname,1,3)"/>, </xsl:if><!--
+        --><xsl:if test="end/longdate != start/longdate"><xsl:value-of select="end/longdate"/>, </xsl:if><!--
+        --><xsl:if test="end/time != ''"><xsl:value-of select="end/time"/></xsl:if><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="location/address"/>.<!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:if test="cost!=''"><xsl:value-of select="cost"/>.</xsl:if><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="description"/><!--
+        --><xsl:text> </xsl:text><xsl:if test="status = 'CANCELLED'">(CANCELLED)</xsl:if><!--
+      --></description>
+    </item>
+  </xsl:template>
+
+  <!-- convert 2-digit utc month numeric values to
+       short month names as expected by RFC 822 -->
+  <xsl:template name="monthNumToName">
+    <xsl:param name="monthNum">00</xsl:param>
+    <xsl:choose>
+      <xsl:when test="$monthNum = '01'">Jan</xsl:when>
+      <xsl:when test="$monthNum = '02'">Feb</xsl:when>
+      <xsl:when test="$monthNum = '03'">Mar</xsl:when>
+      <xsl:when test="$monthNum = '04'">Apr</xsl:when>
+      <xsl:when test="$monthNum = '05'">May</xsl:when>
+      <xsl:when test="$monthNum = '06'">Jun</xsl:when>
+      <xsl:when test="$monthNum = '07'">Jul</xsl:when>
+      <xsl:when test="$monthNum = '08'">Aug</xsl:when>
+      <xsl:when test="$monthNum = '09'">Sep</xsl:when>
+      <xsl:when test="$monthNum = '10'">Oct</xsl:when>
+      <xsl:when test="$monthNum = '11'">Nov</xsl:when>
+      <xsl:when test="$monthNum = '12'">Dec</xsl:when>
+      <xsl:otherwise>badMonthNum</xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+</xsl:stylesheet>

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/rss.xsl
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/rss.xsl	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/rss.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -8,6 +8,46 @@
     media-type="text/xml"
     encoding="ISO-8859-1"
    />
+   <!-- =========================================================
+
+                      BEDEWORK RSS FEED (deprecated)
+
+     Deprecated: use rss-list.xsl instead.
+
+     This is an older file used to pull a list of events from the
+     day, week, or month views and was originally used to
+     produce "Today's Events".  rss-list.xsl takes timezones into
+     account.  This file does not.
+     .
+     Call the feed with the listEvents action like so:
+     http://localhost:8080/main/setViewPeriod.do?viewType=todayView&setappvar=summaryMode(details)&skinName=rss
+
+     ===============================================================  -->
+<!-- **********************************************************************
+    Copyright 2008 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits. -->
+
    <xsl:template match="/">
      <rss version="2.0">
       <channel>

Modified: trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/soe.css
===================================================================
--- trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/soe.css	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webpublic/webapp/resources/demoskins/SoEDepartmental/default/default/soe.css	2008-01-25 22:26:13 UTC (rev 1716)
@@ -526,6 +526,7 @@
   padding: 0.1em 0.2em 0.1em 0.2em;
   text-decoration: none;
   background-color: #ccc;
+  border-bottom: 1px solid #bbb;
   color: black;
 }
 #monthCalendarTable a.eventTentative:link,
@@ -1033,4 +1034,4 @@
 html .dojoFloatingPaneClient form#exportCalendarForm {
   margin: 0;
   padding: 0;
-}
\ No newline at end of file
+}

Modified: trunk/deployment/webuser/webapp/resources/demoskins/default/default/default.xsl
===================================================================
--- trunk/deployment/webuser/webapp/resources/demoskins/default/default/default.xsl	2008-01-25 22:24:11 UTC (rev 1715)
+++ trunk/deployment/webuser/webapp/resources/demoskins/default/default/default.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -70,6 +70,7 @@
   <xsl:variable name="setup" select="/bedework/urlPrefixes/setup"/>
   <xsl:variable name="setSelection" select="/bedework/urlPrefixes/main/setSelection"/>
   <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/main/setViewPeriod"/>
+  <xsl:variable name="listEvents" select="/bedework/urlPrefixes/main/listEvents"/>
   <!-- events -->
   <xsl:variable name="eventView" select="/bedework/urlPrefixes/event/eventView"/>
   <xsl:variable name="initEvent" select="/bedework/urlPrefixes/event/initEvent"/>
@@ -471,7 +472,7 @@
           <a href="javascript:window.print()" title="print this view">
             <img alt="print this view" src="{$resourcesRoot}/resources/std-print-icon.gif" width="20" height="14" border="0"/> print
           </a>
-          <a class="rss" href="{$setup}&amp;setappvar=summaryMode(details)&amp;skinName=rss" title="RSS feed">RSS</a>
+          <a class="rss" href="{$listEvents}&amp;setappvar=summaryMode(details)&amp;skinName=rss-list&amp;days=3" title="RSS feed">RSS</a>
         </td>
       </tr>
     </table>

Added: trunk/deployment/webuser/webapp/resources/demoskins/default/default/rss-list.xsl
===================================================================
--- trunk/deployment/webuser/webapp/resources/demoskins/default/default/rss-list.xsl	                        (rev 0)
+++ trunk/deployment/webuser/webapp/resources/demoskins/default/default/rss-list.xsl	2008-01-25 22:26:13 UTC (rev 1716)
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output
+    method="xml"
+    omit-xml-declaration="no"
+    indent="yes"
+    doctype-public="'-//Netscape Communications//DTD RSS 0.91//EN' 'http://my.netscape.com/public/formats/rss-0.91.dtd'"
+    media-type="text/xml"
+    encoding="UTF-8"
+   />
+   <!-- =========================================================
+
+                      BEDEWORK RSS FEED
+
+     RSS for the Bedework events calendar.
+
+     Call the feed with the listEvents action to return
+     the discrete events in the next seven days (seven days is default):
+     http://localhost:8080/cal/main/listEvents.do?setappvar=summaryMode(details)&skinName=rss-list
+
+     _________________________________________________________
+     Optional parameters that may be added to the query string:
+
+     days=n    return n days from today into the future.
+               Example: http://localhost:8080/cal/main/listEvents.do?setappvar=summaryMode(details)&skinName=rss-list&days=5
+
+
+     Note: rss.xsl is an older file used to pull a list of events from the
+     day, week, or month views.  It is maintained for backwards
+     compatibility.
+
+     ===============================================================  -->
+<!-- **********************************************************************
+    Copyright 2008 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits. -->
+
+   <xsl:template match="/">
+     <rss version="2.0">
+      <channel>
+        <title>Bedework Events Calendar</title>
+        <link><xsl:value-of select="/bedework/urlprefix"/></link>
+        <description>
+          <xsl:choose>
+            <xsl:when test="/bedework/events/event/start/longdate = /bedework/events/event[position()=last()]/start/longdate"><xsl:value-of select="/bedework/events/event/start/longdate"/></xsl:when>
+            <xsl:otherwise><xsl:value-of select="/bedework/events/event/start/longdate"/> - <xsl:value-of select="/bedework/events/event[position()=last()]/start/longdate"/></xsl:otherwise>
+          </xsl:choose>
+        </description>
+        <pubDate><!-- takes the form: 11 Jan 2008 17:00:00 UT (note - do not output dayname - we only provide dayname in local time).
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,7,8)"/><xsl:text> </xsl:text><!--
+          --><xsl:call-template name="monthNumToName"><xsl:with-param name="monthNum" select="substring(/bedework/events/event/start/utcdate,5,6)"/></xsl:call-template><xsl:text> </xsl:text><!--
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,1,4)"/><xsl:text> </xsl:text><!--
+          --><xsl:value-of select="substring(/bedework/events/event/start/utcdate,10,11)"/>:<xsl:value-of select="substring(/bedework/events/event/start/utcdate,11,12)"/>:00 UT</pubDate>
+        <language>en-US</language>
+        <copyright>Copyright <xsl:value-of select="substring(/bedework/events/event/start/utcdate,1,4)"/>, Bedework</copyright>
+        <managingEditor>editor at mysite.edu, Editor Name</managingEditor>
+        <xsl:choose>
+           <xsl:when test="/bedework/page='searchResult'">
+             <xsl:apply-templates select="/bedework/searchResults/searchResult"/>
+           </xsl:when>
+           <xsl:otherwise>
+             <xsl:apply-templates select="/bedework/events/event"/>
+           </xsl:otherwise>
+        </xsl:choose>
+      </channel>
+    </rss>
+  </xsl:template>
+
+  <xsl:template match="event">
+    <item>
+      <title><xsl:if test="status = 'CANCELLED'">CANCELLED: </xsl:if><xsl:value-of select="summary"/> - <xsl:value-of select="substring(start/dayname,1,3)"/>, <xsl:value-of select="start/longdate"/></title>
+      <link><xsl:value-of select="/bedework/urlprefix"/>/event/eventView.do?subid=<xsl:value-of select="subscription/id"/>&amp;calPath=<xsl:value-of select="calendar/encodedPath"/>&amp;guid=<xsl:value-of select="guid"/>&amp;recurrenceId=<xsl:value-of select="recurrenceId"/></link>
+      <pubDate><!-- takes the form: 11 Jan 2008 17:00:00 UT (note - do not output dayname - we only provide dayname in local time).
+        --><xsl:value-of select="substring(start/utcdate,7,8)"/><xsl:text> </xsl:text><!--
+        --><xsl:call-template name="monthNumToName"><xsl:with-param name="monthNum" select="substring(start/utcdate,5,6)"/></xsl:call-template><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="substring(start/utcdate,1,4)"/><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="substring(start/utcdate,10,11)"/>:<xsl:value-of select="substring(start/utcdate,11,12)"/>:00 UT</pubDate>
+      <description><!--
+        --><xsl:value-of select="substring(start/dayname,1,3)"/>,<xsl:text> </xsl:text><!--
+        --><xsl:value-of select="start/longdate"/><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="start/time"/><!--
+        --><xsl:if test="end/time != ''"> - </xsl:if><!--
+        --><xsl:if test="end/dayname != start/dayname"><xsl:value-of select="substring(end/dayname,1,3)"/>, </xsl:if><!--
+        --><xsl:if test="end/longdate != start/longdate"><xsl:value-of select="end/longdate"/>, </xsl:if><!--
+        --><xsl:if test="end/time != ''"><xsl:value-of select="end/time"/></xsl:if><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="location/address"/>.<!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:if test="cost!=''"><xsl:value-of select="cost"/>.</xsl:if><!--
+        --><xsl:text> </xsl:text><!--
+        --><xsl:value-of select="description"/><!--
+        --><xsl:text> </xsl:text><xsl:if test="status = 'CANCELLED'">(CANCELLED)</xsl:if><!--
+      --></description>
+    </item>
+  </xsl:template>
+
+  <!-- convert 2-digit utc month numeric values to
+       short month names as expected by RFC 822 -->
+  <xsl:template name="monthNumToName">
+    <xsl:param name="monthNum">00</xsl:param>
+    <xsl:choose>
+      <xsl:when test="$monthNum = '01'">Jan</xsl:when>
+      <xsl:when test="$monthNum = '02'">Feb</xsl:when>
+      <xsl:when test="$monthNum = '03'">Mar</xsl:when>
+      <xsl:when test="$monthNum = '04'">Apr</xsl:when>
+      <xsl:when test="$monthNum = '05'">May</xsl:when>
+      <xsl:when test="$monthNum = '06'">Jun</xsl:when>
+      <xsl:when test="$monthNum = '07'">Jul</xsl:when>
+      <xsl:when test="$monthNum = '08'">Aug</xsl:when>
+      <xsl:when test="$monthNum = '09'">Sep</xsl:when>
+      <xsl:when test="$monthNum = '10'">Oct</xsl:when>
+      <xsl:when test="$monthNum = '11'">Nov</xsl:when>
+      <xsl:when test="$monthNum = '12'">Dec</xsl:when>
+      <xsl:otherwise>badMonthNum</xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+</xsl:stylesheet>



More information about the Bedework-commit mailing list