From 86fbdced1b99b3721a0bdf92840d82d1af1c5454 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Wed, 21 Jun 2023 15:49:00 -0400 Subject: [PATCH] cleanup and ensure site level scripts work properly --- Oqtane.Client/Modules/ModuleBase.cs | 2 +- Oqtane.Client/Themes/ThemeBase.cs | 2 +- Oqtane.Client/UI/SiteRouter.razor | 31 ++++++++------- Oqtane.Client/UI/ThemeBuilder.razor | 62 +++++++---------------------- Oqtane.Maui/wwwroot/index.html | 4 +- Oqtane.Server/Pages/_Host.cshtml | 4 +- Oqtane.Server/Pages/_Host.cshtml.cs | 2 +- 7 files changed, 39 insertions(+), 68 deletions(-) diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index 0f56752d..8023da67 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -77,7 +77,7 @@ namespace Oqtane.Modules { if (PageState.Page.Resources != null) { - resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Namespace == type.Namespace).ToList(); + resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level != ResourceLevel.Site && item.Namespace == type.Namespace).ToList(); } } else // modulecontrolbase diff --git a/Oqtane.Client/Themes/ThemeBase.cs b/Oqtane.Client/Themes/ThemeBase.cs index 8dcbe65c..8fcb1a30 100644 --- a/Oqtane.Client/Themes/ThemeBase.cs +++ b/Oqtane.Client/Themes/ThemeBase.cs @@ -40,7 +40,7 @@ namespace Oqtane.Themes { if (PageState.Page.Resources != null) { - resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Namespace == type.Namespace).ToList(); + resources = PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level != ResourceLevel.Site && item.Namespace == type.Namespace).ToList(); } } else // themecontrolbase, containerbase diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index df98874c..cd3a1764 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -513,22 +513,25 @@ { foreach (var resource in resources) { - if (resource.Url.StartsWith("~")) + if (resource.Level != ResourceLevel.Site) { - 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; - } + 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; + } - // 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); - } + // 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); + } + } } } return pageresources; diff --git a/Oqtane.Client/UI/ThemeBuilder.razor b/Oqtane.Client/UI/ThemeBuilder.razor index 1bf1ac23..0719a546 100644 --- a/Oqtane.Client/UI/ThemeBuilder.razor +++ b/Oqtane.Client/UI/ThemeBuilder.razor @@ -42,13 +42,6 @@ } headcontent += $"\n"; - // stylesheets - //foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet)) - //{ - // var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url; - // headcontent += "" + "\n"; - //} - // head content AddHeadContent(headcontent, PageState.Site.HeadContent); if (!string.IsNullOrEmpty(PageState.Site.HeadContent)) @@ -103,49 +96,24 @@ } } - if (PageState.Page.Resources != null) + // style sheets + if (PageState.Page.Resources != null && PageState.Page.Resources.Exists(item => item.ResourceType == ResourceType.Stylesheet)) { - if (PageState.Page.Resources.Exists(item => item.ResourceType == ResourceType.Stylesheet)) + var interop = new Interop(JSRuntime); + string batch = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff"); + var links = new List(); + foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet)) { - var interop = new Interop(JSRuntime); - string batch = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff"); - var links = new List(); - foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet)) - { - var prefix = "app-stylesheet-" + resource.Level.ToString().ToLower(); - var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url; - links.Add(new { id = prefix + "-" + batch + "-" + (links.Count + 1).ToString("00"), rel = "stylesheet", href = url, type = "text/css", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", insertbefore = prefix }); - } - if (links.Any()) - { - await interop.IncludeLinks(links.ToArray()); - } - await interop.RemoveElementsById("app-stylesheet-page-", "", "app-stylesheet-page-" + batch + "-00"); - await interop.RemoveElementsById("app-stylesheet-module-", "", "app-stylesheet-module-" + batch + "-00"); + var prefix = "app-stylesheet-" + resource.Level.ToString().ToLower(); + var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url; + links.Add(new { id = prefix + "-" + batch + "-" + (links.Count + 1).ToString("00"), rel = "stylesheet", href = url, type = "text/css", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", insertbefore = prefix }); } - - //if (PageState.Page.Resources.Exists(item => item.ResourceType == ResourceType.Script)) - //{ - // var scripts = new List(); - // var inline = 0; - // foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level != ResourceLevel.Site)) - // { - // if (!string.IsNullOrEmpty(resource.Url)) - // { - // var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url; - // scripts.Add(new { href = url, bundle = resource.Bundle ?? "", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", es6module = resource.ES6Module, location = resource.Location.ToString().ToLower() }); - // } - // else - // { - // inline += 1; - // await interop.IncludeScript(GetType().Namespace.ToLower() + inline.ToString(), "", "", "", resource.Content, resource.Location.ToString().ToLower()); - // } - // } - // if (scripts.Any()) - // { - // await interop.IncludeScripts(scripts.ToArray()); - // } - //} + if (links.Any()) + { + await interop.IncludeLinks(links.ToArray()); + } + await interop.RemoveElementsById("app-stylesheet-page-", "", "app-stylesheet-page-" + batch + "-00"); + await interop.RemoveElementsById("app-stylesheet-module-", "", "app-stylesheet-module-" + batch + "-00"); } } diff --git a/Oqtane.Maui/wwwroot/index.html b/Oqtane.Maui/wwwroot/index.html index a1469a6b..1dac89ee 100644 --- a/Oqtane.Maui/wwwroot/index.html +++ b/Oqtane.Maui/wwwroot/index.html @@ -9,8 +9,8 @@ - - + + diff --git a/Oqtane.Server/Pages/_Host.cshtml b/Oqtane.Server/Pages/_Host.cshtml index 22bc6a90..4aee45f2 100644 --- a/Oqtane.Server/Pages/_Host.cshtml +++ b/Oqtane.Server/Pages/_Host.cshtml @@ -15,8 +15,8 @@ { } - - + + @Html.Raw(Model.HeadResources) diff --git a/Oqtane.Server/Pages/_Host.cshtml.cs b/Oqtane.Server/Pages/_Host.cshtml.cs index be518155..4b3d9929 100644 --- a/Oqtane.Server/Pages/_Host.cshtml.cs +++ b/Oqtane.Server/Pages/_Host.cshtml.cs @@ -475,8 +475,8 @@ namespace Oqtane.Pages { var url = (resource.Url.Contains("://")) ? resource.Url : alias.BaseUrl + resource.Url; return ""; } else