[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.
This commit is contained in:
qsm-odoo
2018-07-27 12:36:54 +02:00
parent 6dc37ee461
commit 8c32bfb45d
4 changed files with 20 additions and 22 deletions
@@ -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 + '<li><a data-event="formatBlock" href="#" data-value="' + v + '">' +
return memo + '<li><a class="dropdown-item" data-event="formatBlock" href="#" data-value="' + v + '">' +
(
(v === 'p' || v === 'pre') ? label :
'<' + v + '>' + label + '</' + v + '>'
@@ -225,12 +225,12 @@ define([
});
var items = [
'<li><div class="btn-group">',
'<li class="flex"><div class="btn-group flex-column">',
'<div class="note-palette-title">' + lang.color.background + '</div>',
'<div class="note-color-reset" data-event="backColor"',
' data-value="inherit" title="' + lang.color.transparent + '">' + lang.color.setTransparent + '</div>',
'<div class="note-color-palette" data-target-event="backColor"></div>',
'</div><div class="btn-group">',
'</div><div class="btn-group flex-column">',
'<div class="note-palette-title">' + lang.color.foreground + '</div>',
'<div class="note-color-reset" data-event="foreColor" data-value="inherit" title="' + lang.color.reset + '">',
lang.color.resetToDefault,
@@ -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' : '');
});
};
@@ -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 = $('<div class="btn-group"/>');
$padding.insertBefore($imagePopover.find('.btn-group:first'));
var dropdown_content = [
'<li><a data-event="padding" href="#" data-value="">'+_t('None')+'</a></li>',
'<li><a data-event="padding" href="#" data-value="small">'+_t('Small')+'</a></li>',
'<li><a data-event="padding" href="#" data-value="medium">'+_t('Medium')+'</a></li>',
'<li><a data-event="padding" href="#" data-value="large">'+_t('Large')+'</a></li>',
'<li><a data-event="padding" href="#" data-value="xl">'+_t('Xl')+'</a></li>',
'<li><a class="dropdown-item" data-event="padding" href="#" data-value="">'+_t('None')+'</a></li>',
'<li><a class="dropdown-item" data-event="padding" href="#" data-value="small">'+_t('Small')+'</a></li>',
'<li><a class="dropdown-item" data-event="padding" href="#" data-value="medium">'+_t('Medium')+'</a></li>',
'<li><a class="dropdown-item" data-event="padding" href="#" data-value="large">'+_t('Large')+'</a></li>',
'<li><a class="dropdown-item" data-event="padding" href="#" data-value="xl">'+_t('Xl')+'</a></li>',
];
$(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');
@@ -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;