3 commits - plugins/calendar plugins/libkolab plugins/tasklist

Thomas Brüderli bruederli at kolabsys.com
Wed Aug 6 15:22:11 CEST 2014


 plugins/calendar/calendar.php                   |    4 +++-
 plugins/calendar/calendar_ui.js                 |    2 +-
 plugins/calendar/drivers/kolab/kolab_driver.php |   16 +++++++++++-----
 plugins/libkolab/lib/kolab_format_xcal.php      |   14 +++++++++++---
 plugins/tasklist/skins/larry/tasklist.css       |   14 +++++++-------
 5 files changed, 33 insertions(+), 17 deletions(-)

New commits:
commit 435b4483ec0d24a97a8b17c1c3e39bf518fed92b
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Aug 6 15:21:32 2014 +0200

    Minor fixes for attendee display and updates

diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 722e64b..3160b6b 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -978,7 +978,7 @@ class calendar extends rcube_plugin
         $data = $this->driver->get_event_changelog($event);
         if (is_array($data) && !empty($data)) {
           $lib = $this->lib;
-          array_walk($data, function($change) use ($lib) {
+          array_walk($data, function(&$change) use ($lib) {
             if ($change['date']) {
               $dt = $lib->adjust_timezone($change['date']);
               if ($dt instanceof DateTime)
@@ -1720,6 +1720,8 @@ class calendar extends rcube_plugin
           $owner = $i;
         else if (!isset($attendee['rsvp']))
           $event['attendees'][$i]['rsvp'] = true;
+        else if (is_string($attendee['rsvp']))
+          $event['attendees'][$i]['rsvp'] = $attendee['rsvp'] == 'true' || $attendee['rsvp'] == '1';
       }
 
       // set new organizer identity
diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js
index ad699de..23a7d54 100644
--- a/plugins/calendar/calendar_ui.js
+++ b/plugins/calendar/calendar_ui.js
@@ -619,7 +619,7 @@ function rcube_calendar_ui(settings)
       var dispname = Q(data.name || data.email), tooltip = '';
 
       if (data.email) {
-        tooltip = data.email;
+        tooltip = data.email + '; ' + data.status;
         dispname = '<a href="mailto:' + data.email + '" class="mailtolink" data-cutype="' + data.cutype + '">' + dispname + '</a>';
       }
 
diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index 4f0bdfb..869d56b 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -1326,6 +1326,17 @@ class kolab_driver extends calendar_driver
       $record['attachments'] = $attachments;
     }
 
+    if (!empty($record['attendees'])) {
+      foreach ((array)$record['attendees'] as $i => $attendee) {
+        if (is_array($attendee['delegated-from'])) {
+          $record['attendees'][$i]['delegated-from'] = join(', ', $attendee['delegated-from']);
+        }
+        if (is_array($attendee['delegated-to'])) {
+          $record['attendees'][$i]['delegated-to'] = join(', ', $attendee['delegated-to']);
+        }
+      }
+    }
+
     // Roundcube only supports one category assignment
     if (is_array($record['categories']))
       $record['categories'] = $record['categories'][0];
@@ -1543,11 +1554,6 @@ class kolab_driver extends calendar_driver
       $uid = $event;
     }
 
-    // FIXME: hard-code UID for static Bonnie API demo
-    $demo_uids = $this->rc->config->get('kolab_static_bonnie_uids', array('0015c5fe-9baf-0561-11e3-d584fa2894b7'));
-    if (!in_array($uid, $demo_uids))
-      $uid = reset($demo_uids);
-
     return array($uid, $mailbox);
   }
 


commit fa3377cf2021510bff58425ea9bee9cfe9097b1e
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Aug 6 15:16:33 2014 +0200

    Set attendee RSVP=TRUE when sequence was increased

diff --git a/plugins/libkolab/lib/kolab_format_xcal.php b/plugins/libkolab/lib/kolab_format_xcal.php
index a18557b..421ee92 100644
--- a/plugins/libkolab/lib/kolab_format_xcal.php
+++ b/plugins/libkolab/lib/kolab_format_xcal.php
@@ -304,6 +304,8 @@ abstract class kolab_format_xcal extends kolab_format
         $this->init();
 
         $is_new = !$this->obj->uid();
+        $old_sequence = $this->obj->sequence();
+        $reschedule = $is_new;
 
         // set common object properties
         parent::set($object);
@@ -314,7 +316,7 @@ abstract class kolab_format_xcal extends kolab_format
                 $object['sequence'] = 0;
             }
             else {
-                $object['sequence'] = $this->obj->sequence();
+                $object['sequence'] = $old_sequence;
                 $old = $this->data['uid'] ? $this->data : $this->to_array();
 
                 // increment sequence when updating properties relevant for scheduling.
@@ -336,6 +338,10 @@ abstract class kolab_format_xcal extends kolab_format
         }
         $this->obj->setSequence(intval($object['sequence']));
 
+        if ($object['sequence'] > $old_sequence) {
+            $reschedule = true;
+        }
+
         $this->obj->setSummary($object['title']);
         $this->obj->setLocation($object['location']);
         $this->obj->setDescription($object['description']);
@@ -350,7 +356,7 @@ abstract class kolab_format_xcal extends kolab_format
 
         // process event attendees
         $attendees = new vectorattendee;
-        foreach ((array)$object['attendees'] as $attendee) {
+        foreach ((array)$object['attendees'] as $i => $attendee) {
             if ($attendee['role'] == 'ORGANIZER') {
                 $object['organizer'] = $attendee;
             }
@@ -363,7 +369,9 @@ abstract class kolab_format_xcal extends kolab_format
                 $att->setPartStat($this->part_status_map[$attendee['status']]);
                 $att->setRole($this->role_map[$attendee['role']] ? $this->role_map[$attendee['role']] : kolabformat::Required);
                 $att->setCutype($this->cutype_map[$attendee['cutype']] ? $this->cutype_map[$attendee['cutype']] : kolabformat::CutypeIndividual);
-                $att->setRSVP((bool)$attendee['rsvp']);
+                $att->setRSVP((bool)$attendee['rsvp'] || $reschedule);
+
+                $object['attendees'][$i]['rsvp'] = $attendee['rsvp'] || $reschedule;
 
                 if (!empty($attendee['delegated-from'])) {
                     $vdelegators = new vectorcontactref;


commit 0ba3579f2dfb0d655e970e0f0655f4dae42c02f9
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Aug 6 15:09:56 2014 +0200

    Avoid styles colliding with other modules

diff --git a/plugins/tasklist/skins/larry/tasklist.css b/plugins/tasklist/skins/larry/tasklist.css
index ff8ba12..3b0e403 100644
--- a/plugins/tasklist/skins/larry/tasklist.css
+++ b/plugins/tasklist/skins/larry/tasklist.css
@@ -1171,7 +1171,7 @@ div.tasklist-invitebox .rsvp-status.hint {
 }
 
 #task-partstat .changersvp,
-.edit-attendees-table td.confirmstate span,
+.tasklistview .edit-attendees-table td.confirmstate span,
 div.tasklist-invitebox .rsvp-status.declined,
 div.tasklist-invitebox .rsvp-status.tentative,
 div.tasklist-invitebox .rsvp-status.accepted,
@@ -1185,37 +1185,37 @@ div.tasklist-invitebox .rsvp-status.needs-action {
 
 #task-partstat .changersvp.declined,
 div.tasklist-invitebox .rsvp-status.declined,
-.edit-attendees-table td.confirmstate span.declined {
+.tasklistview .edit-attendees-table td.confirmstate span.declined {
 	background-position: 2px -40px;
 }
 
 #task-partstat .changersvp.tentative,
 div.tasklist-invitebox .rsvp-status.tentative,
-.edit-attendees-table td.confirmstate span.tentative {
+.tasklistview .edit-attendees-table td.confirmstate span.tentative {
 	background-position: 2px -60px;
 }
 
 #task-partstat .changersvp.delegated,
 div.tasklist-invitebox .rsvp-status.delegated,
-.edit-attendees-table td.confirmstate span.delegated {
+.tasklistview .edit-attendees-table td.confirmstate span.delegated {
 	background-position: 2px -180px;
 }
 
 #task-partstat .changersvp.needs-action,
 div.tasklist-invitebox .rsvp-status.needs-action,
-.edit-attendees-table td.confirmstate span.needs-action {
+.tasklistview .edit-attendees-table td.confirmstate span.needs-action {
 	background-position: 2px 0;
 }
 
 #task-partstat .changersvp.in-process,
 div.tasklist-invitebox .rsvp-status.in-process,
-.edit-attendees-table td.confirmstate span.in-process {
+.tasklistview .edit-attendees-table td.confirmstate span.in-process {
 	background-position: 2px -200px;
 }
 
 #task-partstat .changersvp.accepted,
 div.tasklist-invitebox .rsvp-status.accepted,
-.edit-attendees-table td.confirmstate span.accepted {
+.tasklistview .edit-attendees-table td.confirmstate span.accepted {
 	background-position: 2px -220px;
 }
 




More information about the commits mailing list