From b824a1351e0b135c32a29d11e2572b312dc3cb29 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Fri, 21 Feb 2020 10:08:36 +0100 Subject: [PATCH] [11.0] web_widget_open_tab: Allow to open tab on dashboards or trees inside other forms --- web_widget_open_tab/__manifest__.py | 11 ++++------ web_widget_open_tab/demo/res_users_view.xml | 12 +++++++++++ web_widget_open_tab/static/src/js/widget.js | 20 +++++++++++++------ .../static/src/less/open_tab.less | 10 ---------- .../{views => templates}/assets.xml | 1 - 5 files changed, 30 insertions(+), 24 deletions(-) create mode 100644 web_widget_open_tab/demo/res_users_view.xml delete mode 100644 web_widget_open_tab/static/src/less/open_tab.less rename web_widget_open_tab/{views => templates}/assets.xml (74%) diff --git a/web_widget_open_tab/__manifest__.py b/web_widget_open_tab/__manifest__.py index cdaf4a12b..8661ceb2d 100644 --- a/web_widget_open_tab/__manifest__.py +++ b/web_widget_open_tab/__manifest__.py @@ -1,4 +1,4 @@ -# Copyright 2019 Creu Blanca +# Copyright 2019-2020 Creu Blanca # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { @@ -9,10 +9,7 @@ 'license': 'AGPL-3', 'author': 'Creu Blanca,Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/web', - 'depends': [ - 'web' - ], - 'data': [ - 'views/assets.xml', - ], + 'depends': ['web'], + 'data': ['templates/assets.xml'], + 'demo': ['demo/res_users_view.xml'], } diff --git a/web_widget_open_tab/demo/res_users_view.xml b/web_widget_open_tab/demo/res_users_view.xml new file mode 100644 index 000000000..eddafa455 --- /dev/null +++ b/web_widget_open_tab/demo/res_users_view.xml @@ -0,0 +1,12 @@ + + + + res.users + + + + + + + + diff --git a/web_widget_open_tab/static/src/js/widget.js b/web_widget_open_tab/static/src/js/widget.js index 4941d8fe9..52d9413ef 100644 --- a/web_widget_open_tab/static/src/js/widget.js +++ b/web_widget_open_tab/static/src/js/widget.js @@ -11,6 +11,7 @@ odoo.define('web_widget_open_tab.FieldOpenTab', function(require) { var FieldOpenTab = AbstractField.extend({ description: "", + // We want to maintain it black in order to show nothing on the header supportedFieldTypes: ['integer'], events: _.extend({}, AbstractField.prototype.events, { 'click': '_onClick', @@ -19,13 +20,20 @@ odoo.define('web_widget_open_tab.FieldOpenTab', function(require) { return true; }, _getReference: function () { - var url = new URL(window.location.href); - return url.hash.replace(/view_type=\w+/i, "view_type=form") + '&id=' + this.res_id; + var url = window.location.href; + var searchParams = new URLSearchParams(url.split('#')[1]); + searchParams.set('view_type', 'form'); + searchParams.set('id', this.res_id); + if (! searchParams.has('model')) { + searchParams.set('model', this.model) + } + return url.split('#')[0] + '#' + searchParams.toString(); }, _renderReadonly: function () { - var $content = $( - '' - ).addClass('open_tab_widget fa fa-eye'); + var $content = $("", { + "href": this._getReference(), + "class": "open_tab_widget fa fa-eye", + }); var self = this; $content.tooltip({ delay: { show: 1000, hide: 0 }, @@ -42,7 +50,7 @@ odoo.define('web_widget_open_tab.FieldOpenTab', function(require) { }); }, }); - this.$el.append($content) + this.$el.append($content); }, _onClick: function (ev) { ev.preventDefault(); diff --git a/web_widget_open_tab/static/src/less/open_tab.less b/web_widget_open_tab/static/src/less/open_tab.less deleted file mode 100644 index b4bb6fd11..000000000 --- a/web_widget_open_tab/static/src/less/open_tab.less +++ /dev/null @@ -1,10 +0,0 @@ -.open_tab_widget { - .child { - visibility: hidden; - } - &:hover { - .child { - visibility: visible; - } - } -} diff --git a/web_widget_open_tab/views/assets.xml b/web_widget_open_tab/templates/assets.xml similarity index 74% rename from web_widget_open_tab/views/assets.xml rename to web_widget_open_tab/templates/assets.xml index 31ea81804..8f6b9b5a2 100644 --- a/web_widget_open_tab/views/assets.xml +++ b/web_widget_open_tab/templates/assets.xml @@ -4,7 +4,6 @@