src/lib/fs/cms/page/processing/merge/cms-structure-model-merger-pipeline-step.ts
This class represents the PipelineStep to merge the CmsStructureModels from FirstSpirit and Spartacus.
Methods |
|
constructor(fsCmsPageMergerFactory: CmsStructureModelMergerFactory)
|
||||||
Parameters :
|
execute | ||||||||||||
execute(occCmsStructureModel: CmsStructureModel, fsCmsStructureModel: CmsStructureModel)
|
||||||||||||
This methode merges the page from the OCC CMS with the FirstSpirit page. If no valid FirstSpirit page is linked to it the method returns the OCC CMS page.
Parameters :
Returns :
CmsStructureModel
The manipulated page. |
Private mergeOccCmsPageWithFsCmsPage | |||||||||
mergeOccCmsPageWithFsCmsPage(occCmsStructureModel: CmsStructureModel, fsCmsStructureModel: CmsStructureModel)
|
|||||||||
Parameters :
Returns :
any
|
import { Injectable } from '@angular/core';
import { CmsStructureModelMergerFactory } from './cms-structure-model-merger-factory';
import { PipelineStep } from '../pipeline-step';
import { CmsStructureModel } from '@spartacus/core';
/**
* This class represents the {@link PipelineStep} to merge the CmsStructureModels from FirstSpirit and Spartacus.
*
* @export
* @class CmsStructureModelMergerPipelineStep
* @implements {PipelineStep}
*/
@Injectable({
providedIn: 'root',
})
export class CmsStructureModelMergerPipelineStep implements PipelineStep {
constructor(private fsCmsPageMergerFactory: CmsStructureModelMergerFactory) {}
/**
* This methode merges the page from the OCC CMS with the FirstSpirit page.
* If no valid FirstSpirit page is linked to it the method returns the OCC CMS page.
*
* @param {CmsStructureModel} occCmsStructureModel The page generated by the OCC CMS.
* @param {CmsStructureModel} fsCmsStructureModel The page generated by FirstSpirit.
* @return {CmsStructureModel} The manipulated page.
* @memberof CmsStructureModelMergerPipelineStep
*/
execute(occCmsStructureModel: CmsStructureModel, fsCmsStructureModel: CmsStructureModel): CmsStructureModel {
return this.mergeOccCmsPageWithFsCmsPage(occCmsStructureModel, fsCmsStructureModel);
}
private mergeOccCmsPageWithFsCmsPage(occCmsStructureModel: CmsStructureModel, fsCmsStructureModel: CmsStructureModel) {
const pageTemplate = occCmsStructureModel?.page?.properties?.fsPageTemplate || occCmsStructureModel.page.template;
const fsCmsPageMerger = this.fsCmsPageMergerFactory.createFsCmsPageMerger(pageTemplate);
return fsCmsPageMerger ? fsCmsPageMerger.merge(occCmsStructureModel, fsCmsStructureModel) : occCmsStructureModel;
}
}