Exemplo n.º 1
0
        public static IServiceCollection AddOrchardMvc(this IServiceCollection services)
        {
            services
            .AddMvcCore(options =>
            {
                options.Filters.Add(new ModelBinderAccessorFilter());
                options.Filters.Add(typeof(AutoValidateAntiforgeryTokenAuthorizationFilter));
                options.ModelBinderProviders.Insert(0, new CheckMarkModelBinderProvider());
            })
            .AddViews()
            .AddViewLocalization()
            .AddRazorViewEngine()
            .AddJsonFormatters();

            services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>();
            services.AddTransient <IFilterProvider, DependencyFilterProvider>();
            services.AddTransient <IMvcRazorHost, TagHelperMvcRazorHost>();
            services.AddTransient <IApplicationModelProvider, ModuleAreaRouteConstraintApplicationModelProvider>();

            services.Configure <RazorViewEngineOptions>(configureOptions: options =>
            {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);

                var extensionLibraryService = services.BuildServiceProvider().GetService <IExtensionLibraryService>();
                ((List <MetadataReference>)options.AdditionalCompilationReferences).AddRange(extensionLibraryService.MetadataReferences());
            });

            return(services);
        }
Exemplo n.º 2
0
        public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint)
        {
            ServiceCollection serviceCollection = new ServiceCollection();

            serviceCollection.AddScoped <IOrchardShell, DefaultOrchardShell>();
            serviceCollection.AddScoped <IRouteBuilder, DefaultShellRouteBuilder>();
            serviceCollection.AddInstance(settings);
            serviceCollection.AddInstance(blueprint.Descriptor);
            serviceCollection.AddInstance(blueprint);

            serviceCollection.AddMvc();

            serviceCollection.Configure <RazorViewEngineOptions>(options => {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);
            });

            var p = _serviceProvider.GetService <IOrchardLibraryManager>();

            //serviceCollection.AddScoped<IActionSelector, DefaultActionSelectorTest>();
            //serviceCollection.AddTransient<INestedProvider<ActionDescriptorProviderContext>, ControllerActionDescriptorProviderTest>();
            serviceCollection.AddInstance <IAssemblyProvider>(new DefaultAssemblyProviderTest(p, _serviceProvider, _serviceProvider.GetService <IAssemblyLoaderContainer>()));

            foreach (var dependency in blueprint.Dependencies)
            {
                foreach (var interfaceType in dependency.Type.GetInterfaces()
                         .Where(itf => typeof(IDependency).IsAssignableFrom(itf)))
                {
                    Logger.Debug("Type: {0}, Interface Type: {1}", dependency.Type, interfaceType);

                    if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType))
                    {
                        serviceCollection.AddSingleton(interfaceType, dependency.Type);
                    }
                    else if (typeof(IUnitOfWorkDependency).IsAssignableFrom(interfaceType))
                    {
                        serviceCollection.AddScoped(interfaceType, dependency.Type);
                    }
                    else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType))
                    {
                        serviceCollection.AddTransient(interfaceType, dependency.Type);
                    }
                    else
                    {
                        serviceCollection.AddScoped(interfaceType, dependency.Type);
                    }
                }
            }

            //foreach (var item in blueprint.Controllers) {
            //    var serviceKeyName = (item.AreaName + "/" + item.ControllerName).ToLowerInvariant();
            //    var serviceKeyType = item.Type;
            //    serviceCollection.AddScoped(serviceKeyType);

            //}

            return(BuildFallbackServiceProvider(
                       serviceCollection,
                       _serviceProvider));
        }
Exemplo n.º 3
0
        public void ConfigureMvc(IMvcBuilder builder)
        {
            var serviceProvider = builder.Services.BuildServiceProvider();
            var env             = serviceProvider.GetRequiredService <IHostingEnvironment>();

            var services = new ServiceCollection();

            services.AddSingleton <IHostingEnvironment>(env);

            var startUp = new Startup(env);

            startUp.ConfigureServices(services);

            serviceProvider = services.BuildServiceProvider();
            var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();

            var app = new ApplicationBuilder(serviceProvider);

            startUp.Configure(app, loggerFactory);

            builder.AddRazorOptions(options =>
            {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);

                var extensionLibraryService = services.BuildServiceProvider().GetService <IExtensionLibraryService>();
                ((List <MetadataReference>)options.AdditionalCompilationReferences).AddRange(extensionLibraryService.MetadataReferences());
            });
        }
