From 60c920d4a192785fe0d226a1e2158245acd31d79 Mon Sep 17 00:00:00 2001 From: Nicolas Lempereur Date: Mon, 12 Mar 2018 10:55:13 +0100 Subject: [PATCH] [FIX] portal: no dynamic chatter on edit so no dup When editing a view on the frontend with a dynamic chatter (chatter added dynamically to the view), if that part was edited, that dynamically rendered part would be saved as is. Thus we would get a duplicated chatter (with the first one statically the rendering at the edit time). opw-1813792 closes #23593 --- addons/portal/static/src/js/portal_chatter.js | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/addons/portal/static/src/js/portal_chatter.js b/addons/portal/static/src/js/portal_chatter.js index 977a1576c77..3e17c5dd2b8 100644 --- a/addons/portal/static/src/js/portal_chatter.js +++ b/addons/portal/static/src/js/portal_chatter.js @@ -5,6 +5,7 @@ var base = require('web_editor.base'); var ajax = require('web.ajax'); var core = require('web.core'); var Widget = require('web.Widget'); +var sAnimation = require('website.content.snippets.animation'); var rpc = require('web.rpc'); var time = require('web.time'); @@ -222,12 +223,19 @@ var PortalChatter = Widget.extend({ }, }); -base.ready().then(function () { - $('.o_portal_chatter').each(function (index) { - var $elem = $(this); - var mail_thread = new PortalChatter(null, $elem.data()); - mail_thread.appendTo($elem); - }); +sAnimation.registry.portal_chatter = sAnimation.Class.extend({ + selector: ".o_portal_chatter", + destroy: function () { + this.$target.empty(); + return this._super.apply(this, arguments); + }, + start: function () { + if (!this.editableMode) { + var mail_thread = new PortalChatter(null, this.$el.data()); + mail_thread.appendTo(this.$el); + } + return this._super.apply(this, arguments); + }, }); return {