From 8c32bfb45d6bb0e5c5b0f01b073f694f95b2692e Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Thu, 12 Jul 2018 12:28:24 +0200 Subject: [PATCH] [REF] web_editor: make our Summernote/BS3 work with BS4 The big plan is to remove our current editor and its customization and replace it with an updated summernote. Meanwhile, we have to patch our current lib directly so that it works with BS4. --- .../static/lib/summernote/src/js/Renderer.js | 6 ++-- .../lib/summernote/src/js/module/Button.js | 4 +-- .../static/src/js/editor/rte.summernote.js | 30 ++++++++----------- .../static/src/scss/web_editor.ui.scss | 2 ++ 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/addons/web_editor/static/lib/summernote/src/js/Renderer.js b/addons/web_editor/static/lib/summernote/src/js/Renderer.js index 6f5af317bfa..2c856d4b152 100644 --- a/addons/web_editor/static/lib/summernote/src/js/Renderer.js +++ b/addons/web_editor/static/lib/summernote/src/js/Renderer.js @@ -162,7 +162,7 @@ define([ style: function (lang, options) { var items = options.styleTags.reduce(function (memo, v) { var label = lang.style[v === 'p' ? 'normal' : v]; - return memo + '
  • ' + + return memo + '
  • ' + ( (v === 'p' || v === 'pre') ? label : '<' + v + '>' + label + '' @@ -225,12 +225,12 @@ define([ }); var items = [ - '
  • ', '
    ' + lang.color.foreground + '
    ', '
    ', lang.color.resetToDefault, diff --git a/addons/web_editor/static/lib/summernote/src/js/module/Button.js b/addons/web_editor/static/lib/summernote/src/js/module/Button.js index 59e3fa19f63..c6d28494cd0 100644 --- a/addons/web_editor/static/lib/summernote/src/js/module/Button.js +++ b/addons/web_editor/static/lib/summernote/src/js/module/Button.js @@ -21,10 +21,10 @@ define([ * @param {Number} value */ var checkDropdownMenu = function ($btn, value) { - $btn.find('.dropdown-menu li a').each(function () { + $btn.find('.dropdown-menu .dropdown-item').each(function () { // always compare string to avoid creating another func. var isChecked = ($(this).data('value') + '') === (value + ''); - this.className = isChecked ? 'checked' : ''; + this.className = 'dropdown-item' + (isChecked ? ' checked' : ''); }); }; diff --git a/addons/web_editor/static/src/js/editor/rte.summernote.js b/addons/web_editor/static/src/js/editor/rte.summernote.js index 7c394812e7e..b641839286c 100644 --- a/addons/web_editor/static/src/js/editor/rte.summernote.js +++ b/addons/web_editor/static/src/js/editor/rte.summernote.js @@ -85,10 +85,6 @@ renderer.tplPopovers = function (lang, options) { var $linkPopover = $popover.find('.note-link-popover'); var $airPopover = $popover.find('.note-air-popover'); - if (window === window.top) { - $popover.children().addClass("d-none d-md-block"); - } - //////////////// image popover // add center button for images @@ -104,11 +100,11 @@ renderer.tplPopovers = function (lang, options) { var $padding = $('
    '); $padding.insertBefore($imagePopover.find('.btn-group:first')); var dropdown_content = [ - '
  • '+_t('None')+'
  • ', - '
  • '+_t('Small')+'
  • ', - '
  • '+_t('Medium')+'
  • ', - '
  • '+_t('Large')+'
  • ', - '
  • '+_t('Xl')+'
  • ', + '
  • '+_t('None')+'
  • ', + '
  • '+_t('Small')+'
  • ', + '
  • '+_t('Medium')+'
  • ', + '
  • '+_t('Large')+'
  • ', + '
  • '+_t('Xl')+'
  • ', ]; $(tplIconButton('fa fa-plus-square-o', { title: _t('Padding'), @@ -187,9 +183,9 @@ renderer.tplPopovers = function (lang, options) { while (node && (!node.tagName || (!node.tagName || formats.indexOf(node.tagName.toLowerCase()) === -1))) { node = node.parentNode; } - $format.parent().removeClass('active'); + $format.removeClass('active'); $format.filter('[data-value="'+(node ? node.tagName.toLowerCase() : "p")+'"]') - .parent().addClass("active"); + .addClass("active"); }); //////////////// tooltip @@ -223,13 +219,13 @@ eventHandler.modules.popover.button.update = function ($container, oStyle) { $container.find('.note-color').removeClass('d-none'); if (oStyle.image) { - $container.find('[data-event]').parent().removeClass("active"); + $container.find('[data-event]').removeClass("active"); - $container.find('a[data-event="padding"][data-value="small"]').parent().toggleClass("active", $(oStyle.image).hasClass("padding-small")); - $container.find('a[data-event="padding"][data-value="medium"]').parent().toggleClass("active", $(oStyle.image).hasClass("padding-medium")); - $container.find('a[data-event="padding"][data-value="large"]').parent().toggleClass("active", $(oStyle.image).hasClass("padding-large")); - $container.find('a[data-event="padding"][data-value="xl"]').parent().toggleClass("active", $(oStyle.image).hasClass("padding-xl")); - $container.find('a[data-event="padding"][data-value=""]').parent().toggleClass("active", !$container.find('.active a[data-event="padding"]').length); + $container.find('a[data-event="padding"][data-value="small"]').toggleClass("active", $(oStyle.image).hasClass("padding-small")); + $container.find('a[data-event="padding"][data-value="medium"]').toggleClass("active", $(oStyle.image).hasClass("padding-medium")); + $container.find('a[data-event="padding"][data-value="large"]').toggleClass("active", $(oStyle.image).hasClass("padding-large")); + $container.find('a[data-event="padding"][data-value="xl"]').toggleClass("active", $(oStyle.image).hasClass("padding-xl")); + $container.find('a[data-event="padding"][data-value=""]').toggleClass("active", !$container.find('.active a[data-event="padding"]').length); $(oStyle.image).addClass('o_we_selected_image'); diff --git a/addons/web_editor/static/src/scss/web_editor.ui.scss b/addons/web_editor/static/src/scss/web_editor.ui.scss index 9b3c2e34853..e85f04e8327 100644 --- a/addons/web_editor/static/src/scss/web_editor.ui.scss +++ b/addons/web_editor/static/src/scss/web_editor.ui.scss @@ -765,6 +765,8 @@ html[lang] > body.editor_enable [data-oe-translation-state] { border-radius: 0; background-color: $o-we-color-darker; color: $o-we-color-text-normal; + white-space: normal; + .dropdown-item { width: 100%; color: $o-we-color-text-light;