diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js index cb25fa45..a0bc0bb6 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('
@ ' + Q(event.location) + '
'); } - if (event.sensitivity != 0) + if (event.sensitivity && event.sensitivity != 'public') element.find('div.fc-event-time').append(''); if (event.recurrence) element.find('div.fc-event-time').append(''); diff --git a/plugins/calendar/drivers/calendar_driver.php b/plugins/calendar/drivers/calendar_driver.php index 41c61815..52de901b 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 9388be32..8c22bb0a 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 ce6e0ec8..1cf71077 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 61803e7d..bca725ed 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 a9ba04c4..fef2c24e 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']);