From 5f62957752f534fde454ec5d54a491dc85722609 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Sat, 21 Sep 2019 22:15:44 -0400 Subject: [PATCH] Improved CSS handling --- Oqtane.Client/Modules/Admin/Pages/Add.razor | 3 ++ Oqtane.Client/Modules/Admin/Pages/Index.razor | 2 +- Oqtane.Client/Modules/Controls/Pager.razor | 2 +- .../Modules/Controls/PermissionGrid.razor | 4 ++ Oqtane.Client/Modules/HelloWorld/Index.razor | 42 +++++++++++++++++++ Oqtane.Client/Modules/ModuleBase.cs | 15 +++++++ Oqtane.Client/Shared/Interop.cs | 8 ++-- Oqtane.Client/Shared/ThemeBuilder.razor | 4 +- Oqtane.Client/Shared/Utilities.cs | 5 +++ Oqtane.Client/Themes/ContainerBase.cs | 20 +++++++++ .../Themes/Controls/ControlPanel.razor | 11 +++-- Oqtane.Client/Themes/ThemeBase.cs | 15 +++++++ Oqtane.Server/Repository/SiteRepository.cs | 23 +++++----- Oqtane.Server/wwwroot/js/interop.js | 26 ++++++------ Oqtane.Shared/Models/PageTemplate.cs | 1 + 15 files changed, 142 insertions(+), 39 deletions(-) create mode 100644 Oqtane.Client/Modules/HelloWorld/Index.razor diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index b5f12f42..36e6a20d 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -175,6 +175,9 @@ themes = ThemeService.GetThemeTypes(PageState.Themes); panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes); + themetype = PageState.Site.DefaultThemeType; + layouttype = PageState.Site.DefaultLayoutType; + List permissionstrings = new List(); permissionstrings.Add(new PermissionString { PermissionName = "View", Permissions = Constants.AdminRole }); permissionstrings.Add(new PermissionString { PermissionName = "Edit", Permissions = Constants.AdminRole }); diff --git a/Oqtane.Client/Modules/Admin/Pages/Index.razor b/Oqtane.Client/Modules/Admin/Pages/Index.razor index 5e6e69da..ce6c13ca 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Index.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Index.razor @@ -11,7 +11,7 @@ { - +
Name   diff --git a/Oqtane.Client/Modules/Controls/Pager.razor b/Oqtane.Client/Modules/Controls/Pager.razor index 60c2a8f8..aec5efb3 100644 --- a/Oqtane.Client/Modules/Controls/Pager.razor +++ b/Oqtane.Client/Modules/Controls/Pager.razor @@ -70,7 +70,7 @@ { if (string.IsNullOrEmpty(PageSize)) { - MaxItems = 5; + MaxItems = 10; } else { diff --git a/Oqtane.Client/Modules/Controls/PermissionGrid.razor b/Oqtane.Client/Modules/Controls/PermissionGrid.razor index 8aa2e331..2395bf98 100644 --- a/Oqtane.Client/Modules/Controls/PermissionGrid.razor +++ b/Oqtane.Client/Modules/Controls/PermissionGrid.razor @@ -102,6 +102,10 @@ { permissionnames = "View,Edit"; } + else + { + permissionnames = PermissionNames; + } roles = await RoleService.GetRolesAsync(ModuleState.SiteId); roles.Insert(0, new Role { Name = Constants.AllUsersRole }); diff --git a/Oqtane.Client/Modules/HelloWorld/Index.razor b/Oqtane.Client/Modules/HelloWorld/Index.razor new file mode 100644 index 00000000..8c115251 --- /dev/null +++ b/Oqtane.Client/Modules/HelloWorld/Index.razor @@ -0,0 +1,42 @@ +@using Microsoft.AspNetCore.Components.Web +@using Oqtane.Modules +@using Oqtane.Services +@namespace Oqtane.Modules.HelloWorld +@inherits ModuleBase +@inject ISettingService SettingService + +
+
+ +
+
+ +
+ +
+ @if (!string.IsNullOrEmpty(url)) + { +
+ + } +
+
+ +@code { + string url = ""; + + protected override async Task OnInitializedAsync() + { + Dictionary settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId); + url = SettingService.GetSetting(settings, "url", ""); + } + + private async Task Save() + { + Dictionary settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId); + SettingService.SetSetting(settings, "url", url); + await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId); + StateHasChanged(); + } + +} diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index be430e57..24d04354 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -1,11 +1,16 @@ using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; using Oqtane.Shared; using Oqtane.Models; +using System.Threading.Tasks; namespace Oqtane.Modules { public class ModuleBase : ComponentBase, IModuleControl { + [Inject] + protected IJSRuntime JSRuntime { get; set; } + [CascadingParameter] protected PageState PageState { get; set; } @@ -25,6 +30,16 @@ namespace Oqtane.Modules return "Modules/" + this.GetType().Namespace + "/"; } + public async Task AddCSS(string Url) + { + if (!Url.StartsWith("http")) + { + Url = ModulePath() + Url; + } + var interop = new Interop(JSRuntime); + await interop.AddCSS("Module:" + Utilities.CreateIdFromUrl(Url), Url); + } + public string NavigateUrl() { return NavigateUrl(PageState.Page.Path); diff --git a/Oqtane.Client/Shared/Interop.cs b/Oqtane.Client/Shared/Interop.cs index 594333fa..8987e650 100644 --- a/Oqtane.Client/Shared/Interop.cs +++ b/Oqtane.Client/Shared/Interop.cs @@ -42,13 +42,13 @@ namespace Oqtane.Shared } } - public Task AddCSS(string filename) + public Task AddCSS(string id, string url) { try { jsRuntime.InvokeAsync( "interop.addCSS", - filename); + id, url); return Task.CompletedTask; } catch @@ -57,13 +57,13 @@ namespace Oqtane.Shared } } - public Task RemoveCSS(string filepattern) + public Task RemoveCSS(string pattern) { try { jsRuntime.InvokeAsync( "interop.removeCSS", - filepattern); + pattern); return Task.CompletedTask; } catch diff --git a/Oqtane.Client/Shared/ThemeBuilder.razor b/Oqtane.Client/Shared/ThemeBuilder.razor index 07e3a4a2..c9fa26a0 100644 --- a/Oqtane.Client/Shared/ThemeBuilder.razor +++ b/Oqtane.Client/Shared/ThemeBuilder.razor @@ -35,7 +35,7 @@ { // remove any custom CSS var interop = new Interop(jsRuntime); - await interop.RemoveCSS("Themes/"); - await interop.RemoveCSS("Modules/"); + await interop.RemoveCSS("Theme:"); + await interop.RemoveCSS("Module:"); } } diff --git a/Oqtane.Client/Shared/Utilities.cs b/Oqtane.Client/Shared/Utilities.cs index cd2af1d3..42f2abde 100644 --- a/Oqtane.Client/Shared/Utilities.cs +++ b/Oqtane.Client/Shared/Utilities.cs @@ -191,5 +191,10 @@ namespace Oqtane.Shared return ""; } } + + public static string CreateIdFromUrl(string value) + { + return value.Replace("/", "_").Replace("\\", "_").Replace(".", "_"); + } } } diff --git a/Oqtane.Client/Themes/ContainerBase.cs b/Oqtane.Client/Themes/ContainerBase.cs index d234002d..4475bed6 100644 --- a/Oqtane.Client/Themes/ContainerBase.cs +++ b/Oqtane.Client/Themes/ContainerBase.cs @@ -1,11 +1,16 @@ using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; using Oqtane.Shared; using Oqtane.Models; +using System.Threading.Tasks; namespace Oqtane.Themes { public class ContainerBase : ComponentBase, IContainerControl { + [Inject] + protected IJSRuntime JSRuntime { get; set; } + [CascadingParameter] protected PageState PageState { get; set; } @@ -14,6 +19,21 @@ namespace Oqtane.Themes public virtual string Name { get; set; } + public string ThemePath() + { + return "Themes/" + this.GetType().Namespace + "/"; + } + + public async Task AddCSS(string Url) + { + if (!Url.StartsWith("http")) + { + Url = ThemePath() + Url; + } + var interop = new Interop(JSRuntime); + await interop.AddCSS("Theme:" + Utilities.CreateIdFromUrl(Url), Url); + } + public string NavigateUrl() { return NavigateUrl(PageState.Page.Path); diff --git a/Oqtane.Client/Themes/Controls/ControlPanel.razor b/Oqtane.Client/Themes/Controls/ControlPanel.razor index 1698a27a..e19ebbfc 100644 --- a/Oqtane.Client/Themes/Controls/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/ControlPanel.razor @@ -19,6 +19,11 @@
x
+
-
-
diff --git a/Oqtane.Client/Themes/ThemeBase.cs b/Oqtane.Client/Themes/ThemeBase.cs index 874d76e4..1f6b1247 100644 --- a/Oqtane.Client/Themes/ThemeBase.cs +++ b/Oqtane.Client/Themes/ThemeBase.cs @@ -1,10 +1,15 @@ using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; using Oqtane.Shared; +using System.Threading.Tasks; namespace Oqtane.Themes { public class ThemeBase : ComponentBase, IThemeControl { + [Inject] + protected IJSRuntime JSRuntime { get; set; } + [CascadingParameter] protected PageState PageState { get; set; } public virtual string Name { get; set; } @@ -15,6 +20,16 @@ namespace Oqtane.Themes return "Themes/" + this.GetType().Namespace + "/"; } + public async Task AddCSS(string Url) + { + if (!Url.StartsWith("http")) + { + Url = ThemePath() + Url; + } + var interop = new Interop(JSRuntime); + await interop.AddCSS("Theme:" + Utilities.CreateIdFromUrl(Url), Url); + } + public string NavigateUrl() { return NavigateUrl(PageState.Page.Path); diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index 519b41cd..c52d6919 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -28,27 +28,27 @@ namespace Oqtane.Repository // defines the default site template SiteTemplate = new List(); - SiteTemplate.Add(new PageTemplate { Name = "Home", Parent = "", Path = "", Order = 1, Icon = "home", IsNavigation = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Home", Parent = "", Path = "", Order = 1, Icon = "home", IsNavigation = true, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "", ModulePermissions = "", Title = "", Pane = "", ContainerType = "" }); - SiteTemplate.Add(new PageTemplate { Name = "Admin", Parent = "", Path = "admin", Order = 1, Icon = "", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Admin", Parent = "", Path = "admin", Order = 1, Icon = "", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Dashboard, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Administration", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "Site Management", Parent = "Admin", Path = "admin/sites", Order = 1, Icon = "globe", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Site Management", Parent = "Admin", Path = "admin/sites", Order = 1, Icon = "globe", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Sites, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Site Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "Page Management", Parent = "Admin", Path = "admin/pages", Order = 1, Icon = "layers", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Page Management", Parent = "Admin", Path = "admin/pages", Order = 1, Icon = "layers", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Pages, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Page Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "Module Management", Parent = "Admin", Path = "admin/modules", Order = 1, Icon = "browser", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Module Management", Parent = "Admin", Path = "admin/modules", Order = 1, Icon = "browser", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.ModuleDefinitions, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Module Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "Theme Management", Parent = "Admin", Path = "admin/themes", Order = 1, Icon = "brush", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Theme Management", Parent = "Admin", Path = "admin/themes", Order = 1, Icon = "brush", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Themes, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Theme Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "User Management", Parent = "Admin", Path = "admin/users", Order = 1, Icon = "person", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "User Management", Parent = "Admin", Path = "admin/users", Order = 1, Icon = "person", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Users, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "User Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "Role Management", Parent = "Admin", Path = "admin/roles", Order = 1, Icon = "lock-locked", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Role Management", Parent = "Admin", Path = "admin/roles", Order = 1, Icon = "lock-locked", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Roles, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Role Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "Login", Parent = "", Path = "login", Order = 1, Icon = "lock-locked", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Login", Parent = "", Path = "login", Order = 1, Icon = "lock-locked", IsNavigation = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Login, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Login", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "Register", Parent = "", Path = "register", Order = 1, Icon = "person", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Register", Parent = "", Path = "register", Order = 1, Icon = "person", IsNavigation = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Register, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Register", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); - SiteTemplate.Add(new PageTemplate { Name = "Profile", Parent = "", Path = "profile", Order = 1, Icon = "person", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", + SiteTemplate.Add(new PageTemplate { Name = "Profile", Parent = "", Path = "profile", Order = 1, Icon = "person", IsNavigation = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", ModuleDefinitionName = "Oqtane.Modules.Admin.Profile, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "User Profile", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" }); } @@ -119,6 +119,7 @@ namespace Oqtane.Repository Path = pagetemplate.Path, Order = pagetemplate.Order, IsNavigation = pagetemplate.IsNavigation, + EditMode = pagetemplate.EditMode, ThemeType = site.DefaultThemeType, LayoutType = site.DefaultLayoutType, Icon = pagetemplate.Icon, diff --git a/Oqtane.Server/wwwroot/js/interop.js b/Oqtane.Server/wwwroot/js/interop.js index 09994e57..0832cee0 100644 --- a/Oqtane.Server/wwwroot/js/interop.js +++ b/Oqtane.Server/wwwroot/js/interop.js @@ -28,23 +28,21 @@ window.interop = { return ""; } }, - addCSS: function (fileName) { - var head = document.head; - var link = document.createElement("link"); - - link.type = "text/css"; - link.rel = "stylesheet"; - link.href = fileName; - - head.appendChild(link); + addCSS: function (id, url) { + if (document.getElementById(id) === null) { + var link = document.createElement("link"); + link.id = id; + link.type = "text/css"; + link.rel = "stylesheet"; + link.href = url; + document.head.appendChild(link); + } }, - removeCSS: function (filePattern) { - var head = document.head; + removeCSS: function (pattern) { var links = document.getElementsByTagName("link"); for (var i = 0; i < links.length; i++) { - var link = links[i]; - if (link.rel === 'stylesheet' && link.href.includes(filePattern)) { - head.removeChild(link); + if (links[i].id.includes(pattern)) { + document.head.removeChild(links[i]); } } }, diff --git a/Oqtane.Shared/Models/PageTemplate.cs b/Oqtane.Shared/Models/PageTemplate.cs index f4c3a979..a41cab80 100644 --- a/Oqtane.Shared/Models/PageTemplate.cs +++ b/Oqtane.Shared/Models/PageTemplate.cs @@ -8,6 +8,7 @@ public int Order { get; set; } public string Icon { get; set; } public bool IsNavigation { get; set; } + public bool EditMode { get; set; } public string PagePermissions { get; set; } public string ModuleDefinitionName { get; set; } public string ModulePermissions { get; set; }