plugins/calendar plugins/libcalendaring

Thomas Brüderli bruederli at kolabsys.com
Thu Jul 18 14:57:15 CEST 2013


 plugins/calendar/calendar_ui.js                       |   11 +++++------
 plugins/calendar/drivers/calendar_driver.php          |    2 +-
 plugins/calendar/drivers/database/database_driver.php |    4 ++++
 plugins/calendar/drivers/kolab/kolab_calendar.php     |    7 -------
 plugins/calendar/lib/calendar_ui.php                  |    6 +++---
 plugins/libcalendaring/libvcalendar.php               |    9 ++++-----
 6 files changed, 17 insertions(+), 22 deletions(-)

New commits:
commit a21fc44ed4065defb45c9448038a0cf7b3247299
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Thu Jul 18 14:56:36 2013 +0200

    Change internal representation of event sensitivity values to strings

diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js
index cb25fa4..a0bc0bb 100644
--- a/plugins/calendar/calendar_ui.js
+++ b/plugins/calendar/calendar_ui.js
@@ -51,7 +51,7 @@ function rcube_calendar_ui(settings)
     var freebusy_data = {};
     var current_view = null;
     var exec_deferred = bw.ie6 ? 5 : 1;
-    var sensitivitylabels = { 0:rcmail.gettext('public','calendar'), 1:rcmail.gettext('private','calendar'), 2:rcmail.gettext('confidential','calendar') };
+    var sensitivitylabels = { 'public':rcmail.gettext('public','calendar'), 'private':rcmail.gettext('private','calendar'), 'confidential':rcmail.gettext('confidential','calendar') };
     var ui_loading = rcmail.set_busy(true, 'loading');
 
     // general datepicker settings
@@ -314,10 +314,9 @@ function rcube_calendar_ui(settings)
         $('#event-priority').show().children('.event-text').html(Q(event.priority+' '+priolabels[event.priority]));
       }
 
