Skip to content

Commit de91505

Browse files
authored
Merge pull request #2075 from umbraco/v14/bugfix/hide-content-workspace-view-when-no-properties
Bugfix: Hide Content Editor workspace view when no properties (Document, Media, Member)
2 parents 59118e5 + b3a39ac commit de91505

File tree

13 files changed

+70
-10
lines changed

13 files changed

+70
-10
lines changed

src/packages/core/content/workspace/content-workspace.context-token.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import type { UmbContentWorkspaceContext } from './content-workspace-context.interface.js';
21
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
2+
import type { UmbContentWorkspaceContext } from './content-workspace-context.interface.js';
33

44
export const UMB_CONTENT_WORKSPACE_CONTEXT = new UmbContextToken<
55
UmbContentWorkspaceContext,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export type * from './content-workspace-context.interface.js';
22
export * from './content-workspace.context-token.js';
3+
export * from './views/edit/index.js';
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
import { contentEditorManifest } from './views/edit/manifest.js';
1+
import { manifests as contentEditorManifests } from './views/edit/manifests.js';
22

3-
export const manifests = [contentEditorManifest];
3+
export const manifests = [...contentEditorManifests];
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const UMB_CONTENT_HAS_PROPERTIES_WORKSPACE_CONDITION = 'Umb.Condition.Workspace.ContentHasProperties';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import type { ManifestCondition } from '@umbraco-cms/backoffice/extension-api';
2+
3+
export const manifest: ManifestCondition = {
4+
type: 'condition',
5+
name: 'Content has properties Workspace Condition',
6+
alias: 'Umb.Condition.Workspace.ContentHasProperties',
7+
api: () => import('./content-has-properties.condition.js'),
8+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { UMB_CONTENT_WORKSPACE_CONTEXT } from '../../../../content-workspace.context-token.js';
2+
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
3+
import type {
4+
UmbConditionConfigBase,
5+
UmbConditionControllerArguments,
6+
UmbExtensionCondition,
7+
} from '@umbraco-cms/backoffice/extension-api';
8+
import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry';
9+
10+
export class UmbContentHasPropertiesWorkspaceCondition
11+
extends UmbConditionBase<UmbConditionConfigBase>
12+
implements UmbExtensionCondition
13+
{
14+
constructor(host: UmbControllerHost, args: UmbConditionControllerArguments<UmbConditionConfigBase>) {
15+
super(host, args);
16+
17+
this.consumeContext(UMB_CONTENT_WORKSPACE_CONTEXT, (context) => {
18+
this.observe(
19+
context.structure.contentTypes,
20+
(contentTypes) => {
21+
const hasProperties = contentTypes.some((contentType) => contentType.properties.length > 0);
22+
this.permitted = hasProperties;
23+
},
24+
'contentTypesObserver',
25+
);
26+
});
27+
}
28+
}
29+
30+
export { UmbContentHasPropertiesWorkspaceCondition as api };
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './constants.js';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { manifest as hasPropertiesManifest } from './has-properties/content-has-properties.condition.manifest.js';
2+
3+
export const manifests = [hasPropertiesManifest];
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './conditions/has-properties/index.js';

src/packages/core/content/workspace/views/edit/manifest.ts renamed to src/packages/core/content/workspace/views/edit/manifests.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import { manifests as conditionsManifests } from './conditions/manifests.js';
12
import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
23

3-
export const contentEditorManifest: UmbBackofficeManifestKind = {
4+
const contentEditorManifest: UmbBackofficeManifestKind = {
45
type: 'kind',
56
alias: 'Umb.Kind.WorkspaceView.ContentEditor',
67
matchKind: 'contentEditor',
@@ -17,3 +18,5 @@ export const contentEditorManifest: UmbBackofficeManifestKind = {
1718
},
1819
},
1920
};
21+
22+
export const manifests = [contentEditorManifest, ...conditionsManifests];

0 commit comments

Comments
 (0)