From 7336417634961def71abdb8abaf1a234019359ae Mon Sep 17 00:00:00 2001 From: sbwalker Date: Thu, 18 May 2023 08:26:51 -0400 Subject: [PATCH] handle id attribute automatically for headcontent inline scripts --- Oqtane.Client/Modules/Admin/Pages/Add.razor | 2 +- Oqtane.Client/Modules/Admin/Pages/Edit.razor | 2 +- Oqtane.Client/Modules/Admin/Site/Index.razor | 2 +- .../Resources/Modules/Admin/Pages/Add.resx | 2 +- .../Resources/Modules/Admin/Pages/Edit.resx | 2 +- .../Resources/Modules/Admin/Site/Index.resx | 2 +- Oqtane.Client/UI/ThemeBuilder.razor | 6 ++++++ Oqtane.Server/Pages/_Host.cshtml.cs | 17 +++++++++++++---- 8 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index 323f5328..d3f91464 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -134,7 +134,7 @@
- +
diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index 38c68d94..a0234d93 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -141,7 +141,7 @@
- +
diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index dcf6bdc6..d103a734 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -105,7 +105,7 @@
- +
diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx index b3345f93..5ed5d3e3 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx @@ -229,7 +229,7 @@ Appearance - Optionally enter content to be included in the page head (ie. meta, link, or script tags). Please note that inline script must include an id attribute. + Optionally enter content to be included in the page head (ie. meta, link, or script tags) Head Content: diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Edit.resx index 3b1cedd4..c8cfca50 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Pages/Edit.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Pages/Edit.resx @@ -265,7 +265,7 @@ Clickable? - Optionally enter content to be included in the page head (ie. meta, link, or script tags). Please note that inline script must include an id attribute. + Optionally enter content to be included in the page head (ie. meta, link, or script tags) Head Content: diff --git a/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx index cbd72422..24691200 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx @@ -355,7 +355,7 @@ Appearance - Optionally enter content to be included in the page head (ie. meta, link, or script tags). Please note that inline script must include an id attribute. + Optionally enter content to be included in the page head (ie. meta, link, or script tags) Head Content: diff --git a/Oqtane.Client/UI/ThemeBuilder.razor b/Oqtane.Client/UI/ThemeBuilder.razor index 3c7bfe7b..2bdd8a55 100644 --- a/Oqtane.Client/UI/ThemeBuilder.razor +++ b/Oqtane.Client/UI/ThemeBuilder.razor @@ -86,6 +86,7 @@ if (PageState.Page.HeadContent != null && PageState.Page.HeadContent.Contains("= 0) { @@ -128,6 +129,11 @@ } else { + if (id == "") + { + count += 1; + id = $"page{PageState.Page.PageId}-script{count}"; + } index = script.IndexOf(">") + 1; await interop.IncludeScript(id, "", "", "", script.Substring(index, script.IndexOf("") - index), "head"); } diff --git a/Oqtane.Server/Pages/_Host.cshtml.cs b/Oqtane.Server/Pages/_Host.cshtml.cs index fef79e52..e1bb5d8c 100644 --- a/Oqtane.Server/Pages/_Host.cshtml.cs +++ b/Oqtane.Server/Pages/_Host.cshtml.cs @@ -127,7 +127,7 @@ namespace Oqtane.Pages } if (!string.IsNullOrEmpty(site.HeadContent)) { - ProcessHeadContent(site.HeadContent); + ProcessHeadContent(site.HeadContent, "site"); } var ThemeType = site.DefaultThemeType; @@ -170,7 +170,7 @@ namespace Oqtane.Pages } } - ProcessHeadContent(page.HeadContent); + ProcessHeadContent(page.HeadContent, $"page{page.PageId}"); // include global resources var assemblies = AppDomain.CurrentDomain.GetOqtaneAssemblies(); @@ -382,15 +382,24 @@ namespace Oqtane.Pages } } - private void ProcessHeadContent(string headcontent) + private void ProcessHeadContent(string headcontent, string id) { // iterate scripts if (headcontent != null) { + var count = 0; var index = headcontent.IndexOf("= 0) { - HeadResources += headcontent.Substring(index, headcontent.IndexOf("", index) + 9 - index) + Environment.NewLine; + var script = headcontent.Substring(index, headcontent.IndexOf("", index) + 9 - index); + if (!script.Contains("src=") && !script.Contains("id=")) + { + count += 1; + id += $"-script{count}"; + script = script.Replace("