plugins/tasklist
Thomas Brüderli
bruederli at kolabsys.com
Fri Oct 4 10:07:34 CEST 2013
plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php | 1
plugins/tasklist/localization/de_CH.inc | 1
plugins/tasklist/localization/de_DE.inc | 1
plugins/tasklist/localization/en_US.inc | 1
plugins/tasklist/tasklist.js | 40 ++++++++++-----
5 files changed, 33 insertions(+), 11 deletions(-)
New commits:
commit 803510b4f1aa37579a076dec317ff0c69ea006bf
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Fri Oct 4 10:07:21 2013 +0200
Fix deletion of task lists with sub-folders (similar as in bug #2283)
diff --git a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
index 0d98c2f..90772ac 100644
--- a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
+++ b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
@@ -118,6 +118,7 @@ class tasklist_kolab_driver extends tasklist_driver
'active' => $folder->is_active(),
'parentfolder' => $path_imap,
'default' => $folder->default,
+ 'children' => true, // TODO: determine if that folder indeed has child folders
'class_name' => trim($folder->get_namespace() . ($folder->default ? ' default' : '')),
);
$this->lists[$tasklist['id']] = $tasklist;
diff --git a/plugins/tasklist/localization/de_CH.inc b/plugins/tasklist/localization/de_CH.inc
index 4a6b326..ab9a999 100644
--- a/plugins/tasklist/localization/de_CH.inc
+++ b/plugins/tasklist/localization/de_CH.inc
@@ -67,3 +67,4 @@ $labels['invalidstartduedates'] = 'Beginn der Aufgabe darf nicht grösser als da
$labels['deletetasktconfirm'] = 'Möchten Sie diese Aufgabe wirklich löschen?';
$labels['deleteparenttasktconfirm'] = 'Möchten Sie diese Aufgabe inklusive aller Teilaufgaben wirklich löschen?';
$labels['deletelistconfirm'] = 'Möchten Sie diese Liste mit allen Aufgaben wirklich löschen?';
+$labels['deletelistconfirmrecursive'] = 'Möchten Sie diese Liste mit allen Aufgaben und Unter-Listen wirklich löschen?';
diff --git a/plugins/tasklist/localization/de_DE.inc b/plugins/tasklist/localization/de_DE.inc
index 1cbd2c0..b6d1cc3 100644
--- a/plugins/tasklist/localization/de_DE.inc
+++ b/plugins/tasklist/localization/de_DE.inc
@@ -67,3 +67,4 @@ $labels['invalidstartduedates'] = 'Beginn der Aufgabe darf nicht gröÃer als da
$labels['deletetasktconfirm'] = 'Möchten Sie diese Aufgabe wirklich löschen?';
$labels['deleteparenttasktconfirm'] = 'Möchten Sie diese Aufgabe inklusive aller Teilaufgaben wirklich löschen?';
$labels['deletelistconfirm'] = 'Möchten Sie diese Liste mit allen Aufgaben wirklich löschen?';
+$labels['deletelistconfirmrecursive'] = 'Möchten Sie diese Liste mit allen Aufgaben und Unter-Listen wirklich löschen?';
\ No newline at end of file
diff --git a/plugins/tasklist/localization/en_US.inc b/plugins/tasklist/localization/en_US.inc
index 8a31be3..57d6c3c 100644
--- a/plugins/tasklist/localization/en_US.inc
+++ b/plugins/tasklist/localization/en_US.inc
@@ -66,3 +66,4 @@ $labels['invalidstartduedates'] = 'Start date must not be greater than due date.
$labels['deletetasktconfirm'] = 'Do you really want to delete this task?';
$labels['deleteparenttasktconfirm'] = 'Do you really want to delete this task and all its subtasks?';
$labels['deletelistconfirm'] = 'Do you really want to delete this list with all its tasks?';
+$labels['deletelistconfirmrecursive'] = 'Do you really want to delete this list with all its sub-lists and tasks?';
diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js
index 07d6ddc..4a37028 100644
--- a/plugins/tasklist/tasklist.js
+++ b/plugins/tasklist/tasklist.js
@@ -1467,7 +1467,7 @@ function rcube_tasklist_ui(settings)
function list_remove(id)
{
var list = me.tasklists[id];
- if (list && list.editable && confirm(rcmail.gettext('deletelistconfirm', 'tasklist'))) {
+ if (list && list.editable && confirm(rcmail.gettext(list.children ? 'deletelistconfirmrecursive' : 'deletelistconfirm', 'tasklist'))) {
saving_lock = rcmail.set_busy(true, 'tasklist.savingdata');
rcmail.http_post('tasklist', { action:'remove', l:{ id:list.id } });
return true;
@@ -1480,17 +1480,35 @@ function rcube_tasklist_ui(settings)
*/
function destroy_list(prop)
{
- var list = me.tasklists[prop.id],
- li = rcmail.get_folder_li(prop.id, 'rcmlitasklist');
-
- if (li) {
- $(li).remove();
+ var li, delete_ids = [],
+ list = me.tasklists[prop.id];
+
+ // find sub-lists
+ if (list && list.children) {
+ for (var child_id in me.tasklists) {
+ if (String(child_id).indexOf(prop.id) == 0)
+ delete_ids.push(child_id);
+ }
}
- if (list) {
- list.active = false;
- // delete me.tasklists[prop.id];
- unlock_saving();
- remove_tasks(list.id);
+ else {
+ delete_ids.push(prop.id);
+ }
+
+ // delete all calendars in the list
+ for (var i=0; i < delete_ids.length; i++) {
+ id = delete_ids[i];
+ list = me.tasklists[id];
+ li = rcmail.get_folder_li(id, 'rcmlitasklist');
+
+ if (li) {
+ $(li).remove();
+ }
+ if (list) {
+ list.active = false;
+ // delete me.tasklists[prop.id];
+ unlock_saving();
+ remove_tasks(list.id);
+ }
}
}
More information about the commits
mailing list