Branch 'dev/calendar-resources' - plugins/calendar

Thomas Brüderli bruederli at kolabsys.com
Tue Mar 11 11:37:07 CET 2014


 plugins/calendar/skins/classic/calendar.css               |  188 +++++++++++---
 plugins/calendar/skins/classic/images/attendee-status.gif |binary
 plugins/calendar/skins/classic/templates/calendar.html    |   43 ++-
 plugins/calendar/skins/classic/templates/eventedit.html   |    9 
 4 files changed, 200 insertions(+), 40 deletions(-)

New commits:
commit 149dcbaa1ac71c2a8c50399baed7aec3ca12e6ec
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Mar 11 11:36:58 2014 +0100

    Get classic calendar skin up to speed with the new features

diff --git a/plugins/calendar/skins/classic/calendar.css b/plugins/calendar/skins/classic/calendar.css
index 9138b13..07917c3 100644
--- a/plugins/calendar/skins/classic/calendar.css
+++ b/plugins/calendar/skins/classic/calendar.css
@@ -16,7 +16,7 @@ body.calendarmain {
 #main {
 	position: absolute;
 	clear: both;
-	top: 90px;
+	top: 72px;
 	left: 0;
 	right: 0;
 	bottom: 10px;
@@ -24,13 +24,15 @@ body.calendarmain {
 
 #calendarsidebar {
 	position: absolute;
-	top: 37px;
+	top: 0px;
 	left: 10px;
 	bottom: 0;
 	width: 230px;
 }
 
 #datepicker {
+	position: relative;
+	top: 42px;
 	width: 100%;
 }
 
