예제 #1
0
        public CmsPageContent CreateRow(int numColumns)
        {
            var row = new CmsPageContent
            {
                WidgetTypeCode = "ConfiguratorRow",
            };

            row.Id = Guid.NewGuid();
            row.Parameters[nameof(ConfiguratorRow.NumColumns)] = numColumns.ToString();
            return(row);
        }
 public static PageContent ToPresentationElement(this CmsPageContent content)
 {
     return(new PageContent
     {
         Id = content.Id,
         AllContent = content.AllContent.Select(ToPresentationElement).ToList(),
         Order = content.Order,
         Parameters = content.Parameters,
         PlacementContentPlaceHolderId = content.PlacementContentPlaceHolderId,
         PlacementLayoutBuilderId = content.PlacementLayoutBuilderId,
         WidgetTypeCode = content.WidgetTypeCode,
     });
 }
예제 #3
0
        public CmsPageContent CreateCmsPageContent(SettingProperty property, string widgetTypeCode, FormStyle parentFormStyle)
        {
            var setup = new ConfiguratorSetup
            {
                PropertyType = property.PropertyInfo.PropertyType.FullName,
                DisplayName  = property.DisplayName,
                PropertyName = property.PropertyInfo.Name
            };

            var cmsPageContent = new CmsPageContent
            {
                Id             = Guid.NewGuid(),
                WidgetTypeCode = widgetTypeCode
            };

            var standardParameters   = setup.GetPropertyValues(x => true).ToDictionary(x => x.Key, x => x.Value);
            var datasourceParameters = new Dictionary <string, string>();

            var toolboxItem = new ToolboxManager().GetToolboxItemByCode(widgetTypeCode);

            if (toolboxItem.RequiresDataSource)
            {
                var dataRelationDs = InferDataSourceFromDataRelation(property);
                if (dataRelationDs != null)
                {
                    datasourceParameters = dataRelationDs.GetPropertyValues(x => true).ToDictionary(x => x.Key, x => x.Value);
                }
            }

            if (toolboxItem.SupportsSubContent)
            {
                var propType    = property.PropertyInfo.PropertyType;
                var defaultForm = GenerateDefaultForm(propType, parentFormStyle);
                cmsPageContent.AllContent = defaultForm.ChildNodes;
            }


            var mergedParameters = new Dictionary <string, string>();

            foreach (var parameter in standardParameters)
            {
                mergedParameters.Add(parameter.Key, parameter.Value);
            }
            foreach (var parameter in datasourceParameters)
            {
                mergedParameters.Add(parameter.Key, parameter.Value);
            }
            cmsPageContent.Parameters = mergedParameters;

            return(cmsPageContent);
        }
        private StructureNode GetPageStructure(CmsPageContent content)
        {
            var sn = new StructureNode
            {
                Id         = content.Id,
                Order      = content.Order,
                Parameters = content.Parameters,
                PlacementContentPlaceHolderId = content.PlacementContentPlaceHolderId,
                PlacementLayoutBuilderId      = content.PlacementLayoutBuilderId,
                WidgetTypeCode = content.WidgetTypeCode,
                ChildNodes     = content.AllContent.Select(GetPageStructure).ToList()
            };

            return(sn);
        }
        private void WriteMetadata()
        {
            CmsPageContent contentPlacement = null;

            if (CurrentNode.Type == NodeType.Element)
            {
                contentPlacement = _draft.FindContentById(CurrentNode.ContentId);
            }

            if (contentPlacement == null)
            {
                CurrentNode.IsFromLayout = true;
            }
            else
            {
                CurrentNode.Parameters = contentPlacement.Parameters;
                var toolboxItem = new ToolboxManager().GetToolboxItemByCode(contentPlacement.WidgetTypeCode);
                CurrentNode.FriendlyName = toolboxItem.FriendlyName;
            }
        }
예제 #6
0
        public Site SetupTestSite()
        {
            var tbx = new ToolboxManager();

            var myLayout = new Layout
            {
                Name           = "Demo",
                MasterPagePath = "/Demo.Master",
            };

            myLayout.PageContent.Add(new CmsPageContent
            {
                Id             = Guid.NewGuid(),
                WidgetTypeCode = "Client-CustomNavigation",
                PlacementContentPlaceHolderId = "NavigationContentPlaceHolder"
            });
            var layoutRepository = new LayoutRepository();

            layoutRepository.Save(myLayout);

            var siteRepo = new SiteRepository();
            var newSite  = new Site
            {
                Name           = "WarpCore Demo",
                IsFrontendSite = true
            };

            siteRepo.Save(newSite);

            var homePage = new CmsPage
            {
                Name        = "Homepage",
                SiteId      = newSite.ContentId,
                LayoutId    = myLayout.ContentId,
                Keywords    = "WarpCore,CMS,Demo",
                Description = "WarpCore CMS Demo"
            };

            var lbId = Guid.NewGuid();
            var row  = new CmsPageContent
            {
                Id             = Guid.NewGuid(),
                WidgetTypeCode = RowLayout.ApiId,
                PlacementContentPlaceHolderId = "Body",
                Parameters = new Dictionary <string, string>
                {
                    //[nameof(RowLayout.LayoutBuilderId)] = lbId.ToString(),
                    [nameof(RowLayout.NumColumns)] = 3.ToString()
                }
            };

            var helloWorld0 = new CmsPageContent
            {
                Id = Guid.NewGuid(),
                PlacementContentPlaceHolderId = "0",
                PlacementLayoutBuilderId      = lbId,
                WidgetTypeCode = ContentBlock.ApiId,
                Parameters     = new Dictionary <string, string> {
                    ["AdHocHtml"] = "Hello World (0)"
                }
            };

            var helloWorld1 = new CmsPageContent
            {
                Id = Guid.NewGuid(),
                PlacementContentPlaceHolderId = "1",
                PlacementLayoutBuilderId      = lbId,
                WidgetTypeCode = ContentBlock.ApiId,
                Parameters     = new Dictionary <string, string> {
                    ["AdHocHtml"] = "Hello World (1)"
                }
            };

            row.AllContent.Add(helloWorld0);
            row.AllContent.Add(helloWorld1);

            homePage.PageContent.Add(row);



            var aboutUs = new CmsPage
            {
                Name     = "About Us",
                SiteId   = newSite.ContentId,
                LayoutId = myLayout.ContentId
            };
            var contactUs = new CmsPage
            {
                Name     = "Contact Us",
                SiteId   = newSite.ContentId,
                LayoutId = myLayout.ContentId
            };

            var pageRepository = new CmsPageRepository();

            pageRepository.Save(homePage, SitemapRelativePosition.Root);
            pageRepository.Save(aboutUs, SitemapRelativePosition.Root);
            pageRepository.Save(contactUs, SitemapRelativePosition.Root);
            newSite.HomepageId = homePage.ContentId;
            siteRepo.Save(newSite);

            var subPage1 = new CmsPage
            {
                Name   = "Subpage 1",
                SiteId = newSite.ContentId
            };

            pageRepository.Save(subPage1, new PageRelativePosition {
                ParentPageId = homePage.ContentId
            });

            var subPage0 = new CmsPage
            {
                Name   = "Subpage 0",
                SiteId = newSite.ContentId
            };

            pageRepository.Save(subPage0, new PageRelativePosition {
                ParentPageId = homePage.ContentId, BeforePageId = subPage1.ContentId
            });

            return(newSite);
        }