2 commits - plugins/tasklist

Thomas Brüderli bruederli at kolabsys.com
Fri Feb 21 16:35:24 CET 2014


 plugins/tasklist/tasklist.php |   17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

New commits:
commit f6a381c72fbff6afc59bca00c94f99ff1f9ffb5d
Merge: 8449be6 0a79c18
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Fri Feb 21 16:35:03 2014 +0100

    Merge branch 'master' of ssh://git.kolab.org/git/roundcubemail-plugins-kolab



commit 8449be665719bf27b7745da639779d8015588b9b
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Thu Feb 20 09:50:03 2014 +0100

    Move child tasks to new list if changed during edit

diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php
index 53597d5..1eaacbd 100644
--- a/plugins/tasklist/tasklist.php
+++ b/plugins/tasklist/tasklist.php
@@ -196,8 +196,21 @@ class tasklist extends rcube_plugin
         case 'edit':
             $rec = $this->prepare_task($rec);
             if ($success = $this->driver->edit_task($rec)) {
-                $refresh = $this->driver->get_task($rec);
+                $refresh[] = $this->driver->get_task($rec);
                 $this->cleanup_task($rec);
+
+                // move all childs if list assignment was changed
+                if (!empty($rec['_fromlist']) && !empty($rec['list']) && $rec['_fromlist'] != $rec['list']) {
+                    foreach ($this->driver->get_childs(array('id' => $rec['id'], 'list' => $rec['_fromlist']), true) as $cid) {
+                        $child = array('id' => $cid, 'list' => $rec['list'], '_fromlist' => $rec['_fromlist']);
+                        if ($this->driver->move_task($child)) {
+                            $r = $this->driver->get_task($child);
+                            if ((bool)($filter & self::FILTER_MASK_COMPLETE) == ($r['complete'] == 1.0)) {
+                                $refresh[] = $r;
+                            }
+                        }
+                    }
+                }
             }
             break;
 
@@ -210,7 +223,7 @@ class tasklist extends rcube_plugin
                       $success = true;
 
                       // move all childs, too
-                      foreach ($this->driver->get_childs(array('id' => $rec['id'], 'list' => $rec['_fromlist'])) as $cid) {
+                      foreach ($this->driver->get_childs(array('id' => $rec['id'], 'list' => $rec['_fromlist']), true) as $cid) {
                           $child = $rec;
                           $child['id'] = $cid;
                           if ($this->driver->move_task($child)) {




More information about the commits mailing list