Update calendar_ui.php & calendar.php
This commit is contained in:
parent
23191c9c8b
commit
d99cddad2d
2 changed files with 607 additions and 204 deletions
723
calendar.php
723
calendar.php
File diff suppressed because it is too large
Load diff
|
@ -103,10 +103,31 @@ class calendar_ui
|
||||||
$this->cal->register_handler('plugin.events_export_form', [$this, 'events_export_form']);
|
$this->cal->register_handler('plugin.events_export_form', [$this, 'events_export_form']);
|
||||||
$this->cal->register_handler('plugin.object_changelog_table', ['libkolab', 'object_changelog_table']);
|
$this->cal->register_handler('plugin.object_changelog_table', ['libkolab', 'object_changelog_table']);
|
||||||
$this->cal->register_handler('plugin.searchform', [$this->rc->output, 'search_form']);
|
$this->cal->register_handler('plugin.searchform', [$this->rc->output, 'search_form']);
|
||||||
|
$this->cal->register_handler('plugin.calendar_create_menu', array($this, 'calendar_create_menu'));
|
||||||
|
|
||||||
kolab_attachments_handler::ui();
|
kolab_attachments_handler::ui();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Added for CalDav
|
||||||
|
* Handler for menu to choose the driver for calendar creation.
|
||||||
|
*/
|
||||||
|
function calendar_create_menu($attrib = array())
|
||||||
|
{
|
||||||
|
$content = "";
|
||||||
|
foreach($this->cal->get_drivers() as $name => $driver)
|
||||||
|
{
|
||||||
|
$content .= html::tag('li', null, $this->rc->output->button(
|
||||||
|
array('label' => 'calendar.calendar_'.$name,
|
||||||
|
'class' => 'active',
|
||||||
|
'prop' => json_encode(array('driver' => $name)),
|
||||||
|
'command' => 'calendar-create',
|
||||||
|
'title' => 'calendar.createcalendar')));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $content;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds CSS stylesheets to the page header
|
* Adds CSS stylesheets to the page header
|
||||||
*/
|
*/
|
||||||
|
@ -153,28 +174,30 @@ class calendar_ui
|
||||||
*/
|
*/
|
||||||
function calendar_css($attrib = [])
|
function calendar_css($attrib = [])
|
||||||
{
|
{
|
||||||
$categories = $this->cal->driver->list_categories();
|
|
||||||
$calendars = $this->cal->driver->list_calendars();
|
|
||||||
$js_categories = [];
|
|
||||||
|
|
||||||
$mode = $this->rc->config->get('calendar_event_coloring', $this->cal->defaults['calendar_event_coloring']);
|
$mode = $this->rc->config->get('calendar_event_coloring', $this->cal->defaults['calendar_event_coloring']);
|
||||||
$css = "\n";
|
$css = "\n";
|
||||||
|
|
||||||
|
foreach ($this->cal->get_drivers() as $driver) {
|
||||||
|
$categories = $driver->list_categories();
|
||||||
|
$calendars = $driver->list_calendars();
|
||||||
|
$js_categories = [];
|
||||||
|
|
||||||
foreach ((array) $categories as $class => $color) {
|
foreach((array)$categories as $class => $color) {
|
||||||
if (!empty($color)) {
|
if(!empty($color)) {
|
||||||
$js_categories[$class] = $color;
|
$js_categories[$class] = $color;
|
||||||
|
|
||||||
$color = ltrim($color, '#');
|
$color = ltrim($color, '#');
|
||||||
$class = 'cat-' . asciiwords(strtolower($class), true);
|
$class = 'cat-' . asciiwords(strtolower($class), true);
|
||||||
$css .= ".$class { color: #$color; }\n";
|
$css .= ".$class { color: #$color; }\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$this->rc->output->set_env('calendar_categories', $js_categories);
|
$this->rc->output->set_env('calendar_categories', $js_categories);
|
||||||
|
|
||||||
foreach ((array) $calendars as $id => $prop) {
|
foreach((array)$calendars as $id => $prop) {
|
||||||
if (!empty($prop['color'])) {
|
if(!empty($prop['color'])) {
|
||||||
$css .= $this->calendar_css_classes($id, $prop, $mode, $attrib);
|
$css .= $this->calendar_css_classes($id, $prop, $mode, $attrib);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,7 +234,8 @@ class calendar_ui
|
||||||
$html = '';
|
$html = '';
|
||||||
$jsenv = [];
|
$jsenv = [];
|
||||||
$tree = true;
|
$tree = true;
|
||||||
$calendars = $this->cal->driver->list_calendars(0, $tree);
|
// TODO: Check whether get_calendars() exists. Original $calendars = $this->cal->driver->list_calendars(0, $tree);
|
||||||
|
$calendars = $this->cal->get_calendars(false, false, $tree);
|
||||||
|
|
||||||
// walk folder tree
|
// walk folder tree
|
||||||
if (is_object($tree)) {
|
if (is_object($tree)) {
|
||||||
|
@ -296,12 +320,13 @@ class calendar_ui
|
||||||
// enrich calendar properties with settings from the driver
|
// enrich calendar properties with settings from the driver
|
||||||
if (empty($prop['virtual'])) {
|
if (empty($prop['virtual'])) {
|
||||||
unset($prop['user_id']);
|
unset($prop['user_id']);
|
||||||
|
$driver = $this->cal->get_driver_by_cal($id);
|
||||||
|
|
||||||
$prop['alarms'] = $this->cal->driver->alarms;
|
$prop['alarms'] = $driver->alarms;
|
||||||
$prop['attendees'] = $this->cal->driver->attendees;
|
$prop['attendees'] = $driver->attendees;
|
||||||
$prop['freebusy'] = $this->cal->driver->freebusy;
|
$prop['freebusy'] = $driver->freebusy;
|
||||||
$prop['attachments'] = $this->cal->driver->attachments;
|
$prop['attachments'] = $driver->attachments;
|
||||||
$prop['undelete'] = $this->cal->driver->undelete;
|
$prop['undelete'] = $driver->undelete;
|
||||||
$prop['feedurl'] = $this->cal->get_url([
|
$prop['feedurl'] = $this->cal->get_url([
|
||||||
'_cal' => $this->cal->ical_feed_hash($id) . '.ics',
|
'_cal' => $this->cal->ical_feed_hash($id) . '.ics',
|
||||||
'action' => 'feed'
|
'action' => 'feed'
|
||||||
|
@ -434,7 +459,7 @@ class calendar_ui
|
||||||
|
|
||||||
$select = new html_select($attrib);
|
$select = new html_select($attrib);
|
||||||
|
|
||||||
foreach ((array) $this->cal->driver->list_calendars() as $id => $prop) {
|
foreach ((array) $this->cal->get_calendars() as $id => $prop) {
|
||||||
if (
|
if (
|
||||||
!empty($prop['editable'])
|
!empty($prop['editable'])
|
||||||
|| (!empty($prop['rights']) && strpos($prop['rights'], 'i') !== false)
|
|| (!empty($prop['rights']) && strpos($prop['rights'], 'i') !== false)
|
||||||
|
@ -472,8 +497,10 @@ class calendar_ui
|
||||||
|
|
||||||
$select = new html_select($attrib);
|
$select = new html_select($attrib);
|
||||||
$select->add('---', '');
|
$select->add('---', '');
|
||||||
foreach (array_keys((array) $this->cal->driver->list_categories()) as $cat) {
|
foreach ($this->cal->get_drivers() as $driver) {
|
||||||
$select->add($cat, $cat);
|
foreach(array_keys((array)$driver->list_categories()) as $cat) {
|
||||||
|
$select->add($cat, $cat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $select->show(null);
|
return $select->show(null);
|
||||||
|
@ -554,7 +581,14 @@ class calendar_ui
|
||||||
*/
|
*/
|
||||||
function alarm_select($attrib = [])
|
function alarm_select($attrib = [])
|
||||||
{
|
{
|
||||||
return $this->cal->lib->alarm_select($attrib, $this->cal->driver->alarm_types, $this->cal->driver->alarm_absolute);
|
// Try GPC
|
||||||
|
$driver = $this->cal->get_driver_by_gpc(true /* quiet */);
|
||||||
|
|
||||||
|
// We assume that each calendar has equal alarm types, so fallback to default calendar is ok.
|
||||||
|
if(!$driver)
|
||||||
|
$driver = $this->cal->get_default_driver();
|
||||||
|
|
||||||
|
return $this->cal->lib->alarm_select($attrib, $driver->alarm_types, $driver->alarm_absolute);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue