diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index 882835e9..fcff50b3 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -567,9 +567,19 @@ // ensure resource does not exist already if (!pageresources.Exists(item => item.Url.ToLower() == resource.Url.ToLower())) { - resource.Level = level; - resource.Namespace = name; - pageresources.Add(resource); + pageresources.Add(new Resource + { + ResourceType = resource.ResourceType, + Url = resource.Url, + Integrity = resource.Integrity, + CrossOrigin = resource.CrossOrigin, + Bundle = resource.Bundle, + Location = resource.Location, + ES6Module = resource.ES6Module, + Content = resource.Content, + Level = level, + Namespace = name + }); } } } diff --git a/Oqtane.Server/Components/App.razor b/Oqtane.Server/Components/App.razor index c8603059..567db715 100644 --- a/Oqtane.Server/Components/App.razor +++ b/Oqtane.Server/Components/App.razor @@ -23,7 +23,6 @@ @inject ISiteService SiteService @inject IThemeRepository ThemeRepository @inject ILanguageRepository LanguageRepository -@inject IServerStateManager ServerStateManager @inject ILocalizationManager LocalizationManager @inject IAliasRepository AliasRepository @inject IUrlMappingRepository UrlMappingRepository @@ -187,11 +186,6 @@ } _headResources += ParseScripts(site.HeadContent); _bodyResources += ParseScripts(site.BodyContent); - var scripts = ServerStateManager.GetServerState(alias.SiteKey).Scripts; - foreach (var script in scripts) - { - AddScript(script, alias); - } // set culture if not specified string culture = Context.Request.Cookies[CookieRequestCultureProvider.DefaultCookieName]; @@ -604,6 +598,16 @@ } } + // site level resources for modules in site + var modules = site.Modules.GroupBy(item => item.ModuleDefinition.ModuleDefinitionName).Select(group => group.First()).ToList(); + foreach (var module in modules) + { + 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)); + } + } + return resources; } @@ -613,24 +617,31 @@ { foreach (var resource in resources) { - if (resource.Level != ResourceLevel.Site) + if (resource.Url.StartsWith("~")) { - if (resource.Url.StartsWith("~")) - { - resource.Url = resource.Url.Replace("~", "/" + type + "/" + name + "/").Replace("//", "/"); - } - if (!resource.Url.Contains("://") && alias.BaseUrl != "" && !resource.Url.StartsWith(alias.BaseUrl)) - { - resource.Url = alias.BaseUrl + resource.Url; - } + resource.Url = resource.Url.Replace("~", "/" + type + "/" + name + "/").Replace("//", "/"); + } + if (!resource.Url.Contains("://") && alias.BaseUrl != "" && !resource.Url.StartsWith(alias.BaseUrl)) + { + resource.Url = alias.BaseUrl + resource.Url; + } - // ensure resource does not exist already - if (!pageresources.Exists(item => item.Url.ToLower() == resource.Url.ToLower())) + // ensure resource does not exist already + if (!pageresources.Exists(item => item.Url.ToLower() == resource.Url.ToLower())) + { + pageresources.Add(new Resource { - resource.Level = level; - resource.Namespace = name; - pageresources.Add(resource); - } + ResourceType = resource.ResourceType, + Url = resource.Url, + Integrity = resource.Integrity, + CrossOrigin = resource.CrossOrigin, + Bundle = resource.Bundle, + Location = resource.Location, + ES6Module = resource.ES6Module, + Content = resource.Content, + Level = level, + Namespace = name + }); } } } diff --git a/Oqtane.Server/Infrastructure/ServerState.cs b/Oqtane.Server/Infrastructure/ServerState.cs index d51e7d17..acb6f80a 100644 --- a/Oqtane.Server/Infrastructure/ServerState.cs +++ b/Oqtane.Server/Infrastructure/ServerState.cs @@ -7,7 +7,6 @@ namespace Oqtane.Infrastructure { public string SiteKey { get; set; } public List Assemblies { get; set; } = new List(); - public ListScripts { get; set; } = new List(); public bool IsInitialized { get; set; } = false; } } diff --git a/Oqtane.Server/Infrastructure/ServerStateManager.cs b/Oqtane.Server/Infrastructure/ServerStateManager.cs index 7db90d71..66747393 100644 --- a/Oqtane.Server/Infrastructure/ServerStateManager.cs +++ b/Oqtane.Server/Infrastructure/ServerStateManager.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Linq; -using Oqtane.Models; namespace Oqtane.Infrastructure { @@ -22,7 +21,6 @@ namespace Oqtane.Infrastructure serverState = new ServerState(); serverState.SiteKey = siteKey; serverState.Assemblies = new List(); - serverState.Scripts = new List(); serverState.IsInitialized = false; _serverStates.Add(serverState); } diff --git a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs index 075646e4..563a5a1d 100644 --- a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs +++ b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs @@ -225,17 +225,6 @@ namespace Oqtane.Repository } } } - // build list of scripts for site - if (moduledefinition.Resources != null) - { - foreach (var resource in moduledefinition.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Site)) - { - if (!serverState.Scripts.Contains(resource)) - { - serverState.Scripts.Add(resource); - } - } - } } if (permissions.Count == 0) diff --git a/Oqtane.Server/Repository/ThemeRepository.cs b/Oqtane.Server/Repository/ThemeRepository.cs index 86d14d86..ae44815d 100644 --- a/Oqtane.Server/Repository/ThemeRepository.cs +++ b/Oqtane.Server/Repository/ThemeRepository.cs @@ -197,17 +197,6 @@ namespace Oqtane.Repository } } } - // build list of scripts for site - if (theme.Resources != null) - { - foreach (var resource in theme.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level == ResourceLevel.Site)) - { - if (!serverState.Scripts.Contains(resource)) - { - serverState.Scripts.Add(resource); - } - } - } } } } diff --git a/Oqtane.Shared/Enums/ResourceLevel.cs b/Oqtane.Shared/Enums/ResourceLevel.cs index 5fb9c9af..be15f349 100644 --- a/Oqtane.Shared/Enums/ResourceLevel.cs +++ b/Oqtane.Shared/Enums/ResourceLevel.cs @@ -2,7 +2,7 @@ namespace Oqtane.Shared { public enum ResourceLevel { - App, + Undefined, Site, Page, Module