Merge remote-tracking branch 'origin/release/15.4' into v15/dev
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -3523,6 +3523,12 @@ export type PutDocumentBlueprintByIdMoveData = {
|
||||
|
||||
export type PutDocumentBlueprintByIdMoveResponse = (string);
|
||||
|
||||
export type GetDocumentBlueprintByIdScaffoldData = {
|
||||
id: string;
|
||||
};
|
||||
|
||||
export type GetDocumentBlueprintByIdScaffoldResponse = ((DocumentBlueprintResponseModel));
|
||||
|
||||
export type PostDocumentBlueprintFolderData = {
|
||||
requestBody?: (CreateFolderRequestModel);
|
||||
};
|
||||
|
||||
@@ -4,10 +4,23 @@ import { UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT } from './document-blueprin
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbDetailRepositoryBase } from '@umbraco-cms/backoffice/repository';
|
||||
|
||||
export class UmbDocumentBlueprintDetailRepository extends UmbDetailRepositoryBase<UmbDocumentBlueprintDetailModel> {
|
||||
export class UmbDocumentBlueprintDetailRepository extends UmbDetailRepositoryBase<
|
||||
UmbDocumentBlueprintDetailModel,
|
||||
UmbDocumentBlueprintServerDataSource
|
||||
> {
|
||||
constructor(host: UmbControllerHost) {
|
||||
super(host, UmbDocumentBlueprintServerDataSource, UMB_DOCUMENT_BLUEPRINT_DETAIL_STORE_CONTEXT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an existing document blueprint by its unique identifier for scaffolding purposes, i.e. to create a new document based on an existing blueprint.
|
||||
* @param {string} unique - The unique identifier of the document blueprint.
|
||||
* @returns {UmbRepositoryResponse<UmbDocumentBlueprintDetailModel>} - The document blueprint data.
|
||||
* @memberof UmbDocumentBlueprintDetailRepository
|
||||
*/
|
||||
scaffoldByUnique(unique: string) {
|
||||
return this.detailDataSource.scaffoldByUnique(unique);
|
||||
}
|
||||
}
|
||||
|
||||
export { UmbDocumentBlueprintDetailRepository as api };
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import type { UmbDocumentBlueprintDetailModel } from '../../types.js';
|
||||
import { UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE } from '../../entity.js';
|
||||
import { UmbId } from '@umbraco-cms/backoffice/id';
|
||||
import type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository';
|
||||
import type { UmbDataSourceResponse, UmbDetailDataSource } from '@umbraco-cms/backoffice/repository';
|
||||
import type {
|
||||
CreateDocumentBlueprintRequestModel,
|
||||
DocumentBlueprintResponseModel,
|
||||
UpdateDocumentBlueprintRequestModel,
|
||||
} from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { DocumentBlueprintService } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
@@ -74,7 +75,7 @@ export class UmbDocumentBlueprintServerDataSource implements UmbDetailDataSource
|
||||
* @returns {*}
|
||||
* @memberof UmbDocumentBlueprintServerDataSource
|
||||
*/
|
||||
async read(unique: string) {
|
||||
async read(unique: string): Promise<UmbDataSourceResponse<UmbDocumentBlueprintDetailModel>> {
|
||||
if (!unique) throw new Error('Unique is missing');
|
||||
|
||||
const { data, error } = await tryExecuteAndNotify(
|
||||
@@ -86,35 +87,24 @@ export class UmbDocumentBlueprintServerDataSource implements UmbDetailDataSource
|
||||
return { error };
|
||||
}
|
||||
|
||||
// TODO: make data mapper to prevent errors
|
||||
const document: UmbDocumentBlueprintDetailModel = {
|
||||
entityType: UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE,
|
||||
unique: data.id,
|
||||
values: data.values.map((value) => {
|
||||
return {
|
||||
editorAlias: value.editorAlias,
|
||||
culture: value.culture || null,
|
||||
segment: value.segment || null,
|
||||
alias: value.alias,
|
||||
value: value.value,
|
||||
};
|
||||
}),
|
||||
variants: data.variants.map((variant) => {
|
||||
return {
|
||||
state: variant.state,
|
||||
culture: variant.culture || null,
|
||||
segment: variant.segment || null,
|
||||
name: variant.name,
|
||||
publishDate: variant.publishDate || null,
|
||||
createDate: variant.createDate,
|
||||
updateDate: variant.updateDate,
|
||||
};
|
||||
}),
|
||||
documentType: {
|
||||
unique: data.documentType.id,
|
||||
collection: data.documentType.collection ? { unique: data.documentType.collection.id } : null,
|
||||
},
|
||||
};
|
||||
const document = this.#createDocumentBlueprintDetailModel(data);
|
||||
|
||||
return { data: document };
|
||||
}
|
||||
|
||||
async scaffoldByUnique(unique: string): Promise<UmbDataSourceResponse<UmbDocumentBlueprintDetailModel>> {
|
||||
if (!unique) throw new Error('Unique is missing');
|
||||
|
||||
const { data, error } = await tryExecuteAndNotify(
|
||||
this.#host,
|
||||
DocumentBlueprintService.getDocumentBlueprintByIdScaffold({ id: unique }),
|
||||
);
|
||||
|
||||
if (error || !data) {
|
||||
return { error };
|
||||
}
|
||||
|
||||
const document = this.#createDocumentBlueprintDetailModel(data);
|
||||
|
||||
return { data: document };
|
||||
}
|
||||
@@ -196,4 +186,35 @@ export class UmbDocumentBlueprintServerDataSource implements UmbDetailDataSource
|
||||
// TODO: update to delete when implemented
|
||||
return tryExecuteAndNotify(this.#host, DocumentBlueprintService.deleteDocumentBlueprintById({ id: unique }));
|
||||
}
|
||||
|
||||
#createDocumentBlueprintDetailModel(data: DocumentBlueprintResponseModel): UmbDocumentBlueprintDetailModel {
|
||||
return {
|
||||
entityType: UMB_DOCUMENT_BLUEPRINT_ENTITY_TYPE,
|
||||
unique: data.id,
|
||||
values: data.values.map((value) => {
|
||||
return {
|
||||
editorAlias: value.editorAlias,
|
||||
culture: value.culture || null,
|
||||
segment: value.segment || null,
|
||||
alias: value.alias,
|
||||
value: value.value,
|
||||
};
|
||||
}),
|
||||
variants: data.variants.map((variant) => {
|
||||
return {
|
||||
state: variant.state,
|
||||
culture: variant.culture || null,
|
||||
segment: variant.segment || null,
|
||||
name: variant.name,
|
||||
publishDate: variant.publishDate || null,
|
||||
createDate: variant.createDate,
|
||||
updateDate: variant.updateDate,
|
||||
};
|
||||
}),
|
||||
documentType: {
|
||||
unique: data.documentType.id,
|
||||
collection: data.documentType.collection ? { unique: data.documentType.collection.id } : null,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,14 +211,16 @@ export class UmbDocumentWorkspaceContext
|
||||
async create(parent: UmbEntityModel, documentTypeUnique: string, blueprintUnique?: string) {
|
||||
if (blueprintUnique) {
|
||||
const blueprintRepository = new UmbDocumentBlueprintDetailRepository(this);
|
||||
const { data } = await blueprintRepository.requestByUnique(blueprintUnique);
|
||||
const { data } = await blueprintRepository.scaffoldByUnique(blueprintUnique);
|
||||
|
||||
if (!data) throw new Error('Blueprint data is missing');
|
||||
|
||||
return this.createScaffold({
|
||||
parent,
|
||||
preset: {
|
||||
documentType: data?.documentType,
|
||||
values: data?.values,
|
||||
variants: data?.variants as Array<UmbDocumentVariantModel>,
|
||||
documentType: data.documentType,
|
||||
values: data.values,
|
||||
variants: data.variants as Array<UmbDocumentVariantModel>,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user