summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorMartin Trigaux <mat@odoo.com>2017-08-09 15:15:03 +0200
committerMartin Trigaux <mat@odoo.com>2017-09-25 15:26:54 +0200
commiteb75cb09b5edec9a5569377de7add644a3d989e8 (patch)
tree23f22f98d90508625f232bf642cba96d4ba18c51 /addons/web/static/src/js
parent4d6041c3659f815f0a8d552713e3e11113ddddac (diff)
[ADD] web: link_button widget
Add a widget to make a link to an external page in a tree view
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js44
-rw-r--r--addons/web/static/src/js/fields/field_registry.js1
2 files changed, 45 insertions, 0 deletions
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("<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",
@@ -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)