public TestDatabaseReader()
        {
            var elementId         = 1;
            var elementVersionId  = 1;
            var propertyId        = 1;
            var websiteVersionId  = 1;
            var dataScopeId       = 1;
            var dataTypeId        = 1;
            var dataTypeVersionId = 1;

            _dataScopes = new DataScopeRecord[0];

            _dataTypes = new DataTypeRecord[0];

            _dataTypeVersions = new DataTypeVersionRecord[0];

            _components = new ComponentRecord[0];

            _componentVersions = new ComponentVersionRecord[0];

            _properties = new ElementPropertyRecord[0];

            _propertyValues = new ElementPropertyValueRecord[0];

            _regions = new []
            {
                new RegionRecord
                {
                    RecordId    = elementId++,
                    Name        = "example_region_1",
                    CreatedBy   = "urn:user:1234",
                    CreatedWhen = DateTime.UtcNow
                },
                new RegionRecord
                {
                    RecordId    = elementId++,
                    Name        = "example_region_2",
                    CreatedBy   = "urn:user:1234",
                    CreatedWhen = DateTime.UtcNow
                }
            };

            _layouts = new []
            {
                new LayoutRecord
                {
                    RecordId    = elementId++,
                    Name        = "page_layout",
                    CreatedBy   = "urn:user:1234",
                    CreatedWhen = DateTime.UtcNow
                }
            };

            _regionVersions = new []
            {
                new RegionVersionRecord
                {
                    ParentRecordId = _regions[0].RecordId,
                    RecordId       = elementVersionId++,
                    Version        = 1,
                    LayoutName     = "layouts:col_2_left_fixed"
                },
                new RegionVersionRecord
                {
                    ParentRecordId  = _regions[1].RecordId,
                    RecordId        = elementVersionId++,
                    Version         = 1,
                    RegionTemplates = new []
                    {
                        new RegionTemplateRecord {
                            PageArea = PageArea.Body, TemplatePath = "/template1"
                        }
                    }
                }
            };

            _layoutVersions = new []
            {
                new LayoutVersionRecord {
                    ParentRecordId  = _layouts[0].RecordId,
                    RecordId        = elementVersionId++,
                    Version         = 1,
                    AssetDeployment = AssetDeployment.Inherit,
                    ZoneNesting     = "header,main,footer",
                    Zones           = new []
                    {
                        new LayoutZoneRecord
                        {
                            ZoneName     = "header",
                            ContentType  = "html",
                            ContentName  = "header",
                            ContentValue = "<h1>Header V1</h1>"
                        },
                        new LayoutZoneRecord
                        {
                            ZoneName     = "footer",
                            ContentType  = "html",
                            ContentName  = "footer",
                            ContentValue = "<h1>Footer V1</h1>"
                        }
                    }
                },
                new LayoutVersionRecord {
                    ParentRecordId  = _layouts[0].RecordId,
                    RecordId        = elementVersionId++,
                    Version         = 2,
                    AssetDeployment = AssetDeployment.Inherit,
                    ZoneNesting     = "header,main,footer",
                    Zones           = new []
                    {
                        new LayoutZoneRecord
                        {
                            ZoneName = "header",
                            RegionId = _regions[0].RecordId
                        },
                        new LayoutZoneRecord
                        {
                            ZoneName = "footer",
                            RegionId = _regions[1].RecordId
                        }
                    }
                }
            };

            _pages = new []
            {
                new PageRecord
                {
                    RecordId    = elementId++,
                    CreatedBy   = "urn:user:1234",
                    CreatedWhen = DateTime.UtcNow,
                    Name        = "page_1"
                },
                new PageRecord
                {
                    RecordId    = elementId++,
                    CreatedBy   = "urn:user:1234",
                    CreatedWhen = DateTime.UtcNow,
                    Name        = "page_2"
                }
            };

            _pageVersions = new []
            {
                new PageVersionRecord
                {
                    ParentRecordId  = _pages[0].RecordId,
                    RecordId        = elementVersionId++,
                    Version         = 1,
                    LayoutId        = _layouts[0].RecordId,
                    AssetDeployment = AssetDeployment.PerWebsite,
                    Title           = "First CMS Page",
                    Routes          = new []
                    {
                        new PageRouteRecord
                        {
                            Path     = "/cms/page1",
                            Priority = 200
                        },
                        new PageRouteRecord
                        {
                            Path     = "/cms/page1_old_url",
                            Priority = -10
                        }
                    },
                    LayoutZones = new []
                    {
                        new LayoutZoneRecord
                        {
                            ZoneName     = "main",
                            ContentType  = "html",
                            ContentName  = "cms-page1",
                            ContentValue = "<p>This is CMS page 1</p>"
                        }
                    }
                },
                new PageVersionRecord
                {
                    ParentRecordId  = _pages[1].RecordId,
                    RecordId        = elementVersionId++,
                    Version         = 1,
                    AssetDeployment = AssetDeployment.PerWebsite,
                    LayoutId        = _layouts[0].RecordId,
                    Title           = "Second CMS Page",
                    Routes          = new []
                    {
                        new PageRouteRecord
                        {
                            Path     = "/cms/page2",
                            Priority = 200
                        }
                    },
                    LayoutZones = new []
                    {
                        new LayoutZoneRecord
                        {
                            ZoneName     = "main",
                            ContentType  = "html",
                            ContentName  = "cms-page1",
                            ContentValue = "<p>This is CMS page 2</p>"
                        }
                    }
                },
                new PageVersionRecord
                {
                    ParentRecordId  = _pages[0].RecordId,
                    RecordId        = elementVersionId++,
                    Version         = 2,
                    LayoutId        = _layouts[0].RecordId,
                    AssetDeployment = AssetDeployment.PerWebsite,
                    Title           = "First CMS Page",
                    Routes          = new []
                    {
                        new PageRouteRecord
                        {
                            Path     = "/cms/page1",
                            Priority = 200
                        },
                        new PageRouteRecord
                        {
                            Path     = "/cms/page1_old_url",
                            Priority = -10
                        }
                    },
                    LayoutZones = new []
                    {
                        new LayoutZoneRecord
                        {
                            ZoneName     = "main",
                            ContentType  = "html",
                            ContentName  = "cms-page1",
                            ContentValue = "<p>This is CMS page 1</p>"
                        }
                    }
                },
                new PageVersionRecord
                {
                    ParentRecordId  = _pages[1].RecordId,
                    RecordId        = elementVersionId++,
                    Version         = 2,
                    LayoutId        = _layouts[0].RecordId,
                    AssetDeployment = AssetDeployment.PerWebsite,
                    Title           = "Second CMS Page",
                    Routes          = new []
                    {
                        new PageRouteRecord
                        {
                            Path     = "/cms/page2",
                            Priority = 200
                        }
                    },
                    LayoutZones = new []
                    {
                        new LayoutZoneRecord
                        {
                            ZoneName     = "main",
                            ContentType  = "html",
                            ContentName  = "cms-page1",
                            ContentValue = "<p>This is CMS page 2</p>"
                        }
                    }
                }
            };

            _websiteVersions = new []
            {
                new WebsiteVersionRecord
                {
                    RecordId    = websiteVersionId++,
                    Name        = "1.0",
                    Description = "First version",
                    CreatedBy   = "urn:user:1234",
                    CreatedWhen = DateTime.UtcNow,
                },
                new WebsiteVersionRecord
                {
                    RecordId    = websiteVersionId++,
                    Name        = "1.1",
                    Description = "Modified layout",
                    CreatedBy   = "urn:user:1234",
                    CreatedWhen = DateTime.UtcNow,
                }
            };

            _environments = new[]
            {
                new EnvironmentRecord
                {
                    RecordId         = 1,
                    Name             = "prod",
                    CreatedBy        = "urn:user:1234",
                    CreatedWhen      = DateTime.UtcNow,
                    DisplayName      = "Production",
                    BaseUrl          = "http://sample1.localhost/",
                    WebsiteVersionId = _websiteVersions[0].RecordId
                },
                new EnvironmentRecord
                {
                    RecordId         = 1,
                    Name             = "stage",
                    CreatedBy        = "urn:user:1234",
                    CreatedWhen      = DateTime.UtcNow,
                    DisplayName      = "Staging",
                    BaseUrl          = "http://staging.sample1.localhost/",
                    WebsiteVersionId = _websiteVersions[1].RecordId
                }
            };

            _websiteVersionPages = new []
            {
                new WebsiteVersionPageRecord
                {
                    WebsiteVersionId = _websiteVersions[0].RecordId,
                    PageId           = _pageVersions[0].ParentRecordId,
                    PageVersionId    = _pageVersions[0].RecordId
                },
                new WebsiteVersionPageRecord
                {
                    WebsiteVersionId = _websiteVersions[0].RecordId,
                    PageId           = _pageVersions[1].ParentRecordId,
                    PageVersionId    = _pageVersions[1].RecordId
                },
                new WebsiteVersionPageRecord
                {
                    WebsiteVersionId = _websiteVersions[1].RecordId,
                    PageId           = _pageVersions[2].ParentRecordId,
                    PageVersionId    = _pageVersions[2].RecordId
                },
                new WebsiteVersionPageRecord
                {
                    WebsiteVersionId = _websiteVersions[1].RecordId,
                    PageId           = _pageVersions[3].ParentRecordId,
                    PageVersionId    = _pageVersions[3].RecordId
                }
            };

            _websiteVersionLayouts = new []
            {
                new WebsiteVersionLayoutRecord
                {
                    WebsiteVersionId = _websiteVersions[0].RecordId,
                    LayoutId         = _layoutVersions[0].ParentRecordId,
                    LayoutVersionId  = _layoutVersions[0].RecordId
                },
                new WebsiteVersionLayoutRecord
                {
                    WebsiteVersionId = _websiteVersions[1].RecordId,
                    LayoutId         = _layoutVersions[1].ParentRecordId,
                    LayoutVersionId  = _layoutVersions[1].RecordId
                }
            };

            _websiteVersionRegions = new []
            {
                new WebsiteVersionRegionRecord
                {
                    WebsiteVersionId = _websiteVersions[0].RecordId,
                    RegionId         = _regionVersions[0].ParentRecordId,
                    RegionVersionId  = _regionVersions[0].RecordId
                },
                new WebsiteVersionRegionRecord
                {
                    WebsiteVersionId = _websiteVersions[0].RecordId,
                    RegionId         = _regionVersions[1].ParentRecordId,
                    RegionVersionId  = _regionVersions[1].RecordId
                },
                new WebsiteVersionRegionRecord
                {
                    WebsiteVersionId = _websiteVersions[1].RecordId,
                    RegionId         = _regionVersions[0].ParentRecordId,
                    RegionVersionId  = _regionVersions[0].RecordId
                },
                new WebsiteVersionRegionRecord
                {
                    WebsiteVersionId = _websiteVersions[1].RecordId,
                    RegionId         = _regionVersions[1].ParentRecordId,
                    RegionVersionId  = _regionVersions[1].RecordId
                }
            };

            _websiteVersionDataTypes  = new WebsiteVersionDataTypeRecord [0];
            _websiteVersionComponents = new WebsiteVersionComponentRecord [0];
        }
