2 commits - plugins/calendar plugins/tasklist

Thomas Brüderli bruederli at kolabsys.com
Thu Sep 20 10:10:57 CEST 2012


 plugins/calendar/calendar.php                            |   34 +++++++--------
 plugins/calendar/drivers/kolab/kolab_driver.php          |    2 
 plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php |    1 
 3 files changed, 19 insertions(+), 18 deletions(-)

New commits:
commit 7651e5de39a4fa0ed023462927637d1767231280
Merge: 517c86c ba214ec
Author: Thomas Bruederli <thomas at roundcube.net>
Date:   Thu Sep 20 10:11:08 2012 +0200

    Merge branch 'master' of ssh://git.kolabsys.com/git/roundcube



commit 517c86c8dfc74197b4c07073c5ca90d455b74ffb
Author: Thomas Bruederli <thomas at roundcube.net>
Date:   Thu Sep 20 10:10:50 2012 +0200

    Respect .default annotation for calendar selection (if no user setting exists)

diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 86a2d12..d49b02e 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -229,23 +229,26 @@ class calendar extends rcube_plugin
   }
 
   /**
-   *
+   * Get properties of the calendar this user has specified as default
    */
   public function get_default_calendar($writeable = false)
   {
-    $cal_id = $this->rc->config->get('calendar_default_calendar');
+    $default_id = $this->rc->config->get('calendar_default_calendar');
     $calendars = $this->driver->list_calendars();
-    $calendar = $calendars[$cal_id] ? $calendars[$cal_id] : null;
+    $calendar = $calendars[$default_id] ?: null;
     if (!$calendar || ($writeable && $calendar['readonly'])) {
       foreach ($calendars as $cal) {
-        if (!$writeable || !$cal['readonly']) {
+        if ($cal['default']) {
           $calendar = $cal;
           break;
         }
+        if (!$writeable || !$cal['readonly']) {
+          $first = $cal;
+        }
       }
     }
-    
-    return $calendar;
+
+    return $calendar ?: $first;
   }
 
 
@@ -402,10 +405,12 @@ class calendar extends rcube_plugin
       foreach ((array)$this->driver->list_calendars() as $id => $prop) {
         if (!$prop['readonly'])
           $select_cal->add($prop['name'], strval($id));
+        if ($prop['default'])
+          $default_calendar = $id;
       }
       $p['blocks']['view']['options']['defaultcalendar'] = array(
         'title' => html::label($field_id . 'value', Q($this->gettext('defaultcalendar'))),
-        'content' => $select_cal->show($this->rc->config->get('calendar_default_calendar', '')),
+        'content' => $select_cal->show($this->rc->config->get('calendar_default_calendar', $default_calendar)),
       );
       
       
@@ -726,13 +731,14 @@ class calendar extends rcube_plugin
           }
         }
         
+        $default_calendar = $calendar_select ? $this->get_default_calendar(true) : null;
         $this->rc->output->command('plugin.update_event_rsvp_status', array(
           'uid' => $event['uid'],
           'id' => asciiwords($event['uid'], true),
           'status' => $status,
           'action' => $action,
           'html' => $html,
-          'select' => $calendar_select ? html::span('calendar-select', $this->gettext('saveincalendar') . ' ' . $calendar_select->show($this->rc->config->get('calendar_default_calendar'))) : '',
+          'select' => $calendar_select ? html::span('calendar-select', $this->gettext('saveincalendar') . ' ' . $calendar_select->show($this->rc->config->get('calendar_default_calendar', $default_calendar['id']))) : '',
         ));
         return;
 
@@ -1768,17 +1774,9 @@ class calendar extends rcube_plugin
     // successfully parsed events?
     if (!empty($events) && ($event = $events[$index])) {
       // find writeable calendar to store event
-      $cal_id = !empty($_REQUEST['_calendar']) ? get_input_value('_calendar', RCUBE_INPUT_POST) : $this->rc->config->get('calendar_default_calendar');
+      $cal_id = !empty($_REQUEST['_calendar']) ? get_input_value('_calendar', RCUBE_INPUT_POST) : null;
       $calendars = $this->driver->list_calendars();
-      $calendar = $calendars[$cal_id] ? $calendars[$cal_id] : null;
-      if (!$calendar || $calendar['readonly']) {
-        foreach ($calendars as $cal) {
-          if (!$cal['readonly']) {
-            $calendar = $cal;
-            break;
-          }
-        }
-      }
+      $calendar = $calendars[$cal_id] ?: $this->get_default_calendar(true);
 
       // update my attendee status according to submitted method
       if (!empty($status)) {
diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index 5cb0dc2..6250db6 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -103,6 +103,7 @@ class kolab_driver extends calendar_driver
     }
 
     $calendars = $names = array();
+    $default_folder = class_exists('kolab_folders') ? kolab_folders::default_folder('event') : '';
 
     foreach ($this->calendars as $id => $cal) {
       if ($cal->ready) {
@@ -116,6 +117,7 @@ class kolab_driver extends calendar_driver
           'readonly' => $cal->readonly,
           'showalarms' => $cal->alarms,
           'class_name' => $cal->get_namespace(),
+          'default'  => $cal->get_realname() == $default_folder,
           'active'   => $cal->storage->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
         );
       }
diff --git a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
index 9f24d44..e84d455 100644
--- a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
+++ b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
@@ -115,6 +115,7 @@ class tasklist_kolab_driver extends tasklist_driver
                 'editable' => !$readonly,
                 'active' => $folder->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
                 'parentfolder' => $path_imap,
+                'default' => $utf7name == $default_folder,
                 'class_name' => trim($folder->get_namespace() . ($utf7name == $default_folder ? ' default' : '')),
             );
             $this->lists[$tasklist['id']] = $tasklist;





More information about the commits mailing list