From 5545787e2ce1dc4e4b151bd8d21731012f5b8527 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Wed, 19 Dec 2018 07:40:31 +0000 Subject: [PATCH] [FIX] web: fetch toolbar info for target=current actions The 'Actions' menu displayed in the control panel (aka sidebar, or toolbar), wasn't displayed anymore since the control panel refactoring of 4cd379cf6e. Rev. c1752b834 correctly made it appear again in list and form views. However, there was another issue as the additional model-related items (like Print, or custom actions) weren't fetched anymore. Thus, the sidebar only contained the default 'Export' and 'Delete' actions. This rev. fixes the second issue. fixes #29546 closes odoo/odoo#29633 --- .../js/chrome/action_manager_act_window.js | 2 +- .../web/static/src/js/views/list/list_view.js | 3 +++ .../tests/chrome/action_manager_tests.js | 19 ++++++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js index c1667e9b9e6..106f9f2aa47 100644 --- a/addons/web/static/src/js/chrome/action_manager_act_window.js +++ b/addons/web/static/src/js/chrome/action_manager_act_window.js @@ -396,7 +396,7 @@ ActionManager.include({ var inline = action.target === 'inline'; var options = { action_id: action.id, - toolbar: inDialog && inline, + toolbar: !inDialog && !inline, }; var views = action.views.slice(); if (!inline && !(inDialog && action.views[0][1] === 'form')) { diff --git a/addons/web/static/src/js/views/list/list_view.js b/addons/web/static/src/js/views/list/list_view.js index 3b64e7b7714..a28eb4da03a 100644 --- a/addons/web/static/src/js/views/list/list_view.js +++ b/addons/web/static/src/js/views/list/list_view.js @@ -69,6 +69,9 @@ var ListView = BasicView.extend({ params.hasSidebar = !inDialog && !inline; return params; }, + /** + * @override + */ _updateMVCParams: function () { this._super.apply(this, arguments); this.controllerParams.noLeaf = !!this.loadParams.context.group_by_no_leaf; diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 5e2679fb7fb..cf7df5376c3 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -2127,18 +2127,35 @@ QUnit.module('ActionManager', { }); QUnit.test('sidebar is present in list view', function (assert) { - assert.expect(2); + assert.expect(5); var actionManager = createActionManager({ actions: this.actions, archs: this.archs, data: this.data, + mockRPC: function (route, args) { + var res = this._super.apply(this, arguments); + if (args.method === 'load_views') { + assert.strictEqual(args.kwargs.options.toolbar, true, + "should ask for toolbar information"); + return res.then(function (fieldsViews) { + fieldsViews.list.toolbar = { + print: [{name: "Print that record"}], + }; + return fieldsViews; + }); + } + return res; + }, }); actionManager.doAction(3); + assert.isNotVisible(actionManager.$('.o_cp_sidebar button.o_dropdown_toggler_btn:contains("Print")')); assert.isNotVisible(actionManager.$('.o_cp_sidebar button.o_dropdown_toggler_btn:contains("Action")')); testUtils.dom.clickFirst(actionManager.$('input.custom-control-input')); + assert.isVisible(actionManager.$('.o_cp_sidebar button.o_dropdown_toggler_btn:contains("Print")')); assert.isVisible(actionManager.$('.o_cp_sidebar button.o_dropdown_toggler_btn:contains("Action")')); + actionManager.destroy(); });