Merge branch 'feature/entity-action-kind' of https://github.com/umbraco/Umbraco.CMS.Backoffice into feature/entity-action-kind
This commit is contained in:
@@ -10,10 +10,17 @@ export interface ManifestEntityAction<MetaType extends MetaEntityAction>
|
||||
extends ManifestElementAndApi<UmbControllerHostElement, UmbEntityAction<MetaType>>,
|
||||
ManifestWithDynamicConditions {
|
||||
type: 'entityAction';
|
||||
entityTypes: Array<string>;
|
||||
meta: MetaType;
|
||||
}
|
||||
|
||||
export interface MetaEntityAction {
|
||||
export interface MetaEntityAction {}
|
||||
export interface ManifestEntityActionDefaultKind extends ManifestEntityAction<MetaEntityActionDefaultKind> {
|
||||
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<string>;
|
||||
label: string;
|
||||
}
|
||||
|
||||
// DELETE
|
||||
@@ -43,7 +48,7 @@ export interface ManifestEntityActionDeleteKind extends ManifestEntityAction<Met
|
||||
kind: 'delete';
|
||||
}
|
||||
|
||||
export interface MetaEntityActionDeleteKind extends MetaEntityAction {
|
||||
export interface MetaEntityActionDeleteKind extends MetaEntityActionDefaultKind {
|
||||
detailRepositoryAlias: string;
|
||||
itemRepositoryAlias: string;
|
||||
}
|
||||
@@ -54,7 +59,7 @@ export interface ManifestEntityActionRenameKind extends ManifestEntityAction<Met
|
||||
kind: 'rename';
|
||||
}
|
||||
|
||||
export interface MetaEntityActionRenameKind extends MetaEntityAction {
|
||||
export interface MetaEntityActionRenameKind extends MetaEntityActionDefaultKind {
|
||||
renameRepositoryAlias: string;
|
||||
itemRepositoryAlias: string;
|
||||
}
|
||||
@@ -66,7 +71,7 @@ export interface ManifestEntityActionReloadTreeItemChildrenKind
|
||||
kind: 'reloadTreeItemChildren';
|
||||
}
|
||||
|
||||
export interface MetaEntityActionReloadTreeItemChildrenKind extends MetaEntityAction {}
|
||||
export interface MetaEntityActionReloadTreeItemChildrenKind extends MetaEntityActionDefaultKind {}
|
||||
|
||||
// DUPLICATE
|
||||
export interface ManifestEntityActionDuplicateKind extends ManifestEntityAction<MetaEntityActionDuplicateKind> {
|
||||
@@ -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<MetaEntityActionMoveKind> {
|
||||
type: 'entityAction';
|
||||
kind: 'move';
|
||||
}
|
||||
|
||||
export interface MetaEntityActionMoveKind extends MetaEntityAction {
|
||||
export interface MetaEntityActionMoveKind extends MetaEntityActionDefaultKind {
|
||||
moveRepositoryAlias: string;
|
||||
itemRepositoryAlias: string;
|
||||
pickerModalAlias: string;
|
||||
|
||||
@@ -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<ManifestEntityAction> = [
|
||||
const entityActions: Array<ManifestTypes> = [
|
||||
{
|
||||
type: 'entityAction',
|
||||
alias: 'Umb.EntityAction.Document.CultureAndHostnames',
|
||||
@@ -13,7 +12,6 @@ const entityActions: Array<ManifestEntityAction> = [
|
||||
meta: {
|
||||
icon: 'icon-home',
|
||||
label: 'Culture and Hostnames',
|
||||
repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS,
|
||||
entityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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<ManifestTypes> = [
|
||||
...createManifests,
|
||||
@@ -24,49 +19,35 @@ const entityActions: Array<ManifestTypes> = [
|
||||
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<ManifestTypes> = [
|
||||
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<ManifestTypes> = [
|
||||
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],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
@@ -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<ManifestEntityAction> = [
|
||||
const entityActions: Array<ManifestTypes> = [
|
||||
{
|
||||
type: 'entityAction',
|
||||
alias: 'Umb.EntityAction.Document.PublicAccess',
|
||||
|
||||
@@ -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<UmbDocumentDetailRepository> {
|
||||
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<never> {
|
||||
constructor(host: UmbDocumentDetailRepository, args: UmbEntityActionArgs<never>) {
|
||||
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 {}
|
||||
}
|
||||
|
||||
@@ -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<UmbDocumentDetailRepository> {
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -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<never> {
|
||||
export class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase<undefined> {
|
||||
async execute() {
|
||||
if (!this.args.unique) throw new Error('The document unique identifier is missing');
|
||||
|
||||
|
||||
@@ -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<ManifestEntityAction> = [
|
||||
export const manifests: Array<ManifestTypes> = [
|
||||
{
|
||||
type: 'entityAction',
|
||||
alias: 'Umb.EntityAction.Document.Tree.ReloadChildrenOf',
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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<ManifestEntityAction> = [
|
||||
const entityActions: Array<ManifestTypes> = [
|
||||
{
|
||||
type: 'entityAction',
|
||||
alias: 'Umb.EntityAction.Media.Create',
|
||||
@@ -14,17 +14,6 @@ const entityActions: Array<ManifestEntityAction> = [
|
||||
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',
|
||||
},
|
||||
],
|
||||
*/
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
@@ -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<ManifestEntityAction> = [
|
||||
export const manifests: Array<ManifestTypes> = [
|
||||
{
|
||||
type: 'entityAction',
|
||||
alias: 'Umb.EntityAction.Media.Tree.ReloadChildrenOf',
|
||||
|
||||
@@ -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<ManifestEntityAction> = [
|
||||
export const manifests: Array<ManifestTypes> = [
|
||||
{
|
||||
type: 'entityAction',
|
||||
alias: 'Umb.EntityAction.MemberType.Tree.ReloadChildrenOf',
|
||||
|
||||
Reference in New Issue
Block a user