plugins/tasklist

Thomas Brüderli bruederli at kolabsys.com
Thu Oct 3 19:19:15 CEST 2013


 plugins/tasklist/tasklist.js |   18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

New commits:
commit d259b5d88f042e99419e53b272ac1acf29dd0b6f
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Thu Oct 3 19:17:52 2013 +0200

    Fix child-lists when moving tasks to new parents; fix cache usage in filter matching (#2290)

diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js
index 9ad67d0..01c54b8 100644
--- a/plugins/tasklist/tasklist.js
+++ b/plugins/tasklist/tasklist.js
@@ -558,7 +558,9 @@ function rcube_tasklist_ui(settings)
 
         var id = rec.id,
             oldid = rec.tempid || id,
+            oldrec = listdata[oldid],
             oldindex = $.inArray(oldid, listindex),
+            oldparent = oldrec && (oldrec._old_parent_id || oldrec.parent_id),
             list = me.tasklists[rec.list];
 
         if (oldindex >= 0)
@@ -568,6 +570,15 @@ function rcube_tasklist_ui(settings)
 
         listdata[id] = rec;
 
+        // remove child-pointer from old parent
+        if (oldparent && listdata[oldparent] && oldparent != rec.parent_id) {
+            var oldchilds = listdata[oldparent].children,
+                i = $.inArray(oldid, oldchilds);
+            if (i >= 0) {
+                oldchilds = oldchilds.slice(0,i).concat(oldchilds.slice(i+1));
+            }
+        }
+
         // register a forward-pointer to child tasks
         if (rec.parent_id && listdata[rec.parent_id] && listdata[rec.parent_id].children && $.inArray(id, listdata[rec.parent_id].children) >= 0)
             listdata[rec.parent_id].children.push(id);
@@ -853,6 +864,7 @@ function rcube_tasklist_ui(settings)
 
             if (rec && parent.length) {
                 // submit changes to server
+                rec._old_parent_id = rec.parent_id;
                 rec.parent_id = drop_id || 0;
                 save_task(rec, 'edit');
 
@@ -1337,7 +1349,7 @@ function rcube_tasklist_ui(settings)
     function match_filter(rec, cache, recursive)
     {
         // return cached result
-        if (typeof cache[rec.id] != 'undefined') {
+        if (typeof cache[rec.id] != 'undefined' && recursive != 2) {
             return cache[rec.id];
         }
 
@@ -1367,7 +1379,9 @@ function rcube_tasklist_ui(settings)
             }
         }
 
-        cache[rec.id] = match;
+        if (recursive != 1) {
+            cache[rec.id] = match;
+        }
         return match;
     }
 




More information about the commits mailing list