From 29afb2b9838dc29a972be2b5b5f0c99afd1d1f9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20de=20Juvigny?= <8087692+remidej@users.noreply.github.com> Date: Mon, 9 Sep 2024 06:08:59 -0400 Subject: [PATCH] fix: delete document actions labels (#21182) * fix: delete document actions labels * chore: remove log * fix: e2e tests --- .../src/pages/EditView/components/Header.tsx | 12 ++++++++---- .../admin/src/translations/en.json | 2 +- .../admin/src/components/CMHeaderActions.tsx | 17 +++++++++++++---- .../plugins/i18n/admin/src/translations/en.json | 2 +- .../e2e/tests/content-manager/editview.spec.ts | 2 +- tests/e2e/tests/content-manager/history.spec.ts | 4 ++-- tests/e2e/tests/i18n/settings.spec.ts | 4 +++- 7 files changed, 29 insertions(+), 14 deletions(-) diff --git a/packages/core/content-manager/admin/src/pages/EditView/components/Header.tsx b/packages/core/content-manager/admin/src/pages/EditView/components/Header.tsx index 23aa1ce39e..adba2248fd 100644 --- a/packages/core/content-manager/admin/src/pages/EditView/components/Header.tsx +++ b/packages/core/content-manager/admin/src/pages/EditView/components/Header.tsx @@ -491,13 +491,17 @@ const DeleteAction: DocumentActionComponent = ({ documentId, model, collectionTy const { delete: deleteAction } = useDocumentActions(); const { toggleNotification } = useNotification(); const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting); + const isLocalized = document?.locale != null; return { disabled: !canDelete || !document, - label: formatMessage({ - id: 'content-manager.actions.delete.label', - defaultMessage: 'Delete document', - }), + label: formatMessage( + { + id: 'content-manager.actions.delete.label', + defaultMessage: 'Delete entry{isLocalized, select, true { (all locales)} other {}}', + }, + { isLocalized } + ), icon: , dialog: { type: 'dialog', diff --git a/packages/core/content-manager/admin/src/translations/en.json b/packages/core/content-manager/admin/src/translations/en.json index 8befbf7f9f..5cf7efc103 100644 --- a/packages/core/content-manager/admin/src/translations/en.json +++ b/packages/core/content-manager/admin/src/translations/en.json @@ -4,7 +4,7 @@ "actions.clone.label": "Duplicate", "actions.delete.dialog.body": "Are you sure you want to delete this document? This action is irreversible.", "actions.delete.error": "An error occurred while trying to delete the document.", - "actions.delete.label": "Delete document", + "actions.delete.label": "Delete entry{isLocalized, select, true { (all locales)} other {}}", "actions.discard.label": "Discard changes", "actions.discard.dialog.body": "Are you sure you want to discard the changes? This action is irreversible.", "actions.edit.error": "An error occurred while trying to edit the document.", diff --git a/packages/plugins/i18n/admin/src/components/CMHeaderActions.tsx b/packages/plugins/i18n/admin/src/components/CMHeaderActions.tsx index 96fab9c5c6..8eacc95ad9 100644 --- a/packages/plugins/i18n/admin/src/components/CMHeaderActions.tsx +++ b/packages/plugins/i18n/admin/src/components/CMHeaderActions.tsx @@ -318,6 +318,12 @@ const DeleteLocaleAction: DocumentActionComponent = ({ const { delete: deleteAction } = useDocumentActions(); const { hasI18n, canDelete } = useI18n(); + // Get the current locale object, using the URL instead of document so it works while creating + const [{ query }] = useQueryParams(); + const { data: locales = [] } = useGetLocalesQuery(); + const currentDesiredLocale = query.plugins?.i18n?.locale; + const locale = !('error' in locales) && locales.find((loc) => loc.code === currentDesiredLocale); + if (!hasI18n) { return null; } @@ -326,10 +332,13 @@ const DeleteLocaleAction: DocumentActionComponent = ({ disabled: (document?.locale && !canDelete.includes(document.locale)) || !document || !document.id, position: ['header', 'table-row'], - label: formatMessage({ - id: getTranslation('actions.delete.label'), - defaultMessage: 'Delete locale', - }), + label: formatMessage( + { + id: getTranslation('actions.delete.label'), + defaultMessage: 'Delete entry ({locale})', + }, + { locale: locale && locale.name } + ), icon: , variant: 'danger', dialog: { diff --git a/packages/plugins/i18n/admin/src/translations/en.json b/packages/plugins/i18n/admin/src/translations/en.json index 764f91757d..f9f67afe7d 100644 --- a/packages/plugins/i18n/admin/src/translations/en.json +++ b/packages/plugins/i18n/admin/src/translations/en.json @@ -1,5 +1,5 @@ { - "actions.delete.label": "Delete locale", + "actions.delete.label": "Delete entry ({locale})", "actions.delete.dialog.title": "Confirmation", "actions.delete.dialog.body": "Are you sure you want to delete this locale?", "actions.delete.error": "An error occurred while trying to delete the document locale.", diff --git a/tests/e2e/tests/content-manager/editview.spec.ts b/tests/e2e/tests/content-manager/editview.spec.ts index 8a0f31aee9..01757f46d8 100644 --- a/tests/e2e/tests/content-manager/editview.spec.ts +++ b/tests/e2e/tests/content-manager/editview.spec.ts @@ -358,7 +358,7 @@ test.describe('Edit View', () => { await page.getByRole('gridcell', { name: 'West Ham post match analysis' }).click(); await page.getByRole('button', { name: 'More actions' }).click(); - await page.getByRole('menuitem', { name: 'Delete document' }).click(); + await page.getByRole('menuitem', { name: 'Delete entry (all locales)' }).click(); await page.getByRole('button', { name: 'Confirm' }).click(); await findAndClose(page, 'Deleted Document'); diff --git a/tests/e2e/tests/content-manager/history.spec.ts b/tests/e2e/tests/content-manager/history.spec.ts index 45c1298b64..9ab622967b 100644 --- a/tests/e2e/tests/content-manager/history.spec.ts +++ b/tests/e2e/tests/content-manager/history.spec.ts @@ -227,7 +227,7 @@ describeOnCondition(edition === 'EE')('History', () => { await page.getByRole('link', { name: 'Will Kitman' }).click(); await page.waitForURL(AUTHOR_EDIT_URL); await page.getByRole('button', { name: /more actions/i }).click(); - await page.getByRole('menuitem', { name: /delete document/i }).click(); + await page.getByRole('menuitem', { name: /delete entry/i }).click(); await page.getByRole('button', { name: /confirm/i }).click(); // Go to the the article's history page @@ -461,7 +461,7 @@ describeOnCondition(edition === 'EE')('History', () => { await page.getByRole('link', { name: 'Will Kitman' }).click(); await page.waitForURL(AUTHOR_EDIT_URL); await page.getByRole('button', { name: /more actions/i }).click(); - await page.getByRole('menuitem', { name: /delete document/i }).click(); + await page.getByRole('menuitem', { name: /delete entry/i }).click(); await page.getByRole('button', { name: /confirm/i }).click(); // Go to the the article's history page diff --git a/tests/e2e/tests/i18n/settings.spec.ts b/tests/e2e/tests/i18n/settings.spec.ts index 2464eb89b2..9f2ba71bec 100644 --- a/tests/e2e/tests/i18n/settings.spec.ts +++ b/tests/e2e/tests/i18n/settings.spec.ts @@ -71,7 +71,9 @@ test.describe('Settings', () => { await expect(page.getByRole('menuitem', { name: 'Edit the model' })).toBeEnabled(); await expect(page.getByRole('menuitem', { name: 'Configure the view' })).toBeEnabled(); await expect(page.getByRole('menuitem', { name: 'Delete locale' })).toBeDisabled(); - await expect(page.getByRole('menuitem', { name: 'Delete document' })).toBeEnabled(); + await expect( + page.getByRole('menuitem', { name: 'Delete entry (all locales)' }) + ).toBeEnabled(); await page.keyboard.press('Escape'); /**