From b49745e52d7a7bc27afd416206dcd5fa242aa07a Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Mon, 28 Jan 2019 09:39:56 +0000 Subject: [PATCH] [IMP] web_editor: lazy load the wysiwyg Issue: wysiwyg asset slow down the loading of the website, error inadvertently introduced: https://github.com/odoo/odoo/pull/29775 The assets are now loaded assynchroneously, when the editor is needed, its assets will be loaded. closes odoo/odoo#30700 --- .../static/src/js/mass_mailing_widget.js | 7 +- .../static/tests/mass_mailing_html_tests.js | 2 +- .../mass_mailing/views/editor_field_html.xml | 16 +- .../views/mass_mailing_template.xml | 1 - addons/web/static/src/js/core/widget.js | 37 +- .../static/src/js/fields/abstract_field.js | 10 - .../static/src/js/backend/convert_inline.js | 3 +- .../static/src/js/backend/field_html.js | 27 +- addons/web_editor/static/src/js/common/ace.js | 1 - .../static/src/js/wysiwyg/plugin/font.js | 5 + .../web_editor/static/src/js/wysiwyg/root.js | 62 ++ .../static/src/js/wysiwyg/wysiwyg.js | 40 +- .../static/src/js/wysiwyg/wysiwyg_iframe.js | 50 +- .../js/wysiwyg_snippets/wysiwyg_snippets.js | 11 + addons/web_editor/static/src/xml/wysiwyg.xml | 42 ++ .../static/tests/field_html_tests.js | 5 +- addons/web_editor/static/tests/test_utils.js | 2 +- .../web_editor/static/tests/wysiwyg_tests.js | 68 +- addons/web_editor/views/editor.xml | 29 +- .../views/web_unsplash_templates.xml | 2 +- .../static/src/js/editor/editor_menu.js | 9 +- .../src/js/editor/editor_menu_translate.js | 9 +- .../static/src/js/editor/wysiwyg_multizone.js | 4 +- addons/website/static/src/js/menu/content.js | 1 - addons/website/static/src/js/menu/edit.js | 2 + .../website/static/src/js/menu/translate.js | 2 + addons/website/static/src/js/tours/rte.js | 2 +- .../static/src/scss/website.editor.ui.scss | 655 +----------------- .../static/src/scss/website.wysiwyg.scss | 640 +++++++++++++++++ addons/website/views/website_templates.xml | 22 +- .../static/src/js/website_forum.editor.js | 1 - .../static/src/js/website_forum.js | 2 +- 32 files changed, 961 insertions(+), 808 deletions(-) create mode 100644 addons/web_editor/static/src/js/wysiwyg/root.js create mode 100644 addons/website/static/src/scss/website.wysiwyg.scss 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 12eec137545..cf97d3fd9a0 100644 --- a/addons/mass_mailing/static/src/js/mass_mailing_widget.js +++ b/addons/mass_mailing/static/src/js/mass_mailing_widget.js @@ -12,6 +12,9 @@ var _t = core._t; var MassMailingFieldHtml = FieldHtml.extend({ xmlDependencies: (FieldHtml.prototype.xmlDependencies || []).concat(["/mass_mailing/static/src/xml/mass_mailing.xml"]), + jsLibs: [ + '/mass_mailing/static/src/js/mass_mailing_snippets.js', + ], custom_events: _.extend({}, FieldHtml.prototype.custom_events, { snippets_loaded: '_onSnippetsLoaded', @@ -305,7 +308,7 @@ var MassMailingFieldHtml = FieldHtml.extend({ this.$content.focusIn(); } } - this.wysiwyg.snippets.trigger('reload_snippet_dropzones'); + this.wysiwyg.trigger('reload_snippet_dropzones'); }, //-------------------------------------------------------------------------- @@ -442,7 +445,7 @@ var MassMailingFieldHtml = FieldHtml.extend({ selectedTheme = themeParams; // Notify form view - self.wysiwyg._onChange(); + self.wysiwyg.getEditable().trigger('change'); $dropdown.find('.dropdown-menu').removeClass('show'); $dropdown.find('.dropdown-item.selected').removeClass('selected'); $dropdown.find('.dropdown-item:eq(' + themesParams.indexOf(selectedTheme) + ')').addClass('selected'); diff --git a/addons/mass_mailing/static/tests/mass_mailing_html_tests.js b/addons/mass_mailing/static/tests/mass_mailing_html_tests.js index 36bea2db624..0657278ec16 100644 --- a/addons/mass_mailing/static/tests/mass_mailing_html_tests.js +++ b/addons/mass_mailing/static/tests/mass_mailing_html_tests.js @@ -46,7 +46,7 @@ QUnit.module('field html', { } if (xmlId === 'template.assets_all_style') { return $.when({ - cssLibs: $('head link[href]:not([type="image/x-icon"])').map(function () { + cssLibs: $('link[href]:not([type="image/x-icon"])').map(function () { return $(this).attr('href'); }).get(), cssContents: ['.field_body {background-color: red;}'] diff --git a/addons/mass_mailing/views/editor_field_html.xml b/addons/mass_mailing/views/editor_field_html.xml index 25f2be6fe23..620ccc78c44 100644 --- a/addons/mass_mailing/views/editor_field_html.xml +++ b/addons/mass_mailing/views/editor_field_html.xml @@ -7,15 +7,17 @@ @@ -26,6 +28,14 @@