/// <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());
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CmsModulesRegistration" /> class.
 /// </summary>
 /// <param name="assemblyLoader">The assembly loader.</param>
 /// <param name="controllerExtensions">The controller extensions.</param>
 public CmsModulesRegistration(IAssemblyLoader assemblyLoader, IControllerExtensions controllerExtensions)
     : base(assemblyLoader, controllerExtensions)
 {
     knownCmsModules              = new List <CmsModuleDescriptor>();
     knownJavaScriptModules       = new Dictionary <string, JsIncludeDescriptor>();
     knownStyleSheetIncludes      = new List <CssIncludeDescriptor>();
     knownSidebarHeadContentItems = new List <IPageActionProjection>();
     knownSidebarContentItems     = new List <IPageActionProjection>();
     knownSidebarBodyContentItems = new List <IPageActionProjection>();
     knownSiteSettingsItems       = new List <IPageActionProjection>();
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="DefaultModulesRegistration" /> class.
        /// </summary>
        /// <param name="assemblyLoader">The assembly loader.</param>
        /// <param name="controllerExtensions">The controller extensions.</param>
        public DefaultModulesRegistration(IAssemblyLoader assemblyLoader, IControllerExtensions controllerExtensions)
        {
            this.assemblyLoader       = assemblyLoader;
            this.controllerExtensions = controllerExtensions;

            knownModuleDescriptorTypes = new Dictionary <string, Type>();
            knownModules                 = new Dictionary <string, ModuleRegistrationContext>();
            knownJavaScriptModules       = new Dictionary <string, JsIncludeDescriptor>();
            knownSidebarHeadContentItems = new List <IPageActionProjection>();
            knownSidebarContentItems     = new List <IPageActionProjection>();
            knownSidebarBodyContentItems = new List <IPageActionProjection>();
            knownSiteSettingsItems       = new List <IPageActionProjection>();
            knownStyleSheetIncludes      = new List <CssIncludeDescriptor>();
        }
Ejemplo n.º 4
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>
        internal void RegisterModuleControllers(ModuleRegistrationContext registrationContext, ContainerBuilder containerBuilder, IControllerExtensions controllerExtensions)
        {
            var controllerTypes = controllerExtensions.GetControllerTypes(GetType().Assembly);

            if (controllerTypes != null)
            {
                foreach (Type controllerType in controllerTypes)
                {
                    string key = (AreaName + "-" + controllerType.Name).ToUpperInvariant();

                    containerBuilder
                    .RegisterType(controllerType)
                    .AsSelf()
                    .Keyed <IController>(key)
                    .WithMetadata("ControllerType", controllerType)
                    .InstancePerDependency()
                    .PropertiesAutowired(PropertyWiringOptions.PreserveSetValues);
                }

                registrationContext.MapRoute(
                    string.Format("bcms_{0}_internal_routes", AreaName),
                    string.Format("{0}/{{controller}}/{{action}}", AreaName),
                    new
                {
                    area = AreaName
                });
            }
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WebApiModuleDescriptor" /> class.
 /// </summary>
 /// <param name="cmsConfiguration">The CMS configuration.</param>
 /// <param name="controllerExtensions">The controller extensions.</param>
 public WebApiModuleDescriptor(ICmsConfiguration cmsConfiguration, IControllerExtensions controllerExtensions)
     : base(cmsConfiguration)
 {
     this.controllerExtensions = controllerExtensions;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultWebModulesRegistration" /> class.
 /// </summary>
 /// <param name="assemblyLoader">The assembly loader.</param>
 /// <param name="controllerExtensions">The controller extensions.</param>
 public DefaultWebModulesRegistration(IAssemblyLoader assemblyLoader, IControllerExtensions controllerExtensions)
     : base(assemblyLoader)
 {
     this.controllerExtensions = controllerExtensions;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultWebModulesRegistration" /> class.
 /// </summary>
 /// <param name="assemblyLoader">The assembly loader.</param>
 /// <param name="controllerExtensions">The controller extensions.</param>
 public DefaultWebModulesRegistration(IAssemblyLoader assemblyLoader, IControllerExtensions controllerExtensions)
     : base(assemblyLoader)
 {
     this.controllerExtensions = controllerExtensions;
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Registers module controller types.
        /// </summary>
        /// <param name="registrationContext">The area registration context.</param>
        /// <param name="containerBuilder">The container builder.</param>
        /// <param name="configuration">The configuration.</param>
        /// <param name="controllerExtensions">The controller extensions.</param>
        internal void RegisterModuleControllers(ModuleRegistrationContext registrationContext, ContainerBuilder containerBuilder, IControllerExtensions controllerExtensions)
        {
            var controllerTypes = controllerExtensions.GetControllerTypes(GetType().Assembly);

            if (controllerTypes != null)
            {
                var allModuleActions = new Dictionary <Type, IEnumerable <MethodInfo> >();
                foreach (Type controllerType in controllerTypes)
                {
                    string key = (AreaName + "-" + controllerType.Name).ToUpperInvariant();
                    containerBuilder
                    .RegisterType(controllerType)
                    .AsSelf()
                    .Keyed <IController>(key)
                    .WithMetadata("ControllerType", controllerType)
                    .InstancePerDependency()
                    .PropertiesAutowired(PropertyWiringOptions.PreserveSetValues);

                    var controllerActions = controllerExtensions.GetControllerActions(controllerType);

                    if (controllerActions != null)
                    {
                        allModuleActions.Add(controllerType, controllerActions);
                    }
                }

                //foreach (var item in allModuleActions)
                //{
                //    var controllerName = controllerExtensions.GetControllerName(item.Key);
                //    var controllerActions = item.Value;

                //    foreach (var actionMethod in controllerActions)
                //    {
                //        var ignoreAutoRouteAttribute = actionMethod.GetCustomAttributes(typeof(IgnoreAutoRouteAttribute), false);
                //        var nonActionAttribute = actionMethod.GetCustomAttributes(typeof(NonActionAttribute), false);
                //        if (ignoreAutoRouteAttribute.Length > 0 || nonActionAttribute.Length > 0)
                //        {
                //            continue;
                //        }

                //        registrationContext.MapRoute(
                //            string.Format("bcms_{0}_{1}_{2}", AreaName, controllerName, actionMethod.Name),
                //            string.Format("{0}/{1}/{2}", AreaName, controllerName, actionMethod.Name),
                //            new
                //            {
                //                area = AreaName,
                //                controller = controllerName,
                //                action = actionMethod.Name
                //            },
                //            new[] { item.Key.Namespace });
                //    }
                //}

                // All internal routes:
                registrationContext.MapRoute(
                    string.Format("bcms_{0}_internal_routes", AreaName),
                    string.Format("{0}/{{controller}}/{{action}}", AreaName),
                    new
                {
                    area = AreaName
                }
                    );
            }
        }