diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index 06cc8b974e..005b44829d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -10,10 +10,17 @@ export interface ManifestEntityAction extends ManifestElementAndApi>, ManifestWithDynamicConditions { type: 'entityAction'; + entityTypes: Array; meta: MetaType; } -export interface MetaEntityAction { +export interface MetaEntityAction {} +export interface ManifestEntityActionDefaultKind extends ManifestEntityAction { + type: 'entityAction'; + kind: 'default'; +} + +export interface MetaEntityActionDefaultKind extends MetaEntityAction { /** * An icon to represent the action to be performed * @@ -22,7 +29,7 @@ export interface MetaEntityAction { * "icon-grid" * ] */ - icon?: string; + icon: string; /** * The friendly name of the action to perform @@ -32,9 +39,7 @@ export interface MetaEntityAction { * "Create Content Template" * ] */ - label?: string; - - entityTypes: Array; + label: string; } // DELETE @@ -43,7 +48,7 @@ export interface ManifestEntityActionDeleteKind extends ManifestEntityAction { @@ -74,20 +79,19 @@ export interface ManifestEntityActionDuplicateKind extends ManifestEntityAction< kind: 'duplicate'; } -export interface MetaEntityActionDuplicateKind extends MetaEntityAction { +export interface MetaEntityActionDuplicateKind extends MetaEntityActionDefaultKind { duplicateRepositoryAlias: string; itemRepositoryAlias: string; pickerModalAlias: string; } // MOVE - export interface ManifestEntityActionMoveKind extends ManifestEntityAction { type: 'entityAction'; kind: 'move'; } -export interface MetaEntityActionMoveKind extends MetaEntityAction { +export interface MetaEntityActionMoveKind extends MetaEntityActionDefaultKind { moveRepositoryAlias: string; itemRepositoryAlias: string; pickerModalAlias: string; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/manifests.ts index ca988d19ad..938723ade9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/manifests.ts @@ -1,9 +1,8 @@ import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; -import { UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS } from '../../repository/index.js'; import { UmbDocumentCultureAndHostnamesEntityAction } from './culture-and-hostnames.action.js'; -import type { ManifestEntityAction, ManifestModal } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestModal, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -const entityActions: Array = [ +const entityActions: Array = [ { type: 'entityAction', alias: 'Umb.EntityAction.Document.CultureAndHostnames', @@ -13,7 +12,6 @@ const entityActions: Array = [ meta: { icon: 'icon-home', label: 'Culture and Hostnames', - repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], }, }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts index 02e2584737..64c7c099f4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts @@ -1,18 +1,13 @@ import { UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS } from '../repository/index.js'; -import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from '../entity.js'; +import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js'; import { UmbPublishDocumentEntityAction } from './publish.action.js'; import { UmbCreateDocumentBlueprintEntityAction } from './create-blueprint.action.js'; import { UmbUnpublishDocumentEntityAction } from './unpublish.action.js'; -import { UmbRollbackDocumentEntityAction } from './rollback.action.js'; import { manifests as createManifests } from './create/manifests.js'; import { manifests as publicAccessManifests } from './public-access/manifests.js'; import { manifests as cultureAndHostnamesManifests } from './culture-and-hostnames/manifests.js'; -import { - UmbDuplicateEntityAction, - UmbMoveEntityAction, - UmbSortChildrenOfEntityAction, -} from '@umbraco-cms/backoffice/entity-action'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_DOCUMENT_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; const entityActions: Array = [ ...createManifests, @@ -24,49 +19,35 @@ const entityActions: Array = [ name: 'Create Document Blueprint Entity Action', weight: 800, api: UmbCreateDocumentBlueprintEntityAction, + kind: 'default', meta: { + entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], icon: 'icon-blueprint', label: 'Create Document Blueprint (TBD)', - entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Move', name: 'Move Document Entity Action ', - weight: 700, - api: UmbMoveEntityAction, + kind: 'move', meta: { - icon: 'icon-enter', - label: 'Move (TBD)', - repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], + moveRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, + itemRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, + pickerModelAlias: UMB_DOCUMENT_PICKER_MODAL.toString(), }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Copy', - name: 'Copy Document Entity Action', - weight: 600, - api: UmbDuplicateEntityAction, + name: 'Duplicate Document Entity Action', + kind: 'duplicate', meta: { - icon: 'icon-documents', - label: 'Copy (TBD)', - repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], - }, - }, - { - type: 'entityAction', - alias: 'Umb.EntityAction.Document.Sort', - name: 'Sort Document Entity Action', - weight: 500, - api: UmbSortChildrenOfEntityAction, - meta: { - icon: 'icon-navigation-vertical', - label: 'Sort (TBD)', - repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, - entityTypes: [UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_DOCUMENT_ENTITY_TYPE], + duplicateRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, + itemRepositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, + pickerModalAlias: UMB_DOCUMENT_PICKER_MODAL.toString(), }, }, { @@ -74,11 +55,11 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Document.Publish', name: 'Publish Document Entity Action', api: UmbPublishDocumentEntityAction, + kind: 'default', meta: { + entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], icon: 'icon-globe', label: 'Publish', - repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, - entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], }, }, { @@ -86,23 +67,11 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Document.Unpublish', name: 'Unpublish Document Entity Action', api: UmbUnpublishDocumentEntityAction, + kind: 'default', meta: { + entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], icon: 'icon-globe', label: 'Unpublish', - repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, - entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], - }, - }, - { - type: 'entityAction', - alias: 'Umb.EntityAction.Document.Rollback', - name: 'Rollback Document Entity Action', - api: UmbRollbackDocumentEntityAction, - meta: { - icon: 'icon-undo', - label: 'Rollback (TBD)', - repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, - entityTypes: [UMB_DOCUMENT_ENTITY_TYPE], }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts index bb94e23f2d..b3842b56f2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/manifests.ts @@ -1,10 +1,9 @@ -//import { UMB_DOCUMENT_REPOSITORY_ALIAS } from '../../repository/manifests.js'; import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; import { UMB_DOCUMENT_PUBLIC_ACCESS_REPOSITORY_ALIAS } from './repository/manifests.js'; import { UmbDocumentPublicAccessEntityAction } from './public-access.action.js'; -import type { ManifestEntityAction, ManifestModal } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestModal, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -const entityActions: Array = [ +const entityActions: Array = [ { type: 'entityAction', alias: 'Umb.EntityAction.Document.PublicAccess', diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/public-access.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/public-access.action.ts index e88ac97f87..7eec9d85bf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/public-access.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/public-access/public-access.action.ts @@ -1,12 +1,19 @@ import { UMB_PUBLIC_ACCESS_MODAL } from './modal/public-access-modal.token.js'; +import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; import type { UmbDocumentDetailRepository } from '@umbraco-cms/backoffice/document'; -export class UmbDocumentPublicAccessEntityAction extends UmbEntityActionBase { - async execute() { - if (!this.unique) throw new Error('Unique is not available'); - const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); - modalManager.open(this, UMB_PUBLIC_ACCESS_MODAL, { data: { unique: this.unique } }); +export class UmbDocumentPublicAccessEntityAction extends UmbEntityActionBase { + constructor(host: UmbDocumentDetailRepository, args: UmbEntityActionArgs) { + super(host, args); } + + async execute() { + if (!this.args.unique) throw new Error('Unique is not available'); + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + modalManager.open(this, UMB_PUBLIC_ACCESS_MODAL, { data: { unique: this.args.unique } }); + } + + destroy(): void {} } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/rollback.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/rollback.action.ts deleted file mode 100644 index 8f7f21b3d5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/rollback.action.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { UmbDocumentDetailRepository } from '../repository/index.js'; -import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; -import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; - -export class UmbRollbackDocumentEntityAction extends UmbEntityActionBase { - constructor(host: UmbControllerHost, repositoryAlias: string, unique: string, entityType: string) { - super(host, repositoryAlias, unique, entityType); - } - - async execute() { - console.log(`execute for: ${this.unique}`); - //await this.repository?.rollback(); - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/unpublish.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/unpublish.action.ts index 85a5db008d..d241ac0f93 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/unpublish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/unpublish.action.ts @@ -2,11 +2,10 @@ import { umbPickDocumentVariantModal } from '../modals/pick-document-variant-mod import { UmbDocumentDetailRepository, UmbDocumentPublishingRepository } from '../repository/index.js'; import { UmbDocumentVariantState } from '../types.js'; import { UmbLanguageCollectionRepository } from '@umbraco-cms/backoffice/language'; -import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbVariantId } from '@umbraco-cms/backoffice/variant'; -export class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase { +export class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase { async execute() { if (!this.args.unique) throw new Error('The document unique identifier is missing'); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/reload-tree-item-children/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/reload-tree-item-children/manifests.ts index 281fef4035..fff6d159e0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/reload-tree-item-children/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/reload-tree-item-children/manifests.ts @@ -1,7 +1,7 @@ import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from '../../entity.js'; -import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests: Array = [ +export const manifests: Array = [ { type: 'entityAction', alias: 'Umb.EntityAction.Document.Tree.ReloadChildrenOf', diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts index 08c5865a48..6c43ea199b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts @@ -489,9 +489,12 @@ export class UmbDocumentWorkspaceContext public async unpublish() { const unique = this.getUnique(); - + const entityType = this.getEntityType(); if (!unique) throw new Error('Unique is missing'); - new UmbUnpublishDocumentEntityAction(this, '', unique, '').execute(); + if (!entityType) throw new Error('Entity type is missing'); + + // TODO: remove meta + new UmbUnpublishDocumentEntityAction(this, { unique, entityType, meta: undefined }).execute(); } async delete() { diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/entity-actions/create/manifests.ts index cb1d665747..e9855576db 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/entity-actions/create/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/entity-actions/create/manifests.ts @@ -1,8 +1,8 @@ import { UMB_MEDIA_ENTITY_TYPE, UMB_MEDIA_ROOT_ENTITY_TYPE } from '../../entity.js'; import { UmbCreateMediaEntityAction } from './create.action.js'; -import type { ManifestEntityAction, ManifestModal } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestModal, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -const entityActions: Array = [ +const entityActions: Array = [ { type: 'entityAction', alias: 'Umb.EntityAction.Media.Create', @@ -14,17 +14,6 @@ const entityActions: Array = [ label: 'Create', entityTypes: [UMB_MEDIA_ROOT_ENTITY_TYPE, UMB_MEDIA_ENTITY_TYPE], }, - /* removed until we have permissions in place - conditions: [ - { - alias: 'Umb.Condition.UserPermission', - // TODO: investigate why the match property is not typed - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - //@ts-ignore - match: 'Umb.UserPermission.Media.Create', - }, - ], - */ }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/reload-tree-item-children/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/reload-tree-item-children/manifests.ts index 1a4b5c161b..3064b93cf6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/reload-tree-item-children/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/reload-tree-item-children/manifests.ts @@ -1,7 +1,7 @@ import { UMB_MEDIA_ENTITY_TYPE, UMB_MEDIA_ROOT_ENTITY_TYPE } from '../../entity.js'; -import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests: Array = [ +export const manifests: Array = [ { type: 'entityAction', alias: 'Umb.EntityAction.Media.Tree.ReloadChildrenOf', diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/reload-tree-item-children/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/reload-tree-item-children/manifests.ts index 28b3315190..e19bd557f5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/reload-tree-item-children/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/tree/reload-tree-item-children/manifests.ts @@ -1,7 +1,7 @@ import { UMB_MEMBER_TYPE_ROOT_ENTITY_TYPE } from '../../entity.js'; -import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests: Array = [ +export const manifests: Array = [ { type: 'entityAction', alias: 'Umb.EntityAction.MemberType.Tree.ReloadChildrenOf',