Exemplo n.º 4
0
        public static IServiceCollection AddOrchardMvc(this IServiceCollection services)
        {
            services
            .AddMvcCore(options =>
            {
                options.Filters.Add(new ModelBinderAccessorFilter());
                options.Conventions.Add(new ModuleAreaRouteConstraintConvention());
                options.ModelBinders.Insert(0, new CheckMarkModelBinder());
            })
            .AddViews()
            .AddViewLocalization()
            .AddRazorViewEngine()
            .AddJsonFormatters();

            services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>();
            services.AddTransient <IFilterProvider, DependencyFilterProvider>();
            services.AddTransient <IMvcRazorHost, TagHelperMvcRazorHost>();

            services.AddScoped <IAssemblyProvider, OrchardMvcAssemblyProvider>();

            services.AddSingleton <ICompilationService, DefaultRoslynCompilationService>();

            services.Configure <RazorViewEngineOptions>(options =>
            {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);
            });
            return(services);
        }
Exemplo n.º 5
0
        public static IServiceCollection AddOrchardMvc(this IServiceCollection services)
        {
            services
            .AddMvcCore(options =>
            {
                options.Filters.Add(new ModelBinderAccessorFilter());
                options.Conventions.Add(new ModuleAreaRouteConstraintConvention());
                options.ModelBinderProviders.Insert(0, new CheckMarkModelBinderProvider());
            })
            .AddViews()
            .AddViewLocalization()
            .AddRazorViewEngine()
            .AddJsonFormatters();

            services.AddMvcDnx();

            services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>();
            services.AddTransient <IFilterProvider, DependencyFilterProvider>();
            services.AddTransient <IMvcRazorHost, TagHelperMvcRazorHost>();

            if (DnxPlatformServices.Default.LibraryManager != null)
            {
                var partManager    = GetApplicationPartManager(services);
                var libraryManager = new OrchardLibraryManager(DnxPlatformServices.Default.LibraryManager);
                var provider       = new OrchardMvcAssemblyProvider(
                    libraryManager,
                    DnxPlatformServices.Default.AssemblyLoaderContainer,
                    new ExtensionAssemblyLoader(
                        PlatformServices.Default.Application,
                        DnxPlatformServices.Default.AssemblyLoadContextAccessor,
                        PlatformServices.Default.Runtime,
                        libraryManager));

                foreach (var assembly in provider.CandidateAssemblies)
                {
                    partManager.ApplicationParts.Add(new AssemblyPart(assembly));
                }
            }

            services.AddSingleton <ICompilationService, DnxRoslynCompilationService>();

            services.Configure <RazorViewEngineOptions>(configureOptions: options =>
            {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);
            });
            return(services);
        }