Exemple #2
0
        private void AllComponentClassess(IEndpointRequest request)
        {
            var components = new List <ComponentVersionRecord>();

            foreach (var componentEntry in _nameManager.AllComponents().OrderBy(c => c.Key))
            {
                var componentRecord = new ComponentVersionRecord
                {
                    Name          = componentEntry.Key,
                    DisplayName   = componentEntry.Key,
                    CreatedWhen   = DateTime.UtcNow,
                    CreatedBy     = request.Identity,
                    ComponentName = componentEntry.Key.ToLower()
                };

                var component     = componentEntry.Value;
                var componentType = component.GetType();

                componentRecord.Name = componentType.FullName;

                var descriptions = componentType.GetCustomAttributes(typeof(DescriptionAttribute), true);
                if (descriptions != null && descriptions.Length > 0)
                {
                    componentRecord.Description = ((DescriptionAttribute)descriptions[0]).Html;
                }

                var excludedProperties = new List <string>
                {
                    "ElementType",
                    "HeadWriters",
                    "ScriptWriters",
                    "StyleWriters",
                    "BodyWriters",
                    "InitializationWriters",
                    "CssRules",
                    "JavascriptFunctions",
                    "AssetDeployment",
                    "Module",
                    "Package",
                    "Name",
                    "ServiceName",
                    "ClientScript"
                };

                var properties = componentType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
                if (properties != null && properties.Length > 0)
                {
                    componentRecord.Properties = properties
                                                 .Where(p => !excludedProperties.Contains(p.Name))
                                                 .Select(p => new ElementPropertyRecord
                    {
                        Name        = p.Name,
                        DisplayName = p.Name,
                        CreatedBy   = request.Identity,
                        CreatedWhen = DateTime.UtcNow,
                        Type        = p.PropertyType,
                        TypeName    = p.PropertyType.FullName
                    })
                                                 .ToArray();
                }

                components.Add(componentRecord);
            }
            request.Success(components);
        }