public Page.Elements.PageComposition CreatePageComposition(CmsPage cmsPage) { var pageBuilder = new PageComposerTools(_cmsPageContentActivator); var page = new Page.Elements.PageComposition(); page.RootElement = new UndefinedLayoutPageCompositionElement(); if (cmsPage.LayoutId != Guid.Empty) { var layoutRepository = new LayoutRepository(); var layoutToApply = layoutRepository.GetById(cmsPage.LayoutId); pageBuilder.AddLayoutContent(page, GetLayoutStructure(layoutToApply)); } var pageSpecificContent = cmsPage.PageContent; var d = page.GetPartialPageRenderingByLayoutBuilderId(); foreach (var contentItem in pageSpecificContent) { var placementLayoutBuilderId = contentItem.PlacementLayoutBuilderId ?? SpecialRenderingFragmentContentIds.PageRoot; var root = d[placementLayoutBuilderId]; var presentationElement = contentItem.ToPresentationElement(); pageBuilder.AddAdHocContent(presentationElement, root); } return(page); }
public static PageLayout GetLayoutStructure(Layout layout) { var layoutRepo = new LayoutRepository(); PageLayout ln = null; if (layout.ParentLayoutId != null) { var parentLayout = layoutRepo.GetById(layout.ParentLayoutId.Value); ln = GetLayoutStructure(parentLayout); } return(new PageLayout { AllContent = layout.PageContent.Select(x => PresentationElementHelpers.ToPresentationElement(x)).ToList(), MasterPagePath = layout.MasterPagePath, Name = layout.Name, ParentLayout = ln }); }