Exemplo n.º 6
0
        public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint)
        {
            ServiceCollection serviceCollection = new ServiceCollection();

            serviceCollection.AddScoped <IOrchardShell, DefaultOrchardShell>();
            serviceCollection.AddScoped <IRouteBuilder, DefaultShellRouteBuilder>();
            serviceCollection.AddInstance(settings);
            serviceCollection.AddInstance(blueprint.Descriptor);
            serviceCollection.AddInstance(blueprint);

            serviceCollection.AddScoped <ITypeActivator, TypeActivator>();

            serviceCollection.AddMvc();

            serviceCollection.Configure <RazorViewEngineOptions>(options => {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);
            });

            foreach (var dependency in blueprint.Dependencies)
            {
                foreach (var interfaceType in dependency.Type.GetInterfaces()
                         .Where(itf => typeof(IDependency).IsAssignableFrom(itf)))
                {
                    Logger.Debug("Type: {0}, Interface Type: {1}", dependency.Type, interfaceType);

                    serviceCollection.AddScoped(interfaceType, dependency.Type);

                    if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType))
                    {
                        serviceCollection.AddSingleton(interfaceType, dependency.Type);
                    }
                    else if (typeof(IUnitOfWorkDependency).IsAssignableFrom(interfaceType))
                    {
                        serviceCollection.AddScoped(interfaceType, dependency.Type);
                    }
                    else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType))
                    {
                        serviceCollection.AddTransient(interfaceType, dependency.Type);
                    }
                }
            }

            return(BuildFallbackServiceProvider(
                       serviceCollection,
                       _serviceProvider));
        }
        /// <summary>
        /// Adds host level services.
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IServiceCollection AddThemingHost(this IServiceCollection services)
        {
            services.AddTransient <IMvcRazorHost, ShapeRazorHost>();
            services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>();
            services.AddScoped <IFilterMetadata, ModelBinderAccessorFilter>();

            services.Configure <RazorViewEngineOptions>(options =>
            {
                options.FileProviders.Add(new ThemingFileProvider());
                //var expander = new ThemeAwareViewLocationExpander();
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);
            });

            services.AddScoped <IFeatureBuilderEvents, ThemeFeatureBuilderEvents>();

            return(services);
        }
        public static IServiceCollection AddOrchardMvc(this IServiceCollection services)
        {
            services
            .AddMvcCore()
            .AddViews()
            .AddRazorViewEngine();

            services.AddScoped <IAssemblyProvider, OrchardMvcAssemblyProvider>();

            services.AddSingleton <ICompilationService, DefaultRoslynCompilationService>();

            services.Configure <RazorViewEngineOptions>(options =>
            {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);
            });
            return(services);
        }
Exemplo n.º 9
0
        public static IServiceCollection AddModuleServices(this IServiceCollection services, IConfiguration configuration, string manifestFileName, Action <MvcOptions> mvcSetupAction)
        {
            services.AddSingleton(new ShellFeature("Orchard.Hosting"));
            services.AddWebHost();
            services.AddManifestDefinition(manifestFileName, "module");
            services.AddExtensionLocation("Modules");

            services
            .AddMvcCore(options =>
            {
                options.Filters.Add(typeof(AutoValidateAntiforgeryTokenAuthorizationFilter));
                options.ModelBinderProviders.Insert(0, new CheckMarkModelBinderProvider());

                mvcSetupAction?.Invoke(options);
            })
            .AddViews()
            .AddViewLocalization()
            .AddRazorViewEngine()
            .AddJsonFormatters();

            services.AddTransient <IFilterProvider, DependencyFilterProvider>();
            services.AddTransient <IApplicationModelProvider, ModuleAreaRouteConstraintApplicationModelProvider>();

            services.Configure <RazorViewEngineOptions>(configureOptions: options =>
            {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);

                var extensionLibraryService = services.BuildServiceProvider().GetService <IExtensionLibraryService>();
                ((List <MetadataReference>)options.AdditionalCompilationReferences).AddRange(extensionLibraryService.MetadataReferences());
            });

            // Register the configuration object for modules to register options with it
            if (configuration != null)
            {
                services.AddSingleton <IConfiguration>(configuration);
            }

            // Register the list of services to be resolved later on
            services.AddSingleton(_ => services);

            return(services);
        }
Exemplo n.º 10
0
        public static IServiceCollection AddOrchardMvc(this IServiceCollection services)
        {
            services
            .AddMvcCore(options =>
            {
                options.Filters.Add(new ModelBinderAccessorFilter());
                options.ModelBinderProviders.Insert(0, new CheckMarkModelBinderProvider());
            })
            .AddViews()
            .AddViewLocalization()
            .AddRazorViewEngine()
            .AddJsonFormatters();

            services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>();
            services.AddTransient <IFilterProvider, DependencyFilterProvider>();
            services.AddTransient <IMvcRazorHost, TagHelperMvcRazorHost>();
            services.AddTransient <IApplicationModelProvider, ModuleAreaRouteConstraintApplicationModelProvider>();

            services.Configure <RazorViewEngineOptions>(configureOptions: options =>
            {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);

                var extensionLibraryService = services.BuildServiceProvider().GetService <IExtensionLibraryService>();

                var previous = options.CompilationCallback;
                options.CompilationCallback = (context) =>
                {
                    previous?.Invoke(context);
                    context.Compilation = context.Compilation.AddReferences(extensionLibraryService.MetadataReferences());
                };
            });

            services.AddSingleton <ICompilationService, DefaultRoslynCompilationService>();

            return(services);
        }