Merge pull request #3964 from sbwalker/dev
fix #3962 - ensure Resource management logic is consistent in App and SiteRouter
This commit is contained in:
		| @ -434,7 +434,7 @@ | ||||
|  | ||||
|                 if (module.ModuleDefinition != null && (module.ModuleDefinition.Runtimes == "" || module.ModuleDefinition.Runtimes.Contains(Runtime))) | ||||
|                 { | ||||
|                     typename = module.ModuleDefinition.ControlTypeTemplate; | ||||
|                     page.Resources = ManagePageResources(page.Resources, module.ModuleDefinition.Resources, ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName)); | ||||
|  | ||||
|                     // handle default action | ||||
|                     if (action == Constants.DefaultAction && !string.IsNullOrEmpty(module.ModuleDefinition.DefaultAction)) | ||||
| @ -442,24 +442,23 @@ | ||||
|                         action = module.ModuleDefinition.DefaultAction; | ||||
|                     } | ||||
|  | ||||
|                     // check if the module defines custom action routes | ||||
|                     // get typename template | ||||
|                     typename = module.ModuleDefinition.ControlTypeTemplate; | ||||
|                     if (module.ModuleDefinition.ControlTypeRoutes != "") | ||||
|                     { | ||||
|                         // process custom action routes | ||||
|                         foreach (string route in module.ModuleDefinition.ControlTypeRoutes.Split(';', StringSplitOptions.RemoveEmptyEntries)) | ||||
|                         { | ||||
|                             if (route.StartsWith(action + "=")) | ||||
|                             { | ||||
|                                 typename = route.Replace(action + "=", ""); | ||||
|                                 break; | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|  | ||||
|                     // get module resources | ||||
|                     page.Resources = ManagePageResources(page.Resources, module.ModuleDefinition.Resources, ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName)); | ||||
|                 } | ||||
|  | ||||
|                 // ensure component exists and implements IModuleControl | ||||
|                 module.ModuleType = ""; | ||||
|                 // create typename | ||||
|                 if (Constants.DefaultModuleActions.Contains(action, StringComparer.OrdinalIgnoreCase)) | ||||
|                 { | ||||
|                     typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, action); | ||||
| @ -468,13 +467,15 @@ | ||||
|                 { | ||||
|                     typename = typename.Replace(Constants.ActionToken, action); | ||||
|                 } | ||||
|  | ||||
|                 // ensure component exists and implements IModuleControl | ||||
|                 module.ModuleType = ""; | ||||
|                 Type moduletype = Type.GetType(typename, false, true); // case insensitive | ||||
|                 if (moduletype != null && moduletype.GetInterfaces().Contains(typeof(IModuleControl))) | ||||
|                 { | ||||
|                     module.ModuleType = Utilities.GetFullTypeName(moduletype.AssemblyQualifiedName); // get actual type name | ||||
|                 } | ||||
|  | ||||
|                 // get additional metadata from IModuleControl interface | ||||
|                 if (moduletype != null && module.ModuleType != "") | ||||
|                 { | ||||
|                     // retrieve module component resources | ||||
|  | ||||
| @ -580,9 +580,31 @@ | ||||
|                 var typename = ""; | ||||
|                 if (module.ModuleDefinition != null) | ||||
|                 { | ||||
|                     typename = module.ModuleDefinition.ControlTypeTemplate; | ||||
|                     resources = AddResources(resources, module.ModuleDefinition.Resources, ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName)); | ||||
|  | ||||
|                     // handle default action | ||||
|                     if (action == Constants.DefaultAction && !string.IsNullOrEmpty(module.ModuleDefinition.DefaultAction)) | ||||
|                     { | ||||
|                         action = module.ModuleDefinition.DefaultAction; | ||||
|                     } | ||||
|  | ||||
|                     // get typename template | ||||
|                     typename = module.ModuleDefinition.ControlTypeTemplate; | ||||
|                     if (module.ModuleDefinition.ControlTypeRoutes != "") | ||||
|                     { | ||||
|                         // process custom action routes | ||||
|                         foreach (string route in module.ModuleDefinition.ControlTypeRoutes.Split(';', StringSplitOptions.RemoveEmptyEntries)) | ||||
|                         { | ||||
|                             if (route.StartsWith(action + "=")) | ||||
|                             { | ||||
|                                 typename = route.Replace(action + "=", ""); | ||||
|                                 break; | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 // create typename | ||||
|                 if (Constants.DefaultModuleActions.Contains(action, StringComparer.OrdinalIgnoreCase)) | ||||
|                 { | ||||
|                     typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, action); | ||||
| @ -591,6 +613,9 @@ | ||||
|                 { | ||||
|                     typename = typename.Replace(Constants.ActionToken, action); | ||||
|                 } | ||||
|  | ||||
|                 // ensure component exists and implements IModuleControl | ||||
|                 module.ModuleType = ""; | ||||
|                 Type moduletype = Type.GetType(typename, false, true); // case insensitive | ||||
|                 if (moduletype != null && moduletype.GetInterfaces().Contains(typeof(IModuleControl))) | ||||
|                 { | ||||
| @ -602,6 +627,16 @@ | ||||
|                     if (obj != null) | ||||
|                     { | ||||
|                         resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace); | ||||
|                         if (action.ToLower() == "settings" && module.ModuleDefinition != null) | ||||
|                         { | ||||
|                             // settings components are embedded within a framework settings module | ||||
|                             moduletype = Type.GetType(module.ModuleDefinition.ControlTypeTemplate.Replace(Constants.ActionToken, action), false, true); | ||||
|                             if (moduletype != null) | ||||
|                             { | ||||
|                                 obj = Activator.CreateInstance(moduletype) as IModuleControl; | ||||
|                                 resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace); | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker