Branch 'roundcubemail-plugins-kolab-3.1' - plugins/calendar plugins/tasklist
Jeroen van Meeuwen
vanmeeuwen at kolabsys.com
Mon Nov 25 10:02:00 CET 2013
plugins/calendar/calendar.php | 47 +++++++++++++++++++++++++++---------------
plugins/tasklist/tasklist.php | 25 ++++++++++++++++------
2 files changed, 50 insertions(+), 22 deletions(-)
New commits:
commit ca501beaa67c501de0a9071b801efbfa0ad3caa2
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Wed Nov 6 11:59:47 2013 +0100
Initialize calendar and tasklist plugins in 'startup' hook and allow other plugins (e.g. kolab:auth) to disabled them (#2476)
diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index f71109e..ccbc75a 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -88,15 +88,6 @@ class calendar extends rcube_plugin
require($this->home . '/lib/calendar_ui.php');
$this->ui = new calendar_ui($this);
- // load Calendar user interface which includes jquery-ui
- if (!$this->rc->output->ajax_call && !$this->rc->output->env['framed']) {
- $this->ui->init();
-
- // settings are required in (almost) every GUI step
- if ($this->rc->action != 'attend')
- $this->rc->output->set_env('calendar_settings', $this->load_settings());
- }
-
// catch iTIP confirmation requests that don're require a valid session
if ($this->rc->action == 'attend' && !empty($_REQUEST['_t'])) {
$this->add_hook('startup', array($this, 'itip_attend_response'));
@@ -104,8 +95,32 @@ class calendar extends rcube_plugin
else if ($this->rc->action == 'feed' && !empty($_REQUEST['_cal'])) {
$this->add_hook('startup', array($this, 'ical_feed_export'));
}
- else if ($this->rc->task == 'calendar' && $this->rc->action != 'save-pref') {
- if ($this->rc->action != 'upload') {
+ else {
+ // default startup routine
+ $this->add_hook('startup', array($this, 'startup'));
+ }
+ }
+
+ /**
+ * Startup hook
+ */
+ public function startup($args)
+ {
+ // the calendar module can be enabled/disabled by the kolab_auth plugin
+ if ($this->rc->config->get('calendar_disabled', false) || !$this->rc->config->get('calendar_enabled', true))
+ return;
+
+ // load Calendar user interface
+ if (!$this->rc->output->ajax_call && !$this->rc->output->env['framed']) {
+ $this->ui->init();
+
+ // settings are required in (almost) every GUI step
+ if ($args['action'] != 'attend')
+ $this->rc->output->set_env('calendar_settings', $this->load_settings());
+ }
+
+ if ($args['task'] == 'calendar' && $args['action'] != 'save-pref') {
+ if ($args['action'] != 'upload') {
$this->load_driver();
}
@@ -138,19 +153,19 @@ class calendar extends rcube_plugin
}
}
}
- else if ($this->rc->task == 'settings') {
+ else if ($args['task'] == 'settings') {
// add hooks for Calendar settings
$this->add_hook('preferences_sections_list', array($this, 'preferences_sections_list'));
$this->add_hook('preferences_list', array($this, 'preferences_list'));
$this->add_hook('preferences_save', array($this, 'preferences_save'));
}
- else if ($this->rc->task == 'mail') {
+ else if ($args['task'] == 'mail') {
// hooks to catch event invitations on incoming mails
- if ($this->rc->action == 'show' || $this->rc->action == 'preview') {
+ if ($args['action'] == 'show' || $args['action'] == 'preview') {
$this->add_hook('message_load', array($this, 'mail_message_load'));
$this->add_hook('template_object_messagebody', array($this, 'mail_messagebody_html'));
}
-
+
// add 'Create event' item to message menu
if ($this->api->output->type == 'html') {
$this->api->add_content(html::tag('li', null,
@@ -167,7 +182,7 @@ class calendar extends rcube_plugin
$this->api->output->add_label('calendar.createfrommail');
}
}
-
+
// add hooks to display alarms
$this->add_hook('pending_alarms', array($this, 'pending_alarms'));
$this->add_hook('dismiss_alarms', array($this, 'dismiss_alarms'));
diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php
index 94cf4bb..840ee2e 100644
--- a/plugins/tasklist/tasklist.php
+++ b/plugins/tasklist/tasklist.php
@@ -71,13 +71,26 @@ class tasklist extends rcube_plugin
// load plugin configuration
$this->load_config();
+ $this->timezone = $this->lib->timezone;
+
+ // proceed initialization in startup hook
+ $this->add_hook('startup', array($this, 'startup'));
+ }
+
+ /**
+ * Startup hook
+ */
+ public function startup($args)
+ {
+ // the tasks module can be enabled/disabled by the kolab_auth plugin
+ if ($this->rc->config->get('tasklist_disabled', false) || !$this->rc->config->get('tasklist_enabled', true))
+ return;
+
// load localizations
- $this->add_texts('localization/', $this->rc->task == 'tasks' && (!$this->rc->action || $this->rc->action == 'print'));
+ $this->add_texts('localization/', $args['task'] == 'tasks' && (!$args['action'] || $args['action'] == 'print'));
$this->rc->load_language($_SESSION['language'], array('tasks.tasks' => $this->gettext('navtitle'))); // add label for task title
- $this->timezone = $this->lib->timezone;
-
- if ($this->rc->task == 'tasks' && $this->rc->action != 'save-pref') {
+ if ($args['task'] == 'tasks' && $args['action'] != 'save-pref') {
$this->load_driver();
// register calendar actions
@@ -94,9 +107,9 @@ class tasklist extends rcube_plugin
$this->collapsed_tasks = array_filter(explode(',', $this->rc->config->get('tasklist_collapsed_tasks', '')));
}
- else if ($this->rc->task == 'mail') {
+ else if ($args['task'] == 'mail') {
// TODO: register hooks to catch ical/vtodo email attachments
- if ($this->rc->action == 'show' || $this->rc->action == 'preview') {
+ if ($args['action'] == 'show' || $args['action'] == 'preview') {
// $this->add_hook('message_load', array($this, 'mail_message_load'));
// $this->add_hook('template_object_messagebody', array($this, 'mail_messagebody_html'));
}
More information about the commits
mailing list