2 commits - plugins/calendar plugins/tasklist

Thomas Brüderli bruederli at kolabsys.com
Tue Feb 24 14:17:57 CET 2015


 plugins/calendar/drivers/kolab/kolab_calendar.php            |    8 +++
 plugins/calendar/drivers/kolab/kolab_driver.php              |   11 ----
 plugins/calendar/drivers/kolab/kolab_invitation_calendar.php |   27 +++++++++++
 plugins/calendar/drivers/kolab/kolab_user_calendar.php       |   16 ++++++
 plugins/tasklist/tasklist.js                                 |    2 
 5 files changed, 53 insertions(+), 11 deletions(-)

New commits:
commit 2a5e28a377fddd4e3a6b36eed85a3e81852b5d72
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Feb 24 14:17:45 2015 +0100

    Also respect filters in quickview

diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js
index 4acc8e2..c8faa87 100644
--- a/plugins/tasklist/tasklist.js
+++ b/plugins/tasklist/tasklist.js
@@ -2554,7 +2554,7 @@ function rcube_tasklist_ui(settings)
 
         // in focusview mode, only tasks from the selected list are allowed
         if (focusview)
-            match = $.inArray(rec.list, focusview_lists) >= 0;
+            match = $.inArray(rec.list, focusview_lists) >= 0 && match;
 
         if (match && tagsfilter.length) {
             match = rec.tags && rec.tags.length;


commit a837feb76e3458eb58c04545ad4711a0a5d77ef5
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Feb 24 12:49:05 2015 +0100

    Fix loading attachments for events listed in virtual calendars (#4400)

diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php
index 64bb082..4bf064f 100644
--- a/plugins/calendar/drivers/kolab/kolab_calendar.php
+++ b/plugins/calendar/drivers/kolab/kolab_calendar.php
@@ -207,6 +207,14 @@ class kolab_calendar extends kolab_storage_folder_api
     return $this->events[$id];
   }
 
+  /**
+   * Get attachment body
+   * @see calendar_driver::get_attachment_body()
+   */
+  public function get_attachment_body($id, $event)
+  {
+    return $this->ready ? $this->storage->get_attachment($event['id'], $id): false;
+  }
 
   /**
    * @param  integer Event's new start (unix timestamp)
diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index 848f0f9..6549381 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -583,15 +583,6 @@ class kolab_driver extends calendar_driver
 
     $cid = $event['calendar'] ? $event['calendar'] : reset(array_keys($this->calendars));
     if ($storage = $this->get_calendar($cid)) {
-      // handle attachments to add
-      if (!empty($event['attachments'])) {
-        foreach ($event['attachments'] as $idx => $attachment) {
-          // we'll read file contacts into memory, Horde/Kolab classes does the same
-          // So we cannot save memory, rcube_imap class can do this better
-          $event['attachments'][$idx]['content'] = $attachment['data'] ? $attachment['data'] : file_get_contents($attachment['path']);
-        }
-      }
-
       $success = $storage->insert_event($event);
       
       if ($success && $this->freebusy_trigger) {
@@ -1614,7 +1605,7 @@ class kolab_driver extends calendar_driver
     if (!($cal = $this->get_calendar($event['calendar'])))
       return false;
 
-    return $cal->storage->get_attachment($event['id'], $id);
+    return $cal->get_attachment_body($id, $event);
   }
 
   /**
diff --git a/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php b/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php
index a78c5a8..0ffdee5 100644
--- a/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php
+++ b/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php
@@ -188,6 +188,33 @@ class kolab_invitation_calendar
     return $event;
   }
 
+  /**
+   * Get attachment body
+   * @see calendar_driver::get_attachment_body()
+   */
+  public function get_attachment_body($id, $event)
+  {
+    // find the actual folder this event resides in
+    if (!empty($event['_folder_id'])) {
+      $cal = $this->cal->get_calendar($event['_folder_id']);
+    }
+    else {
+      $cal = null;
+      foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) {
+        $cal = new kolab_calendar($foldername, $this->cal);
+        if ($cal->ready && $cal->storage && $cal->get_event($event['id'])) {
+          break;
+        }
+      }
+    }
+
+    if ($cal && $cal->storage) {
+      return $cal->get_attachment_body($id, $event);
+    }
+
+    return false;
+  }
+
 
   /**
    * @param  integer Event's new start (unix timestamp)
diff --git a/plugins/calendar/drivers/kolab/kolab_user_calendar.php b/plugins/calendar/drivers/kolab/kolab_user_calendar.php
index 7241dd1..3d53206 100644
--- a/plugins/calendar/drivers/kolab/kolab_user_calendar.php
+++ b/plugins/calendar/drivers/kolab/kolab_user_calendar.php
@@ -174,6 +174,22 @@ class kolab_user_calendar extends kolab_calendar
     return $this->events[$id];
   }
 
+  /**
+   * Get attachment body
+   * @see calendar_driver::get_attachment_body()
+   */
+  public function get_attachment_body($id, $event)
+  {
+    if (!$event['calendar'] && ($ev = $this->get_event($event['id']))) {
+      $event['calendar'] = $ev['calendar'];
+    }
+
+    if ($event['calendar'] && ($cal = $this->cal->get_calendar($event['calendar']))) {
+      return $cal->get_attachment_body($id, $event);
+    }
+
+    return false;
+  }
 
   /**
    * @param  integer Event's new start (unix timestamp)




More information about the commits mailing list