Change internal representation of event sensitivity values to strings

This commit is contained in:
Thomas Bruederli 2013-07-18 14:56:36 +02:00
parent c2d97dfe36
commit a21fc44ed4
6 changed files with 17 additions and 22 deletions

View file

@ -51,7 +51,7 @@ function rcube_calendar_ui(settings)
var freebusy_data = {}; var freebusy_data = {};
var current_view = null; var current_view = null;
var exec_deferred = bw.ie6 ? 5 : 1; 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'); var ui_loading = rcmail.set_busy(true, 'loading');
// general datepicker settings // 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])); $('#event-priority').show().children('.event-text').html(Q(event.priority+' '+priolabels[event.priority]));
} }
if (event.sensitivity != 0) { if (event.sensitivity && event.sensitivity != 'public') {
var sensitivityclasses = { 0:'public', 1:'private', 2:'confidential' };
$('#event-sensitivity').show().children('.event-text').html(Q(sensitivitylabels[event.sensitivity])); $('#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 // create attachments list
@ -1699,14 +1698,14 @@ function rcube_calendar_ui(settings)
var fc_event_render = function(event, element, view) { var fc_event_render = function(event, element, view) {
if (view.name != 'list' && view.name != 'table') { 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); element.attr('title', prefix + event.title);
} }
if (view.name != 'month') { if (view.name != 'month') {
if (event.location) { if (event.location) {
element.find('div.fc-event-title').after('<div class="fc-event-location">@&nbsp;' + Q(event.location) + '</div>'); element.find('div.fc-event-title').after('<div class="fc-event-location">@&nbsp;' + 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>'); element.find('div.fc-event-time').append('<i class="fc-icon-sensitive"></i>');
if (event.recurrence) if (event.recurrence)
element.find('div.fc-event-time').append('<i class="fc-icon-recurring"></i>'); element.find('div.fc-event-time').append('<i class="fc-icon-recurring"></i>');

View file

@ -53,7 +53,7 @@
* 'categories' => 'Event category', * 'categories' => 'Event category',
* 'free_busy' => 'free|busy|outofoffice|tentative', // Show time as * 'free_busy' => 'free|busy|outofoffice|tentative', // Show time as
* 'priority' => 0-9, // Event priority (0=undefined, 1=highest, 9=lowest) * '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) * 'alarms' => '-15M:DISPLAY', // Reminder settings inspired by valarm definition (e.g. display alert 15 minutes before event)
* 'attachments' => array( // List of attachments * 'attachments' => array( // List of attachments
* 'name' => 'File name', * 'name' => 'File name',

View file

@ -42,6 +42,7 @@ class database_driver extends calendar_driver
private $calendars = array(); private $calendars = array();
private $calendar_ids = ''; private $calendar_ids = '';
private $free_busy_map = array('free' => 0, 'busy' => 1, 'out-of-office' => 2, 'outofoffice' => 2, 'tentative' => 3); 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 $server_timezone;
private $db_events = 'events'; private $db_events = 'events';
@ -407,6 +408,7 @@ class database_driver extends calendar_driver
$rrule = $event['recurrence'] ? libcalendaring::to_rrule($event['recurrence']) : ''; $rrule = $event['recurrence'] ? libcalendaring::to_rrule($event['recurrence']) : '';
$event['_recurrence'] = rtrim($rrule, ';'); $event['_recurrence'] = rtrim($rrule, ';');
$event['free_busy'] = intval($this->free_busy_map[strtolower($event['free_busy'])]); $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'])) { if (isset($event['allday'])) {
$event['all_day'] = $event['allday'] ? 1 : 0; $event['all_day'] = $event['allday'] ? 1 : 0;
@ -769,6 +771,7 @@ class database_driver extends calendar_driver
private function _read_postprocess($event) private function _read_postprocess($event)
{ {
$free_busy_map = array_flip($this->free_busy_map); $free_busy_map = array_flip($this->free_busy_map);
$sensitivity_map = array_flip($this->sensitivity_map);
$event['id'] = $event['event_id']; $event['id'] = $event['event_id'];
$event['start'] = new DateTime($event['start']); $event['start'] = new DateTime($event['start']);
@ -776,6 +779,7 @@ class database_driver extends calendar_driver
$event['allday'] = intval($event['all_day']); $event['allday'] = intval($event['all_day']);
$event['changed'] = new DateTime($event['changed']); $event['changed'] = new DateTime($event['changed']);
$event['free_busy'] = $free_busy_map[$event['free_busy']]; $event['free_busy'] = $free_busy_map[$event['free_busy']];
$event['sensitivity'] = $sensitivity_map[$event['sensitivity']];
$event['calendar'] = $event['calendar_id']; $event['calendar'] = $event['calendar_id'];
$event['recurrence_id'] = intval($event['recurrence_id']); $event['recurrence_id'] = intval($event['recurrence_id']);

View file

@ -38,7 +38,6 @@ class kolab_calendar
private $events = array(); private $events = array();
private $imap_folder = 'INBOX/Calendar'; private $imap_folder = 'INBOX/Calendar';
private $search_fields = array('title', 'description', 'location', 'attendees'); 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; $record['attachments'] = $attachments;
} }
$sensitivity_map = array_flip($this->sensitivity_map);
$record['sensitivity'] = intval($sensitivity_map[$record['sensitivity']]);
// Roundcube only supports one category assignment // Roundcube only supports one category assignment
if (is_array($record['categories'])) if (is_array($record['categories']))
$record['categories'] = $record['categories'][0]; $record['categories'] = $record['categories'][0];
@ -613,9 +609,6 @@ class kolab_calendar
unset($event['attachments']); unset($event['attachments']);
} }
// translate sensitivity property
$event['sensitivity'] = $this->sensitivity_map[$event['sensitivity']];
// set current user as ORGANIZER // set current user as ORGANIZER
$identity = $this->cal->rc->user->get_identity(); $identity = $this->cal->rc->user->get_identity();
if (empty($event['attendees']) && $identity['email']) if (empty($event['attendees']) && $identity['email'])

View file

@ -333,9 +333,9 @@ class calendar_ui
{ {
$attrib['name'] = 'sensitivity'; $attrib['name'] = 'sensitivity';
$select = new html_select($attrib); $select = new html_select($attrib);
$select->add($this->cal->gettext('public'), '0'); $select->add($this->cal->gettext('public'), 'public');
$select->add($this->cal->gettext('private'), '1'); $select->add($this->cal->gettext('private'), 'private');
$select->add($this->cal->gettext('confidential'), '2'); $select->add($this->cal->gettext('confidential'), 'confidential');
return $select->show(null); return $select->show(null);
} }

View file

@ -253,8 +253,7 @@ class libvcalendar
case 'CLASS': case 'CLASS':
case 'X-CALENDARSERVER-ACCESS': case 'X-CALENDARSERVER-ACCESS':
$sensitivity_map = array('PUBLIC' => 0, 'PRIVATE' => 1, 'CONFIDENTIAL' => 2); $event['sensitivity'] = strtolower($attr['value']);
$event['sensitivity'] = $sensitivity_map[$attr['value']];
break; break;
case 'X-MICROSOFT-CDO-BUSYSTATUS': case 'X-MICROSOFT-CDO-BUSYSTATUS':
@ -433,10 +432,10 @@ class libvcalendar
} }
} }
if (!empty($event['categories'])) { 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) { if (!empty($event['sensitivity']) && $event['sensitivity'] != 'public') {
$vevent .= "CLASS:" . ($event['sensitivity'] == 2 ? 'CONFIDENTIAL' : 'PRIVATE') . self::EOL; $vevent .= "CLASS:" . strtoupper($event['sensitivity']) . self::EOL;
} }
if ($event['alarms']) { if ($event['alarms']) {
list($trigger, $action) = explode(':', $event['alarms']); list($trigger, $action) = explode(':', $event['alarms']);