wire up schedule

This commit is contained in:
Jacob Overgaard
2024-03-12 15:19:16 +01:00
parent 1a2d26af93
commit 54b6ff3ff8
4 changed files with 14 additions and 6 deletions

View File

@@ -1,12 +1,15 @@
import type { UmbDocumentVariantPickerData, UmbDocumentVariantPickerValue } from '../types.js';
import { UMB_DOCUMENT_PUBLISH_MODAL_ALIAS } from '../manifests.js';
import { UmbModalToken } from '@umbraco-cms/backoffice/modal';
import type { ScheduleRequestModel } from '@umbraco-cms/backoffice/external/backend-api';
export interface UmbDocumentPublishModalData extends UmbDocumentVariantPickerData {
allowScheduledPublish?: boolean;
}
export interface UmbDocumentPublishModalValue extends UmbDocumentVariantPickerValue {}
export interface UmbDocumentPublishModalValue extends UmbDocumentVariantPickerValue {
schedule?: ScheduleRequestModel;
}
export const UMB_DOCUMENT_PUBLISH_MODAL = new UmbModalToken<UmbDocumentPublishModalData, UmbDocumentPublishModalValue>(
UMB_DOCUMENT_PUBLISH_MODAL_ALIAS,

View File

@@ -3,6 +3,7 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbRepositoryBase } from '@umbraco-cms/backoffice/repository';
import { UMB_NOTIFICATION_CONTEXT, type UmbNotificationContext } from '@umbraco-cms/backoffice/notification';
import type { UmbVariantId } from '@umbraco-cms/backoffice/variant';
import type { ScheduleRequestModel } from '@umbraco-cms/backoffice/external/backend-api';
export class UmbDocumentPublishingRepository extends UmbRepositoryBase {
#init!: Promise<unknown>;
@@ -28,12 +29,12 @@ export class UmbDocumentPublishingRepository extends UmbRepositoryBase {
* @return {*}
* @memberof UmbDocumentPublishingRepository
*/
async publish(unique: string, variantIds: Array<UmbVariantId>) {
async publish(unique: string, variantIds: Array<UmbVariantId>, schedule?: ScheduleRequestModel) {
if (!unique) throw new Error('id is missing');
if (!variantIds) throw new Error('variant IDs are missing');
await this.#init;
const { error } = await this.#publishingDataSource.publish(unique, variantIds);
const { error } = await this.#publishingDataSource.publish(unique, variantIds, schedule);
if (!error) {
const notification = { data: { message: `Document published` } };

View File

@@ -1,6 +1,7 @@
import type {
CultureAndScheduleRequestModel,
PublishDocumentRequestModel,
ScheduleRequestModel,
UnpublishDocumentRequestModel,
} from '@umbraco-cms/backoffice/external/backend-api';
import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api';
@@ -33,7 +34,7 @@ export class UmbDocumentPublishingServerDataSource {
* @return {*}
* @memberof UmbDocumentServerDataSource
*/
async publish(unique: string, variantIds: Array<UmbVariantId>) {
async publish(unique: string, variantIds: Array<UmbVariantId>, schedule?: ScheduleRequestModel) {
if (!unique) throw new Error('Id is missing');
const publishSchedules: CultureAndScheduleRequestModel[] = variantIds.map<CultureAndScheduleRequestModel>(
@@ -41,7 +42,7 @@ export class UmbDocumentPublishingServerDataSource {
return {
culture: variant.isCultureInvariant() ? null : variant.toCultureString(),
// TODO: NO, this does not belong as part of the UmbVariantID, we need another way to parse that around:
//schedule: variant.schedule,
schedule,
};
},
);

View File

@@ -34,6 +34,7 @@ import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action';
import { UmbReloadTreeItemChildrenRequestEntityActionEvent } from '@umbraco-cms/backoffice/tree';
import { UmbRequestReloadStructureForEntityEvent } from '@umbraco-cms/backoffice/event';
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
import { ScheduleRequestModel } from '@umbraco-cms/backoffice/external/backend-api';
type EntityType = UmbDocumentDetailModel;
export class UmbDocumentWorkspaceContext
@@ -465,6 +466,7 @@ export class UmbDocumentWorkspaceContext
if (!unique) throw new Error('Unique is missing');
let variantIds: Array<UmbVariantId> = [];
let schedule: ScheduleRequestModel | undefined = undefined;
const { options, selected } = await this.#determineVariantOptions();
@@ -491,10 +493,11 @@ export class UmbDocumentWorkspaceContext
if (!result?.selection.length || !unique) return;
variantIds = result?.selection.map((x) => UmbVariantId.FromString(x)) ?? [];
schedule = result.schedule;
}
const variants = await this.#performSaveOrCreate(variantIds);
await this.publishingRepository.publish(unique, variants);
await this.publishingRepository.publish(unique, variants, schedule);
this.workspaceComplete(this.#currentData.getValue());
}