From 40c788fc330432e7400ed2667d9cd45ee4866f08 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Fri, 2 Jun 2023 08:34:05 -0400 Subject: [PATCH] include methods for dynamic scenarios --- Oqtane.Client/Modules/ModuleBase.cs | 10 ++++++ .../Controls/Container/ModuleTitle.razor | 1 - .../Themes/Controls/Theme/LoginBase.cs | 1 - Oqtane.Client/Themes/ThemeBase.cs | 33 ++++++++++++++++++- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index 8aceca83..381d4747 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -291,6 +291,16 @@ namespace Oqtane.Modules } } + public void AddScript(Resource resource) + { + resource.ResourceType = ResourceType.Script; + if (Resources == null) Resources = new List(); + if (!Resources.Any(item => (!string.IsNullOrEmpty(resource.Url) && item.Url == resource.Url) || (!string.IsNullOrEmpty(resource.Content) && item.Content == resource.Content))) + { + Resources.Add(resource); + } + } + public async Task ScrollToPageTop() { var interop = new Interop(JSRuntime); diff --git a/Oqtane.Client/Themes/Controls/Container/ModuleTitle.razor b/Oqtane.Client/Themes/Controls/Container/ModuleTitle.razor index ac302c17..ff35f013 100644 --- a/Oqtane.Client/Themes/Controls/Container/ModuleTitle.razor +++ b/Oqtane.Client/Themes/Controls/Container/ModuleTitle.razor @@ -2,7 +2,6 @@ @namespace Oqtane.Themes.Controls @inherits ContainerBase @attribute [OqtaneIgnore] -@inject SiteState SiteState @((MarkupString)title) diff --git a/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs b/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs index a8f3aa47..9f4f4071 100644 --- a/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs +++ b/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs @@ -19,7 +19,6 @@ namespace Oqtane.Themes.Controls [Inject] public IUserService UserService { get; set; } [Inject] public IJSRuntime jsRuntime { get; set; } [Inject] public IServiceProvider ServiceProvider { get; set; } - [Inject] public SiteState SiteState { get; set; } [Inject] public ILogService LoggingService { get; set; } protected void LoginUser() diff --git a/Oqtane.Client/Themes/ThemeBase.cs b/Oqtane.Client/Themes/ThemeBase.cs index c06bbf3a..0528259a 100644 --- a/Oqtane.Client/Themes/ThemeBase.cs +++ b/Oqtane.Client/Themes/ThemeBase.cs @@ -15,10 +15,13 @@ namespace Oqtane.Themes [Inject] protected IJSRuntime JSRuntime { get; set; } - // optional interface properties + [Inject] + protected SiteState SiteState { get; set; } [CascadingParameter] protected PageState PageState { get; set; } + + // optional interface properties public virtual string Name { get; set; } public virtual string Thumbnail { get; set; } public virtual string Panes { get; set; } @@ -139,6 +142,34 @@ namespace Oqtane.Themes return Utilities.ImageUrl(PageState.Alias, fileid, width, height, mode, position, background, rotate, recreate); } + public void SetPageTitle(string title) + { + SiteState.Properties.PageTitle = title; + } + + // note - only supports links and meta tags - not scripts + public void AddHeadContent(string content) + { + if (string.IsNullOrEmpty(SiteState.Properties.HeadContent)) + { + SiteState.Properties.HeadContent = content; + } + else if (!SiteState.Properties.HeadContent.Contains(content)) + { + SiteState.Properties.HeadContent += content; + } + } + + public void AddScript(Resource resource) + { + resource.ResourceType = ResourceType.Script; + if (Resources == null) Resources = new List(); + if (!Resources.Any(item => (!string.IsNullOrEmpty(resource.Url) && item.Url == resource.Url) || (!string.IsNullOrEmpty(resource.Content) && item.Content == resource.Content))) + { + Resources.Add(resource); + } + } + [Obsolete("ContentUrl(int fileId) is deprecated. Use FileUrl(int fileId) instead.", false)] public string ContentUrl(int fileid) {