/// <summary> /// Creates the resource routes for 6 levels folder structure. /// </summary> /// <param name="context">The context.</param> private void CreateEmbeddedResourcesRoutes(WebModuleRegistrationContext context) { string[] urls = new[] { "file/{area}/{file}.{resourceType}/{*all}", "file/{area}/{folder1}/{file}.{resourceType}/{*all}", "file/{area}/{folder1}/{folder2}/{file}.{resourceType}/{*all}", "file/{area}/{folder1}/{folder2}/{folder3}/{file}.{resourceType}/{*all}", "file/{area}/{folder1}/{folder2}/{folder3}/{folder4}/{file}.{resourceType}/{*all}", "file/{area}/{folder1}/{folder2}/{folder3}/{folder4}/{folder5}/{file}.{resourceType}/{*all}", "file/{area}/{folder1}/{folder2}/{folder3}/{folder4}/{folder5}/{folder6}/{file}.{resourceType}/{*all}" }; int i = 0; foreach (var url in urls) { context.MapRoute( AreaName + "-level" + i++, url, new { controller = "EmbeddedResources", action = "Index" }, new { resourceType = new MimeTypeRouteConstraint() }, new[] { typeof(EmbeddedResourcesController).Namespace }); } }
/// <summary> /// Registers module controller types. /// </summary> /// <param name="registrationContext">The area registration context.</param> /// <param name="containerBuilder">The container builder.</param> /// <param name="controllerExtensions">The controller extensions.</param> public virtual void RegisterModuleControllers(WebModuleRegistrationContext registrationContext, ContainerBuilder containerBuilder, IControllerExtensions controllerExtensions) { var controllerTypes = controllerExtensions.GetControllerTypes(GetType().Assembly); if (controllerTypes != null) { var namespaces = new List <string>(); foreach (Type controllerType in controllerTypes) { string key = (AreaName + "-" + controllerType.Name).ToUpperInvariant(); if (!namespaces.Contains(controllerType.Namespace)) { namespaces.Add(controllerType.Namespace); } containerBuilder .RegisterType(controllerType) .AsSelf() .Keyed <IController>(key) .WithMetadata("ControllerType", controllerType) .InstancePerDependency() .PropertiesAutowired(PropertyWiringOptions.PreserveSetValues); } registrationContext.MapRoute( string.Format("module_{0}_internal_routes", AreaName), string.Format("{0}/{{controller}}/{{action}}", AreaName), new { area = AreaName }, namespaces.ToArray()); } }
/// <summary> /// Register a routes for the google analytics module. /// </summary> /// <param name="context">The module context.</param> /// <param name="containerBuilder">The container builder.</param> public override void RegisterCustomRoutes(WebModuleRegistrationContext context, ContainerBuilder containerBuilder) { context.MapRoute( "bcms-google-sitemap", GoogleAnalyticsModuleHelper.GetSitemapUrl(cmsConfiguration), new { area = AreaName, controller = "GoogleSitemap", action = "Index" }); }
public void Should_Map_Routes_Correctly() { var descriptor = new SampleWebModuleDescriptor(); var context = new WebModuleRegistrationContext(descriptor); var route1 = context.MapRoute("n1", "url1"); var route2 = context.MapRoute("n2", "url2", new [] { "ns1", "ns2" }); var route3 = context.MapRoute("n3", "url3", new { Default = "Default" }); var route4 = context.MapRoute("n4", "url4", new { Default = "Default" }, new { Constraint = "Constraint" }); var route5 = context.MapRoute("n5", "url5", new { Default = "Default" }, new { Constraint = "Constraint" }, new [] { "ns3", "ns4" }); var route6 = context.MapRoute("n6", "url6", new { Default = "Default" }, new[] { "ns5", "ns6" }); Assert.AreEqual(context.Routes.Count, 6); var i = 1; foreach (var route in new[] { route1, route2, route3, route4, route5, route6 }) { Assert.IsNotNull(route); Assert.AreEqual(route.Url, string.Concat("url", i)); Assert.AreEqual(route1.DataTokens["area"], descriptor.AreaName); Assert.IsTrue(context.Routes.Contains(route)); i++; } // Defaults Assert.IsEmpty(route1.Defaults); Assert.IsEmpty(route2.Defaults); Assert.IsNotEmpty(route3.Defaults); Assert.IsNotEmpty(route4.Defaults); Assert.IsNotEmpty(route5.Defaults); Assert.IsNotEmpty(route6.Defaults); // Defaults Assert.IsEmpty(route1.Constraints); Assert.IsEmpty(route2.Constraints); Assert.IsEmpty(route3.Constraints); Assert.IsNotEmpty(route4.Constraints); Assert.IsNotEmpty(route5.Constraints); Assert.IsEmpty(route6.Constraints); // Namespaces Assert.IsNull(route1.DataTokens["Namespaces"]); Assert.IsNotNull(route2.DataTokens["Namespaces"]); Assert.IsNull(route3.DataTokens["Namespaces"]); Assert.IsNull(route4.DataTokens["Namespaces"]); Assert.IsNotNull(route5.DataTokens["Namespaces"]); Assert.IsNotNull(route6.DataTokens["Namespaces"]); // Namespace fallback Assert.AreEqual(route1.DataTokens["UseNamespaceFallback"], true); Assert.AreEqual(route2.DataTokens["UseNamespaceFallback"], false); Assert.AreEqual(route3.DataTokens["UseNamespaceFallback"], true); Assert.AreEqual(route4.DataTokens["UseNamespaceFallback"], true); Assert.AreEqual(route5.DataTokens["UseNamespaceFallback"], false); Assert.AreEqual(route6.DataTokens["UseNamespaceFallback"], false); }
public void Should_Initialize_Context_Correctly() { var descriptor = new SampleWebModuleDescriptor(); var context = new WebModuleRegistrationContext(descriptor); Assert.AreEqual(context.ModuleDescriptor, descriptor); Assert.IsNotNull(context.GetRegistrationName()); }
/// <summary> /// Registers a routes. /// </summary> /// <param name="context">The area registration context.</param> /// <param name="containerBuilder">The container builder.</param> public override void RegisterCustomRoutes(WebModuleRegistrationContext context, ContainerBuilder containerBuilder) { context.MapRoute( "bcms_" + AreaName + "_MainJs", string.Format(RootModuleConstants.AutoGeneratedJsFilePathPattern, "bcms.main.js").TrimStart('/'), new { area = AreaName, controller = "Rendering", action = "RenderMainJsFile" }, new[] { typeof(RenderingController).Namespace }); context.MapRoute( "bcms_" + AreaName + "_ProcessorJs", string.Format(RootModuleConstants.AutoGeneratedJsFilePathPattern, "bcms.processor.js").TrimStart('/'), new { area = AreaName, controller = "Rendering", action = "RenderProcessorJsFile" }, new[] { typeof(RenderingController).Namespace }); context.MapRoute( "bcms_" + AreaName + "_PreviewPage", "bcms/preview/{pageId}/{pageContentId}", new { area = AreaName, controller = "Preview", action = "Index" }, new[] { typeof(PreviewController).Namespace }); CreateEmbeddedResourcesRoutes(context); // All CMS Pages: context.MapRoute("bcms_" + AreaName + "_AllPages", "{*data}", new { area = AreaName, controller = "Cms", action = "Index" }, new[] { typeof(CmsController).Namespace }); }
public void Should_Register_RegisterModuleCommands_Correctly() { var descriptor = new TestWebModuleDescriptor(); var context = new WebModuleRegistrationContext(descriptor); var containerBuilder = new ContainerBuilder(); descriptor.RegisterModuleCommands(context, containerBuilder); var container = containerBuilder.Build(); var commandin = container.Resolve <TestCommandIn>(); var commandout = container.Resolve <TestCommandOut>(); var commandinout = container.Resolve <TestCommandInOut>(); Assert.IsNotNull(commandin); Assert.IsNotNull(commandout); Assert.IsNotNull(commandinout); }
/// <summary> /// Registers the module command types. /// </summary> /// <param name="registrationContext">The area registration context.</param> /// <param name="containerBuilder">The container builder.</param> public virtual void RegisterModuleCommands(WebModuleRegistrationContext registrationContext, ContainerBuilder containerBuilder) { Assembly assembly = GetType().Assembly; Type[] commandTypes = new[] { typeof(ICommand), typeof(ICommandIn <>), typeof(ICommandOut <>), typeof(ICommand <,>) }; containerBuilder .RegisterAssemblyTypes(assembly) .Where(scan => commandTypes.Any(commandType => scan.IsAssignableToGenericType(commandType))) .AsImplementedInterfaces() .AsSelf() .PropertiesAutowired() .InstancePerLifetimeScope(); }
public void Should_Register_ModuleControllers_Correctly() { var descriptor = new TestWebModuleDescriptor(); var context = new WebModuleRegistrationContext(descriptor); var containerBuilder = new ContainerBuilder(); var controllerExtensions = new Mock <IControllerExtensions>(); controllerExtensions .Setup(ce => ce.GetControllerTypes(It.IsAny <Assembly>())) .Returns <Assembly>(assembly => new[] { typeof(TestController1), typeof(TestController2) }); descriptor.RegisterModuleControllers(context, containerBuilder, controllerExtensions.Object); // Routes registration Assert.AreEqual(context.Routes.Count, 1); var route = (Route)context.Routes[0]; Assert.AreEqual(route.Url, "module-testwebmodule/{controller}/{action}"); Assert.AreEqual(route.DataTokens["area"], "module-testwebmodule"); // Types registration var container = containerBuilder.Build(); var controller1 = container.Resolve(typeof(TestController1)); var controller2 = container.Resolve(typeof(TestController2)); TestController3 controller3 = null; try { controller3 = container.Resolve <TestController3>(); } catch { } Assert.IsNotNull(controller1); Assert.IsNotNull(controller2); Assert.IsNull(controller3); }
public override void RegisterCustomRoutes(WebModuleRegistrationContext context, ContainerBuilder containerBuilder) { if (Configuration.Users != null) { if (Configuration.Users.CreateDefaultUserOnStart) { context.MapRoute( "bcms-users-register-first-user", AreaName + "/register", new { area = AreaName, controller = "Registration", action = "CreateFirstUser" }); } if (Configuration.Users.EnableCmsFormsAuthentication) { context.MapRoute( "bcms-users-login", "login", new { area = AreaName, controller = "Authentication", action = "Login" }); context.MapRoute( "bcms-users-logout", "logout", new { area = AreaName, controller = "Authentication", action = "Logout" }); } } }
public override void RegisterCustomRoutes(WebModuleRegistrationContext context, ContainerBuilder containerBuilder) { context.MapRoute( "bcms-setup-database-first-time", SetupDatabaseRoute, new { area = AreaName, controller = "Install", action = "SetupDatabase" }); context.MapRoute( "bcms-setup-database-test-connection", TestConnectionRoute, new { area = AreaName, controller = "Install", action = "TestConnection" }); }
public void Should_Ignore_Routes_Correctly() { var descriptor = new SampleWebModuleDescriptor(); var context = new WebModuleRegistrationContext(descriptor); context.IgnoreRoute("url1"); context.IgnoreRoute("url2", new { Constraint = "Constraint" }); Assert.AreEqual(context.Routes.Count, 2); var route1 = (Route)context.Routes[0]; Assert.AreEqual(route1.Url, "url1"); Assert.IsEmpty(route1.Constraints); Assert.IsTrue(route1.RouteHandler is StopRoutingHandler); var route2 = (Route)context.Routes[1]; Assert.AreEqual(route2.Url, "url2"); Assert.IsNotEmpty(route2.Constraints); Assert.IsTrue(route2.RouteHandler is StopRoutingHandler); }
/// <summary> /// Registers module custom routes. /// </summary> /// <param name="context">The area registration context.</param> /// <param name="containerBuilder">The container builder.</param> public override void RegisterCustomRoutes(WebModuleRegistrationContext context, ContainerBuilder containerBuilder) { context.IgnoreRoute("bcms-api/{*pathInfo}"); }
/// <summary> /// Registers a routes. /// </summary> /// <param name="context">The area registration context.</param> /// <param name="containerBuilder">The container builder.</param> public virtual void RegisterCustomRoutes(WebModuleRegistrationContext context, ContainerBuilder containerBuilder) { }