From 3849f59126d695ad091a190cd01e8e01a42bc168 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Mon, 19 Jun 2023 12:29:43 -0400 Subject: [PATCH 1/2] fix #2900 - theme deletion and fallback --- Oqtane.Client/UI/SiteRouter.razor | 26 +++++++++---------- .../Controllers/ModuleDefinitionController.cs | 1 + Oqtane.Server/Controllers/ThemeController.cs | 4 ++- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index 38b5d993..b724da31 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -318,31 +318,29 @@ { try { + page.Panes = new List(); + page.Resources = new List(); + + // validate theme if (string.IsNullOrEmpty(page.ThemeType)) { page.ThemeType = site.DefaultThemeType; } - - page.Panes = new List(); - page.Resources = new List(); - - // get theme resources var theme = site.Themes.FirstOrDefault(item => item.Themes.Any(item => item.TypeName == page.ThemeType)); - if (theme != null) - { - page.Resources = ManagePageResources(page.Resources, theme.Resources, ResourceLevel.Page, alias, "Themes", Utilities.GetTypeName(theme.ThemeName)); - } - - string panes = ""; Type themetype = Type.GetType(page.ThemeType); - if (themetype == null) + if (themetype == null || theme == null) { - // fallback + // fallback to default Oqtane theme page.ThemeType = Constants.DefaultTheme; themetype = Type.GetType(Constants.DefaultTheme); } + + string panes = ""; if (themetype != null) { + // get resources for theme (ITheme) + page.Resources = ManagePageResources(page.Resources, theme.Resources, ResourceLevel.Page, alias, "Themes", Utilities.GetTypeName(theme.ThemeName)); + var themeobject = Activator.CreateInstance(themetype) as IThemeControl; if (themeobject != null) { @@ -350,9 +348,11 @@ { panes = themeobject.Panes; } + // get resources for theme control page.Resources = ManagePageResources(page.Resources, themeobject.Resources, ResourceLevel.Page, alias, "Themes", themetype.Namespace); } } + if (!string.IsNullOrEmpty(panes)) { page.Panes = panes.Replace(";", ",").Split(',', StringSplitOptions.RemoveEmptyEntries).ToList(); diff --git a/Oqtane.Server/Controllers/ModuleDefinitionController.cs b/Oqtane.Server/Controllers/ModuleDefinitionController.cs index 224985a7..b672c72f 100644 --- a/Oqtane.Server/Controllers/ModuleDefinitionController.cs +++ b/Oqtane.Server/Controllers/ModuleDefinitionController.cs @@ -258,6 +258,7 @@ namespace Oqtane.Controllers // remove module definition _moduleDefinitions.DeleteModuleDefinition(id); _syncManager.AddSyncEvent(_alias.TenantId, EntityNames.ModuleDefinition, moduledefinition.ModuleDefinitionId, SyncEventActions.Delete); + _syncManager.AddSyncEvent(_alias.TenantId, EntityNames.Site, moduledefinition.SiteId, SyncEventActions.Refresh); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Definition {ModuleDefinitionName} Deleted", moduledefinition.Name); } else diff --git a/Oqtane.Server/Controllers/ThemeController.cs b/Oqtane.Server/Controllers/ThemeController.cs index ab54e542..c15679ad 100644 --- a/Oqtane.Server/Controllers/ThemeController.cs +++ b/Oqtane.Server/Controllers/ThemeController.cs @@ -117,7 +117,9 @@ namespace Oqtane.Controllers } // remove theme - //_themes.DeleteTheme(theme.ThemeName); + _themes.DeleteTheme(theme.ThemeId); + _syncManager.AddSyncEvent(_alias.TenantId, EntityNames.Theme, theme.ThemeId, SyncEventActions.Delete); + _syncManager.AddSyncEvent(_alias.TenantId, EntityNames.Site, theme.SiteId, SyncEventActions.Refresh); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Theme Removed For {ThemeName}", theme.ThemeName); } else From 6bea9a087ca3e02e849b4a2a95fa82c257319c9b Mon Sep 17 00:00:00 2001 From: sbwalker Date: Mon, 19 Jun 2023 15:10:58 -0400 Subject: [PATCH 2/2] more optimizations of Head component --- Oqtane.Client/Head.razor | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Oqtane.Client/Head.razor b/Oqtane.Client/Head.razor index 0a80f6e2..18207178 100644 --- a/Oqtane.Client/Head.razor +++ b/Oqtane.Client/Head.razor @@ -2,8 +2,14 @@ @using Oqtane.Shared @inject SiteState SiteState -@((MarkupString)_title) -@((MarkupString)_content) +@if (!string.IsNullOrEmpty(_title)) +{ + @((MarkupString)_title) +} +@if (!string.IsNullOrEmpty(_content)) +{ + @((MarkupString)_content) +} @code { private string _title = "";