From 8025205bb4dee4d92a85de86a0cc4436cfb70149 Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Mon, 9 Sep 2019 15:51:47 +0000 Subject: [IMP] web_editor, *: introduce wysiwyg frontend loader * website_forum, website_profile - Share some code between website_forum and website_profile by exposing a function in web_editor to instantiate a wysiwyg instance on a textarea - Use no-lazy loaded JS to add a visual loading effect while the wysiwyg is not yet available. This is made in preparation of task-2024197 (see https://github.com/odoo/odoo/pull/35749) Thanks to @stefanorigano closes odoo/odoo#36581 Signed-off-by: Quentin Smetz (qsm) --- addons/web_editor/static/src/js/frontend/loader.js | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 addons/web_editor/static/src/js/frontend/loader.js (limited to 'addons/web_editor/static/src/js/frontend/loader.js') diff --git a/addons/web_editor/static/src/js/frontend/loader.js b/addons/web_editor/static/src/js/frontend/loader.js new file mode 100644 index 00000000000..9c6cf0ef984 --- /dev/null +++ b/addons/web_editor/static/src/js/frontend/loader.js @@ -0,0 +1,28 @@ +odoo.define('web_editor.loader', function (require) { +'use strict'; + +var Wysiwyg = require('web_editor.wysiwyg.root'); + +function load(parent, textarea, options) { + var loading = textarea.nextElementSibling; + if (loading && !loading.classList.contains('o_wysiwyg_loading')) { + loading = null; + } + + if (!textarea.value.match(/\S/)) { + textarea.value = '


'; + } + + var wysiwyg = new Wysiwyg(parent, options); + return wysiwyg.attachTo(textarea).then(() => { + if (loading) { + loading.parentNode.removeChild(loading); + } + return wysiwyg; + }); +} + +return { + load: load, +}; +}); -- cgit v1.2.3