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);
        }
Beispiel #5
0
        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));
 }