diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts index 07be562273..de8693f7dc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts @@ -44,7 +44,7 @@ export class UmbEntityActionsBundleElement extends UmbLitElement { this.observe( umbExtensionsRegistry .byType('entityAction') - .pipe(map((actions) => actions.filter((action) => action.meta.entityTypes.includes(this.entityType!)))), + .pipe(map((actions) => actions.filter((action) => action.forEntityTypes.includes(this.entityType!)))), (actions) => { this._hasActions = actions.length > 0; }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-user-permission.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-user-permission.model.ts index e89ce82af6..4eb5723b94 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-user-permission.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-user-permission.model.ts @@ -2,11 +2,11 @@ import type { ManifestBase } from '@umbraco-cms/backoffice/extension-api'; export interface ManifestEntityUserPermission extends ManifestBase { type: 'entityUserPermission'; + forEntityTypes: Array; meta: MetaEntityUserPermission; } export interface MetaEntityUserPermission { - entityType: string; verbs: Array; label?: string; labelKey?: string; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action-menu-item.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action-menu-item.model.ts index 4aa049ba94..4e9b9255c3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action-menu-item.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/workspace-action-menu-item.model.ts @@ -1,15 +1,17 @@ import type { ConditionTypes } from '../conditions/types.js'; import type { MetaEntityAction } from './entity-action.model.js'; +import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import type { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api'; import type { UmbWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; export interface ManifestWorkspaceActionMenuItem - extends ManifestElementAndApi, + extends ManifestElementAndApi, ManifestWithDynamicConditions { type: 'workspaceActionMenuItem'; meta: MetaWorkspaceActionMenuItem; } +// TODO: Stop inheriting from from EntityActions, they are not equivalent as workspace actions have the workspace context available. [NL] export interface MetaWorkspaceActionMenuItem extends MetaEntityAction { /** * Define which workspace actions this menu item should be shown for. diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-base/tree-item-context-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-base/tree-item-context-base.ts index 13ff962fac..1058ab101a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-base/tree-item-context-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-base/tree-item-context-base.ts @@ -250,7 +250,7 @@ export abstract class UmbTreeItemContextBase actions.filter((action) => action.meta.entityTypes.includes(this.entityType!)))), + .pipe(map((actions) => actions.filter((action) => action.forEntityTypes.includes(this.entityType!)))), (actions) => { this.#hasActions.setValue(actions.length > 0); }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item.element.ts index 43ffdd96f4..ecbde79edb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item.element.ts @@ -23,7 +23,7 @@ export class UmbTreeItemElement extends UmbExtensionElementAndApiSlotElementBase const filterByEntityType = (manifest: ManifestTreeItem) => { if (!this._entityType) return false; - return manifest.meta.entityTypes.includes(this._entityType); + return manifest.forEntityTypes.includes(this._entityType); }; this.observe( diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts index e4fdbff634..1fc1880cb9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/user-permissions/manifests.ts @@ -27,8 +27,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_READ, name: 'Read Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Read'], labelKey: 'actions_browse', descriptionKey: 'actionDescriptions_browse', @@ -38,8 +38,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_CREATE_BLUEPRINT, name: 'Create Document Blueprint User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.CreateBlueprint'], labelKey: 'actions_createblueprint', descriptionKey: 'actionDescriptions_createblueprint', @@ -49,8 +49,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_DELETE, name: 'Delete Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Delete'], labelKey: 'actions_delete', descriptionKey: 'actionDescriptions_delete', @@ -60,8 +60,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_CREATE, name: 'Create Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Create'], labelKey: 'actions_create', descriptionKey: 'actionDescriptions_create', @@ -71,8 +71,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_NOTIFICATIONS, name: 'Document Notifications User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Notifications'], labelKey: 'actions_notify', descriptionKey: 'actionDescriptions_notify', @@ -82,8 +82,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_PUBLISH, name: 'Publish Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Publish'], labelKey: 'actions_publish', descriptionKey: 'actionDescriptions_publish', @@ -93,8 +93,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_PERMISSIONS, name: 'Document Permissions User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Permissions'], labelKey: 'actions_setPermissions', descriptionKey: 'actionDescriptions_rights', @@ -104,8 +104,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH, name: 'Unpublish Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Unpublish'], labelKey: 'actions_unpublish', descriptionKey: 'actionDescriptions_unpublish', @@ -115,8 +115,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_UPDATE, name: 'Update Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Update'], labelKey: 'actions_update', descriptionKey: 'actionDescriptions_update', @@ -126,8 +126,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_DUPLICATE, name: 'Duplicate Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Duplicate'], labelKey: 'actions_copy', descriptionKey: 'actionDescriptions_copy', @@ -138,8 +138,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_MOVE, name: 'Move Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Move'], labelKey: 'actions_move', descriptionKey: 'actionDescriptions_move', @@ -150,8 +150,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_SORT, name: 'Sort Document User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Sort'], labelKey: 'actions_sort', descriptionKey: 'actionDescriptions_sort', @@ -162,8 +162,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_CULTURE_AND_HOSTNAMES, name: 'Document Culture And Hostnames User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.CultureAndHostnames'], labelKey: 'actions_assigndomain', descriptionKey: 'actionDescriptions_assignDomain', @@ -174,8 +174,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_PUBLIC_ACCESS, name: 'Document Public Access User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.PublicAccess'], labelKey: 'actions_protect', descriptionKey: 'actionDescriptions_protect', @@ -186,8 +186,8 @@ const permissions: Array = [ type: 'entityUserPermission', alias: UMB_USER_PERMISSION_DOCUMENT_ROLLBACK, name: 'Document Rollback User Permission', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { - entityType: UMB_DOCUMENT_ENTITY_TYPE, verbs: ['Umb.Document.Rollback'], labelKey: 'actions_rollback', descriptionKey: 'actionDescriptions_rollback', diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/components/user-group-entity-user-permission-list.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/components/user-group-entity-user-permission-list.element.ts index 5722e589a9..b72e3464be 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/components/user-group-entity-user-permission-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/components/user-group-entity-user-permission-list.element.ts @@ -36,7 +36,7 @@ export class UmbUserGroupEntityUserPermissionListElement extends UmbLitElement { this.observe( umbExtensionsRegistry.byType('entityUserPermission'), (manifests) => { - this._entityTypes = [...new Set(manifests.map((manifest) => manifest.meta.entityType))]; + this._entityTypes = [...new Set(manifests.map((manifest) => manifest.entityTypeFor))]; }, 'umbUserPermissionsObserver', ); diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user-permission/components/input-entity-user-permission/input-entity-user-permission.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user-permission/components/input-entity-user-permission/input-entity-user-permission.element.ts index 75697d1a24..77fc38e38f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user-permission/components/input-entity-user-permission/input-entity-user-permission.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user-permission/components/input-entity-user-permission/input-entity-user-permission.element.ts @@ -42,7 +42,9 @@ export class UmbInputEntityUserPermissionElement extends FormControlMixin(UmbLit this.#manifestObserver = this.observe( umbExtensionsRegistry.byType('entityUserPermission'), (userPermissionManifests) => { - this._manifests = userPermissionManifests.filter((manifest) => manifest.meta.entityType === this.entityType); + this._manifests = userPermissionManifests.filter((manifest) => + manifest.forEntityTypes.some((x) => x === this.entityType), + ); }, 'umbUserPermissionManifestsObserver', );