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');
/**