@@ -62,7 +64,7 @@ body.calendarmain {
 	position: absolute;
 	left: 244px;
 	width: 8px;
-	top: 37px;
+	top: 4px;
 	bottom: 0;
 	background: url(images/toggle.gif) 0 48% no-repeat transparent;
 	cursor: pointer;
@@ -78,7 +80,7 @@ div.sidebarclosed {
 
 #calendar {
 	position: absolute;
-	top: 0;
+	top: 4px;
 	left: 256px;
 	right: 10px;
 	bottom: 0;
@@ -94,7 +96,7 @@ pre {
 
 #calendars {
 	position: absolute;
-	top: 220px;
+	top: 228px;
 	left: 0;
 	bottom: 0;
 	right: 0;
@@ -207,8 +209,8 @@ pre {
 
 #calendartoolbar {
 	position: absolute;
-	top: 45px;
-	left: 256px;
+	top: 0px;
+	left: 0px;
 	height: 35px;
 }
 
@@ -269,7 +271,8 @@ pre {
 	background-position: -128px -32px;
 }
 
-#quicksearchbar {
+.calendarmain #quicksearchbar {
+	top: 82px;
 	right: 4px;
 }
 
@@ -410,7 +413,7 @@ a.miniColors-trigger {
 }
 
 .event-attendees span.delegated {
-	background-position: right -160px;
+	background-position: right -180px;
 }
 
 .event-attendees span.organizer {
@@ -599,7 +602,7 @@ td.topalign {
 	border: 1px solid #C2D071;
 }
 
-#edit-attendees-table {
+.edit-attendees-table {
 	width: 100%;
 	display: table;
 	table-layout: fixed;
@@ -607,49 +610,51 @@ td.topalign {
 	border: 1px solid #ccc;
 }
 
-#edit-attendees-table td {
+.edit-attendees-table td {
 	padding: 3px;
 	border-bottom: 1px solid #ccc;
 }
 
-#edit-attendees-table td.role {
+.edit-attendees-table td.role {
 	width: 8em;
 }
 
-#edit-attendees-table td.availability,
-#edit-attendees-table td.confirmstate {
+.edit-attendees-table td.availability,
+.edit-attendees-table td.confirmstate {
 	width: 4em;
 }
 
-#edit-attendees-table td.options {
+.edit-attendees-table td.options {
 	width: 3em;
 	text-align: right;
 	padding-right: 4px;
 }
 
-#edit-attendees-table td.name {
+.edit-attendees-table td.name {
 	width: auto;
 	white-space: nowrap;
 	overflow: hidden;
 	text-overflow: ellipsis;
 }
 
-#edit-attendees-table thead td {
+.edit-attendees-table thead td {
 	background: url(images/listheader.gif) top left repeat-x #CCC;
 }
 
-#edit-attendees-form {
+#edit-attendees-form,
+#edit-resources-form {
 	position: relative;
 	margin-top: 1em;
 }
 
-#edit-attendees-form #edit-attendee-schedule {
+#edit-attendees-form #edit-attendee-schedule,
+#edit-resources-form #edit-resource-find {
 	position: absolute;
 	top: 0;
 	right: 0;
 }
 
-#edit-attendees-table select.edit-attendee-role {
+.edit-attendees-table select.edit-attendee-role {
 	border: 0;
 	padding: 2px;
 	background: white;
@@ -722,35 +727,35 @@ td.topalign {
 	vertical-align: middle;
 }
 
-#edit-attendees-table tbody td.confirmstate {
+.edit-attendees-table tbody td.confirmstate {
 	overflow: hidden;
 	white-space: nowrap;
 	text-indent: -2000%;
 }
 
-#edit-attendees-table td.confirmstate span {
+.edit-attendees-table td.confirmstate span {
 	display: block;
 	width: 20px;
 	background: url(images/attendee-status.gif) 5px 0 no-repeat;
 }
 
-#edit-attendees-table td.confirmstate span.needs-action {
+.edit-attendees-table td.confirmstate span.needs-action {
 }
 
-#edit-attendees-table td.confirmstate span.accepted {
+.edit-attendees-table td.confirmstate span.accepted {
 	background-position: 5px -20px;
 }
 
-#edit-attendees-table td.confirmstate span.declined {
+.edit-attendees-table td.confirmstate span.declined {
 	background-position: 5px -40px;
 }
 
-#edit-attendees-table td.confirmstate span.tentative {
+.edit-attendees-table td.confirmstate span.tentative {
 	background-position: 5px -60px;
 }
 
-#edit-attendees-table td.confirmstate span.delegated {
-	background-position: 5px -160px;
+.edit-attendees-table td.confirmstate span.delegated {
+	background-position: 5px -180px;
 }
 
 #attendees-freebusy-table {
@@ -814,10 +819,14 @@ td.topalign {
 	background-position: 2px -117px;
 }
 
-.attendees-list .chair {
+.attendees-list .non-participant {
 	background-position: 2px -137px;
 }
 
+.attendees-list .chair {
+	background-position: 2px -157px;
+}
+
 .attendees-list .loading {
 	background: url(images/loading_blue.gif) 1px 50% no-repeat;
 }
@@ -1063,12 +1072,124 @@ span.spacer {
   padding-right: 10px;
 }
 
+#resource-dialog-right {
+	position: absolute;
+	top: 10px;
+	left: 300px;
+	right: 8px;
+	bottom: 10px;
+}
+
+#resource-info,
+#resource-availability {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	height: 56%;
+	border: 1px solid #999;
+	background-color: #F9F9F9;
+	overflow: auto;
+}
+
+#resource-availability {
+	top: auto;
+	bottom: 0;
+	height: 41%;
+}
+
+#resource-info .boxtitle,
+#resource-availability .boxtitle {
+	margin-top: 0;
+}
+
+#resources-list div.treetoggle {
+	left: 3px !important;
+	top: -2px;
+}
+
+#resources-list li ul li a {
+	padding-left: 35px;
+}
+
+#resource-selection {
+  position: absolute;
+	top: 10px;
+	bottom: 10px;
+	left: 8px;
+	width: 280px;
+	border: 1px solid #999999;
+	background-color: #F9F9F9;
+	overflow: hidden;
+}
+
+#resource-selection .boxlistcontent {
+	top: 25px;
+	border-top: 1px solid #eee;
+}
+
+#resourcequicksearch {
+	position: absolute;
+	top: 3px;
+	left: 7px;
+	right: 4px;
+	height: 17px;
+	background: #fff;
+	border: 1px solid #888;
+	border-radius: 10px;
+	-webkit-box-shadow: inset 1px 1px 1px 0px rgba(0, 0, 0, 0.3);
+	-moz-box-shadow: inset 1px 1px 1px 0px rgba(0, 0, 0, 0.3);
+	box-shadow: inset 1px 1px 1px 0px rgba(0, 0, 0, 0.3);
+}
+
+#resourcesearchbox {
+	position: absolute;
+	top: 1px;
+	left: 24px;
+	width: 140px;
+	height: 15px;
+	font-size: 11px;
+	padding: 0px;
+	border: none;
+	outline: none;
+	background: #fff;
+}
+
+#resourcesearchreset {
+	position: absolute;
+	top: 2px;
+	right: 2px;
+	text-decoration: none;
+}
+
+#resource-details,
+#resource-details-owner {
+	margin: 8px;
+}
+
+#resource-details td.title,
+#resource-details-owner td.title {
+	color: #666;
+	padding-right: 10px;
+	min-width: 10em;
+}
+
+#resource-details-owner thead td {
+	color: #333;
+	font-size: 13px;
+	font-weight: bold;
+}
 
 /* fullcalendar style overrides */
 
