From eb75cb09b5edec9a5569377de7add644a3d989e8 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Wed, 9 Aug 2017 15:15:03 +0200 Subject: [PATCH] [ADD] web: link_button widget Add a widget to make a link to an external page in a tree view --- .../web/static/src/js/fields/basic_fields.js | 44 +++++++++++++++++++ .../static/src/js/fields/field_registry.js | 1 + 2 files changed, 45 insertions(+) diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 911afea36e5..dc4887eacc7 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(""); + 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", @@ -2451,6 +2494,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)