From 826a185fdf7acfa88372ed5a196dfa7fd49940a6 Mon Sep 17 00:00:00 2001 From: Antoine Guenet Date: Thu, 3 Mar 2022 16:25:44 +0000 Subject: [PATCH] [FIX] mass_mailing: preserve changes on preview templates Previewing templates in the "SELECT A TEMPLATE" tab of mass_mailing made one lose all their changes. This makes sure they are preserved and restored when needed. task-2778411 closes odoo/odoo#85932 X-original-commit: e96e11d6ab8e5f7a6d5da498409cc0d5fb26cad1 Signed-off-by: David Monjoie (dmo) Signed-off-by: Antoine Guenet --- .../mass_mailing/static/src/js/mass_mailing_widget.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/addons/mass_mailing/static/src/js/mass_mailing_widget.js b/addons/mass_mailing/static/src/js/mass_mailing_widget.js index ee7eb703407..8d87ff91124 100644 --- a/addons/mass_mailing/static/src/js/mass_mailing_widget.js +++ b/addons/mass_mailing/static/src/js/mass_mailing_widget.js @@ -244,6 +244,8 @@ var MassMailingFieldHtml = FieldHtml.extend({ } this.switchThemeLast = themeParams; + this.$lastContent = this.$content.find('.o_mail_wrapper_td').contents(); + this.$content.closest('body').removeClass(this._allClasses).addClass(themeParams.className); const old_layout = this.$content.find('.o_layout')[0]; @@ -475,7 +477,11 @@ var MassMailingFieldHtml = FieldHtml.extend({ self._switchThemes(themeParams); }); $themeSelector.on("mouseleave", ".dropdown-item", function (e) { - self._switchThemes(selectedTheme); + if (self.$lastContent) { + self._switchThemes(Object.assign({}, selectedTheme, {template: self.$lastContent})); + } else { + self._switchThemes(selectedTheme); + } }); $themeSelector.on("click", '[data-toggle="dropdown"]', function (e) { var $menu = $themeSelector.find('.dropdown-menu'); @@ -498,6 +504,9 @@ var MassMailingFieldHtml = FieldHtml.extend({ // Notify form view $themeSelector.find('.dropdown-item.selected').removeClass('selected'); $themeSelector.find('.dropdown-item:eq(' + themesParams.indexOf(selectedTheme) + ')').addClass('selected'); + + // Invalidate previous content. + self.$lastContent = undefined; }; $themeSelector.on("click", ".dropdown-item", selectTheme);