-      if (event.sensitivity != 0) {
-        var sensitivityclasses = { 0:'public', 1:'private', 2:'confidential' };
+      if (event.sensitivity && event.sensitivity != 'public') {
         $('#event-sensitivity').show().children('.event-text').html(Q(sensitivitylabels[event.sensitivity]));
-        $dialog.addClass('sensitivity-'+sensitivityclasses[event.sensitivity]);
+        $dialog.addClass('sensitivity-'+event.sensitivity);
       }
 
       // create attachments list
@@ -1699,14 +1698,14 @@ function rcube_calendar_ui(settings)
 
     var fc_event_render = function(event, element, view) {
       if (view.name != 'list' && view.name != 'table') {
-        var prefix = event.sensitivity != 0 ? String(sensitivitylabels[event.sensitivity]).toUpperCase()+': ' : '';
+        var prefix = event.sensitivity && event.sensitivity != 'public' ? String(sensitivitylabels[event.sensitivity]).toUpperCase()+': ' : '';
         element.attr('title', prefix + event.title);
       }
       if (view.name != 'month') {
         if (event.location) {
           element.find('div.fc-event-title').after('<div class="fc-event-location">@ ' + Q(event.location) + '</div>');
         }
-        if (event.sensitivity != 0)
+        if (event.sensitivity && event.sensitivity != 'public')
           element.find('div.fc-event-time').append('<i class="fc-icon-sensitive"></i>');
         if (event.recurrence)
           element.find('div.fc-event-time').append('<i class="fc-icon-recurring"></i>');
diff --git a/plugins/calendar/drivers/calendar_driver.php b/plugins/calendar/drivers/calendar_driver.php
index 41c6181..52de901 100644
--- a/plugins/calendar/drivers/calendar_driver.php
+++ b/plugins/calendar/drivers/calendar_driver.php
@@ -53,7 +53,7 @@
  *    'categories' => 'Event category',
  *     'free_busy' => 'free|busy|outofoffice|tentative',  // Show time as
  *      'priority' => 0-9,     // Event priority (0=undefined, 1=highest, 9=lowest)
- *   'sensitivity' => 0|1|2,   // Event sensitivity (0=public, 1=private, 2=confidential)
+ *   'sensitivity' => 'public|private|confidential',   // Event sensitivity
  *        'alarms' => '-15M:DISPLAY',  // Reminder settings inspired by valarm definition (e.g. display alert 15 minutes before event)
  *   'attachments' => array(   // List of attachments
  *            'name' => 'File name',
diff --git a/plugins/calendar/drivers/database/database_driver.php b/plugins/calendar/drivers/database/database_driver.php
index 9388be3..8c22bb0 100644
--- a/plugins/calendar/drivers/database/database_driver.php
+++ b/plugins/calendar/drivers/database/database_driver.php
@@ -42,6 +42,7 @@ class database_driver extends calendar_driver
   private $calendars = array();
   private $calendar_ids = '';
   private $free_busy_map = array('free' => 0, 'busy' => 1, 'out-of-office' => 2, 'outofoffice' => 2, 'tentative' => 3);
+  private $sensitivity_map = array('public' => 0, 'private' => 1, 'confidential' => 2);
   private $server_timezone;
   
   private $db_events = 'events';
@@ -407,6 +408,7 @@ class database_driver extends calendar_driver
     $rrule = $event['recurrence'] ? libcalendaring::to_rrule($event['recurrence']) : '';
     $event['_recurrence'] = rtrim($rrule, ';');
     $event['free_busy'] = intval($this->free_busy_map[strtolower($event['free_busy'])]);
+    $event['sensitivity'] = intval($this->sensitivity_map[strtolower($event['sensitivity'])]);
     
     if (isset($event['allday'])) {
       $event['all_day'] = $event['allday'] ? 1 : 0;
@@ -769,6 +771,7 @@ class database_driver extends calendar_driver
   private function _read_postprocess($event)
   {
     $free_busy_map = array_flip($this->free_busy_map);
+    $sensitivity_map = array_flip($this->sensitivity_map);
     
     $event['id'] = $event['event_id'];
     $event['start'] = new DateTime($event['start']);
@@ -776,6 +779,7 @@ class database_driver extends calendar_driver
     $event['allday'] = intval($event['all_day']);
     $event['changed'] = new DateTime($event['changed']);
     $event['free_busy'] = $free_busy_map[$event['free_busy']];
+    $event['sensitivity'] = $sensitivity_map[$event['sensitivity']];
     $event['calendar'] = $event['calendar_id'];
     $event['recurrence_id'] = intval($event['recurrence_id']);
     
diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php
index ce6e0ec..1cf7107 100644
--- a/plugins/calendar/drivers/kolab/kolab_calendar.php
+++ b/plugins/calendar/drivers/kolab/kolab_calendar.php
@@ -38,7 +38,6 @@ class kolab_calendar
   private $events = array();
   private $imap_folder = 'INBOX/Calendar';
   private $search_fields = array('title', 'description', 'location', 'attendees');
-  private $sensitivity_map = array('public', 'private', 'confidential');
 
 
   /**
@@ -557,9 +556,6 @@ class kolab_calendar
       $record['attachments'] = $attachments;
     }
 
-    $sensitivity_map = array_flip($this->sensitivity_map);
-    $record['sensitivity'] = intval($sensitivity_map[$record['sensitivity']]);
-
     // Roundcube only supports one category assignment
     if (is_array($record['categories']))
       $record['categories'] = $record['categories'][0];
@@ -613,9 +609,6 @@ class kolab_calendar
       unset($event['attachments']);
     }
 
-    // translate sensitivity property
-    $event['sensitivity'] = $this->sensitivity_map[$event['sensitivity']];
-
     // set current user as ORGANIZER
     $identity = $this->cal->rc->user->get_identity();
     if (empty($event['attendees']) && $identity['email'])
diff --git a/plugins/calendar/lib/calendar_ui.php b/plugins/calendar/lib/calendar_ui.php
index 61803e7..bca725e 100644
--- a/plugins/calendar/lib/calendar_ui.php
+++ b/plugins/calendar/lib/calendar_ui.php
@@ -333,9 +333,9 @@ class calendar_ui
   {
     $attrib['name'] = 'sensitivity';
     $select = new html_select($attrib);
-    $select->add($this->cal->gettext('public'), '0');
-    $select->add($this->cal->gettext('private'), '1');
-    $select->add($this->cal->gettext('confidential'), '2');
+    $select->add($this->cal->gettext('public'), 'public');
+    $select->add($this->cal->gettext('private'), 'private');
+    $select->add($this->cal->gettext('confidential'), 'confidential');
     return $select->show(null);
   }
   
diff --git a/plugins/libcalendaring/libvcalendar.php b/plugins/libcalendaring/libvcalendar.php
index a9ba04c..fef2c24 100644
--- a/plugins/libcalendaring/libvcalendar.php
+++ b/plugins/libcalendaring/libvcalendar.php
@@ -253,8 +253,7 @@ class libvcalendar
         
         case 'CLASS':
         case 'X-CALENDARSERVER-ACCESS':
-          $sensitivity_map = array('PUBLIC' => 0, 'PRIVATE' => 1, 'CONFIDENTIAL' => 2);
-          $event['sensitivity'] = $sensitivity_map[$attr['value']];
+          $event['sensitivity'] = strtolower($attr['value']);
           break;
 
         case 'X-MICROSOFT-CDO-BUSYSTATUS':
@@ -433,10 +432,10 @@ class libvcalendar
           }
         }
         if (!empty($event['categories'])) {
-          $vevent .= "CATEGORIES:" . self::escape(strtoupper($event['categories'])) . self::EOL;
+          $vevent .= "CATEGORIES:" . self::escape($event['categories']) . self::EOL;
         }
-        if ($event['sensitivity'] > 0) {
-          $vevent .= "CLASS:" . ($event['sensitivity'] == 2 ? 'CONFIDENTIAL' : 'PRIVATE') . self::EOL;
+        if (!empty($event['sensitivity']) && $event['sensitivity'] != 'public') {
+          $vevent .= "CLASS:" . strtoupper($event['sensitivity']) . self::EOL;
         }
         if ($event['alarms']) {
           list($trigger, $action) = explode(':', $event['alarms']);




More information about the commits mailing list