diff --git a/modules/backend/assets/js/october-min.js b/modules/backend/assets/js/october-min.js index 6a8ddfce1..e5ee4d4fd 100644 --- a/modules/backend/assets/js/october-min.js +++ b/modules/backend/assets/js/october-min.js @@ -1590,10 +1590,7 @@ this.clearOffsetParent()},toggleListeners:function(method,events){var self=this events=events||['drag','drop','scroll'] $.each(events,function(i,event){self.$document[method](eventNames[event],self[event+'Proxy'])})},clearOffsetParent:function(){this.offsetParent=undefined},clearDimensions:function(){this.containerDimensions=undefined var i=this.containers.length -while(i--){this.containers[i].clearDimensions()}},destroy:function(){var group=this.options.group -containerGroups[group].options=null -containerGroups[group]=undefined -for(var i in containerGroups){if(containerGroups[i]){containerGroups[i]=undefined}}}} +while(i--){this.containers[i].clearDimensions()}},destroy:function(){containerGroups[this.options.group]=undefined}} function Container(element,options){this.el=element this.options=$.extend({},containerDefaults,options) this.group=ContainerGroup.get(this.options) @@ -2407,9 +2404,11 @@ this.$el.removeData('oc.treelist') this.$el=null this.options=null} TreeListWidget.DEFAULTS={handle:null,nested:true} -TreeListWidget.prototype.onDrop=function($item,container,_super){this.$el.trigger('move.oc.treelist',{item:$item,container:container}) +TreeListWidget.prototype.onDrop=function($item,container,_super){if(!this.$el){return} +this.$el.trigger('move.oc.treelist',{item:$item,container:container}) _super($item,container)} -TreeListWidget.prototype.onAfterMove=function($placeholder,container,$closestEl){this.$el.trigger('aftermove.oc.treelist',{placeholder:$placeholder,container:container,closestEl:$closestEl})} +TreeListWidget.prototype.onAfterMove=function($placeholder,container,$closestEl){if(!this.$el){return} +this.$el.trigger('aftermove.oc.treelist',{placeholder:$placeholder,container:container,closestEl:$closestEl})} var old=$.fn.treeListWidget $.fn.treeListWidget=function(option){var args=arguments,result this.each(function(){var $this=$(this) diff --git a/modules/backend/assets/js/october.sortable.js b/modules/backend/assets/js/october.sortable.js index cf237f32e..6333191e5 100644 --- a/modules/backend/assets/js/october.sortable.js +++ b/modules/backend/assets/js/october.sortable.js @@ -468,16 +468,22 @@ // TODO iterate over subgroups and destroy them // TODO remove all events + containerGroups[this.options.group] = undefined +/* + + if (!this.options) { + return + } + var group = this.options.group containerGroups[group].options = null containerGroups[group] = undefined - for (var i in containerGroups) { if (containerGroups[i]) { containerGroups[i] = undefined } } - +*/ } } diff --git a/modules/backend/assets/js/october.treelist.js b/modules/backend/assets/js/october.treelist.js index ea0f9b654..c0aaa5043 100644 --- a/modules/backend/assets/js/october.treelist.js +++ b/modules/backend/assets/js/october.treelist.js @@ -74,11 +74,21 @@ // ============================ TreeListWidget.prototype.onDrop = function($item, container, _super) { + // The event handler could be registered after the + // sortable is destroyed. This should be fixed later. + if (!this.$el) { + return + } + this.$el.trigger('move.oc.treelist', { item: $item, container: container }) _super($item, container) } TreeListWidget.prototype.onAfterMove = function($placeholder, container, $closestEl) { + if (!this.$el) { + return + } + this.$el.trigger('aftermove.oc.treelist', { placeholder: $placeholder, container: container, closestEl: $closestEl }) } diff --git a/modules/backend/assets/js/october.treeview.js b/modules/backend/assets/js/october.treeview.js index 49627f6fe..c48c73c8b 100644 --- a/modules/backend/assets/js/october.treeview.js +++ b/modules/backend/assets/js/october.treeview.js @@ -228,15 +228,15 @@ // instead of updating it. Remove later if nothing weird is noticed. // -ab Apr 26 2015 // - // TreeView.prototype.update = function() { - // this.$allItems = $('li', this.$el) - // this.createItemControls() - // this.initSortable() + TreeView.prototype.update = function() { + this.$allItems = $('li', this.$el) + this.createItemControls() + //this.initSortable() - // var dataId = this.$el.data('oc.active-item') - // if (dataId !== undefined) - // this.markActive(dataId) - // } + var dataId = this.$el.data('oc.active-item') + if (dataId !== undefined) + this.markActive(dataId) + } TreeView.prototype.handleMovedNode = function() { this.$el.trigger('change')