Respect .default annotation for calendar selection (if no user setting exists)
This commit is contained in:
parent
cf6a99b1c8
commit
517c86c8df
3 changed files with 19 additions and 18 deletions
|
@ -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)
|
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();
|
$calendars = $this->driver->list_calendars();
|
||||||
$calendar = $calendars[$cal_id] ? $calendars[$cal_id] : null;
|
$calendar = $calendars[$default_id] ?: null;
|
||||||
if (!$calendar || ($writeable && $calendar['readonly'])) {
|
if (!$calendar || ($writeable && $calendar['readonly'])) {
|
||||||
foreach ($calendars as $cal) {
|
foreach ($calendars as $cal) {
|
||||||
if (!$writeable || !$cal['readonly']) {
|
if ($cal['default']) {
|
||||||
$calendar = $cal;
|
$calendar = $cal;
|
||||||
break;
|
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) {
|
foreach ((array)$this->driver->list_calendars() as $id => $prop) {
|
||||||
if (!$prop['readonly'])
|
if (!$prop['readonly'])
|
||||||
$select_cal->add($prop['name'], strval($id));
|
$select_cal->add($prop['name'], strval($id));
|
||||||
|
if ($prop['default'])
|
||||||
|
$default_calendar = $id;
|
||||||
}
|
}
|
||||||
$p['blocks']['view']['options']['defaultcalendar'] = array(
|
$p['blocks']['view']['options']['defaultcalendar'] = array(
|
||||||
'title' => html::label($field_id . 'value', Q($this->gettext('defaultcalendar'))),
|
'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(
|
$this->rc->output->command('plugin.update_event_rsvp_status', array(
|
||||||
'uid' => $event['uid'],
|
'uid' => $event['uid'],
|
||||||
'id' => asciiwords($event['uid'], true),
|
'id' => asciiwords($event['uid'], true),
|
||||||
'status' => $status,
|
'status' => $status,
|
||||||
'action' => $action,
|
'action' => $action,
|
||||||
'html' => $html,
|
'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;
|
return;
|
||||||
|
|
||||||
|
@ -1768,17 +1774,9 @@ class calendar extends rcube_plugin
|
||||||
// successfully parsed events?
|
// successfully parsed events?
|
||||||
if (!empty($events) && ($event = $events[$index])) {
|
if (!empty($events) && ($event = $events[$index])) {
|
||||||
// find writeable calendar to store event
|
// 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();
|
$calendars = $this->driver->list_calendars();
|
||||||
$calendar = $calendars[$cal_id] ? $calendars[$cal_id] : null;
|
$calendar = $calendars[$cal_id] ?: $this->get_default_calendar(true);
|
||||||
if (!$calendar || $calendar['readonly']) {
|
|
||||||
foreach ($calendars as $cal) {
|
|
||||||
if (!$cal['readonly']) {
|
|
||||||
$calendar = $cal;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// update my attendee status according to submitted method
|
// update my attendee status according to submitted method
|
||||||
if (!empty($status)) {
|
if (!empty($status)) {
|
||||||
|
|
|
@ -103,6 +103,7 @@ class kolab_driver extends calendar_driver
|
||||||
}
|
}
|
||||||
|
|
||||||
$calendars = $names = array();
|
$calendars = $names = array();
|
||||||
|
$default_folder = class_exists('kolab_folders') ? kolab_folders::default_folder('event') : '';
|
||||||
|
|
||||||
foreach ($this->calendars as $id => $cal) {
|
foreach ($this->calendars as $id => $cal) {
|
||||||
if ($cal->ready) {
|
if ($cal->ready) {
|
||||||
|
@ -116,6 +117,7 @@ class kolab_driver extends calendar_driver
|
||||||
'readonly' => $cal->readonly,
|
'readonly' => $cal->readonly,
|
||||||
'showalarms' => $cal->alarms,
|
'showalarms' => $cal->alarms,
|
||||||
'class_name' => $cal->get_namespace(),
|
'class_name' => $cal->get_namespace(),
|
||||||
|
'default' => $cal->get_realname() == $default_folder,
|
||||||
'active' => $cal->storage->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
|
'active' => $cal->storage->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,6 +115,7 @@ class tasklist_kolab_driver extends tasklist_driver
|
||||||
'editable' => !$readonly,
|
'editable' => !$readonly,
|
||||||
'active' => $folder->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
|
'active' => $folder->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
|
||||||
'parentfolder' => $path_imap,
|
'parentfolder' => $path_imap,
|
||||||
|
'default' => $utf7name == $default_folder,
|
||||||
'class_name' => trim($folder->get_namespace() . ($utf7name == $default_folder ? ' default' : '')),
|
'class_name' => trim($folder->get_namespace() . ($utf7name == $default_folder ? ' default' : '')),
|
||||||
);
|
);
|
||||||
$this->lists[$tasklist['id']] = $tasklist;
|
$this->lists[$tasklist['id']] = $tasklist;
|
||||||
|
|
Loading…
Add table
Reference in a new issue