odoo.define('web_editor.rte.summernote', function (require) { 'use strict'; var ajax = require('web.ajax'); var Class = require('web.Class'); var core = require('web.core'); var mixins = require('web.mixins'); var weContext = require('web_editor.context'); var rte = require('web_editor.rte'); var weWidgets = require('web_editor.widget'); 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', weContext.get()] }).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 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 $clpicker = $(QWeb.render('web_editor.colorpicker')); var groups; if ($clpicker.is("colorpicker")) { groups = _.map($clpicker.children(), function (el) { return $(el).find("button").empty(); }); } else { groups = [$clpicker.find("button").empty()]; } var html = "
" + _t("Theme colors") + "
" + _.map(groups, function ($group) { var $row = $("
", {"class": "note-color-row mb8"}).append($group); var $after_breaks = $row.find(".o_small + :not(.o_small)"); if ($after_breaks.length === 0) { $after_breaks = $row.find(":nth-child(8n+9)"); } $after_breaks.addClass("o_clear"); return $row[0].outerHTML; }).join("") + "
" + _t("Common colors") + "
"; var $palettes = $container.find(".note-color .note-color-palette"); $palettes.prepend(html); var $bg = $palettes.filter(":even").find("button:not(.note-color-btn)").addClass("note-color-btn"); var $fore = $palettes.filter(":odd").find("button:not(.note-color-btn)").addClass("note-color-btn"); $bg.each(function () { var $el = $(this); var className = 'bg-' + $el.data('color'); $el.attr('data-event', 'backColor').attr('data-value', className).addClass(className); }); $fore.each(function () { var $el = $(this); var className = 'text-' + $el.data('color'); $el.attr('data-event', 'foreColor').attr('data-value', className).addClass('bg-' + $el.data('color')); }); }; 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 $(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(); // padding button var $padding = $('
'); $padding.insertBefore($imagePopover.find('.btn-group:first')); var dropdown_content = [ '
  • '+_t('None')+'
  • ', '
  • '+_t('Small')+'
  • ', '
  • '+_t('Medium')+'
  • ', '
  • '+_t('Large')+'
  • ', '
  • '+_t('Xl')+'
  • ', ]; $(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 = $('