summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-11-02 10:52:55 +0100
committerChristophe Simonis <chs@odoo.com>2018-11-02 10:52:55 +0100
commit5e055a2afd23bd4e6a29c18c86d1978dcd98fc9f (patch)
tree058c2cef359de70f7bbabacaa63446fa189af12e /addons/web_editor/static/src/js
parent486777654009aa372a21e9d6dd52e8c22173ee16 (diff)
parentf6ca72b3ce9ecc9007ae5825d2c648e3b26b098e (diff)
[MERGE] forward port branch saas-11.4 up to f6ca72b3ce9
Diffstat (limited to 'addons/web_editor/static/src/js')
-rw-r--r--addons/web_editor/static/src/js/editor/rte.js8
-rw-r--r--addons/web_editor/static/src/js/editor/snippets.options.js35
2 files changed, 37 insertions, 6 deletions
diff --git a/addons/web_editor/static/src/js/editor/rte.js b/addons/web_editor/static/src/js/editor/rte.js
index bf16cc090e5..5725bc4eb0f 100644
--- a/addons/web_editor/static/src/js/editor/rte.js
+++ b/addons/web_editor/static/src/js/editor/rte.js
@@ -611,6 +611,14 @@ var RTEWidget = Widget.extend({
return;
}
+ // Removes strange _moz_abspos attribute when it appears. Cannot
+ // find another solution which works in all cases. A grabber still
+ // appears at the same time which I did not manage to remove.
+ // TODO find a complete and better solution
+ _.defer(function () {
+ $editable.find('[_moz_abspos]').removeAttr('_moz_abspos');
+ });
+
if ($target.is('a')) {
/**
* Remove content editable everywhere and add it on the link only so that characters can be added
diff --git a/addons/web_editor/static/src/js/editor/snippets.options.js b/addons/web_editor/static/src/js/editor/snippets.options.js
index 5df08ee801d..97d3777b95f 100644
--- a/addons/web_editor/static/src/js/editor/snippets.options.js
+++ b/addons/web_editor/static/src/js/editor/snippets.options.js
@@ -280,15 +280,36 @@ var SnippetOption = Widget.extend({
*/
_setActive: function () {
var self = this;
- this.$el.find('[data-toggle-class], [data-select-class]')
- .addBack('[data-toggle-class], [data-select-class]')
+ this.$el.find('[data-toggle-class]')
+ .addBack('[data-toggle-class]')
.removeClass('active')
.filter(function () {
- var $elem = $(this);
- var className = $elem.data('toggleClass') || $elem.data('selectClass');
- return self.$target.hasClass(className);
+ var className = $(this).data('toggleClass');
+ return !className || self.$target.hasClass(className);
})
.addClass('active');
+
+ _processSelectClassElements(this.$el);
+ _.each(this.$el.find('.dropdown-menu'), function (group) {
+ _processSelectClassElements($(group).children());
+ });
+
+ function _processSelectClassElements($elements) {
+ var maxNbClasses = -1;
+ $elements.filter('[data-select-class]')
+ .removeClass('active')
+ .filter(function () {
+ var className = $(this).data('selectClass');
+ var nbClasses = className ? className.split(' ').length : 0;
+ if (nbClasses >= maxNbClasses && (!className || self.$target.hasClass(className))) {
+ maxNbClasses = nbClasses;
+ return true;
+ }
+ return false;
+ })
+ .last()
+ .addClass('active');
+ }
},
//--------------------------------------------------------------------------
@@ -749,7 +770,7 @@ registry.colorpicker = SnippetOption.extend({
*/
_onColorResetButtonClick: function () {
this.$target.removeClass(this.classes).css('background-color', '');
- self.$target.trigger('content_changed');
+ this.$target.trigger('content_changed');
this.$el.find('.colorpicker button.selected').removeClass('selected');
},
});
@@ -852,7 +873,9 @@ registry.background = SnippetOption.extend({
*/
setTarget: function () {
this._super.apply(this, arguments);
+ // TODO should be automatic for all options as equal to the start method
this.bindBackgroundEvents();
+ this.__customImageSrc = this._getSrcFromCssValue();
},
//--------------------------------------------------------------------------