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 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">@&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>');
if (event.recurrence)
element.find('div.fc-event-time').append('<i class="fc-icon-recurring"></i>');

View file

@ -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',

View file

@ -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']);

View file

@ -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'])

View file

@ -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);
}

View file

@ -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']);