Esempio n. 1
0
 public CmsPageController(NccPageService pageService, NccPageDetailsService nccPageDetailsService, NccShortCodeProvider nccShortCodeProvider, IMediator mediator, ILoggerFactory factory)
 {
     _pageService          = pageService;
     _pageDetailsService   = nccPageDetailsService;
     _nccShortCodeProvider = nccShortCodeProvider;
     _mediator             = mediator;
     _logger = factory.CreateLogger <CmsPageController>();
 }
Esempio n. 2
0
 public PostController(NccPostService nccPostService, NccPostDetailsService nccPostDetailsService, NccCategoryService nccCategoryService, NccTagService nccTagService, NccShortCodeProvider nccShortCodeProvider, IMediator mediator, ILoggerFactory loggerFactory)
 {
     _nccPostService        = nccPostService;
     _nccPostDetailsService = nccPostDetailsService;
     _nccCategoryService    = nccCategoryService;
     _nccTagService         = nccTagService;
     _nccShortCodeProvider  = nccShortCodeProvider;
     _loggerFactory         = loggerFactory;
     _mediator = mediator;
     _logger   = _loggerFactory.CreateLogger <BlogController>();
 }
Esempio n. 3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            _services = services;

            _services.AddLogging(loggingBuilder =>
                                 loggingBuilder.AddSerilog(dispose: true));

            _services.AddOptions();
            //services.AddSingleton(typeof(IStringLocalizerFactory), typeof(ClassLibraryStringLocalizerFactory));
            services.AddSingleton(typeof(IStringLocalizer), typeof(NccStringLocalizer <SharedResource>));

            _services.AddLocalization();

            _mvcBuilder = services.AddMvc();
            _mvcBuilder.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
            _mvcBuilder.AddDataAnnotationsLocalization(options => {
                options.DataAnnotationLocalizerProvider = (type, factory) => new NccStringLocalizer <SharedResource>(factory, new HttpContextAccessor());
            });

            _services.AddResponseCaching();
            _services.AddSession();
            _services.AddDistributedMemoryCache();
            _services.AddResponseCompression();
            _services.AddSingleton(Configuration);

            _services.AddNccCoreModuleRepositoryAndServices();

            _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

            _themeManager = new ThemeManager();
            var themeFolder = Path.Combine(_hostingEnvironment.ContentRootPath, NccInfo.ThemeFolder);

            GlobalConfig.Themes = _themeManager.ScanThemeDirectory(themeFolder);

            var themesDirectoryContents = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ThemeFolder);

            _themeManager.RegisterThemes(_mvcBuilder, _services, _serviceProvider, themesDirectoryContents);

            var moduleFolder     = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ModuleFolder);
            var coreModuleFolder = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.CoreModuleFolder);
            var coreModules      = _moduleManager.LoadModules(coreModuleFolder);
            var userModules      = _moduleManager.LoadModules(moduleFolder);

            GlobalConfig.Modules.AddRange(userModules);


            _services.AddMaintenance(() => _setupConfig.IsMaintenanceMode, Encoding.UTF8.GetBytes("<div style='width:100%;text-align:center; padding-top:10px;'><h1>" + _setupConfig.MaintenanceMessage + "</h1></div>"), "text/html", _setupConfig.MaintenanceDownTime * 60);

            if (SetupHelper.IsDbCreateComplete)
            {
                if (SetupHelper.SelectedDatabase == "SqLite")
                {
                    _services.AddDbContext <NccDbContext>(options =>
                                                          options.UseSqlite(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework"))
                                                          );
                }
                else if (SetupHelper.SelectedDatabase == "MSSQL")
                {
                    _services.AddDbContext <NccDbContext>(options =>
                                                          options.UseSqlServer(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework"))
                                                          );
                }
                else if (SetupHelper.SelectedDatabase == "MySql")
                {
                    _services.AddDbContext <NccDbContext>(options =>
                                                          options.UseMySql(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework"))
                                                          );
                }

                _services.AddCustomizedIdentity();
                _startup.RegisterDatabase(_services);

                _services.AddAuthorization(options =>
                {
                    options.AddPolicy("SuperAdmin", policy => policy.Requirements.Add(new AuthRequire("SuperAdmin", "")));
                    options.AddPolicy("Administrator", policy => policy.Requirements.Add(new AuthRequire("Administrator", "")));
                    options.AddPolicy("Editor", policy => policy.Requirements.Add(new AuthRequire("Editor", "")));
                    options.AddPolicy("Author", policy => policy.Requirements.Add(new AuthRequire("Author", "")));
                    options.AddPolicy("Contributor", policy => policy.Requirements.Add(new AuthRequire("Contributor", "")));
                    options.AddPolicy("Subscriber", policy => policy.Requirements.Add(new AuthRequire("Subscriber", "")));
                });

                _services.AddSingleton <IAuthorizationHandler, AuthRequireHandler>();
                _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

                GlobalConfig.Modules = _moduleManager.RegisterModules(_mvcBuilder, _services, _serviceProvider);
                _moduleManager.RegisterModuleRepositoryAndServices(_mvcBuilder, _services, _serviceProvider);

                _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

                GlobalConfig.Widgets = _moduleManager.RegisterModuleWidgets(_mvcBuilder, _services, _serviceProvider);
                var themeWidgets = _themeManager.RegisterThemeWidgets(_mvcBuilder, _services, _serviceProvider, themesDirectoryContents);

                if (themeWidgets != null && themeWidgets.Count > 0)
                {
                    GlobalConfig.Widgets.AddRange(themeWidgets);
                }

                _nccShortCodeProvider   = _serviceProvider.GetService <NccShortCodeProvider>();
                GlobalConfig.ShortCodes = _nccShortCodeProvider.ScanAndRegisterShortCodes(GlobalConfig.Modules);
            }

            var defaultCulture = new RequestCulture("en");

            if (SetupHelper.IsAdminCreateComplete)
            {
                GlobalConfig.SetupConfig = SetupHelper.LoadSetup();
                defaultCulture           = new RequestCulture(GlobalConfig.SetupConfig.Language);
            }

            services.Configure <RouteOptions>(options =>
            {
                options.ConstraintMap.Add("lang", typeof(LanguageRouteConstraint));
            });

            _services.Configure <RequestLocalizationOptions>(
                opts =>
            {
                var supportedCultures      = SupportedCultures.Cultures;
                opts.DefaultRequestCulture = defaultCulture;
                opts.SupportedCultures     = supportedCultures;
                opts.SupportedUICultures   = supportedCultures;

                var provider = new RouteDataRequestCultureProvider();
                provider.RouteDataStringKey   = "lang";
                provider.UIRouteDataStringKey = "lang";
                provider.Options = opts; opts.RequestCultureProviders = new[] { provider };
            }
                );

            services.Configure <ClassLibraryLocalizationOptions>(
                options => options.ResourcePaths = new Dictionary <string, string>
            {
                { "NetCoreCMS.Framework", "i18n/Resources" },
                { "NetCoreCMS.Web", "Resources" }
            }
                );

            _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

            GlobalConfig.ServiceProvider = _serviceProvider;
            GlobalConfig.Services        = _services;
        }