From 56052dee60967e22ec9648da9641e27c629a1c54 Mon Sep 17 00:00:00 2001 From: "Lucas Perais (lpe)" Date: Fri, 19 Jan 2018 10:14:15 +0100 Subject: [PATCH] [FIX] web,board: a kanban button action should trigger that action Before this commit, when having a kanban within a dashboard and clicking on an action button, the action was not triggered, instead, the board form view triggered 'save' on the board model leading to a server side traceback After this commit, the action button triggers the demanded one and only this one. OPW 805707 closes #22191 closes #22371 --- addons/board/static/tests/dashboard_tests.js | 52 +++++++++++++++++++ .../src/js/views/kanban/kanban_controller.js | 1 + 2 files changed, 53 insertions(+) diff --git a/addons/board/static/tests/dashboard_tests.js b/addons/board/static/tests/dashboard_tests.js index 83e65f7a9e6..d77055f11b8 100644 --- a/addons/board/static/tests/dashboard_tests.js +++ b/addons/board/static/tests/dashboard_tests.js @@ -417,5 +417,57 @@ QUnit.test('non-existing action in a dashboard', function (assert) { form.destroy(); }); +QUnit.test('clicking on a kanban\'s button should trigger the action', function (assert) { + assert.expect(2); + + var form = createView({ + View: FormView, + model: 'board', + data: this.data, + arch: '
' + + '' + + '' + + '' + + '' + + '' + + '
', + archs: { + 'partner,false,kanban': + '' + + '
' + + '' + + '
' + + '
' + + '
' + + '
', + }, + intercepts: { + execute_action: function (event) { + var data = event.data; + assert.strictEqual(data.env.model, 'partner', "should have correct model"); + assert.strictEqual(data.action_data.name, 'sitting_on_a_park_bench', + "should call correct method"); + } + }, + + mockRPC: function (route) { + if (route === '/board/static/src/img/layout_1-1-1.png') { + return $.when(); + } + if (route === '/web/action/load') { + return $.when({res_model: 'partner', view_mode: 'kanban', views: [[false, 'kanban']]}); + } + if (route === '/web/dataset/search_read') { + return $.when({records: [{foo: 'aqualung'}]}); + } + return this._super.apply(this, arguments); + } + }); + + form.$('.o_kanban_test').find('button:first').click(); + + form.destroy(); +}); + }); diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js index 91ada3a2629..6e1ac4a6e2a 100644 --- a/addons/web/static/src/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/js/views/kanban/kanban_controller.js @@ -229,6 +229,7 @@ var KanbanController = BasicController.extend({ * @param {OdooEvent} event */ _onButtonClicked: function (event) { + event.stopPropagation(); var self = this; var attrs = event.data.attrs; var record = event.data.record;