From 8ae6e490cbfd708ecf6cd9910ba916b2444d2079 Mon Sep 17 00:00:00 2001 From: Quentin Groulard Date: Fri, 24 Jan 2020 17:07:20 +0100 Subject: [PATCH] [ADD] Option open for One2Many fields With 'open' option, clicking on a row of a o2m field will open the view for the record in fullscreen rather than in a popup --- web_m2x_options/readme/USAGE.rst | 2 +- web_m2x_options/static/src/js/form.js | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/web_m2x_options/readme/USAGE.rst b/web_m2x_options/readme/USAGE.rst index 1da37a228..65ab3e969 100644 --- a/web_m2x_options/readme/USAGE.rst +++ b/web_m2x_options/readme/USAGE.rst @@ -37,7 +37,7 @@ in the field's options dict ``open`` *boolean* (Default: ``False``) - Makes many2many_tags buttons that open the linked resource + Makes many2many_tags and one2many rows buttons that open the linked resource ``no_color_picker`` *boolean* (Default: ``False``) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 1288bcc7b..eb59f8940 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -14,6 +14,7 @@ odoo.define("web_m2x_options.web_m2x_options", function (require) { var _t = core._t, FieldMany2ManyTags = relational_fields.FieldMany2ManyTags, FieldMany2One = relational_fields.FieldMany2One, + FieldOne2Many = relational_fields.FieldOne2Many, FormFieldMany2ManyTags = relational_fields.FormFieldMany2ManyTags; var web_m2x_options = rpc.query({ @@ -462,6 +463,29 @@ odoo.define("web_m2x_options.web_m2x_options", function (require) { }, }); + FieldOne2Many.include({ + _onOpenRecord: function (ev) { + var self = this; + var open = this.nodeOptions.open; + if (open && self.mode === "readonly") { + ev.stopPropagation(); + var id = ev.data.id; + var res_id = self.record.data[self.name].data.filter( + (line) => line.id === id + )[0].res_id; + self._rpc({ + model: self.field.relation, + method: "get_formview_action", + args: [[res_id]], + }).then(function (action) { + return self.do_action(action); + }); + } else { + return this._super.apply(this, arguments); + } + }, + }); + FormFieldMany2ManyTags.include({ events: _.extend({}, FormFieldMany2ManyTags.prototype.events, { "click .badge": "_onOpenBadge",