From 5ef856ad6bc04f42b990952d99c8eb005c40734a Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Thu, 3 Oct 2013 20:51:58 +0200 Subject: [PATCH] Fix parent-child links when re-arrangning tasks --- plugins/tasklist/tasklist.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js index 01c54b82..59bb54c8 100644 --- a/plugins/tasklist/tasklist.js +++ b/plugins/tasklist/tasklist.js @@ -560,7 +560,7 @@ function rcube_tasklist_ui(settings) oldid = rec.tempid || id, oldrec = listdata[oldid], oldindex = $.inArray(oldid, listindex), - oldparent = oldrec && (oldrec._old_parent_id || oldrec.parent_id), + oldparent = oldrec ? (oldrec._old_parent_id || oldrec.parent_id) : null, list = me.tasklists[rec.list]; if (oldindex >= 0) @@ -575,14 +575,23 @@ function rcube_tasklist_ui(settings) var oldchilds = listdata[oldparent].children, i = $.inArray(oldid, oldchilds); if (i >= 0) { - oldchilds = oldchilds.slice(0,i).concat(oldchilds.slice(i+1)); + listdata[oldparent].children = 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) + 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); + // restore pointers to my children + if (!listdata[id].children) { + listdata[id].children = []; + for (var pid in listdata) { + if (listdata[pid].parent_id == id) + listdata[id].children.push(pid); + } + } + if (list.active) render_task(rec, oldid); else