odoo.define('web_editor.rte.summernote', function (require) { 'use strict'; var core = require('web.core'); var ajax = require('web.ajax'); var base = require('web_editor.base'); var widgets = require('web_editor.widget'); var rte = require('web_editor.rte'); var QWeb = core.qweb; var _t = core._t; ////////////////////////////////////////////////////////////////////////////////////////////////////////// ajax.jsonRpc('/web/dataset/call', 'call', { 'model': 'ir.ui.view', 'method': 'read_template', 'args': ['web_editor.colorpicker', base.get_context()] }).done(function (data) { QWeb.add_template(data); }); ////////////////////////////////////////////////////////////////////////////////////////////////////////// /* Summernote Lib (neek change to make accessible: method and object) */ var dom = $.summernote.core.dom; var range = $.summernote.core.range; var eventHandler = $.summernote.eventHandler; var renderer = $.summernote.renderer; var options = $.summernote.options; var tplButton = renderer.getTemplate().button; var tplIconButton = renderer.getTemplate().iconButton; var tplDropdown = renderer.getTemplate().dropdown; ////////////////////////////////////////////////////////////////////////////////////////////////////////// /* update and change the popovers content, and add history button */ var fn_createPalette = renderer.createPalette; renderer.createPalette = function ($container, options) { fn_createPalette.call(this, $container, options); if (!QWeb.has_template('web_editor.colorpicker')) { return; } var $color = $container.find('.note-color'); var html = QWeb.render('web_editor.colorpicker'); $color.find('.note-color-palette').prepend(html); var $bg = $color.find('.colorpicker:first button'); var $fore = $color.find('.colorpicker:last button'); $bg.each(function () { $(this).attr('data-event', 'backColor').attr('data-value', $(this).attr('class')); }); $fore.each(function () { $(this).attr('data-event', 'foreColor').attr('data-value', $(this).attr('class').replace(/bg-/, 'text-')); }); }; var fn_tplPopovers = renderer.tplPopovers; renderer.tplPopovers = function (lang, options) { var $popover = $(fn_tplPopovers.call(this, lang, options)); var $imagePopover = $popover.find('.note-image-popover'); var $linkPopover = $popover.find('.note-link-popover'); var $airPopover = $popover.find('.note-air-popover'); if (window === window.top) { $popover.children().addClass("hidden-xs"); } //////////////// image popover // add center button for images var $centerbutton = $(tplIconButton('fa fa-align-center', { title: _t('Center'), event: 'floatMe', value: 'center' })).insertAfter($imagePopover.find('[data-event="floatMe"][data-value="left"]')); $imagePopover.find('button[data-event="removeMedia"]').parent().remove(); $imagePopover.find('button[data-event="floatMe"][data-value="none"]').remove(); var $alt = $('
'); $alt.prependTo($imagePopover.find('.popover-content')); $alt.append(''); // padding button var $padding = $('
'); $padding.insertBefore($imagePopover.find('.btn-group:first')); var dropdown_content = [ '
  • '+_t('None')+'
  • ', '
  • '+_t('Small')+'
  • ', '
  • '+_t('Medium')+'
  • ', '
  • '+_t('Large')+'
  • ', '
  • '+_t('Xl')+'
  • ', ]; var $button = $(tplIconButton('fa fa-plus-square-o', { title: _t('Padding'), dropdown: tplDropdown(dropdown_content) })).appendTo($padding); // circle, boxed... options became toggled $imagePopover.find('[data-event="imageShape"]:not([data-value])').remove(); var $button = $(tplIconButton('fa fa-sun-o', { title: _t('Shadow'), event: 'imageShape', value: 'shadow' })).insertAfter($imagePopover.find('[data-event="imageShape"][data-value="img-circle"]')); // add spin for fa var $spin = $('