+#calendar .fc-header-right {
+	padding-right: 200px;
+	padding-top: 4px;
+}
+
 .rcube-fc-content {
 	position: absolute !important;
-	top: 37px;
+	top: 38px;
 	left: 0;
 	right: 0;
 	bottom: 0;
@@ -1147,7 +1268,7 @@ div.fc-event-location {
 
 .fc-view-list div.fc-list-header,
 .fc-view-table td.fc-list-header,
-#edit-attendees-table thead td {
+.edit-attendees-table thead td {
 	padding: 3px;
 	background: #dddddd;
 	background-image: -moz-linear-gradient(center top, #f4f4f4, #d2d2d2);
@@ -1251,6 +1372,7 @@ div.calendar-invitebox .rsvp-status.loading {
 
 div.calendar-invitebox .rsvp-status.declined,
 div.calendar-invitebox .rsvp-status.tentative,
+div.calendar-invitebox .rsvp-status.delegated,
 div.calendar-invitebox .rsvp-status.accepted {
 	padding: 0 0 1px 22px;
 	background: url(images/attendee-status.gif) 2px -20px no-repeat;
@@ -1264,6 +1386,10 @@ div.calendar-invitebox .rsvp-status.tentative {
 	background-position: 2px -60px;
 }
 
+div.calendar-invitebox .rsvp-status.delegated {
+	background-position: 2px -180px;
+}
+
 /* iTIP attend reply page */
 
 .calendaritipattend .centerbox {
diff --git a/plugins/calendar/skins/classic/images/attendee-status.gif b/plugins/calendar/skins/classic/images/attendee-status.gif
index 4c561e4..fd3b926 100644
Binary files a/plugins/calendar/skins/classic/images/attendee-status.gif and b/plugins/calendar/skins/classic/images/attendee-status.gif differ
diff --git a/plugins/calendar/skins/classic/templates/calendar.html b/plugins/calendar/skins/classic/templates/calendar.html
index da77999..b6012e7 100644
--- a/plugins/calendar/skins/classic/templates/calendar.html
+++ b/plugins/calendar/skins/classic/templates/calendar.html
@@ -13,6 +13,14 @@
 
 <div id="main">
   <div id="calendarsidebar">
+    <div id="calendartoolbar">
+      <roundcube:button command="addevent" type="link" class="buttonPas addevent" classAct="button addevent" classSel="button addeventSel" title="calendar.new_event" content=" " />
+      <roundcube:button command="print" type="link" class="buttonPas print" classAct="button print" classSel="button printSel" title="calendar.print" content=" " />
+      <roundcube:button command="events-import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="calendar.importevents" content=" " />
+      <roundcube:button command="export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="calendar.export" content=" " />
+      <roundcube:container name="toolbar" id="calendartoolbar" />
+    </div>
+
     <div id="datepicker"></div>
     <div id="calendars" style="visibility:hidden">
       <div class="boxtitle"><roundcube:label name="calendar.calendars" /></div>
@@ -96,6 +104,32 @@
 
 <roundcube:include file="/templates/eventedit.html" />
 
+<div id="eventresourcesdialog" class="uidialog">
+  <div id="resource-dialog-left">
+    <div id="resource-selection" class="">
+      <div id="resourcequicksearch">
+        <roundcube:object name="plugin.resources_searchform" id="resourcesearchbox" />
+        <roundcube:button command="reset-resource-search" id="resourcesearchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" />
+      </div>
+      <div class="boxlistcontent">
+        <roundcube:object name="plugin.resources_list" id="resources-list" class="treelist" />
+      </div>
+    </div>
+  </div>
+
+  <div id="resource-dialog-right">
+    <div id="resource-info">
+      <h2 class="boxtitle"><roundcube:label name="calendar.resourcedetails" /></h2>
+      <roundcube:object name="plugin.resource_info" id="resource-details" />
+    </div>
+
+    <div id="resource-availability">
+      <h2 class="boxtitle"><roundcube:label name="calendar.resourceavailability" /></h2>
+      <div id="resource-freebusy-calendar"></div>
+    </div>
+  </div>
+</div>
+
 <div id="eventfreebusy" class="uidialog">
   <roundcube:object name="plugin.attendees_freebusy_table" id="attendees-freebusy-table" cellspacing="0" cellpadding="0" border="0" />
   
@@ -134,6 +168,7 @@
     <span class="attendee organizer"><roundcube:label name="calendar.roleorganizer" /></span>
     <span class="attendee req-participant"><roundcube:label name="calendar.rolerequired" /></span>
     <span class="attendee opt-participant"><roundcube:label name="calendar.roleoptional" /></span>
+    <span class="attendee non-participant"><roundcube:label name="calendar.rolenonparticipant" /></span>
     <span class="attendee chair"><roundcube:label name="calendar.rolechair" /></span>
   </div>
 </div>
@@ -159,14 +194,6 @@
   </div>
 </div>
 
-<div id="calendartoolbar">
-  <roundcube:button command="addevent" type="link" class="buttonPas addevent" classAct="button addevent" classSel="button addeventSel" title="calendar.new_event" content=" " />
-  <roundcube:button command="print" type="link" class="buttonPas print" classAct="button print" classSel="button printSel" title="calendar.print" content=" " />
-  <roundcube:button command="events-import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="calendar.importevents" content=" " />
-  <roundcube:button command="export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="calendar.export" content=" " />
-  <roundcube:container name="toolbar" id="calendartoolbar" />
-</div>
-
 <div id="quicksearchbar">
 <roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass.png" />
 <roundcube:object name="plugin.searchform" id="quicksearchbox" />
diff --git a/plugins/calendar/skins/classic/templates/eventedit.html b/plugins/calendar/skins/classic/templates/eventedit.html
index 1bc1a12..e05a55c 100644
--- a/plugins/calendar/skins/classic/templates/eventedit.html
+++ b/plugins/calendar/skins/classic/templates/eventedit.html
@@ -4,6 +4,7 @@
       <li><a href="#event-panel-1"><roundcube:label name="calendar.tabsummary" /></a></li>
       <li id="edit-tab-recurrence"><a href="#event-panel-recurrence"><roundcube:label name="calendar.tabrecurrence" /></a></li>
       <li id="edit-tab-attendees"><a href="#event-panel-attendees"><roundcube:label name="calendar.tabattendees" /></a></li>
+      <li id="edit-tab-resources"><a href="#event-panel-resources"><roundcube:label name="calendar.tabresources" /></a></li>
       <li id="edit-tab-attachments"><a href="#event-panel-attachments"><roundcube:label name="calendar.tabattachments" /></a></li>
     </ul>
     <!-- basic info -->
@@ -87,10 +88,16 @@
     </div>
     <!-- attendees list -->
     <div id="event-panel-attendees">
-      <roundcube:object name="plugin.attendees_list" id="edit-attendees-table" cellspacing="0" cellpadding="0" border="0" />
+      <roundcube:object name="plugin.attendees_list" id="edit-attendees-table" class="edit-attendees-table" cellspacing="0" cellpadding="0" border="0" />
       <roundcube:object name="plugin.attendees_form" id="edit-attendees-form" />
       <roundcube:include file="/templates/freebusylegend.html" />
     </div>
+    <!-- resources list -->
+    <div id="event-panel-resources">
+      <roundcube:object name="plugin.attendees_list" id="edit-resources-table" class="edit-attendees-table" cellspacing="0" cellpadding="0" border="0" coltitle="resource" />
+      <roundcube:object name="plugin.resources_form" id="edit-resources-form" />
+      <roundcube:include file="/templates/freebusylegend.html" />
+    </div>
     <!-- attachments list (with upload form) -->
     <div id="event-panel-attachments">
       <div id="edit-attachments" class="attachments-list">




More information about the commits mailing list