more forEntityTypes

This commit is contained in:
Niels Lyngsø
2024-03-03 23:08:50 +01:00
parent 24a7a2b368
commit 78a1879e23
8 changed files with 26 additions and 22 deletions

View File

@@ -44,7 +44,7 @@ export class UmbEntityActionsBundleElement extends UmbLitElement {
this.observe( this.observe(
umbExtensionsRegistry umbExtensionsRegistry
.byType('entityAction') .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) => { (actions) => {
this._hasActions = actions.length > 0; this._hasActions = actions.length > 0;
}, },

View File

@@ -2,11 +2,11 @@ import type { ManifestBase } from '@umbraco-cms/backoffice/extension-api';
export interface ManifestEntityUserPermission extends ManifestBase { export interface ManifestEntityUserPermission extends ManifestBase {
type: 'entityUserPermission'; type: 'entityUserPermission';
forEntityTypes: Array<string>;
meta: MetaEntityUserPermission; meta: MetaEntityUserPermission;
} }
export interface MetaEntityUserPermission { export interface MetaEntityUserPermission {
entityType: string;
verbs: Array<string>; verbs: Array<string>;
label?: string; label?: string;
labelKey?: string; labelKey?: string;

View File

@@ -1,15 +1,17 @@
import type { ConditionTypes } from '../conditions/types.js'; import type { ConditionTypes } from '../conditions/types.js';
import type { MetaEntityAction } from './entity-action.model.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 { ManifestElementAndApi, ManifestWithDynamicConditions } from '@umbraco-cms/backoffice/extension-api';
import type { UmbWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { UmbWorkspaceAction } from '@umbraco-cms/backoffice/workspace';
export interface ManifestWorkspaceActionMenuItem export interface ManifestWorkspaceActionMenuItem
extends ManifestElementAndApi<HTMLElement, UmbWorkspaceAction>, extends ManifestElementAndApi<UmbControllerHostElement, UmbWorkspaceAction>,
ManifestWithDynamicConditions<ConditionTypes> { ManifestWithDynamicConditions<ConditionTypes> {
type: 'workspaceActionMenuItem'; type: 'workspaceActionMenuItem';
meta: MetaWorkspaceActionMenuItem; 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 { export interface MetaWorkspaceActionMenuItem extends MetaEntityAction {
/** /**
* Define which workspace actions this menu item should be shown for. * Define which workspace actions this menu item should be shown for.

View File

@@ -250,7 +250,7 @@ export abstract class UmbTreeItemContextBase<TreeItemType extends UmbTreeItemMod
this.observe( this.observe(
umbExtensionsRegistry umbExtensionsRegistry
.byType('entityAction') .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) => { (actions) => {
this.#hasActions.setValue(actions.length > 0); this.#hasActions.setValue(actions.length > 0);
}, },

View File

@@ -23,7 +23,7 @@ export class UmbTreeItemElement extends UmbExtensionElementAndApiSlotElementBase
const filterByEntityType = (manifest: ManifestTreeItem) => { const filterByEntityType = (manifest: ManifestTreeItem) => {
if (!this._entityType) return false; if (!this._entityType) return false;
return manifest.meta.entityTypes.includes(this._entityType); return manifest.forEntityTypes.includes(this._entityType);
}; };
this.observe( this.observe(

View File

@@ -27,8 +27,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_READ, alias: UMB_USER_PERMISSION_DOCUMENT_READ,
name: 'Read Document User Permission', name: 'Read Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Read'], verbs: ['Umb.Document.Read'],
labelKey: 'actions_browse', labelKey: 'actions_browse',
descriptionKey: 'actionDescriptions_browse', descriptionKey: 'actionDescriptions_browse',
@@ -38,8 +38,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_CREATE_BLUEPRINT, alias: UMB_USER_PERMISSION_DOCUMENT_CREATE_BLUEPRINT,
name: 'Create Document Blueprint User Permission', name: 'Create Document Blueprint User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.CreateBlueprint'], verbs: ['Umb.Document.CreateBlueprint'],
labelKey: 'actions_createblueprint', labelKey: 'actions_createblueprint',
descriptionKey: 'actionDescriptions_createblueprint', descriptionKey: 'actionDescriptions_createblueprint',
@@ -49,8 +49,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_DELETE, alias: UMB_USER_PERMISSION_DOCUMENT_DELETE,
name: 'Delete Document User Permission', name: 'Delete Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Delete'], verbs: ['Umb.Document.Delete'],
labelKey: 'actions_delete', labelKey: 'actions_delete',
descriptionKey: 'actionDescriptions_delete', descriptionKey: 'actionDescriptions_delete',
@@ -60,8 +60,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_CREATE, alias: UMB_USER_PERMISSION_DOCUMENT_CREATE,
name: 'Create Document User Permission', name: 'Create Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Create'], verbs: ['Umb.Document.Create'],
labelKey: 'actions_create', labelKey: 'actions_create',
descriptionKey: 'actionDescriptions_create', descriptionKey: 'actionDescriptions_create',
@@ -71,8 +71,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_NOTIFICATIONS, alias: UMB_USER_PERMISSION_DOCUMENT_NOTIFICATIONS,
name: 'Document Notifications User Permission', name: 'Document Notifications User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Notifications'], verbs: ['Umb.Document.Notifications'],
labelKey: 'actions_notify', labelKey: 'actions_notify',
descriptionKey: 'actionDescriptions_notify', descriptionKey: 'actionDescriptions_notify',
@@ -82,8 +82,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_PUBLISH, alias: UMB_USER_PERMISSION_DOCUMENT_PUBLISH,
name: 'Publish Document User Permission', name: 'Publish Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Publish'], verbs: ['Umb.Document.Publish'],
labelKey: 'actions_publish', labelKey: 'actions_publish',
descriptionKey: 'actionDescriptions_publish', descriptionKey: 'actionDescriptions_publish',
@@ -93,8 +93,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_PERMISSIONS, alias: UMB_USER_PERMISSION_DOCUMENT_PERMISSIONS,
name: 'Document Permissions User Permission', name: 'Document Permissions User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Permissions'], verbs: ['Umb.Document.Permissions'],
labelKey: 'actions_setPermissions', labelKey: 'actions_setPermissions',
descriptionKey: 'actionDescriptions_rights', descriptionKey: 'actionDescriptions_rights',
@@ -104,8 +104,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH, alias: UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH,
name: 'Unpublish Document User Permission', name: 'Unpublish Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Unpublish'], verbs: ['Umb.Document.Unpublish'],
labelKey: 'actions_unpublish', labelKey: 'actions_unpublish',
descriptionKey: 'actionDescriptions_unpublish', descriptionKey: 'actionDescriptions_unpublish',
@@ -115,8 +115,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_UPDATE, alias: UMB_USER_PERMISSION_DOCUMENT_UPDATE,
name: 'Update Document User Permission', name: 'Update Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Update'], verbs: ['Umb.Document.Update'],
labelKey: 'actions_update', labelKey: 'actions_update',
descriptionKey: 'actionDescriptions_update', descriptionKey: 'actionDescriptions_update',
@@ -126,8 +126,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_DUPLICATE, alias: UMB_USER_PERMISSION_DOCUMENT_DUPLICATE,
name: 'Duplicate Document User Permission', name: 'Duplicate Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Duplicate'], verbs: ['Umb.Document.Duplicate'],
labelKey: 'actions_copy', labelKey: 'actions_copy',
descriptionKey: 'actionDescriptions_copy', descriptionKey: 'actionDescriptions_copy',
@@ -138,8 +138,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_MOVE, alias: UMB_USER_PERMISSION_DOCUMENT_MOVE,
name: 'Move Document User Permission', name: 'Move Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Move'], verbs: ['Umb.Document.Move'],
labelKey: 'actions_move', labelKey: 'actions_move',
descriptionKey: 'actionDescriptions_move', descriptionKey: 'actionDescriptions_move',
@@ -150,8 +150,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_SORT, alias: UMB_USER_PERMISSION_DOCUMENT_SORT,
name: 'Sort Document User Permission', name: 'Sort Document User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Sort'], verbs: ['Umb.Document.Sort'],
labelKey: 'actions_sort', labelKey: 'actions_sort',
descriptionKey: 'actionDescriptions_sort', descriptionKey: 'actionDescriptions_sort',
@@ -162,8 +162,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_CULTURE_AND_HOSTNAMES, alias: UMB_USER_PERMISSION_DOCUMENT_CULTURE_AND_HOSTNAMES,
name: 'Document Culture And Hostnames User Permission', name: 'Document Culture And Hostnames User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.CultureAndHostnames'], verbs: ['Umb.Document.CultureAndHostnames'],
labelKey: 'actions_assigndomain', labelKey: 'actions_assigndomain',
descriptionKey: 'actionDescriptions_assignDomain', descriptionKey: 'actionDescriptions_assignDomain',
@@ -174,8 +174,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_PUBLIC_ACCESS, alias: UMB_USER_PERMISSION_DOCUMENT_PUBLIC_ACCESS,
name: 'Document Public Access User Permission', name: 'Document Public Access User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.PublicAccess'], verbs: ['Umb.Document.PublicAccess'],
labelKey: 'actions_protect', labelKey: 'actions_protect',
descriptionKey: 'actionDescriptions_protect', descriptionKey: 'actionDescriptions_protect',
@@ -186,8 +186,8 @@ const permissions: Array<ManifestEntityUserPermission> = [
type: 'entityUserPermission', type: 'entityUserPermission',
alias: UMB_USER_PERMISSION_DOCUMENT_ROLLBACK, alias: UMB_USER_PERMISSION_DOCUMENT_ROLLBACK,
name: 'Document Rollback User Permission', name: 'Document Rollback User Permission',
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
meta: { meta: {
entityType: UMB_DOCUMENT_ENTITY_TYPE,
verbs: ['Umb.Document.Rollback'], verbs: ['Umb.Document.Rollback'],
labelKey: 'actions_rollback', labelKey: 'actions_rollback',
descriptionKey: 'actionDescriptions_rollback', descriptionKey: 'actionDescriptions_rollback',

View File

@@ -36,7 +36,7 @@ export class UmbUserGroupEntityUserPermissionListElement extends UmbLitElement {
this.observe( this.observe(
umbExtensionsRegistry.byType('entityUserPermission'), umbExtensionsRegistry.byType('entityUserPermission'),
(manifests) => { (manifests) => {
this._entityTypes = [...new Set(manifests.map((manifest) => manifest.meta.entityType))]; this._entityTypes = [...new Set(manifests.map((manifest) => manifest.entityTypeFor))];
}, },
'umbUserPermissionsObserver', 'umbUserPermissionsObserver',
); );

View File

@@ -42,7 +42,9 @@ export class UmbInputEntityUserPermissionElement extends FormControlMixin(UmbLit
this.#manifestObserver = this.observe( this.#manifestObserver = this.observe(
umbExtensionsRegistry.byType('entityUserPermission'), umbExtensionsRegistry.byType('entityUserPermission'),
(userPermissionManifests) => { (userPermissionManifests) => {
this._manifests = userPermissionManifests.filter((manifest) => manifest.meta.entityType === this.entityType); this._manifests = userPermissionManifests.filter((manifest) =>
manifest.forEntityTypes.some((x) => x === this.entityType),
);
}, },
'umbUserPermissionManifestsObserver', 'umbUserPermissionManifestsObserver',
); );