wire up schedule
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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` } };
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
},
|
||||
);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user