From 9a02c39977bde860d6574ce73aad4e6494dc34f7 Mon Sep 17 00:00:00 2001 From: Gorash Date: Wed, 4 Nov 2020 15:01:00 +0000 Subject: [PATCH] [FIX] web_editor,website_mass_mailing: display the popup preview closes odoo/odoo#63343 X-original-commit: a0470eed4e57f2df19d4306ab4e894b986971eef Signed-off-by: David Monjoie (dmo) --- .../src/js/views/form/form_controller.js | 4 +-- addons/web/static/tests/views/form_tests.js | 4 +-- .../static/src/js/backend/field_html.js | 36 ++++++++----------- .../src/scss/website_mass_mailing_popup.scss | 10 ++++++ .../static/src/xml/website_mass_mailing.xml | 16 +++++---- .../views/website_mass_mailing_views.xml | 3 +- 6 files changed, 40 insertions(+), 33 deletions(-) diff --git a/addons/web/static/src/js/views/form/form_controller.js b/addons/web/static/src/js/views/form/form_controller.js index 4373afb48ea..6dc7293db59 100644 --- a/addons/web/static/src/js/views/form/form_controller.js +++ b/addons/web/static/src/js/views/form/form_controller.js @@ -143,7 +143,7 @@ var FormController = BasicController.extend({ renderButtons: function ($node) { var $footer = this.footerToButtons ? this.renderer.$el && this.renderer.$('footer').filter(function () { - return !this.closest('.oe_form_field'); + return !this.closest('.o_field_widget'); }) : null; var mustRenderFooterButtons = $footer && $footer.length; @@ -285,7 +285,7 @@ var FormController = BasicController.extend({ } if (this.footerToButtons) { var $footer = this.renderer.$el && this.renderer.$('footer').filter(function () { - return !this.closest('.oe_form_field'); + return !this.closest('.o_field_widget'); }); if ($footer && $footer.length) { this.$buttons.empty().append($footer); diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 336798347f7..585cbb95166 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -6,7 +6,7 @@ var BasicModel = require('web.BasicModel'); var concurrency = require('web.concurrency'); var core = require('web.core'); var fieldRegistry = require('web.field_registry'); -var basicFields = require('web.basic_fields'); +const basicFields = require('web.basic_fields'); const fieldRegistryOwl = require('web.field_registry_owl'); var FormView = require('web.FormView'); var mixins = require('web.mixins'); @@ -2260,7 +2260,7 @@ QUnit.module('Views', { var MyWidget = basicFields.FieldChar.extend({ _renderEdit: function () { - var $el = $(`
Coucou
this should not be moved
`); + var $el = $(`
Coucou
this should not be moved
`); this.$el.replaceWith($el); this.$el = $el; diff --git a/addons/web_editor/static/src/js/backend/field_html.js b/addons/web_editor/static/src/js/backend/field_html.js index ca21a890966..c8ce26f42bd 100644 --- a/addons/web_editor/static/src/js/backend/field_html.js +++ b/addons/web_editor/static/src/js/backend/field_html.js @@ -23,8 +23,9 @@ var jinjaRegex = /(^|\n)\s*%\s(end|set\s)/; * nodeOptions: * - style-inline => convert class to inline style (no re-edition) => for sending by email * - no-attachment - * - cssEdit - * - cssReadonly + * - cssEdit => in edition mode use specific css into a shadow dom + * - cssEditIframe => in edition mode use specific css into an iframe + * - cssReadonly => in readonly mode use specific css into a shadow dom * - snippets * - wrapper */ @@ -55,9 +56,11 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { if (this.nodeOptions.cssReadonly) { this.cssReadonly = await ajax.loadAsset(this.nodeOptions.cssReadonly); } - if (this.nodeOptions.cssEdit || this.nodeOptions['style-inline']) { + const cssEdit = this.nodeOptions.cssEdit || this.nodeOptions.cssEditIframe; + if (cssEdit || this.nodeOptions['style-inline']) { this.needShadow = true; - this.cssEdit = await ajax.loadAsset(this.nodeOptions.cssEdit || 'web_editor.assets_edit_html_field'); + this.needIframe = !!this.nodeOptions.cssEditIframe; + this.cssEdit = await ajax.loadAsset(cssEdit || 'web_editor.assets_edit_html_field'); } }, /** @@ -175,7 +178,9 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { */ _getWysiwygOptions: async function () { let main = ''; - + if (this.nodeOptions.wrapper) { + main = this._wrap(main); + } if (this.needShadow) { let style = ''; if (this.cssEdit) { @@ -188,7 +193,11 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { }), ].join(''); } - main = '' + style + '\n' + main + ''; + if (this.needIframe) { + main = '' + style + '\n' + main + ''; + } else { + main = '' + style + '\n' + main + ''; + } } const scrollAuto = !this.needShadow; @@ -258,10 +267,6 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { if (this.attrs.class && this.attrs.class.indexOf("oe_read_only") !== -1) { return this._renderReadonly(); } - var value = this._textToHtml(this.value); - if (this.nodeOptions.wrapper) { - value = this._wrap(value); - } var fieldNameAttachment = _.chain(this.recordData) .pairs() .find(function (value) { @@ -331,17 +336,6 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { } return value; }, - /** - * Move HTML contents out of their wrapper. - * - * @private - * @param {string} html content - * @returns {string} html content - */ - _unWrap: function (html) { - var $wrapper = $(html).find('#wrapper'); - return $wrapper.length ? $wrapper.html() : html; - }, /** * Wrap HTML in order to create a custom display. * diff --git a/addons/website_mass_mailing/static/src/scss/website_mass_mailing_popup.scss b/addons/website_mass_mailing/static/src/scss/website_mass_mailing_popup.scss index 425d9e1a98e..4f8e5f147f4 100644 --- a/addons/website_mass_mailing/static/src/scss/website_mass_mailing_popup.scss +++ b/addons/website_mass_mailing/static/src/scss/website_mass_mailing_popup.scss @@ -20,3 +20,13 @@ opacity: 1; } } + +#website_mass_mailing_edition_wrapper { + position: relative; + width: 100%; + height: 60vh; +} +#website_mass_mailing_edition_wrapper .modal { + position: absolute; + z-index: 0; +} diff --git a/addons/website_mass_mailing/static/src/xml/website_mass_mailing.xml b/addons/website_mass_mailing/static/src/xml/website_mass_mailing.xml index 9fd80fe5e77..142442a3f0b 100644 --- a/addons/website_mass_mailing/static/src/xml/website_mass_mailing.xml +++ b/addons/website_mass_mailing/static/src/xml/website_mass_mailing.xml @@ -1,13 +1,15 @@ -