Пример #1
0
        /// <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 });
            }
        }
Пример #2
0
        /// <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());
            }
        }
Пример #3
0
 /// <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" });
 }
Пример #4
0
        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);
        }
Пример #5
0
        public void Should_Initialize_Context_Correctly()
        {
            var descriptor = new SampleWebModuleDescriptor();
            var context    = new WebModuleRegistrationContext(descriptor);

            Assert.AreEqual(context.ModuleDescriptor, descriptor);
            Assert.IsNotNull(context.GetRegistrationName());
        }
Пример #6
0
        /// <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 });
        }
Пример #7
0
        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);
        }
Пример #8
0
        /// <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();
        }
Пример #9
0
        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"
                    });
                }
            }
        }
Пример #11
0
        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"
            });
        }
Пример #12
0
        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);
        }
Пример #13
0
 /// <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}");
 }
Пример #14
0
 /// <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)
 {
 }