From 05a584806d985f2ebec6ca5579098fa08666e643 Mon Sep 17 00:00:00 2001 From: thsh-odoo Date: Mon, 6 Mar 2023 11:14:48 +0000 Subject: [PATCH] [IMP] web: adapt the kanban "Remove" button label MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove button is shown when the view of our field is in kanban mode. When our field is one2many it will delete the record and when our field is many2one it will remove the record. So many times user get confuse that they are deleting the record or removing the record. So to clear out the confusion this commit changes the label of remove to to delete if the field is one2many. A test was added to ensure this ux change. Task-3185967 closes odoo/odoo#126112 X-original-commit: 008f3e792bd377499fdac5b16de356f9e03b230f Signed-off-by: Warnon Aurélien (awa) --- .../src/views/fields/relational_utils.js | 6 +++- .../src/views/fields/relational_utils.xml | 5 ++- .../views/fields/one2many_field_tests.js | 36 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/views/fields/relational_utils.js b/addons/web/static/src/views/fields/relational_utils.js index fdac9aa429a..9e6d855dc9a 100644 --- a/addons/web/static/src/views/fields/relational_utils.js +++ b/addons/web/static/src/views/fields/relational_utils.js @@ -608,6 +608,7 @@ X2ManyFieldDialog.props = { save: Function, title: String, delete: { optional: true }, + deleteButtonLabel: {optional: true}, config: Object, }; X2ManyFieldDialog.template = "web.X2ManyFieldDialog"; @@ -683,6 +684,7 @@ export function useOpenX2ManyRecord({ const form = await getFormViewInfo({ list, activeField, viewService, userService, env }); let deleteRecord; + let deleteButtonLabel = undefined; const isDuplicate = !!record; if (record) { @@ -694,7 +696,8 @@ export function useOpenX2ManyRecord({ views: { form }, }); const { delete: canDelete, onDelete } = activeActions; - deleteRecord = viewMode === "kanban" && canDelete ? () => onDelete(_record) : null; + deleteRecord = viewMode === "kanban" && canDelete ? () => onDelete(_record) : null; + deleteButtonLabel = activeActions.type === 'one2many' ? env._t('Delete') : env._t('Remove'); } else { const recordParams = { context: makeContext([list.context, context]), @@ -738,6 +741,7 @@ export function useOpenX2ManyRecord({ }, title, delete: deleteRecord, + deleteButtonLabel: deleteButtonLabel, }, { onClose } ); diff --git a/addons/web/static/src/views/fields/relational_utils.xml b/addons/web/static/src/views/fields/relational_utils.xml index 20e70b41870..cf205c161c8 100644 --- a/addons/web/static/src/views/fields/relational_utils.xml +++ b/addons/web/static/src/views/fields/relational_utils.xml @@ -20,7 +20,10 @@ - + diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js index 32a05b5be07..6fa48613b16 100644 --- a/addons/web/static/tests/views/fields/one2many_field_tests.js +++ b/addons/web/static/tests/views/fields/one2many_field_tests.js @@ -2518,6 +2518,42 @@ QUnit.module("Fields", (hooks) => { await clickSave(target); }); + QUnit.test("When viewing one2many records in an embedded kanban, the delete button should say 'Delete' and not 'Remove'", async function (assert) { + assert.expect(1); + serverData.views = { + "turtle,false,form": ` +
+

Data

+
`, + }; + await makeView({ + type: "form", + resModel: "partner", + serverData, + arch: ` +
+ + + + + +
+

Record 1

+
+
+
+
+
+
`, + resId: 1, + }); + + // Opening the record to see the footer buttons + await click(target.querySelector(".o_kanban_record")); + + assert.strictEqual(target.querySelector('.o_btn_remove').textContent, 'Delete'); + }); + QUnit.test("open a record in a one2many kanban (mode 'readonly')", async function (assert) { serverData.views = { "turtle,false,form": `