diff --git a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor index 86f883de..6c0abd1d 100644 --- a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor @@ -431,160 +431,160 @@ } } - private async Task ToggleEditMode(bool EditMode) - { - if (_showEditMode) - { - if (EditMode) - { - PageState.EditMode = false; - } - else - { - PageState.EditMode = true; - } + private async Task ToggleEditMode(bool EditMode) + { + if (_showEditMode) + { + if (EditMode) + { + PageState.EditMode = false; + } + else + { + PageState.EditMode = true; + } - NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"))); - } - else - { - if (PageState.Page.IsPersonalizable && PageState.User != null) - { - await PageService.AddPageAsync(PageState.Page.PageId, PageState.User.UserId); - PageState.EditMode = true; - NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"))); - } - } - } + NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"))); + } + else + { + if (PageState.Page.IsPersonalizable && PageState.User != null) + { + await PageService.AddPageAsync(PageState.Page.PageId, PageState.User.UserId); + PageState.EditMode = true; + NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"))); + } + } + } - private void Navigate(string location) - { - Module module; - switch (location) - { - case "Admin": - // get admin dashboard moduleid - module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.AdminDashboardModule); + private void Navigate(string location) + { + Module module; + switch (location) + { + case "Admin": + // get admin dashboard moduleid + module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.AdminDashboardModule); - if (module != null) - { - NavigationManager.NavigateTo(EditUrl(PageState.Page.Path, module.ModuleId, "Index", "")); - } + if (module != null) + { + NavigationManager.NavigateTo(EditUrl(PageState.Page.Path, module.ModuleId, "Index", "")); + } - break; - case "Add": - case "Edit": - string url = ""; - // get page management moduleid - module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.PageManagementModule); + break; + case "Add": + case "Edit": + string url = ""; + // get page management moduleid + module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.PageManagementModule); - if (module != null) - { - switch (location) - { - case "Add": - url = EditUrl(PageState.Page.Path, module.ModuleId, location, "cp=" + PageState.Page.PageId); - break; - case "Edit": - url = EditUrl(PageState.Page.Path, module.ModuleId, location, "id=" + PageState.Page.PageId.ToString() + "&cp=" + PageState.Page.PageId); - break; - } - } + if (module != null) + { + switch (location) + { + case "Add": + url = EditUrl(PageState.Page.Path, module.ModuleId, location, "cp=" + PageState.Page.PageId); + break; + case "Edit": + url = EditUrl(PageState.Page.Path, module.ModuleId, location, "id=" + PageState.Page.PageId.ToString() + "&cp=" + PageState.Page.PageId); + break; + } + } - if (url != "") - { - NavigationManager.NavigateTo(url); - } + if (url != "") + { + NavigationManager.NavigateTo(url); + } - break; - } - } + break; + } + } - private async void Publish(string action) - { - if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) - { - List permissions; + private async void Publish(string action) + { + if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) + { + List permissions; - // publish/unpublish page - var page = PageState.Page; - permissions = UserSecurity.GetPermissionStrings(page.Permissions); - foreach (var permissionstring in permissions) - { - if (permissionstring.PermissionName == PermissionNames.View) - { - List ids = permissionstring.Permissions.Split(';').ToList(); - switch (action) - { - case "publish": - if (!ids.Contains(RoleNames.Everyone)) ids.Add(RoleNames.Everyone); - if (!ids.Contains(RoleNames.Registered)) ids.Add(RoleNames.Registered); - break; - case "unpublish": - ids.Remove(RoleNames.Everyone); - ids.Remove(RoleNames.Registered); - break; - } - permissionstring.Permissions = string.Join(";", ids.ToArray()); - } - } - page.Permissions = UserSecurity.SetPermissionStrings(permissions); - await PageService.UpdatePageAsync(page); - NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, true)); - } - } + // publish/unpublish page + var page = PageState.Page; + permissions = UserSecurity.GetPermissionStrings(page.Permissions); + foreach (var permissionstring in permissions) + { + if (permissionstring.PermissionName == PermissionNames.View) + { + List ids = permissionstring.Permissions.Split(';').ToList(); + switch (action) + { + case "publish": + if (!ids.Contains(RoleNames.Everyone)) ids.Add(RoleNames.Everyone); + if (!ids.Contains(RoleNames.Registered)) ids.Add(RoleNames.Registered); + break; + case "unpublish": + ids.Remove(RoleNames.Everyone); + ids.Remove(RoleNames.Registered); + break; + } + permissionstring.Permissions = string.Join(";", ids.ToArray()); + } + } + page.Permissions = UserSecurity.SetPermissionStrings(permissions); + await PageService.UpdatePageAsync(page); + NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, true)); + } + } - private void ConfirmDelete() - { - _deleteConfirmation = !_deleteConfirmation; - StateHasChanged(); - } + private void ConfirmDelete() + { + _deleteConfirmation = !_deleteConfirmation; + StateHasChanged(); + } - private async Task DeletePage() - { - ConfirmDelete(); + private async Task DeletePage() + { + ConfirmDelete(); - var page = PageState.Page; - try - { - if (page.UserId == null) - { - page.IsDeleted = true; - await PageService.UpdatePageAsync(page); - await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page); - NavigationManager.NavigateTo(NavigateUrl("")); - } - else // personalized page - { - await PageService.DeletePageAsync(page.PageId); - await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page); - NavigationManager.NavigateTo(NavigateUrl()); - } - } - catch (Exception ex) - { - await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, ex, "Page Deleted {Page} {Error}", page, ex.Message); - } - } + var page = PageState.Page; + try + { + if (page.UserId == null) + { + page.IsDeleted = true; + await PageService.UpdatePageAsync(page); + await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page); + NavigationManager.NavigateTo(NavigateUrl("")); + } + else // personalized page + { + await PageService.DeletePageAsync(page.PageId); + await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page); + NavigationManager.NavigateTo(NavigateUrl()); + } + } + catch (Exception ex) + { + await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, ex, "Page Deleted {Page} {Error}", page, ex.Message); + } + } - private string settingCategory = "CP-category"; - private string settingPane = "CP-pane"; - private string _pane = ""; + private string settingCategory = "CP-category"; + private string settingPane = "CP-pane"; + private string _pane = ""; - private async Task LoadSettingsAsync() - { - Dictionary settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); - _category = SettingService.GetSetting(settings, settingCategory, "Common"); - var pane = SettingService.GetSetting(settings, settingPane, ""); + private async Task LoadSettingsAsync() + { + Dictionary settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); + _category = SettingService.GetSetting(settings, settingCategory, "Common"); + var pane = SettingService.GetSetting(settings, settingPane, ""); if (PageState.Page.Panes.Contains(pane)) { _pane = pane; } else { - if (PageState.Page.Panes.Count != 0) + if (PageState.Page.Panes.FindIndex(item => item.Equals(PaneNames.Default, StringComparison.OrdinalIgnoreCase)) != -1) { - _pane = PageState.Page.Panes[0]; + _pane = PaneNames.Default; } else { diff --git a/Oqtane.Client/Themes/OqtaneTheme/Themes/Default.razor b/Oqtane.Client/Themes/OqtaneTheme/Themes/Default.razor index 86f13131..fe88310c 100644 --- a/Oqtane.Client/Themes/OqtaneTheme/Themes/Default.razor +++ b/Oqtane.Client/Themes/OqtaneTheme/Themes/Default.razor @@ -17,13 +17,6 @@ -
-
-
- -
-
-
@@ -115,7 +108,7 @@ @code { public override string Name => "Default Theme"; - public override string Panes => PaneNames.Default + ",Top Full Width,Top 100%,Left 50%,Right 50%,Left 33%,Center 33%,Right 33%,Left Outer 25%,Left Inner 25%,Right Inner 25%,Right Outer 25%,Left 25%,Center 50%,Right 25%,Left Sidebar 66%,Right Sidebar 33%,Left Sidebar 33%,Right Sidebar 66%,Bottom 100%,Bottom Full Width,Footer," + PaneNames.Admin; + public override string Panes => PaneNames.Default + ",Top Full Width,Top 100%,Left 50%,Right 50%,Left 33%,Center 33%,Right 33%,Left Outer 25%,Left Inner 25%,Right Inner 25%,Right Outer 25%,Left 25%,Center 50%,Right 25%,Left Sidebar 66%,Right Sidebar 33%,Left Sidebar 33%,Right Sidebar 66%,Bottom 100%,Bottom Full Width,Footer"; public override List Resources => new List() { diff --git a/Oqtane.Client/UI/Pane.razor b/Oqtane.Client/UI/Pane.razor index 2c730583..16d0223d 100644 --- a/Oqtane.Client/UI/Pane.razor +++ b/Oqtane.Client/UI/Pane.razor @@ -45,8 +45,18 @@ else { if (PageState.ModuleId != -1 && PageState.Action != Constants.DefaultAction) { - // an admin pane is required in every theme so that module controls can be rendered in a specific location - if (Name.ToLower() == PaneNames.Admin.ToLower()) + // action route needs to inject module control into specific pane + string pane = ""; + if (PageState.Page.Panes.FindIndex(item => item.Equals(PaneNames.Default, StringComparison.OrdinalIgnoreCase)) != -1) + { + pane = PaneNames.Default; + } + else + { + pane = PaneNames.Admin; + + } + if (Name.ToLower() == pane.ToLower()) { Module module = PageState.Modules.FirstOrDefault(item => item.ModuleId == PageState.ModuleId); if (module != null) diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index 10b4962a..523acfe8 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -16,7 +16,7 @@ @if (!string.IsNullOrEmpty(_error)) { - + } @DynamicComponent @@ -359,9 +359,9 @@ if (!string.IsNullOrEmpty(panes)) { page.Panes = panes.Replace(";", ",").Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); - if (!page.Panes.Contains(PaneNames.Admin)) + if (!page.Panes.Contains(PaneNames.Default) && !page.Panes.Contains(PaneNames.Admin)) { - _error = "The Current Theme Does Not Contain An Admin Pane"; + _error = "The Current Theme Does Not Contain A Default Or Admin Pane"; } } else @@ -460,10 +460,18 @@ } } - // ensure module's pane exists in current page and if not, fallback to the admin pane + // validate that module's pane exists in current page if (page.Panes.FindIndex(item => item.Equals(module.Pane, StringComparison.OrdinalIgnoreCase)) == -1) { - module.Pane = PaneNames.Admin; + // fallback to default pane if it exists + if (page.Panes.FindIndex(item => item.Equals(PaneNames.Default, StringComparison.OrdinalIgnoreCase)) != -1) + { + module.Pane = PaneNames.Default; + } + else // otherwise admin pane (legacy) + { + module.Pane = PaneNames.Admin; + } } // calculate module position within pane