From 2239883b56ec38b8eb8abf10103beebcf02f963c Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Tue, 10 May 2016 15:27:46 +0800 Subject: [PATCH] MDL-53293 tool_lp: Destroy dragdrop instance before re-creating --- admin/tool/lp/amd/build/dragdrop-reorder.min.js | 2 +- admin/tool/lp/amd/src/dragdrop-reorder.js | 13 +++++++++++-- .../moodle-tool_lp-dragdrop-reorder-debug.js | 2 +- .../moodle-tool_lp-dragdrop-reorder-min.js | 2 +- .../moodle-tool_lp-dragdrop-reorder.js | 2 +- .../yui/src/dragdrop-reorder/js/dragdropreorder.js | 2 +- 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/admin/tool/lp/amd/build/dragdrop-reorder.min.js b/admin/tool/lp/amd/build/dragdrop-reorder.min.js index 77c33ba5e8e..48751b5a9f3 100644 --- a/admin/tool/lp/amd/build/dragdrop-reorder.min.js +++ b/admin/tool/lp/amd/build/dragdrop-reorder.min.js @@ -1 +1 @@ -define(["core/str","core/yui"],function(a,b){var c=function(a){var b=a.drag.get("node"),c=a.drop.get("node");this.callback(b.getDOMNode(),c.getDOMNode())};return{dragdrop:function(d,e,f,g,h,i,j,k){a.get_strings([{key:"emptydragdropregion",component:"moodle"},{key:"movecontent",component:"moodle"},{key:"tocontent",component:"moodle"}]).done(function(){b.use("moodle-tool_lp-dragdrop-reorder",function(){var a={callback:k};M.tool_lp.dragdrop_reorder({group:d,dragHandleText:e,sameNodeText:f,parentNodeText:g,sameNodeClass:h,parentNodeClass:i,dragHandleInsertClass:j,callback:b.bind(c,a)})})})}}}); \ No newline at end of file +define(["core/str","core/yui"],function(a,b){var c=null,d=function(a){var b=a.drag.get("node"),c=a.drop.get("node");this.callback(b.getDOMNode(),c.getDOMNode())};return{dragdrop:function(e,f,g,h,i,j,k,l){a.get_strings([{key:"emptydragdropregion",component:"moodle"},{key:"movecontent",component:"moodle"},{key:"tocontent",component:"moodle"}]).done(function(){b.use("moodle-tool_lp-dragdrop-reorder",function(){var a={callback:l};c&&c.destroy(),c=M.tool_lp.dragdrop_reorder({group:e,dragHandleText:f,sameNodeText:g,parentNodeText:h,sameNodeClass:i,parentNodeClass:j,dragHandleInsertClass:k,callback:b.bind(d,a)})})})}}}); \ No newline at end of file diff --git a/admin/tool/lp/amd/src/dragdrop-reorder.js b/admin/tool/lp/amd/src/dragdrop-reorder.js index 433604dd341..d14c9ddf9aa 100644 --- a/admin/tool/lp/amd/src/dragdrop-reorder.js +++ b/admin/tool/lp/amd/src/dragdrop-reorder.js @@ -22,9 +22,15 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ define(['core/str', 'core/yui'], function(str, Y) { - // Private variables and functions. + /** + * Store the current instance of the core drag drop. + * + * @property dragDropInstance M.tool_lp.dragdrop_reorder + */ + var dragDropInstance = null; + /** * Translate the drophit event from YUI * into simple drag and drop nodes. @@ -70,7 +76,10 @@ define(['core/str', 'core/yui'], function(str, Y) { var context = { callback: callback }; - M.tool_lp.dragdrop_reorder({ + if (dragDropInstance) { + dragDropInstance.destroy(); + } + dragDropInstance = M.tool_lp.dragdrop_reorder({ group: group, dragHandleText: dragHandleText, sameNodeText: sameNodeText, diff --git a/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder-debug.js b/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder-debug.js index caebb22ebe9..159ec860f76 100644 --- a/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder-debug.js +++ b/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder-debug.js @@ -65,7 +65,7 @@ Y.extend(DRAGREORDER, M.core.dragdrop, { M.tool_lp = M.tool_lp || {}; M.tool_lp.dragdrop_reorder = function(params) { - new DRAGREORDER(params); + return new DRAGREORDER(params); }; diff --git a/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder-min.js b/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder-min.js index f91699e6e38..47c197ccb7c 100644 --- a/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder-min.js +++ b/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder-min.js @@ -1 +1 @@ -YUI.add("moodle-tool_lp-dragdrop-reorder",function(e,t){var n=function(){n.superclass.constructor.apply(this,arguments)},r={EDITINGMOVE:"editing_move",ICONCLASS:"iconsmall"};e.extend(n,M.core.dragdrop,{initializer:function(t){if(e.one("."+t.parentNodeClass).all("."+t.dragHandleInsertClass).size()<=1)return;this.groups=[t.group],this.samenodeclass=t.sameNodeClass,this.parentnodeclass=t.parentNodeClass,this.draghandleinsertclass=t.dragHandleInsertClass,this.draghandle=this.get_drag_handle(t.dragHandleText,r.EDITINGMOVE,r.ICONCLASS,!0),this.samenodelabel=t.sameNodeLabel,this.parentnodelabel=t.parentNodeLabel,this.callback=t.callback;var n=new e.DD.Delegate({container:"."+t.parentNodeClass,nodes:"."+t.sameNodeClass,target:!0,handles:["."+r.EDITINGMOVE],dragConfig:{groups:this.groups}});n.dd.plug(e.Plugin.DDProxy),e.one("."+t.parentNodeClass).all("."+t.dragHandleInsertClass).each(function(e){e.insert(this.draghandle.cloneNode(!0))},this)},drop_hit:function(e){this.callback(e)}},{NAME:"tool_lp-dragdrop-reorder",ATTRS:{}}),M.tool_lp=M.tool_lp||{},M.tool_lp.dragdrop_reorder=function(e){new n(e)}},"@VERSION@",{requires:["moodle-core-dragdrop"]}); +YUI.add("moodle-tool_lp-dragdrop-reorder",function(e,t){var n=function(){n.superclass.constructor.apply(this,arguments)},r={EDITINGMOVE:"editing_move",ICONCLASS:"iconsmall"};e.extend(n,M.core.dragdrop,{initializer:function(t){if(e.one("."+t.parentNodeClass).all("."+t.dragHandleInsertClass).size()<=1)return;this.groups=[t.group],this.samenodeclass=t.sameNodeClass,this.parentnodeclass=t.parentNodeClass,this.draghandleinsertclass=t.dragHandleInsertClass,this.draghandle=this.get_drag_handle(t.dragHandleText,r.EDITINGMOVE,r.ICONCLASS,!0),this.samenodelabel=t.sameNodeLabel,this.parentnodelabel=t.parentNodeLabel,this.callback=t.callback;var n=new e.DD.Delegate({container:"."+t.parentNodeClass,nodes:"."+t.sameNodeClass,target:!0,handles:["."+r.EDITINGMOVE],dragConfig:{groups:this.groups}});n.dd.plug(e.Plugin.DDProxy),e.one("."+t.parentNodeClass).all("."+t.dragHandleInsertClass).each(function(e){e.insert(this.draghandle.cloneNode(!0))},this)},drop_hit:function(e){this.callback(e)}},{NAME:"tool_lp-dragdrop-reorder",ATTRS:{}}),M.tool_lp=M.tool_lp||{},M.tool_lp.dragdrop_reorder=function(e){return new n(e)}},"@VERSION@",{requires:["moodle-core-dragdrop"]}); diff --git a/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder.js b/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder.js index caebb22ebe9..159ec860f76 100644 --- a/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder.js +++ b/admin/tool/lp/yui/build/moodle-tool_lp-dragdrop-reorder/moodle-tool_lp-dragdrop-reorder.js @@ -65,7 +65,7 @@ Y.extend(DRAGREORDER, M.core.dragdrop, { M.tool_lp = M.tool_lp || {}; M.tool_lp.dragdrop_reorder = function(params) { - new DRAGREORDER(params); + return new DRAGREORDER(params); }; diff --git a/admin/tool/lp/yui/src/dragdrop-reorder/js/dragdropreorder.js b/admin/tool/lp/yui/src/dragdrop-reorder/js/dragdropreorder.js index c2feccb8b68..36246317621 100644 --- a/admin/tool/lp/yui/src/dragdrop-reorder/js/dragdropreorder.js +++ b/admin/tool/lp/yui/src/dragdrop-reorder/js/dragdropreorder.js @@ -63,5 +63,5 @@ Y.extend(DRAGREORDER, M.core.dragdrop, { M.tool_lp = M.tool_lp || {}; M.tool_lp.dragdrop_reorder = function(params) { - new DRAGREORDER(params); + return new DRAGREORDER(params); };