Exemplo n.º 1
0
        /// <summary>
        /// Initializes the application object.
        /// </summary>
        /// <param name="api">The current api</param>
        private void Initialize()
        {
            if (!_isInitialized)
            {
                lock (_mutex)
                {
                    if (!_isInitialized)
                    {
                        // Configure object mapper
                        var mapperConfig = new MapperConfiguration(cfg =>
                        {
                            cfg.CreateMap <Data.Alias, Data.Alias>()
                            .ForMember(a => a.Id, o => o.Ignore())
                            .ForMember(a => a.Created, o => o.Ignore());
                            cfg.CreateMap <Data.Category, Data.Category>()
                            .ForMember(c => c.Id, o => o.Ignore())
                            .ForMember(c => c.Created, o => o.Ignore());
                            cfg.CreateMap <Data.MediaFolder, Data.MediaFolder>()
                            .ForMember(f => f.Id, o => o.Ignore())
                            .ForMember(f => f.Created, o => o.Ignore())
                            .ForMember(f => f.Media, o => o.Ignore());
                            cfg.CreateMap <Data.MediaFolder, Models.MediaStructureItem>()
                            .ForMember(f => f.Level, o => o.Ignore())
                            .ForMember(f => f.Items, o => o.Ignore());
                            cfg.CreateMap <Data.Page, Models.PageBase>()
                            .ForMember(p => p.TypeId, o => o.MapFrom(m => m.PageTypeId))
                            .ForMember(p => p.Permalink, o => o.MapFrom(m => "/" + m.Slug))
                            .ForMember(p => p.Blocks, o => o.Ignore());
                            cfg.CreateMap <Models.PageBase, Data.Page>()
                            .ForMember(p => p.PageTypeId, o => o.MapFrom(m => m.TypeId))
                            .ForMember(p => p.Blocks, o => o.Ignore())
                            .ForMember(p => p.Fields, o => o.Ignore())
                            .ForMember(p => p.Created, o => o.Ignore())
                            .ForMember(p => p.LastModified, o => o.Ignore())
                            .ForMember(p => p.PageType, o => o.Ignore())
                            .ForMember(p => p.Site, o => o.Ignore())
                            .ForMember(p => p.Parent, o => o.Ignore());
                            cfg.CreateMap <Data.Page, Models.SitemapItem>()
                            .ForMember(p => p.MenuTitle, o => o.Ignore())
                            .ForMember(p => p.Level, o => o.Ignore())
                            .ForMember(p => p.Items, o => o.Ignore())
                            .ForMember(p => p.PageTypeName, o => o.Ignore())
                            .ForMember(p => p.Permalink, o => o.MapFrom(d => !d.ParentId.HasValue && d.SortOrder == 0 ? "/" : "/" + d.Slug));
                            cfg.CreateMap <Data.Param, Data.Param>()
                            .ForMember(p => p.Id, o => o.Ignore())
                            .ForMember(p => p.Created, o => o.Ignore());
                            cfg.CreateMap <Data.Post, Models.PostBase>()
                            .ForMember(p => p.TypeId, o => o.MapFrom(m => m.PostTypeId))
                            .ForMember(p => p.Permalink, o => o.MapFrom(m => "/" + m.Blog.Slug + "/" + m.Slug))
                            .ForMember(p => p.Blocks, o => o.Ignore());
                            cfg.CreateMap <Models.PostBase, Data.Post>()
                            .ForMember(p => p.PostTypeId, o => o.MapFrom(m => m.TypeId))
                            .ForMember(p => p.CategoryId, o => o.MapFrom(m => m.Category.Id))
                            .ForMember(p => p.Blocks, o => o.Ignore())
                            .ForMember(p => p.Fields, o => o.Ignore())
                            .ForMember(p => p.Created, o => o.Ignore())
                            .ForMember(p => p.LastModified, o => o.Ignore())
                            .ForMember(p => p.PostType, o => o.Ignore())
                            .ForMember(p => p.Blog, o => o.Ignore())
                            .ForMember(p => p.Category, o => o.Ignore())
                            .ForMember(p => p.Tags, o => o.Ignore());
                            cfg.CreateMap <Data.Site, Data.Site>()
                            .ForMember(s => s.Id, o => o.Ignore())
                            .ForMember(s => s.Created, o => o.Ignore());
                            cfg.CreateMap <Data.Site, Models.SiteContentBase>()
                            .ForMember(s => s.TypeId, o => o.MapFrom(m => m.SiteTypeId));
                            cfg.CreateMap <Models.SiteContentBase, Data.Site>()
                            .ForMember(s => s.SiteTypeId, o => o.Ignore())
                            .ForMember(s => s.InternalId, o => o.Ignore())
                            .ForMember(s => s.Description, o => o.Ignore())
                            .ForMember(s => s.Hostnames, o => o.Ignore())
                            .ForMember(s => s.IsDefault, o => o.Ignore())
                            .ForMember(s => s.Fields, o => o.Ignore())
                            .ForMember(s => s.Created, o => o.Ignore())
                            .ForMember(s => s.LastModified, o => o.Ignore());
                            cfg.CreateMap <Data.Tag, Data.Tag>()
                            .ForMember(t => t.Id, o => o.Ignore())
                            .ForMember(t => t.Created, o => o.Ignore());
                        });
                        mapperConfig.AssertConfigurationIsValid();
                        _mapper = mapperConfig.CreateMapper();

                        // Setup media types
                        _mediaTypes.Documents.Add(".pdf", "application/pdf");
                        _mediaTypes.Images.Add(".jpg", "image/jpeg");
                        _mediaTypes.Images.Add(".jpeg", "image/jpeg");
                        _mediaTypes.Images.Add(".png", "image/png");
                        _mediaTypes.Videos.Add(".mp4", "video/mp4");

                        // Compose content types
                        _contentTypes.Register <Models.IPage>("Page", "Page");
                        _contentTypes.Register <Models.IBlogPage>("Blog", "Archive", true);

                        // Compose field types
                        _fields.Register <Extend.Fields.CheckBoxField>();
                        _fields.Register <Extend.Fields.DateField>();
                        _fields.Register <Extend.Fields.DocumentField>();
                        _fields.Register <Extend.Fields.HtmlField>();
                        _fields.Register <Extend.Fields.ImageField>();
                        _fields.Register <Extend.Fields.MarkdownField>();
                        _fields.Register <Extend.Fields.MediaField>();
                        _fields.Register <Extend.Fields.NumberField>();
                        _fields.Register <Extend.Fields.PageField>();
                        _fields.Register <Extend.Fields.PostField>();
                        _fields.Register <Extend.Fields.StringField>();
                        _fields.Register <Extend.Fields.TextField>();
                        _fields.Register <Extend.Fields.VideoField>();

                        // Compose block types
                        _blocks.Register <Extend.Blocks.HtmlBlock>();
                        _blocks.Register <Extend.Blocks.HtmlColumnBlock>();
                        _blocks.Register <Extend.Blocks.ImageBlock>();
                        _blocks.Register <Extend.Blocks.QuoteBlock>();
                        _blocks.Register <Extend.Blocks.TextBlock>();

                        // Compose serializers
                        _serializers.Register <Extend.Fields.CheckBoxField>(new CheckBoxFieldSerializer <Extend.Fields.CheckBoxField>());
                        _serializers.Register <Extend.Fields.DateField>(new DateFieldSerializer());
                        _serializers.Register <Extend.Fields.DocumentField>(new DocumentFieldSerializer());
                        _serializers.Register <Extend.Fields.HtmlField>(new StringFieldSerializer <Extend.Fields.HtmlField>());
                        _serializers.Register <Extend.Fields.MarkdownField>(new StringFieldSerializer <Extend.Fields.MarkdownField>());
                        _serializers.Register <Extend.Fields.MediaField>(new MediaFieldSerializer());
                        _serializers.Register <Extend.Fields.NumberField>(new IntegerFieldSerializer <Extend.Fields.NumberField>());
                        _serializers.Register <Extend.Fields.PageField>(new PageFieldSerializer());
                        _serializers.Register <Extend.Fields.PostField>(new PostFieldSerializer());
                        _serializers.Register <Extend.Fields.StringField>(new StringFieldSerializer <Extend.Fields.StringField>());
                        _serializers.Register <Extend.Fields.TextField>(new StringFieldSerializer <Extend.Fields.TextField>());
                        _serializers.Register <Extend.Fields.ImageField>(new ImageFieldSerializer());
                        _serializers.Register <Extend.Fields.VideoField>(new VideoFieldSerializer());

                        // Create markdown converter
                        _markdown = new DefaultMarkdown();

                        // Register permissions
                        _permissions["Core"].Add(new PermissionItem
                        {
                            Name  = Permission.PagePreview,
                            Title = "Page Preview"
                        });
                        _permissions["Core"].Add(new PermissionItem
                        {
                            Name  = Permission.PostPreview,
                            Title = "Post Preview"
                        });

                        // Initialize all modules
                        foreach (var module in _modules)
                        {
                            module.Instance.Init();
                        }

                        _isInitialized = true;
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes the application object.
        /// </summary>
        /// <param name="api">The current api</param>
        private void Initialize(IApi api)
        {
            if (!isInitialized)
            {
                lock (mutex) {
                    if (!isInitialized)
                    {
                        // Configure object mapper
                        var mapperConfig = new MapperConfiguration(cfg => {
                            cfg.CreateMap <Data.Alias, Data.Alias>()
                            .ForMember(a => a.Id, o => o.Ignore())
                            .ForMember(a => a.Created, o => o.Ignore());
                            cfg.CreateMap <Data.Category, Data.Category>()
                            .ForMember(c => c.Id, o => o.Ignore())
                            .ForMember(c => c.Created, o => o.Ignore());
                            cfg.CreateMap <Data.MediaFolder, Data.MediaFolder>()
                            .ForMember(f => f.Id, o => o.Ignore())
                            .ForMember(f => f.Created, o => o.Ignore())
                            .ForMember(f => f.Media, o => o.Ignore());
                            cfg.CreateMap <Data.MediaFolder, Models.MediaStructureItem>()
                            .ForMember(f => f.Level, o => o.Ignore())
                            .ForMember(f => f.Items, o => o.Ignore());
                            cfg.CreateMap <Data.Page, Models.PageBase>()
                            .ForMember(p => p.TypeId, o => o.MapFrom(m => m.PageTypeId))
                            .ForMember(p => p.Permalink, o => o.MapFrom(m => "/" + m.Slug));
                            cfg.CreateMap <Models.PageBase, Data.Page>()
                            .ForMember(p => p.PageTypeId, o => o.MapFrom(m => m.TypeId))
                            .ForMember(p => p.Fields, o => o.Ignore())
                            .ForMember(p => p.Created, o => o.Ignore())
                            .ForMember(p => p.LastModified, o => o.Ignore())
                            .ForMember(p => p.PageType, o => o.Ignore())
                            .ForMember(p => p.Site, o => o.Ignore())
                            .ForMember(p => p.Parent, o => o.Ignore());
                            cfg.CreateMap <Data.Page, Models.SitemapItem>()
                            .ForMember(p => p.MenuTitle, o => o.Ignore())
                            .ForMember(p => p.Level, o => o.Ignore())
                            .ForMember(p => p.Items, o => o.Ignore())
                            .ForMember(p => p.PageTypeName, o => o.Ignore())
                            .ForMember(p => p.Permalink, o => o.MapFrom(d => !d.ParentId.HasValue && d.SortOrder == 0 ? "/" : "/" + d.Slug));
                            cfg.CreateMap <Data.Param, Data.Param>()
                            .ForMember(p => p.Id, o => o.Ignore())
                            .ForMember(p => p.Created, o => o.Ignore());
                            cfg.CreateMap <Data.Post, Models.PostBase>()
                            .ForMember(p => p.TypeId, o => o.MapFrom(m => m.PostTypeId))
                            .ForMember(p => p.Permalink, o => o.MapFrom(m => "/" + m.Blog.Slug + "/" + m.Slug));
                            cfg.CreateMap <Models.PostBase, Data.Post>()
                            .ForMember(p => p.PostTypeId, o => o.MapFrom(m => m.TypeId))
                            .ForMember(p => p.CategoryId, o => o.MapFrom(m => m.Category.Id))
                            .ForMember(p => p.Fields, o => o.Ignore())
                            .ForMember(p => p.Created, o => o.Ignore())
                            .ForMember(p => p.LastModified, o => o.Ignore())
                            .ForMember(p => p.PostType, o => o.Ignore())
                            .ForMember(p => p.Blog, o => o.Ignore())
                            .ForMember(p => p.Category, o => o.Ignore())
                            .ForMember(p => p.Tags, o => o.Ignore());
                            cfg.CreateMap <Data.Site, Data.Site>()
                            .ForMember(s => s.Id, o => o.Ignore())
                            .ForMember(s => s.Created, o => o.Ignore());
                            cfg.CreateMap <Data.Tag, Data.Tag>()
                            .ForMember(t => t.Id, o => o.Ignore())
                            .ForMember(t => t.Created, o => o.Ignore());
                        });
                        mapperConfig.AssertConfigurationIsValid();
                        mapper = mapperConfig.CreateMapper();

                        // Setup media types
                        mediaTypes.Documents.Add(".pdf", "application/pdf");
                        mediaTypes.Images.Add(".jpg", "image/jpeg");
                        mediaTypes.Images.Add(".jpeg", "image/jpeg");
                        mediaTypes.Images.Add(".png", "image/png");
                        mediaTypes.Videos.Add(".mp4", "video/mp4");

                        // Compose content types
                        contentTypes.Register <Models.IPage>("Page", "Page");
                        contentTypes.Register <Models.IBlogPage>("Blog", "Archive", true);

                        // Compose field types
                        fields.Register <Extend.Fields.DateField>();
                        fields.Register <Extend.Fields.DocumentField>();
                        fields.Register <Extend.Fields.HtmlField>();
                        fields.Register <Extend.Fields.ImageField>();
                        fields.Register <Extend.Fields.MarkdownField>();
                        fields.Register <Extend.Fields.MediaField>();
                        fields.Register <Extend.Fields.PageField>();
                        fields.Register <Extend.Fields.PostField>();
                        fields.Register <Extend.Fields.StringField>();
                        fields.Register <Extend.Fields.TextField>();
                        fields.Register <Extend.Fields.VideoField>();

                        // Compose serializers
                        serializers.Register <Extend.Fields.DateField>(new DateFieldSerializer());
                        serializers.Register <Extend.Fields.DocumentField>(new DocumentFieldSerializer());
                        serializers.Register <Extend.Fields.HtmlField>(new StringFieldSerializer <Extend.Fields.HtmlField>());
                        serializers.Register <Extend.Fields.MarkdownField>(new StringFieldSerializer <Extend.Fields.MarkdownField>());
                        serializers.Register <Extend.Fields.MediaField>(new MediaFieldSerializer());
                        serializers.Register <Extend.Fields.PageField>(new PageFieldSerializer());
                        serializers.Register <Extend.Fields.PostField>(new PostFieldSerializer());
                        serializers.Register <Extend.Fields.StringField>(new StringFieldSerializer <Extend.Fields.StringField>());
                        serializers.Register <Extend.Fields.TextField>(new StringFieldSerializer <Extend.Fields.TextField>());
                        serializers.Register <Extend.Fields.ImageField>(new ImageFieldSerializer());
                        serializers.Register <Extend.Fields.VideoField>(new VideoFieldSerializer());

                        // Create markdown converter
                        markdown = new DefaultMarkdown();

                        // Initialize all modules
                        foreach (var module in modules)
                        {
                            module.Instance.Init();
                        }

                        isInitialized = true;
                    }
                }
            }
        }