From 5e9ebcfb01f3250833a543154d072d6c785c9330 Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Mon, 12 Sep 2016 13:29:30 +0200 Subject: [FIX] web_editor: properly call on_remove method of snippet options The snippet options can define an on_remove method which was supposed to be called when the snippet is removed. This was not the case since the method was written so that the options were removed before the on_remove method was called... (Un)fortunately, the on_remove callbacks were not doing any critical job in current implementation. In saas-13 however, some elements will rely on this. --- addons/web_editor/static/src/js/snippets.editor.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'addons/web_editor/static/src/js/snippets.editor.js') diff --git a/addons/web_editor/static/src/js/snippets.editor.js b/addons/web_editor/static/src/js/snippets.editor.js index 79db510bf6a..043163802dc 100644 --- a/addons/web_editor/static/src/js/snippets.editor.js +++ b/addons/web_editor/static/src/js/snippets.editor.js @@ -663,7 +663,7 @@ var BuildingBlock = Widget.extend({ animation.start(true, $target); self.call_for_all_snippets($target, function (editor, $snippet) { - editor.drop_and_build_snippet(); + _.defer(function () { editor.drop_and_build_snippet(); }); }); self.create_snippet_editor($target); self.cover_target($target.data('overlay'), $target); @@ -683,12 +683,10 @@ var BuildingBlock = Widget.extend({ var self = this; $snippet.add(globalSelector.all($snippet)).each(function () { var $snippet = $(this); - setTimeout(function () { - self.create_snippet_editor($snippet); - if ($snippet.data("snippet-editor")) { - callback.call(self, $snippet.data("snippet-editor"), $snippet); - } - }); + self.create_snippet_editor($snippet); + if ($snippet.data("snippet-editor")) { + callback.call(self, $snippet.data("snippet-editor"), $snippet); + } }); }, -- cgit v1.2.3 From 965d5a42fda26c256ac96b5ee9556956b0e5a22d Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Mon, 12 Sep 2016 17:02:04 +0200 Subject: [FIX] web_editor: allow to drop a snippet where its movement began Before this commit, if we dragged a snippet and dropped it where we began the drag, the snippet was removed. --- addons/web_editor/static/src/js/snippets.editor.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'addons/web_editor/static/src/js/snippets.editor.js') diff --git a/addons/web_editor/static/src/js/snippets.editor.js b/addons/web_editor/static/src/js/snippets.editor.js index 043163802dc..a76ee437210 100644 --- a/addons/web_editor/static/src/js/snippets.editor.js +++ b/addons/web_editor/static/src/js/snippets.editor.js @@ -959,17 +959,25 @@ var Editor = Class.extend({ }, _drag_and_drop_stop: function (){ var self = this; - var $dropzone = this.$target.prev(); - var prev = $dropzone.length && $dropzone[0].previousSibling; + + $(".oe_drop_zone").droppable('destroy').remove(); + + var prev = this.$target.first()[0].previousSibling; var next = this.$target.last()[0].nextSibling; var $parent = this.$target.parent(); - $(".oe_drop_clone").after(this.$target); + var $clone = $(".oe_drop_clone"); + if (prev === $clone[0]) { + prev = $clone[0].previousSibling; + } else if (next === $clone[0]) { + next = $clone[0].nextSibling; + } + $clone.after(this.$target); this.$overlay.removeClass("hidden"); $("body").removeClass('move-important'); - $('.oe_drop_zone').droppable('destroy').remove(); - $(".oe_drop_clone, .oe_drop_to_remove").remove(); + $clone.remove(); + $(".oe_drop_to_remove").remove(); if (this.dropped) { this.buildingBlock.parent.rte.historyRecordUndo(this.$target); -- cgit v1.2.3