plugins/tasklist
Thomas Brüderli
bruederli at kolabsys.com
Mon Sep 24 17:54:17 CEST 2012
plugins/tasklist/tasklist.js | 6 ++++--
plugins/tasklist/tasklist.php | 20 ++++++++++++++++++++
2 files changed, 24 insertions(+), 2 deletions(-)
New commits:
commit 6176b6d428e303bfd5c00ac32a9131ba0dd96211
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Mon Sep 24 17:54:03 2012 +0200
Save collapsed state of tasks; don't re-append already placed task nodes to parent
diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js
index 46da75f..2e885e6 100644
--- a/plugins/tasklist/tasklist.js
+++ b/plugins/tasklist/tasklist.js
@@ -227,6 +227,7 @@ function rcube_tasklist_ui(settings)
rec.collapsed = !rec.collapsed;
li.children('.childtasks:first').toggle();
$(e.target).toggleClass('collapsed').html(rec.collapsed ? '▶' : '▼');
+ rcmail.http_post('tasks/task', { action:'collapse', t:{ id:rec.id, list:rec.list }, collapsed:rec.collapsed?1:0 });
break;
case 'complete':
@@ -620,10 +621,11 @@ function rcube_tasklist_ui(settings)
if ((rec.mask & FILTER_MASK_OVERDUE))
div.addClass('overdue');
- var li, parent = rec.parent_id ? $('li[rel="'+rec.parent_id+'"] > ul.childtasks', rcmail.gui_objects.resultlist) : null;
+ var li, inplace = false, parent = rec.parent_id ? $('li[rel="'+rec.parent_id+'"] > ul.childtasks', rcmail.gui_objects.resultlist) : null;
if (replace && (li = $('li[rel="'+replace+'"]', rcmail.gui_objects.resultlist)) && li.length) {
li.children('div.taskhead').first().replaceWith(div);
li.attr('rel', rec.id);
+ inplace = true;
}
else {
li = $('<li>')
@@ -637,7 +639,7 @@ function rcube_tasklist_ui(settings)
li.appendTo(rcmail.gui_objects.resultlist);
}
- if (parent && parent.length)
+ if (!inplace && parent && parent.length)
li.appendTo(parent);
if (replace) {
diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php
index 8c584fc..1c12c6b 100644
--- a/plugins/tasklist/tasklist.php
+++ b/plugins/tasklist/tasklist.php
@@ -53,6 +53,8 @@ class tasklist extends rcube_plugin
public $timezone;
public $ui;
+ private $collapsed_tasks = array();
+
/**
* Plugin initialization.
@@ -87,6 +89,8 @@ class tasklist extends rcube_plugin
$this->register_action('mail2task', array($this, 'mail_message2task'));
$this->register_action('get-attachment', array($this, 'attachment_get'));
$this->register_action('upload', array($this, 'attachment_upload'));
+
+ $this->collapsed_tasks = array_filter(explode(',', $this->rc->config->get('tasklist_collapsed_tasks', '')));
}
else if ($this->rc->task == 'mail') {
// TODO: register hooks to catch ical/vtodo email attachments
@@ -202,6 +206,19 @@ class tasklist extends rcube_plugin
if ($success = $this->driver->undelete_task($rec))
$refresh = $this->driver->get_task($rec);
break;
+
+ case 'collapse':
+ if ($collapsed = intval(get_input_value('collapsed', RCUBE_INPUT_GPC))) {
+ $this->collapsed_tasks[] = $rec['id'];
+ }
+ else {
+ $i = array_search($rec['id'], $this->collapsed_tasks);
+ if ($i !== false)
+ unset($this->collapsed_tasks[$i]);
+ }
+
+ $this->rc->user->save_prefs(array('tasklist_collapsed_tasks' => join(',', array_unique($this->collapsed_tasks))));
+ return; // avoid further actions
}
if ($success) {
@@ -544,6 +561,9 @@ class tasklist extends rcube_plugin
$rec['attachments'][$k]['classname'] = rcmail_filetype2classname($attachment['mimetype'], $attachment['name']);
}
+ if (in_array($rec['id'], $this->collapsed_tasks))
+ $rec['collapsed'] = true;
+
$this->task_titles[$rec['id']] = $rec['title'];
}
More information about the commits
mailing list