diff --git a/addons/board/static/src/add_to_board/add_to_board.js b/addons/board/static/src/add_to_board/add_to_board.js index 2d4cf715199..4602e156c21 100644 --- a/addons/board/static/src/add_to_board/add_to_board.js +++ b/addons/board/static/src/add_to_board/add_to_board.js @@ -52,7 +52,7 @@ export class AddToBoard extends Component { }; const result = await this.rpc("/board/add_to_dashboard", { - action_id: this.env.config.actionId, + action_id: this.env.config.actionId || false, context_to_save: contextToSave, domain, name: this.state.name, @@ -93,10 +93,10 @@ export class AddToBoard extends Component { AddToBoard.template = "board.AddToBoard"; AddToBoard.components = { Dropdown }; -const addToBoardItem = { +export const addToBoardItem = { Component: AddToBoard, groupNumber: 4, - isDisplayed: ({ config }) => config.actionType === "ir.actions.act_window", + isDisplayed: ({ config }) => config.actionType === "ir.actions.act_window" && config.actionId, }; favoriteMenuRegistry.add("add-to-board", addToBoardItem, { sequence: 10 }); diff --git a/addons/board/static/tests/add_to_dashboard_tests.js b/addons/board/static/tests/add_to_dashboard_tests.js index 6167d7227d0..c4dc1f907df 100644 --- a/addons/board/static/tests/add_to_dashboard_tests.js +++ b/addons/board/static/tests/add_to_dashboard_tests.js @@ -1,6 +1,6 @@ /** @odoo-module **/ -import { AddToBoard } from "@board/add_to_board/add_to_board"; +import { addToBoardItem } from "@board/add_to_board/add_to_board"; import { click, getFixture, @@ -84,11 +84,7 @@ QUnit.module("Board", (hooks) => { LegacyFavoriteMenu.registry.add("add-to-board-menu", LegacyAddToBoard, 10); favoriteMenuRegistry.add( "add-to-board", - { - Component: AddToBoard, - groupNumber: 4, - isDisplayed: ({ config }) => config.actionType === "ir.actions.act_window", - }, + addToBoardItem, { sequence: 10 } ); serverData = { models }; @@ -281,6 +277,36 @@ QUnit.module("Board", (hooks) => { await testUtils.dom.click(target.querySelector(".o_add_to_board .dropdown-menu button")); }); + QUnit.test("add to dashboard with no action id", async function (assert) { + assert.expect(2); + + serverData.views = { + "partner,false,pivot": '', + "partner,false,search": '', + }; + registry.category("services").add("user", makeFakeUserService()); + const webClient = await createWebClient({ serverData }); + + await doAction(webClient, { + id: false, + res_model: "partner", + type: "ir.actions.act_window", + views: [[false, "pivot"]], + }); + await toggleFavoriteMenu(target); + assert.containsNone(target, ".o_add_to_board"); + + // Sanity check + await doAction(webClient, { + id: 1, + res_model: "partner", + type: "ir.actions.act_window", + views: [[false, "pivot"]], + }); + await toggleFavoriteMenu(target); + assert.containsOnce(target, ".o_add_to_board"); + }); + QUnit.test( "correctly save the time ranges of a reporting view in comparison mode", async function (assert) {