diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js b/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js
new file mode 100644
index 0000000000..e19585b823
--- /dev/null
+++ b/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js
@@ -0,0 +1,2 @@
+// Overwritten in EE
+export default () => null;
diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/index.js
deleted file mode 100644
index 14b26d7a15..0000000000
--- a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export * from './ReviewWorkflowsStage';
diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicTable/index.js b/packages/core/admin/admin/src/content-manager/components/DynamicTable/index.js
index 9cdbed71d8..721dbd8fb5 100644
--- a/packages/core/admin/admin/src/content-manager/components/DynamicTable/index.js
+++ b/packages/core/admin/admin/src/content-manager/components/DynamicTable/index.js
@@ -4,6 +4,7 @@ import { useIntl } from 'react-intl';
import { DynamicTable as Table, useStrapiApp } from '@strapi/helper-plugin';
import { useSelector } from 'react-redux';
+import getReviewWorkflowsColumn from 'ee_else_ce/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn';
import { INJECT_COLUMN_IN_TABLE } from '../../../exposedHooks';
import { selectDisplayedHeaders } from '../../pages/ListView/selectors';
import { getTrad } from '../../utils';
@@ -11,7 +12,6 @@ import TableRows from './TableRows';
import ConfirmDialogDeleteAll from './ConfirmDialogDeleteAll';
import ConfirmDialogDelete from './ConfirmDialogDelete';
import { PublicationState } from './CellContent/PublicationState/PublicationState';
-import { ReviewWorkflowsStage } from './CellContent/ReviewWorkflowsStage';
const DynamicTable = ({
canCreate,
@@ -27,7 +27,6 @@ const DynamicTable = ({
}) => {
const { runHookWaterfall } = useStrapiApp();
const hasDraftAndPublish = layout.contentType.options?.draftAndPublish ?? false;
- const hasReviewWorkflows = layout.contentType.options?.reviewWorkflows ?? false;
const { formatMessage } = useIntl();
const displayedHeaders = useSelector(selectDisplayedHeaders);
@@ -74,36 +73,19 @@ const DynamicTable = ({
});
}
- if (hasReviewWorkflows) {
- formattedHeaders.push({
- key: '__strapi_reviewWorkflows_stage_temp_key__',
- name: 'strapi_reviewWorkflows_stage',
- fieldSchema: {
- type: 'custom',
- },
- metadatas: {
- label: formatMessage({
- id: getTrad(`containers.ListPage.table-headers.reviewWorkflows.stage`),
- defaultMessage: 'Review stage',
- }),
- searchable: false,
- sortable: false,
- },
- cellFormatter({ strapi_reviewWorkflows_stage }) {
- return ;
- },
- });
+ // this should not exist. Ideally we would use registerHook() similar to what has been done
+ // in the i18n plugin. In order to do that review-workflows should have been a plugin. In
+ // a future iteration we need to find a better pattern.
+
+ // In CE this will return null - in EE a column definition including the custom formatting component.
+ const reviewWorkflowColumn = getReviewWorkflowsColumn(layout);
+
+ if (reviewWorkflowColumn) {
+ formattedHeaders.push(reviewWorkflowColumn);
}
return formattedHeaders;
- }, [
- runHookWaterfall,
- displayedHeaders,
- layout,
- hasDraftAndPublish,
- hasReviewWorkflows,
- formatMessage,
- ]);
+ }, [runHookWaterfall, displayedHeaders, layout, hasDraftAndPublish, formatMessage]);
return (
{name}
@@ -10,6 +10,6 @@ export function ReviewWorkflowsStage({ name }) {
);
}
-ReviewWorkflowsStage.propTypes = {
+ReviewWorkflowsStageEE.propTypes = {
name: PropTypes.string.isRequired,
};
diff --git a/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js b/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js
new file mode 100644
index 0000000000..0d8dc800b4
--- /dev/null
+++ b/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js
@@ -0,0 +1,38 @@
+import React from 'react';
+import { useIntl } from 'react-intl';
+
+import ReviewWorkflowsStage from '.';
+import getTrad from '../../../../../../../admin/src/content-manager/utils/getTrad';
+
+export default (layout) => {
+ const { formatMessage } = useIntl();
+
+ // TODO: As soon as the feature was enabled in EE mode, the BE currently does not have a way to send
+ // `false` once a user is in CE mode again. We shouldn't have to perform the window.strapi.isEE check here
+ // and it is meant to be in interim solution until we find a better one.
+ const hasReviewWorkflows =
+ (window.strapi.isEE && layout.contentType.options?.reviewWorkflows) ?? false;
+
+ if (!hasReviewWorkflows) {
+ return null;
+ }
+
+ return {
+ key: '__strapi_reviewWorkflows_stage_temp_key__',
+ name: 'strapi_reviewWorkflows_stage',
+ fieldSchema: {
+ type: 'custom',
+ },
+ metadatas: {
+ label: formatMessage({
+ id: getTrad(`containers.ListPage.table-headers.reviewWorkflows.stage`),
+ defaultMessage: 'Review stage',
+ }),
+ searchable: false,
+ sortable: false,
+ },
+ cellFormatter({ strapi_reviewWorkflows_stage }) {
+ return ;
+ },
+ };
+};
diff --git a/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/index.js b/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/index.js
new file mode 100644
index 0000000000..9d18524090
--- /dev/null
+++ b/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/index.js
@@ -0,0 +1,3 @@
+import { ReviewWorkflowsStageEE } from './ReviewWorkflowsStageEE';
+
+export default ReviewWorkflowsStageEE;
diff --git a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/tests/ReviewWorkflowsStage.test.js b/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/tests/ReviewWorkflowsStage.test.js
similarity index 93%
rename from packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/tests/ReviewWorkflowsStage.test.js
rename to packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/tests/ReviewWorkflowsStage.test.js
index 9134aa39fe..8d17245507 100644
--- a/packages/core/admin/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/tests/ReviewWorkflowsStage.test.js
+++ b/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/tests/ReviewWorkflowsStage.test.js
@@ -3,7 +3,7 @@ import { render } from '@testing-library/react';
import { ThemeProvider, lightTheme } from '@strapi/design-system';
import { IntlProvider } from 'react-intl';
-import { ReviewWorkflowsStage } from '..';
+import ReviewWorkflowsStage from '..';
const ComponentFixture = (props) => (