From 9b9fcfe628f330bf31bfb841476d496e7892153f Mon Sep 17 00:00:00 2001 From: Deep Patel Date: Tue, 12 Sep 2017 18:40:29 +0530 Subject: [FIX] web,base: document template widget in settings Go to General Settings, click on 'Change Document Template', and in the opened dialog, click on a template. Before this rev., it automatically closed the dialog, which was not really convenient. This rev. introduces a new field widget (image_selection) for this use case, and ensures that the dialog doesn't close when a template is selected. Test written by @mba-odoo --- addons/web/static/src/js/fields/basic_fields.js | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'addons/web/static/src/js/fields/basic_fields.js') diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 7e6a330120e..911afea36e5 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -2391,6 +2391,56 @@ var AceEditor = DebouncedField.extend({ }, }); +var ImageSelection = AbstractField.extend({ + supportedFieldTypes: ['selection'], + events: _.extend({}, AbstractField.prototype.events, { + 'click img': '_onImgClicked', + }), + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @override + * @private + */ + _render: function () { + var self = this; + this.$el.empty(); + _.each(this.nodeOptions, function (val, key) { + var $container = $('
').addClass('col-xs-3 text-center'); + var $img = $('') + .addClass('img img-responsive img-thumbnail ml16') + .toggleClass('btn-info', key === self.value) + .attr('src', val.image_link) + .data('key', key); + $container.append($img); + if (val.preview_link) { + var $previewLink = $('') + .text('Preview') + .attr('href', val.preview_link) + .attr('target', '_blank'); + $container.append($previewLink); + } + self.$el.append($container); + }); + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @override + * @private + * @param {MouseEvent} event + */ + _onImgClicked: function (event) { + this._setValue($(event.currentTarget).data('key')); + }, +}); + return { TranslatableFieldMixin: TranslatableFieldMixin, DebouncedField: DebouncedField, @@ -2416,6 +2466,7 @@ return { HandleWidget: HandleWidget, InputField: InputField, AttachmentImage: AttachmentImage, + ImageSelection: ImageSelection, LabelSelection: LabelSelection, StateSelectionWidget: StateSelectionWidget, FavoriteWidget: FavoriteWidget, -- cgit v1.2.3