Merge pull request #4217 from sbwalker/dev
fix support for Site-level Scripts in Resources
This commit is contained in:
commit
7e7d83ac36
@ -551,7 +551,7 @@
|
|||||||
{
|
{
|
||||||
foreach (var resource in resources)
|
foreach (var resource in resources)
|
||||||
{
|
{
|
||||||
if (resource.Level != ResourceLevel.Site)
|
if (resource.ResourceType == ResourceType.Stylesheet || resource.Level != ResourceLevel.Site)
|
||||||
{
|
{
|
||||||
if (resource.Url.StartsWith("~"))
|
if (resource.Url.StartsWith("~"))
|
||||||
{
|
{
|
||||||
|
@ -176,15 +176,11 @@
|
|||||||
CreateJwtToken(alias);
|
CreateJwtToken(alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
// include stylesheets to prevent FOUC
|
// includes resources
|
||||||
var resources = GetPageResources(alias, site, page, int.Parse(route.ModuleId, CultureInfo.InvariantCulture), route.Action);
|
var resources = GetPageResources(alias, site, page, int.Parse(route.ModuleId, CultureInfo.InvariantCulture), route.Action);
|
||||||
ManageStyleSheets(resources);
|
ManageStyleSheets(resources);
|
||||||
|
ManageScripts(resources, alias);
|
||||||
|
|
||||||
// scripts
|
|
||||||
if (_renderMode == RenderModes.Static)
|
|
||||||
{
|
|
||||||
ManageScripts(resources, alias);
|
|
||||||
}
|
|
||||||
if (_renderMode == RenderModes.Interactive && _runtime == Runtimes.Server)
|
if (_renderMode == RenderModes.Interactive && _runtime == Runtimes.Server)
|
||||||
{
|
{
|
||||||
_reconnectScript = CreateReconnectScript();
|
_reconnectScript = CreateReconnectScript();
|
||||||
@ -567,13 +563,13 @@
|
|||||||
var theme = site.Themes.FirstOrDefault(item => item.Themes.Any(item => item.TypeName == themeType));
|
var theme = site.Themes.FirstOrDefault(item => item.Themes.Any(item => item.TypeName == themeType));
|
||||||
if (theme != null)
|
if (theme != null)
|
||||||
{
|
{
|
||||||
resources = AddResources(resources, theme.Resources, ResourceLevel.Page, alias, "Themes", Utilities.GetTypeName(theme.ThemeName));
|
resources = AddResources(resources, theme.Resources, ResourceLevel.Page, alias, "Themes", Utilities.GetTypeName(theme.ThemeName), site.RenderMode);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// fallback to default Oqtane theme
|
// fallback to default Oqtane theme
|
||||||
theme = site.Themes.FirstOrDefault(item => item.Themes.Any(item => item.TypeName == Constants.DefaultTheme));
|
theme = site.Themes.FirstOrDefault(item => item.Themes.Any(item => item.TypeName == Constants.DefaultTheme));
|
||||||
resources = AddResources(resources, theme.Resources, ResourceLevel.Page, alias, "Themes", Utilities.GetTypeName(theme.ThemeName));
|
resources = AddResources(resources, theme.Resources, ResourceLevel.Page, alias, "Themes", Utilities.GetTypeName(theme.ThemeName), site.RenderMode);
|
||||||
}
|
}
|
||||||
var type = Type.GetType(themeType);
|
var type = Type.GetType(themeType);
|
||||||
if (type != null)
|
if (type != null)
|
||||||
@ -581,7 +577,7 @@
|
|||||||
var obj = Activator.CreateInstance(type) as IThemeControl;
|
var obj = Activator.CreateInstance(type) as IThemeControl;
|
||||||
if (obj != null)
|
if (obj != null)
|
||||||
{
|
{
|
||||||
resources = AddResources(resources, obj.Resources, ResourceLevel.Page, alias, "Themes", type.Namespace);
|
resources = AddResources(resources, obj.Resources, ResourceLevel.Page, alias, "Themes", type.Namespace, site.RenderMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -590,7 +586,7 @@
|
|||||||
var typename = "";
|
var typename = "";
|
||||||
if (module.ModuleDefinition != null)
|
if (module.ModuleDefinition != null)
|
||||||
{
|
{
|
||||||
resources = AddResources(resources, module.ModuleDefinition.Resources, ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName));
|
resources = AddResources(resources, module.ModuleDefinition.Resources, ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName), site.RenderMode);
|
||||||
|
|
||||||
// handle default action
|
// handle default action
|
||||||
if (action == Constants.DefaultAction && !string.IsNullOrEmpty(module.ModuleDefinition.DefaultAction))
|
if (action == Constants.DefaultAction && !string.IsNullOrEmpty(module.ModuleDefinition.DefaultAction))
|
||||||
@ -636,7 +632,7 @@
|
|||||||
var obj = Activator.CreateInstance(moduletype) as IModuleControl;
|
var obj = Activator.CreateInstance(moduletype) as IModuleControl;
|
||||||
if (obj != null)
|
if (obj != null)
|
||||||
{
|
{
|
||||||
resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace);
|
resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace, site.RenderMode);
|
||||||
if (action.ToLower() == "settings" && module.ModuleDefinition != null)
|
if (action.ToLower() == "settings" && module.ModuleDefinition != null)
|
||||||
{
|
{
|
||||||
// settings components are embedded within a framework settings module
|
// settings components are embedded within a framework settings module
|
||||||
@ -644,7 +640,7 @@
|
|||||||
if (moduletype != null)
|
if (moduletype != null)
|
||||||
{
|
{
|
||||||
obj = Activator.CreateInstance(moduletype) as IModuleControl;
|
obj = Activator.CreateInstance(moduletype) as IModuleControl;
|
||||||
resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace);
|
resources = AddResources(resources, obj.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace, site.RenderMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -657,32 +653,35 @@
|
|||||||
{
|
{
|
||||||
if (module.ModuleDefinition?.Resources != null)
|
if (module.ModuleDefinition?.Resources != null)
|
||||||
{
|
{
|
||||||
resources = AddResources(resources, module.ModuleDefinition.Resources.Where(item => item.Level == ResourceLevel.Site).ToList(), ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName));
|
resources = AddResources(resources, module.ModuleDefinition.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Site).ToList(), ResourceLevel.Module, alias, "Modules", Utilities.GetTypeName(module.ModuleDefinition.ModuleDefinitionName), site.RenderMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return resources;
|
return resources;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Resource> AddResources(List<Resource> pageresources, List<Resource> resources, ResourceLevel level, Alias alias, string type, string name)
|
private List<Resource> AddResources(List<Resource> pageresources, List<Resource> resources, ResourceLevel level, Alias alias, string type, string name, string rendermode)
|
||||||
{
|
{
|
||||||
if (resources != null)
|
if (resources != null)
|
||||||
{
|
{
|
||||||
foreach (var resource in resources)
|
foreach (var resource in resources)
|
||||||
{
|
{
|
||||||
if (resource.Url.StartsWith("~"))
|
if (rendermode == RenderModes.Static || resource.ResourceType == ResourceType.Stylesheet || resource.Level == ResourceLevel.Site)
|
||||||
{
|
{
|
||||||
resource.Url = resource.Url.Replace("~", "/" + type + "/" + name + "/").Replace("//", "/");
|
if (resource.Url.StartsWith("~"))
|
||||||
}
|
{
|
||||||
if (!resource.Url.Contains("://") && alias.BaseUrl != "" && !resource.Url.StartsWith(alias.BaseUrl))
|
resource.Url = resource.Url.Replace("~", "/" + type + "/" + name + "/").Replace("//", "/");
|
||||||
{
|
}
|
||||||
resource.Url = alias.BaseUrl + resource.Url;
|
if (!resource.Url.Contains("://") && alias.BaseUrl != "" && !resource.Url.StartsWith(alias.BaseUrl))
|
||||||
}
|
{
|
||||||
|
resource.Url = alias.BaseUrl + resource.Url;
|
||||||
|
}
|
||||||
|
|
||||||
// ensure resource does not exist already
|
// ensure resource does not exist already
|
||||||
if (!pageresources.Exists(item => item.Url.ToLower() == resource.Url.ToLower()))
|
if (!pageresources.Exists(item => item.Url.ToLower() == resource.Url.ToLower()))
|
||||||
{
|
{
|
||||||
pageresources.Add(resource.Clone(level, name));
|
pageresources.Add(resource.Clone(level, name));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -693,6 +692,7 @@
|
|||||||
{
|
{
|
||||||
if (resources != null)
|
if (resources != null)
|
||||||
{
|
{
|
||||||
|
// include stylesheets to prevent FOUC
|
||||||
string batch = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff");
|
string batch = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff");
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (var resource in resources.Where(item => item.ResourceType == ResourceType.Stylesheet))
|
foreach (var resource in resources.Where(item => item.ResourceType == ResourceType.Stylesheet))
|
||||||
|
Reference in New Issue
Block a user