fix #5205 add support for inheritance when loading Resources from ModuleBase or ThemeBase

This commit is contained in:
sbwalker 2025-05-19 21:00:35 -07:00
parent 2b6ba0f410
commit c098839881
2 changed files with 22 additions and 16 deletions

View File

@ -79,18 +79,21 @@ namespace Oqtane.Modules
{ {
List<Resource> resources = null; List<Resource> resources = null;
var type = GetType(); var type = GetType();
if (type.BaseType == typeof(ModuleBase)) if (type.IsSubclassOf(typeof(ModuleBase)))
{ {
if (PageState.Page.Resources != null) if (type.IsSubclassOf(typeof(ModuleControlBase)))
{ {
resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Module && item.Namespace == type.Namespace).ToList(); if (Resources != null)
{
resources = Resources.Where(item => item.ResourceType == ResourceType.Script).ToList();
}
} }
} else // ModuleBase
else // modulecontrolbase
{
if (Resources != null)
{ {
resources = Resources.Where(item => item.ResourceType == ResourceType.Script).ToList(); if (PageState.Page.Resources != null)
{
resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Module && item.Namespace == type.Namespace).ToList();
}
} }
} }
if (resources != null && resources.Any()) if (resources != null && resources.Any())

View File

@ -43,18 +43,21 @@ namespace Oqtane.Themes
{ {
List<Resource> resources = null; List<Resource> resources = null;
var type = GetType(); var type = GetType();
if (type.BaseType == typeof(ThemeBase)) if (type.IsSubclassOf(typeof(ThemeBase)))
{ {
if (PageState.Page.Resources != null) if (type.IsSubclassOf(typeof(ThemeControlBase)) || type.IsSubclassOf(typeof(ContainerBase)))
{ {
resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Page && item.Namespace == type.Namespace).ToList(); if (Resources != null)
{
resources = Resources.Where(item => item.ResourceType == ResourceType.Script).ToList();
}
} }
} else // ThemeBase
else // themecontrolbase, containerbase
{
if (Resources != null)
{ {
resources = Resources.Where(item => item.ResourceType == ResourceType.Script).ToList(); if (PageState.Page.Resources != null)
{
resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Page && item.Namespace == type.Namespace).ToList();
}
} }
} }
if (resources != null && resources.Any()) if (resources != null && resources.Any())