Merge branch 'feature/entity-action-kind' of https://github.com/umbraco/Umbraco.CMS.Backoffice into feature/entity-action-kind
This commit is contained in:
@@ -1,27 +1,23 @@
|
||||
import type { UmbDocumentDetailRepository } from '../../repository/index.js';
|
||||
import { UmbDocumentItemRepository } from '../../repository/index.js';
|
||||
import { UMB_DOCUMENT_CREATE_OPTIONS_MODAL } from './document-create-options-modal.token.js';
|
||||
import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action';
|
||||
import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
|
||||
|
||||
export class UmbCreateDocumentEntityAction extends UmbEntityActionBase<UmbDocumentDetailRepository> {
|
||||
#itemRepository;
|
||||
|
||||
constructor(host: UmbControllerHost, repositoryAlias: string, unique: string, entityType: string) {
|
||||
super(host, repositoryAlias, unique, entityType);
|
||||
this.#itemRepository = new UmbDocumentItemRepository(host);
|
||||
export class UmbCreateDocumentEntityAction extends UmbEntityActionBase<never> {
|
||||
constructor(host: UmbControllerHost, args: UmbEntityActionArgs<never>) {
|
||||
super(host, args);
|
||||
}
|
||||
|
||||
async execute() {
|
||||
if (!this.repository) return;
|
||||
|
||||
// default to root
|
||||
let documentItem = null;
|
||||
|
||||
if (this.unique) {
|
||||
if (this.args.unique) {
|
||||
// get document item to get the doc type id
|
||||
const { data, error } = await this.#itemRepository.requestItems([this.unique]);
|
||||
const itemRepository = new UmbDocumentItemRepository(this._host);
|
||||
const { data, error } = await itemRepository.requestItems([this.args.unique]);
|
||||
if (error || !data) throw new Error(`Failed to load document item`);
|
||||
documentItem = data[0];
|
||||
}
|
||||
@@ -29,11 +25,13 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase<UmbDocume
|
||||
const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
|
||||
const modalContext = modalManager.open(this, UMB_DOCUMENT_CREATE_OPTIONS_MODAL, {
|
||||
data: {
|
||||
parent: { unique: this.unique, entityType: this.entityType },
|
||||
parent: { unique: this.args.unique, entityType: this.args.entityType },
|
||||
documentType: documentItem ? { unique: documentItem.documentType.unique } : null,
|
||||
},
|
||||
});
|
||||
|
||||
await modalContext.onSubmit();
|
||||
}
|
||||
|
||||
destroy(): void {}
|
||||
}
|
||||
|
||||
@@ -2,18 +2,24 @@ 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';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
|
||||
export class UmbPublishDocumentEntityAction extends UmbEntityActionBase<never> {
|
||||
constructor(host: UmbControllerHost, args: UmbEntityActionArgs<never>) {
|
||||
super(host, args);
|
||||
}
|
||||
|
||||
export class UmbPublishDocumentEntityAction extends UmbEntityActionBase<unknown> {
|
||||
async execute() {
|
||||
if (!this.unique) throw new Error('The document unique identifier is missing');
|
||||
if (!this.args.unique) throw new Error('The document unique identifier is missing');
|
||||
|
||||
const languageRepository = new UmbLanguageCollectionRepository(this._host);
|
||||
const { data: languageData } = await languageRepository.requestCollection({});
|
||||
|
||||
const documentRepository = new UmbDocumentDetailRepository(this._host);
|
||||
const { data: documentData } = await documentRepository.requestByUnique(this.unique);
|
||||
const { data: documentData } = await documentRepository.requestByUnique(this.args.unique);
|
||||
|
||||
if (!documentData) throw new Error('The document was not found');
|
||||
|
||||
@@ -21,7 +27,7 @@ export class UmbPublishDocumentEntityAction extends UmbEntityActionBase<unknown>
|
||||
if (documentData.variants.length === 1) {
|
||||
const variantId = UmbVariantId.Create(documentData.variants[0]);
|
||||
const publishingRepository = new UmbDocumentPublishingRepository(this._host);
|
||||
await publishingRepository.publish(this.unique, [variantId]);
|
||||
await publishingRepository.publish(this.args.unique, [variantId]);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -48,7 +54,9 @@ export class UmbPublishDocumentEntityAction extends UmbEntityActionBase<unknown>
|
||||
|
||||
if (selectedVariants.length) {
|
||||
const publishingRepository = new UmbDocumentPublishingRepository(this._host);
|
||||
await publishingRepository.publish(this.unique, selectedVariants);
|
||||
await publishingRepository.publish(this.args.unique, selectedVariants);
|
||||
}
|
||||
}
|
||||
|
||||
destroy(): void {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user