File

src/lib/fs/cms/page/processing/merge/cms-structure-model-merger-pipeline-step.ts

Description

This class represents the PipelineStep to merge the CmsStructureModels from FirstSpirit and Spartacus.

Index

Methods

Constructor

constructor(fsCmsPageMergerFactory: CmsStructureModelMergerFactory)
Parameters :
Name Type Optional
fsCmsPageMergerFactory CmsStructureModelMergerFactory No

Methods

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 :
Name Type Optional Description
occCmsStructureModel CmsStructureModel No

The page generated by the OCC CMS.

fsCmsStructureModel CmsStructureModel No

The page generated by FirstSpirit.

Returns : CmsStructureModel

The manipulated page.

Private mergeOccCmsPageWithFsCmsPage
mergeOccCmsPageWithFsCmsPage(occCmsStructureModel: CmsStructureModel, fsCmsStructureModel: CmsStructureModel)
Parameters :
Name Type Optional
occCmsStructureModel CmsStructureModel No
fsCmsStructureModel CmsStructureModel No
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;
  }
}

results matching ""

    No results matching ""