public PreviewNode Write(PageStructure pageStructure) { var rootNode = new PreviewNode { Type = NodeType.Element, IsFromLayout = true, PreviewNodeId = ToGuid(_seq++), }; var bodyNode = new PreviewNode { Type = NodeType.LayoutSubtitution, IsFromLayout = true, PreviewNodeId = ToGuid(_seq++), }; rootNode.ChildNodes.Add(bodyNode); foreach (var node in pageStructure.ChildNodes) { bodyNode.ChildNodes.Add(Write(node)); } return(rootNode); }
public void ApplyNewStructureToCmsPage(IHasDesignedContent draft, PageStructure pageStructure) { var newContent = pageStructure.ChildNodes.Select(ApplyNewStructure); draft.ChildNodes.Clear(); draft.ChildNodes.AddRange(newContent); }
public void SaveDraft(Guid formId, PageStructure pageStructure) { var pageRepository = new FormRepository(); var draft = pageRepository.FindContentVersions(By.ContentId(formId), ContentEnvironment.Draft).Result.Single(); new StructureNodeConverter().ApplyNewStructureToCmsPage(draft, pageStructure); pageRepository.Save(draft); }
public PreviewNode Page(Guid pageId, PageStructure pageStructure) { var draft = new CmsPageRepository().FindContentVersions(By.ContentId(pageId), ContentEnvironment.Draft).Result.Single(); new StructureNodeConverter().ApplyNewStructureToCmsPage(draft, pageStructure); var page = new PageCompositionBuilder().CreatePageComposition(draft); var cre = new BatchingFragmentRenderer(); var batch = cre.Execute(page, FragmentRenderMode.PageDesigner); var compositor = new RenderFragmentCompositor(page, batch); var treeWriter = new PagePreviewWriter(draft); compositor.WriteComposedFragments(FragmentRenderMode.PageDesigner, treeWriter); return(treeWriter.RootNode); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { base.BuildRenderTree(builder); EnsureTypeCacheBuilt(); if (!widgetTypeCodeLookup.ContainsKey(DesignNode.WidgetTypeCode)) { Console.WriteLine("[Forms] Unknown toolbox item: " + DesignNode.WidgetTypeCode); return; } var linkedConfigType = widgetTypeCodeLookup[DesignNode.WidgetTypeCode]; var activated = Activator.CreateInstance(Type.GetType(linkedConfigType.AssemblyQualifiedName)); activated.SetPropertyValues(DesignNode.Parameters, x => true); var useComponentType = componentLookupByInterface[linkedConfigType]; Console.WriteLine("[Forms] Activating " + useComponentType.FullName); var localSeq = 0; builder.OpenComponent(localSeq++, useComponentType); builder.AddAttribute(localSeq++, nameof(IConfiguratorComponent <TextboxToolboxItem> .Config), activated); if (activated is ISupportsSubContent) { var pageStructure = new PageStructure(); pageStructure.ChildNodes = DesignNode.ChildNodes; var formDescription = new ConfiguratorFormDescription { Layout = pageStructure }; builder.AddAttribute(localSeq++, nameof(IRendersSubLayout.DesignNode), formDescription); } builder.CloseComponent(); Console.WriteLine("[Forms] Activated " + useComponentType.FullName); }
public PreviewNode Page(Guid formId, PageStructure pageStructure) { return(new FormDesignerPreviewWriter().Write(pageStructure)); }