diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-09-28 15:01:11 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-09-28 15:01:11 +0200 |
| commit | 1512c1b22993ba66a2cfff36bb92b8babca4cc95 (patch) | |
| tree | 62fe209f48ffc5b7951b307fd7e327d17c8b1165 /addons/web/static/src/js/fields | |
| parent | 63a4370afd3377de4308349283b981fac748e36c (diff) | |
| parent | 9f9a7fdd0d70c1edda94fc546916c9e3516477ad (diff) | |
[MERGE] forward port branch saas-18 up to 9f9a7fdd0d7
Diffstat (limited to 'addons/web/static/src/js/fields')
4 files changed, 64 insertions, 18 deletions
diff --git a/addons/web/static/src/js/fields/abstract_field.js b/addons/web/static/src/js/fields/abstract_field.js index 894ee57c813..e25c02f781e 100644 --- a/addons/web/static/src/js/fields/abstract_field.js +++ b/addons/web/static/src/js/fields/abstract_field.js @@ -457,7 +457,7 @@ var AbstractField = Widget.extend({ this.trigger_up('navigation_move', {direction: 'next_line'}); break; case $.ui.keyCode.ESCAPE: - this.trigger_up('navigation_move', {direction: 'cancel'}); + this.trigger_up('navigation_move', {direction: 'cancel', originalEvent: ev}); break; case $.ui.keyCode.UP: ev.stopPropagation(); diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 911afea36e5..6392870dc90 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -348,6 +348,49 @@ var FieldChar = InputField.extend(TranslatableFieldMixin, { }, }); + +var LinkButton = AbstractField.extend({ + events: _.extend({}, AbstractField.prototype.events, { + 'click': '_onClick' + }), + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * Display button + * @override + * @private + */ + _render: function () { + if (this.value) { + var className = this.attrs.icon || 'fa-globe'; + + this.$el.html("<span />"); + this.$el.addClass("fa "+ className); + this.$el.attr('title', this.value); + } + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * Open link button + * + * @private + * @param {MouseEvent} event + */ + _onClick: function (event) { + event.stopPropagation(); + window.open(this.value, '_blank'); + }, + +}); + + + var FieldDate = InputField.extend({ className: "o_field_date", tagName: "span", @@ -951,6 +994,10 @@ var FieldPhone = FieldEmail.extend({ } else { this.$el.removeClass('o_form_uri'); } + // This class should technically be there in case of a very very long + // phone number, but it breaks the o_row mechanism, which is more + // important right now. + this.$el.removeClass('o_text_overflow'); }, /** @@ -1006,7 +1053,7 @@ var UrlWidget = InputField.extend({ * @private */ _renderReadonly: function () { - this.$el.text(this.value) + this.$el.text(this.attrs.text || this.value) .addClass('o_form_uri o_text_overflow') .attr('href', this.value); } @@ -2451,6 +2498,7 @@ return { FieldBooleanButton: FieldBooleanButton, BooleanToggle: BooleanToggle, FieldChar: FieldChar, + LinkButton: LinkButton, FieldDate: FieldDate, FieldDateTime: FieldDateTime, FieldDomain: FieldDomain, diff --git a/addons/web/static/src/js/fields/field_registry.js b/addons/web/static/src/js/fields/field_registry.js index 61e371d867a..6692663d5f9 100644 --- a/addons/web/static/src/js/fields/field_registry.js +++ b/addons/web/static/src/js/fields/field_registry.js @@ -28,6 +28,7 @@ registry .add('text', basic_fields.FieldText) .add('float', basic_fields.FieldFloat) .add('char', basic_fields.FieldChar) + .add('link_button', basic_fields.LinkButton) .add('handle', basic_fields.HandleWidget) .add('email', basic_fields.FieldEmail) .add('phone', basic_fields.FieldPhone) diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index 90c2b08e1e5..f518c3df354 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -1608,7 +1608,7 @@ var FieldMany2ManyTags = AbstractField.extend({ var FormFieldMany2ManyTags = FieldMany2ManyTags.extend({ events: _.extend({}, FieldMany2ManyTags.prototype.events, { 'click .badge': '_onOpenColorPicker', - 'mousedown .o_colorpicker span': '_onUpdateColor', + 'mousedown .o_colorpicker a': '_onUpdateColor', 'focusout .o_colorpicker': '_onCloseColorPicker', }), @@ -1681,22 +1681,19 @@ var KanbanFieldMany2ManyTags = FieldMany2ManyTags.extend({ var self = this; this.$el.empty().addClass('o_field_many2manytags o_kanban_tags'); _.each(this.value.data, function (m2m) { - var $tag = $('<span>') - .text(m2m.data.display_name) - .data('res_id', m2m.res_id) - .prepend('<span>') - .appendTo(self.$el); - if (self.colorField in m2m.data) { - if (m2m.data[self.colorField] === 10) { - // 10th color is invisible - $tag.hide(); - } else { - $tag.addClass('o_tag o_tag_color_' + m2m.data[self.colorField]); - } - } else { - // display tags in grey by default - $tag.addClass('o_tag o_tag_color_0'); + if (self.colorField in m2m.data && !m2m.data[self.colorField]) { + // When a color field is specified and that color is the default + // one, the kanban tag is not rendered. + return; } + + $('<span>', { + class: 'o_tag o_tag_color_' + (m2m.data[self.colorField] || 0), + text: m2m.data.display_name, + }) + .data('res_id', m2m.res_id) + .prepend('<span>') + .appendTo(self.$el); }); }, |
