MuK IT GmbH
6 years ago
6 changed files with 167 additions and 3 deletions
-
3muk_web_utils/__manifest__.py
-
7muk_web_utils/doc/changelog.rst
-
93muk_web_utils/static/src/js/editor/snippets/options.js
-
22muk_web_utils/static/src/scss/editor.scss
-
10muk_web_utils/template/assets.xml
-
33muk_web_utils/template/editor.xml
@ -0,0 +1,93 @@ |
|||
/********************************************************************************** |
|||
* |
|||
* Copyright (C) 2017 MuK IT GmbH |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
**********************************************************************************/ |
|||
|
|||
odoo.define('muk_web_utils.snippet_options', function (require) { |
|||
"use strict"; |
|||
|
|||
var core = require('web.core'); |
|||
var colorpicker = require('web.colorpicker'); |
|||
var options = require('web_editor.snippets.options'); |
|||
|
|||
var _t = core._t; |
|||
var QWeb = core.qweb; |
|||
|
|||
options.registry.colorpicker.include({ |
|||
events: _.extend({}, options.registry.colorpicker.prototype.events || {}, { |
|||
'click .mk_add_custom_color': '_onCustomColorButtonClick', |
|||
}), |
|||
start: function () { |
|||
var res = this._super.apply(this, arguments); |
|||
this._renderPickedColors(); |
|||
return res; |
|||
}, |
|||
onFocus: function () { |
|||
this._renderPickedColors(); |
|||
}, |
|||
_renderPickedColors: function () { |
|||
var $editable = window.__EditorMenuBar_$editable; |
|||
if (this.$el.find('.colorpicker').length && $editable.length) { |
|||
var $snippets = $editable.find('.mk_custom_background'); |
|||
var colors = _.map($snippets, function ($el) { |
|||
return $el.style.backgroundColor; |
|||
}); |
|||
this.$el.find('.colorpicker .mk_custom_color').remove(); |
|||
this.$el.find('.colorpicker button.selected').removeClass('selected'); |
|||
_.each( _.uniq(colors), function (color) { |
|||
var classes = ['mk_custom_color']; |
|||
if (this.$target.css('background-color') === color) { |
|||
classes.push('selected'); |
|||
} |
|||
var $colorButton = $('<button/>', { |
|||
style: 'background-color:' + color + ';', |
|||
class: classes.join(' '), |
|||
}); |
|||
this.$el.find('.mk_add_custom_color').before($colorButton); |
|||
}, this); |
|||
} |
|||
}, |
|||
_onColorButtonEnter: function (event) { |
|||
this._super.apply(this, arguments); |
|||
if ($(event.target).hasClass('mk_custom_color')) { |
|||
var color = event.currentTarget.style.backgroundColor; |
|||
this.$target.removeClass(this.classes); |
|||
this.$target.css('background-color', color); |
|||
this.$target.trigger('background-color-event', true); |
|||
} |
|||
}, |
|||
_onColorButtonClick: function (event) { |
|||
this._super.apply(this, arguments); |
|||
var isCustomColor = $(event.target).hasClass('mk_custom_color'); |
|||
this.$target.toggleClass('mk_custom_background', isCustomColor); |
|||
this._renderPickedColors(); |
|||
}, |
|||
_onCustomColorButtonClick: function () { |
|||
var ColorpickerDialog = new colorpicker(this, {}); |
|||
ColorpickerDialog.on('colorpicker:saved', this, function (event) { |
|||
this.$target.removeClass(this.classes); |
|||
this.$target.addClass('mk_custom_background'); |
|||
this.$target.css('background-color', event.data.cssColor); |
|||
this.$target.closest('.o_editable').trigger('content_changed'); |
|||
this.$target.trigger('background-color-event', false); |
|||
this._renderPickedColors(); |
|||
}); |
|||
ColorpickerDialog.open(); |
|||
}, |
|||
}); |
|||
|
|||
}); |
@ -0,0 +1,22 @@ |
|||
/********************************************************************************** |
|||
* |
|||
* Copyright (C) 2017 MuK IT GmbH |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
**********************************************************************************/ |
|||
|
|||
.mk_add_custom_color { |
|||
padding: 0 ! important; |
|||
} |
@ -0,0 +1,33 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
|
|||
<!-- |
|||
Copyright (C) 2018 MuK IT GmbH |
|||
|
|||
This program is free software: you can redistribute it and/or modify |
|||
it under the terms of the GNU Affero General Public License as |
|||
published by the Free Software Foundation, either version 3 of the |
|||
License, or (at your option) any later version. |
|||
|
|||
This program is distributed in the hope that it will be useful, |
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
GNU Affero General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU Affero General Public License |
|||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
--> |
|||
|
|||
<odoo> |
|||
|
|||
<template id="colorpicker" name="Color Picker" inherit_id="web_editor.colorpicker"> |
|||
<xpath expr="//colorpicker/div[@data-name='common']" position="after"> |
|||
<div class="o_colorpicker_section" data-name="custom" data-display="Custom Colors"> |
|||
<a class="btn w-100 d-block mt-2 float-left mk_add_custom_color"> |
|||
<i class="fa fa-plus"></i> |
|||
Add Custom Color |
|||
</a> |
|||
</div> |
|||
</xpath> |
|||
</template> |
|||
|
|||
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue