fix resource processing issue

This commit is contained in:
sbwalker 2024-03-10 09:17:54 -04:00
parent a2885a90b7
commit ace7b4e2af
3 changed files with 48 additions and 51 deletions

View File

@ -79,7 +79,7 @@ namespace Oqtane.Modules
{ {
if (PageState.Page.Resources != null) if (PageState.Page.Resources != null)
{ {
resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level != ResourceLevel.Site && item.Namespace == type.Namespace).ToList(); resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Module && item.Namespace == type.Namespace).ToList();
} }
} }
else // modulecontrolbase else // modulecontrolbase

View File

@ -45,7 +45,7 @@ namespace Oqtane.Themes
{ {
if (PageState.Page.Resources != null) if (PageState.Page.Resources != null)
{ {
resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level != ResourceLevel.Site && item.Namespace == type.Namespace).ToList(); resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Page && item.Namespace == type.Namespace).ToList();
} }
} }
else // themecontrolbase, containerbase else // themecontrolbase, containerbase

View File

@ -581,69 +581,66 @@
} }
} }
foreach (Module module in site.Modules) foreach (Module module in site.Modules.Where(item => item.PageId == page.PageId || item.ModuleId == moduleid))
{ {
if (module.PageId == page.PageId || module.ModuleId == moduleid) var typename = "";
if (module.ModuleDefinition != null)
{ {
var typename = ""; resources = AddResources(resources, module.ModuleDefinition.Resources, ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName));
if (module.ModuleDefinition != null)
// handle default action
if (action == Constants.DefaultAction && !string.IsNullOrEmpty(module.ModuleDefinition.DefaultAction))
{ {
resources = AddResources(resources, module.ModuleDefinition.Resources, ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName)); action = module.ModuleDefinition.DefaultAction;
}
// handle default action // get typename template
if (action == Constants.DefaultAction && !string.IsNullOrEmpty(module.ModuleDefinition.DefaultAction)) typename = module.ModuleDefinition.ControlTypeTemplate;
if (module.ModuleDefinition.ControlTypeRoutes != "")
{
// process custom action routes
foreach (string route in module.ModuleDefinition.ControlTypeRoutes.Split(';', StringSplitOptions.RemoveEmptyEntries))
{ {
action = module.ModuleDefinition.DefaultAction; if (route.StartsWith(action + "="))
}
// 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;
typename = route.Replace(action + "=", "");
break;
}
} }
} }
} }
}
// create typename // create typename
if (Constants.DefaultModuleActions.Contains(action, StringComparer.OrdinalIgnoreCase)) if (Constants.DefaultModuleActions.Contains(action, StringComparer.OrdinalIgnoreCase))
{ {
typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, action); typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, action);
} }
else else
{ {
typename = typename.Replace(Constants.ActionToken, action); typename = typename.Replace(Constants.ActionToken, action);
} }
// ensure component exists and implements IModuleControl // ensure component exists and implements IModuleControl
module.ModuleType = ""; module.ModuleType = "";
Type moduletype = Type.GetType(typename, false, true); // case insensitive Type moduletype = Type.GetType(typename, false, true); // case insensitive
if (moduletype != null && moduletype.GetInterfaces().Contains(typeof(IModuleControl))) if (moduletype != null && moduletype.GetInterfaces().Contains(typeof(IModuleControl)))
{
module.ModuleType = Utilities.GetFullTypeName(moduletype.AssemblyQualifiedName); // get actual type name
}
if (moduletype != null && module.ModuleType != "")
{
var obj = Activator.CreateInstance(moduletype) as IModuleControl;
if (obj != null)
{ {
module.ModuleType = Utilities.GetFullTypeName(moduletype.AssemblyQualifiedName); // get actual type name resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace);
} if (action.ToLower() == "settings" && module.ModuleDefinition != null)
if (moduletype != null && module.ModuleType != "")
{
var obj = Activator.CreateInstance(moduletype) as IModuleControl;
if (obj != null)
{ {
resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace); // settings components are embedded within a framework settings module
if (action.ToLower() == "settings" && module.ModuleDefinition != null) moduletype = Type.GetType(module.ModuleDefinition.ControlTypeTemplate.Replace(Constants.ActionToken, action), false, true);
if (moduletype != null)
{ {
// settings components are embedded within a framework settings module obj = Activator.CreateInstance(moduletype) as IModuleControl;
moduletype = Type.GetType(module.ModuleDefinition.ControlTypeTemplate.Replace(Constants.ActionToken, action), false, true); resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace);
if (moduletype != null)
{
obj = Activator.CreateInstance(moduletype) as IModuleControl;
resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace);
}
} }
} }
} }