Changeset 2900

Show
Ignore:
Timestamp:
05/07/10 17:18:58
Author:
johnsa
Message:

user client: further work on the event form

beginning to add the freebusy interface for scheduling

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/deployment/webuser/webapp/resources/demoskins/default/strings.xsl

    r2892 r2900  
    297297  <xsl:variable name="bwStr-AEEF-Details">details</xsl:variable> 
    298298  <xsl:variable name="bwStr-AEEF-Recurrence">recurrence</xsl:variable> 
    299   <xsl:variable name="bwStr-AEEF-Scheduling">meeting</xsl:variable> 
     299  <xsl:variable name="bwStr-AEEF-Scheduling">scheduling</xsl:variable> 
     300  <xsl:variable name="bwStr-AEEF-Meetingtab">meeting</xsl:variable> 
    300301  <xsl:variable name="bwStr-AEEF-Calendar">Calendar:</xsl:variable> 
    301302  <xsl:variable name="bwStr-AEEF-Title">Title:</xsl:variable> 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/bedework.xsl

    r2896 r2900  
    6969      </head> 
    7070      <body> 
    71         <!-- 
    72         <xsl:choose> 
    73           <xsl:when test="/bedework/page != 'inbox' and 
    74                           /bedework/page != 'outbox' and 
    75                           /bedework/page != 'attendeeRespond' and 
    76                           /bedework/page != 'attendeeReply'"> 
    77             <xsl:attribute name="onload">checkStatus(<xsl:value-of select="/bedework/inboxState/numActive"/>,<xsl:value-of select="/bedework/inboxState/changed"/>,'<xsl:value-of select="$showInbox"/>')</xsl:attribute> 
    78           </xsl:when> 
    79         </xsl:choose> 
    80         --> 
    81         <xsl:choose> 
    82           <xsl:when test="/bedework/page = 'addEvent'"> 
    83             <xsl:attribute name="onload">focusElement('bwEventTitle');bwSetupDatePickers();</xsl:attribute> 
    84           </xsl:when> 
    85           <xsl:when test="/bedework/page = 'editEvent'"> 
    86             <xsl:attribute name="onload"><xsl:if test="/bedework/formElements/recurrenceId = ''">initRXDates();</xsl:if>initXProperties();focusElement('bwEventTitle');bwSetupDatePickers();</xsl:attribute> 
    87           </xsl:when> 
    88           <xsl:when test="/bedework/page = 'attendees'"> 
    89             <xsl:attribute name="onload">focusElement('bwRaUri');</xsl:attribute> 
    90           </xsl:when> 
    91           <xsl:when test="/bedework/page = 'modLocation'"> 
    92             <xsl:attribute name="onload">focusElement('bwLocMainAddress');</xsl:attribute> 
    93           </xsl:when> 
    94         </xsl:choose> 
    9571        <div id="bedework"><!-- main wrapper div to keep styles encapsulated --> 
    9672          <xsl:call-template name="headBar"/> 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/css/bedeworkTheme.css

    r2897 r2900  
    336336} 
    337337#bedework #bodyBlock td#bodyContent { 
     338  position: relative; 
    338339  border-bottom: 2px solid #aaa; 
    339340  vertical-align: top; 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/css/bwScheduling.css

    r2898 r2900  
    1 s#bwSchedule { 
     1#bwSchedule { 
     2  position: relative; 
     3  font-size: 0.8em; 
    24} 
    35#bwFreeBusyDisplay { 
    46  margin: 2em 2em 0 2em; 
    5   width: 90%; 
     7  width: 80%; 
    68  overflow: scroll;   
    79} 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/eventForm.xsl

    r2899 r2900  
    133133              <xsl:variable name="entityType"> 
    134134                <xsl:choose> 
    135                   <xsl:when test="entityType = '2'"><xsl:copy-of select="$bwStr-AEEF-TASK"/></xsl:when> 
    136                   <xsl:when test="scheduleMethod = '2'"><xsl:copy-of select="$bwStr-AEEF-Meeting"/></xsl:when> 
     135                  <xsl:when test="form/entityType = '2'"><xsl:copy-of select="$bwStr-AEEF-TASK"/></xsl:when> 
     136                  <xsl:when test="form/scheduleMethod = '2'"><xsl:copy-of select="$bwStr-AEEF-Meeting"/></xsl:when> 
    137137                  <xsl:otherwise><xsl:copy-of select="$bwStr-AEEF-EVENT"/></xsl:otherwise> 
    138138                </xsl:choose> 
     
    181181        <li> 
    182182          <a href="javascript:setTab('eventFormTabs',3); show('bwEventTab-Scheduling'); hide('bwEventTab-Basic','bwEventTab-Details','bwEventTab-Recurrence','bwEventTab-Access');"> 
    183             <xsl:copy-of select="$bwStr-AEEF-Scheduling"/> 
     183            <xsl:choose> 
     184              <xsl:when test="form/entityType = '2'"> <!-- "scheduling" for a task --> 
     185                <xsl:copy-of select="$bwStr-AEEF-Scheduling"/> 
     186              </xsl:when> 
     187              <xsl:otherwise> <!-- "meeting" for a normal event --> 
     188                <xsl:copy-of select="$bwStr-AEEF-Meetingtab"/> 
     189              </xsl:otherwise> 
     190            </xsl:choose> 
    184191          </a> 
    185192        </li> 
     
    13951402                  </tr> 
    13961403                  <tr class="colNames"> 
    1397           <td><xsl:copy-of select="$bwStr-AEEF-Date"/></td> 
     1404                    <td><xsl:copy-of select="$bwStr-AEEF-Date"/></td> 
    13981405                    <td><xsl:copy-of select="$bwStr-AEEF-Time"/></td> 
    13991406                    <td><xsl:copy-of select="$bwStr-AEEF-TZid"/></td> 
     
    14801487                <tr> 
    14811488                  <td> 
    1482                     <button id="bwPickPrevious" onclick="bwGrid.pickPrevious();">&#171; Pick Previous</button
     1489                    <input type="button" id="bwPickPrevious" onclick="bwGrid.pickPrevious();" value="&#171; Pick Previous"/
    14831490                  </td> 
    14841491                  <td> 
    1485                     <button id="bwPickNext" onclick="bwGrid.pickNext();">Pick Next &#187;</button
     1492                    <input type="button" id="bwPickNext" onclick="bwGrid.pickNext();" value="Pick Next &#187;"/
    14861493                  </td> 
    14871494                  <td class="dateLabel"> 
     
    15091516                  </td> 
    15101517                  <td> 
    1511                     <button>Options &#x25BC;</button
     1518                    <input type="button" id="bwSchedOptions" value="Options &#x25BC;"/
    15121519                  </td> 
    15131520                  <td class="dateLabel"> 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/head.xsl

    r2898 r2900  
    139139        </xsl:otherwise> 
    140140      </xsl:choose> 
     141    </xsl:if> 
     142     
     143    <xsl:if test="/bedework/page='addEvent' or 
     144                  /bedework/page='editEvent'"> 
     145       
    141146      <script type="text/javascript" src="{$resourcesRoot}/javascript/bwClock.js">&#160;</script> 
    142147      <link rel="stylesheet" href="{$resourcesRoot}/css/bwClock.css"/> 
     148       
    143149      <script type="text/javascript" src="{$resourcesRoot}/javascript/bedeworkEventForm.js">&#160;</script> 
     150       
    144151      <script type="text/javascript" src="/bedework-common/javascript/bedework/bedeworkXProperties.js">&#160;</script> 
     152       
     153      <script type="text/javascript" src="{$resourcesRoot}/javascript/bedeworkScheduling.js">&#160;</script> 
    145154      <link rel="stylesheet" href="{$resourcesRoot}/css/bwScheduling.css"/> 
    146       <script type="text/javascript" src="{$resourcesRoot}/javascript/bedeworkScheduling.js">&#160;</script> 
     155       
     156      <script type="text/javascript" src="/bedework-common/javascript/bedework/bedeworkAccess.js">&#160;</script> 
    147157      <link rel="stylesheet" href="/bedework-common/default/default/bedeworkAccess.css"/> 
    148       <script type="text/javascript" src="/bedework-common/javascript/bedework/bedeworkAccess.js">&#160;</script> 
     158       
    149159      <!-- initialize event acls, if present --> 
    150160      <xsl:if test="/bedework/editableAccess/access/acl/ace"> 
     
    153163        </script> 
    154164      </xsl:if> 
     165       
     166      <script type="text/javascript"> 
     167        <xsl:comment> 
     168        // initialize the free/busy grid - values taken directly from the xml 
     169        // send params: displayId, startRange, endRange, startDate, endDate, startHourRange, endHourRange, attendees, workday, zoom 
     170        // example: var bwGrid = new bwSchedulingGrid("bwFreeBusyDisplay","April 21, 2010","April 27, 2010","April 21, 2010 11:00:00","April 21, 2010 11:30:00",8,17,[{name:"Arlen Johnson",uid:"mailto:johnsa@rpi.edu",freebusy:["20100421T093000Z/PT2H00M","20100423T174500Z/PT8H30M"],role:"CHAIR",status:"ACCEPTED",type:"person"}],true,100,"<xsl:value-of select="$resourcesRoot"/>"); 
     171        var bwGrid = new bwSchedulingGrid("bwFreeBusyDisplay","April 21, 2010","April 27, 2010","April 21, 2010 11:00:00","April 21, 2010 11:30:00",8,17,[],true,100,"<xsl:value-of select="$resourcesRoot"/>"); 
     172         
     173        // send in some attendees - these will come from interaction with the form 
     174        bwGrid.updateAttendee("Arlen Johnson", "mailto:johnsa@rpi.edu", ["20100421T093000Z/PT2H00M","20100423T174500Z/PT8H30M"], "CHAIR", "ACCEPTED", "person"); 
     175        bwGrid.updateAttendee("Gary Schwartz", "mailto:schwag@rpi.edu", ["20100422T090000Z/PT1H00M"], "REQ-PARTICIPANT", "NEEDS-ACTION"); 
     176        bwGrid.updateAttendee("", "mailto:douglm@rpi.edu", ["FBTYPE=BUSY-TENTATIVE:20100421T120000Z/20100421T130000Z","20100422T050000Z/20100422T060000Z"], "OPT-PARTICIPANT", "DECLINED"); 
     177        </xsl:comment> 
     178      </script> 
     179       
     180       
    155181    </xsl:if> 
    156182    <xsl:if test="/bedework/page='editEvent'"> 
     
    188214    <script type="text/javascript"> 
    189215      <xsl:comment> 
    190       <![CDATA[ 
    191       /* 
    192       function checkStatus(inboxCount,changed,url) { 
    193       // Check status of inbox and outbox and alert user appropriately. 
    194       // Just take care of inbox for now. 
    195         if (inboxCount && changed) { 
    196           var itemStr = "item"; 
    197           if (inboxCount > 1) { 
    198             itemStr = "items"; 
    199           } 
    200           if (confirm("You have " + inboxCount + " pending " + itemStr + " in your inbox.\nGo to inbox?")) { 
    201             window.location.replace(url); 
    202           } 
    203         } 
    204       }*/ 
     216       
     217      // focuses an element by id 
    205218      function focusElement(id) { 
    206       // focuses element by id 
    207219        document.getElementById(id).focus(); 
    208220      } 
    209       ]]> 
     221       
     222      $(document).ready(function() { 
     223        <xsl:choose> 
     224          <xsl:when test="/bedework/page = 'addEvent' or bedework/page = 'editEvent'"> 
     225            focusElement('bwEventTitle'); 
     226            bwSetupDatePickers(); 
     227            bwGrid.display(); 
     228          </xsl:when> 
     229          <xsl:when test="/bedework/page = 'editEvent'"> 
     230            <xsl:if test="/bedework/formElements/recurrenceId = ''"> 
     231              initRXDates(); 
     232            </xsl:if> 
     233            initXProperties(); 
     234          </xsl:when> 
     235          <xsl:when test="/bedework/page = 'attendees'"> 
     236            focusElement('bwRaUri'); 
     237          </xsl:when> 
     238          <xsl:when test="/bedework/page = 'modLocation'"> 
     239            focusElement('bwLocMainAddress'); 
     240          </xsl:when> 
     241        </xsl:choose> 
     242      }); 
     243         
    210244      </xsl:comment> 
    211245    </script> 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/javascript/bedeworkScheduling.js

    r2898 r2900  
    166166 * zoom:            integer - scalar value for zooming the grid 
    167167 */ 
    168 var bwSchedulingGrid = function(displayId, startRange, endRange, startDate, endDate, startHoursRange, endHoursRange, attendees, workday, zoom) { 
     168var bwSchedulingGrid = function(displayId, startRange, endRange, startDate, endDate, startHoursRange, endHoursRange, attendees, workday, zoom, browserResourcesRoot) { 
    169169  this.displayId = displayId; 
    170170  this.startRange = new Date(startRange); 
     
    177177  this.workday = workday; 
    178178  this.attendees = new Array();  // array of bwAttendee objects 
     179  this.resourcesRoot = browserResourcesRoot; 
    179180   
    180181  // 2D array of time and busy state for all attendees 
     
    214215   
    215216 
    216   this.addAttendee = function(name, uid, freebusy, role, status, type) { 
     217  this.updateAttendee = function(name, uid, freebusy, role, status, type) { 
    217218    var newAttendee = new bwAttendee(name, uid, freebusy, role, status, type); 
    218     this.attendees.push(newAttendee); 
     219    /*var attendeeIsNew = true; 
     220     
     221    // check to see if attendee already exists 
     222    for (i=0; i < this.attendees.length; i++) { 
     223      alert(newAttendee.uid + " -- " + attendees[i].uid); 
     224      if (newAttendee.uid == attendees[i].uid) { 
     225        attendeeIsNew = false; 
     226        break; 
     227      }  
     228    } 
     229     
     230    if (attendeeIsNew) {*/ 
     231      this.attendees.push(newAttendee);       
     232    //} 
    219233     
    220234    this.display(); 
     
    412426        switch (curAttendee.status) { 
    413427          case bwAttendeeStatusAccepted: // &#10004; - make an image to avoid font issues 
    414             $(fbDisplayAttendeeRow).html('<td class="status accepted"><span class="icon"><img src="../check.gif" alt="accepted" width="15" height="15"/></span><span class="tip">' + bwAttendeeDispStatusAccepted + '</span></td>'); 
     428            $(fbDisplayAttendeeRow).html('<td class="status accepted"><span class="icon"><img src="' + resourcesRoot + '/images/check.gif" alt="accepted" width="15" height="15"/></span><span class="tip">' + bwAttendeeDispStatusAccepted + '</span></td>'); 
    415429            break; 
    416430          case bwAttendeeStatusDeclined: 
     
    437451        switch (curAttendee.role) { 
    438452          case bwAttendeeRoleChair: // displays writing hand icon - &#9997; 
    439             $(fbDisplayAttendeeRow).append('<td class="role chair"><span class="icon"><img src="../chair.gif" alt="chair" width="17" height="15"/></span><span class="tip">' + bwAttendeeDispRoleChair + '</span></td>'); 
     453            $(fbDisplayAttendeeRow).append('<td class="role chair"><span class="icon"><img src="' + resourcesRoot + '/images/chair.gif" alt="chair" width="17" height="15"/></span><span class="tip">' + bwAttendeeDispRoleChair + '</span></td>'); 
    440454            break; 
    441455          case bwAttendeeRoleRequired: // displays right-pointing arrow icon - &#10137; 
    442             $(fbDisplayAttendeeRow).append('<td class="role required"><span class="icon"><img src="../reqArrow.gif" alt="required" width="17" height="12"/></span><span class="tip">' + bwAttendeeDispRoleRequired + '</span></td>'); 
     456            $(fbDisplayAttendeeRow).append('<td class="role required"><span class="icon"><img src="' + resourcesRoot + '/images/reqArrow.gif" alt="required" width="17" height="12"/></span><span class="tip">' + bwAttendeeDispRoleRequired + '</span></td>'); 
    443457            break; 
    444458          case bwAttendeeRoleNonParticipant: // non-participant 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/sideBar.xsl

    r2896 r2900  
    2424  <xsl:template name="sideBar"> 
    2525    <h3> 
    26       <!--<img alt="manage views" src="{$resourcesRoot}/images/glassFill-icon-menuButton.gif" width="12" height="11" border="0"/>--> 
    2726      <xsl:copy-of select="$bwStr-SdBr-Views"/> 
    2827    </h3> 
     
    5049 
    5150    <h3> 
    52       <!--a href="{$subscriptions-showSubsMenu}" title="{$bwStr-SdBr-SubscribeToCalendarsOrICalFeeds}"> 
    53         <xsl:copy-of select="$bwStr-SdBr-Subscribe"/> 
    54       </a--> 
    5551      <a href="{$calendar-fetch}" title="{$bwStr-SdBr-ManageCalendarsAndSubscriptions}" class="calManageLink"> 
    5652        <xsl:copy-of select="$bwStr-SdBr-Manage"/> 
     
    10197      </li> 
    10298      <li> 
    103       <a href="{$initUpload}" title="{$bwStr-SdBr-UploadEvent}"> 
    104         <img height="16" border="0" width="12" 
    105           src="{$resourcesRoot}/images/std-icalUpload-icon-small.gif" 
    106           alt="upload ical" /> 
    107         <xsl:text> </xsl:text> 
    108         <xsl:copy-of select="$bwStr-SdBr-UploadICal"/> 
    109       </a> 
    110     </li> 
    111     <li> 
    112       <a href="{$calendar-listForExport}" title="{$bwStr-SdBr-ExportCalendars}"> 
     99        <a href="{$initUpload}" title="{$bwStr-SdBr-UploadEvent}"> 
    113100          <img height="16" border="0" width="12" 
    114101            src="{$resourcesRoot}/images/std-icalUpload-icon-small.gif" 
     
    119106      </li> 
    120107      <li> 
    121         <a href="{$calendar-listForExport}" title="upload event"> 
     108        <a href="{$calendar-listForExport}" title="{$bwStr-SdBr-ExportCalendars}"> 
    122109          <img height="16" border="0" width="12" 
    123110            src="{$resourcesRoot}/images/std-icalDownload-icon-small.gif"