diff --git a/Oqtane.Client/Themes/Controls/ControlPanel.razor b/Oqtane.Client/Themes/Controls/ControlPanel.razor index e80ca085..2da8f847 100644 --- a/Oqtane.Client/Themes/Controls/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/ControlPanel.razor @@ -1,5 +1,5 @@ @namespace Oqtane.Themes.Controls -@inherits ThemeControlBase +@inherits ThemeControlBase @attribute [OqtaneIgnore] @inject NavigationManager NavigationManager @inject IUserService UserService @@ -9,8 +9,9 @@ @inject IPageService PageService @inject IPageModuleService PageModuleService @inject ILogService logger +@inject ISettingService SettingService -@if (_moduleDefinitions != null && UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) +@if (_moduleDefinitions != null && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) {
@@ -31,7 +32,7 @@
-
+
@@ -73,23 +74,23 @@
} -
+
- - @if (_moduleType == "new") + @if (ModuleType == "new") { @if (_moduleDefinitions != null) { - @((MarkupString)@_description) + @((MarkupString) Description) } } else @@ -128,7 +129,7 @@ } - @foreach (Module module in _modules) { @@ -141,13 +142,13 @@
- +
- @foreach (string pane in PageState.Page.Panes) { @@ -159,7 +160,7 @@
- @foreach (KeyValuePair container in _containers) { @@ -168,16 +169,16 @@
-
+
- @((MarkupString) _message) + @((MarkupString) Message)
} -@if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions) || (PageState.Page.IsPersonalizable && PageState.User != null)) +@if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions) || (PageState.Page.IsPersonalizable && PageState.User != null)) { @if (PageState.Page.EditMode) { @@ -202,32 +203,52 @@ } } -@if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) +@if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) { } -@code { +@code{ + private bool _deleteConfirmation = false; - private string _moduleType = "new"; private List _categories = new List(); private List _allModuleDefinitions; private List _moduleDefinitions; private List _pages = new List(); - private string _pageId = "-"; - private string _moduleId = "-"; private List _modules = new List(); private Dictionary _containers = new Dictionary(); - private string _moduleDefinitionName = "-"; - private string _category = "Common"; - private string _description = ""; - private string _pane = ""; - private string _title = ""; - private string _containerType = ""; private string _display = "display: none;"; - private string _message = ""; + private string _category = "Common"; + + protected string PageId { get; private set; } = "-"; + protected string ModuleId { get; private set; } = "-"; + protected string ModuleType { get; private set; } = "new"; + protected string ModuleDefinitionName { get; private set; } = "-"; + + protected string Category + { + get => _category; + private set + { + if (_category != value) + { + _category = value; + _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(Category)).ToList(); + ModuleDefinitionName = "-"; + Description = ""; + StateHasChanged(); + _ = UpdateSettingsAsync(); + } + } + } + + protected string Description { get; private set; } = ""; + protected string Pane { get; private set; } = ""; + protected string Title { get; private set; } = ""; + protected string ContainerType { get; private set; } = ""; + protected string Message { get; private set; } = ""; [Parameter] public string ButtonClass { get; set; } @@ -241,7 +262,8 @@ [Parameter] public string BodyClass { get; set; } - protected override async Task OnParametersSetAsync() + + protected override async Task OnInitializedAsync() { if (string.IsNullOrEmpty(ButtonClass)) { @@ -263,131 +285,107 @@ BodyClass = "card-body"; } - if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) + if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) { _pages?.Clear(); foreach (Page p in PageState.Pages) { - if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.View, p.Permissions)) + if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.Permissions)) { _pages.Add(p); } } + await LoadSettingsAsync(); var panes = PageState.Page.Panes; - _pane = panes.Count() == 1 ? panes.SingleOrDefault() : ""; + Pane = panes.Count() == 1 ? panes.SingleOrDefault() : ""; var themes = await ThemeService.GetThemesAsync(); _containers = ThemeService.GetContainerTypes(themes); - _containerType = PageState.Site.DefaultContainerType; + ContainerType = PageState.Site.DefaultContainerType; _allModuleDefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); + _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(Category)).ToList(); - _categories = new List(); - foreach (ModuleDefinition moduledefinition in _allModuleDefinitions) - { - if (moduledefinition.Categories != "") - { - foreach (string category in moduledefinition.Categories.Split(',')) - { - if (!_categories.Contains(category)) - { - _categories.Add(category); - } - } - } - } - - _category = "Common"; - _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(_category)).ToList(); - _moduleDefinitionName = "-"; - _description = ""; + _categories = _allModuleDefinitions.SelectMany(m => m.Categories.Split(',')).Distinct().ToList(); } } private void CategoryChanged(ChangeEventArgs e) { - _category = (string) e.Value; - _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(_category)).ToList(); - _moduleDefinitionName = "-"; - _description = ""; - StateHasChanged(); + Category = (string) e.Value; } private void ModuleChanged(ChangeEventArgs e) { - _moduleDefinitionName = (string)e.Value; - if (_moduleDefinitionName != "-") + ModuleDefinitionName = (string) e.Value; + if (ModuleDefinitionName != "-") { - var moduleDefinition = _moduleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == _moduleDefinitionName); - _description = "
" + moduleDefinition.Description + "
"; + var moduleDefinition = _moduleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == ModuleDefinitionName); + Description = "
" + moduleDefinition.Description + "
"; } else { - _description = ""; + Description = ""; } + StateHasChanged(); } private void PageChanged(ChangeEventArgs e) { - _pageId = (string) e.Value; - _modules?.Clear(); - - if (_pageId != "-") + PageId = (string) e.Value; + if (PageId != "-") { - foreach (Module module in PageState.Modules.Where(item => item.PageId == int.Parse(_pageId) && !item.IsDeleted)) - { - if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.View, module.Permissions)) - { - _modules.Add(module); - } - } + _modules = PageState.Modules + .Where(module => module.PageId == int.Parse(PageId) + && !module.IsDeleted + && UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, module.Permissions)) + .ToList(); } - - _moduleId = "-"; + ModuleId = "-"; StateHasChanged(); } private async Task AddModule() { - if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) + if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) { - if ((_moduleType == "new" && _moduleDefinitionName != "-") || (_moduleType != "new" && _moduleId != "-")) + if ((ModuleType == "new" && ModuleDefinitionName != "-") || (ModuleType != "new" && ModuleId != "-")) { - if (_moduleType == "new") + if (ModuleType == "new") { Module module = new Module(); module.SiteId = PageState.Site.SiteId; module.PageId = PageState.Page.PageId; - module.ModuleDefinitionName = _moduleDefinitionName; + module.ModuleDefinitionName = ModuleDefinitionName; module.AllPages = false; module.Permissions = PageState.Page.Permissions; module = await ModuleService.AddModuleAsync(module); - _moduleId = module.ModuleId.ToString(); + ModuleId = module.ModuleId.ToString(); } var pageModule = new PageModule { PageId = PageState.Page.PageId, - ModuleId = int.Parse(_moduleId), - Title = _title + ModuleId = int.Parse(ModuleId), + Title = Title }; if (pageModule.Title == "") { - if (_moduleType == "new") + if (ModuleType == "new") { - pageModule.Title = _moduleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == _moduleDefinitionName)?.Name; + pageModule.Title = _moduleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == ModuleDefinitionName)?.Name; } else { - pageModule.Title = _modules.FirstOrDefault(item => item.ModuleId == int.Parse(_moduleId))?.Title; + pageModule.Title = _modules.FirstOrDefault(item => item.ModuleId == int.Parse(ModuleId))?.Title; } } - pageModule.Pane = _pane; + pageModule.Pane = Pane; pageModule.Order = int.MaxValue; - pageModule.ContainerType = _containerType; + pageModule.ContainerType = ContainerType; if (pageModule.ContainerType == PageState.Site.DefaultContainerType) { @@ -397,32 +395,23 @@ await PageModuleService.AddPageModuleAsync(pageModule); await PageModuleService.UpdatePageModuleOrderAsync(pageModule.PageId, pageModule.Pane); - _message = "
Module Added To Page
"; - - _moduleDefinitionName = "-"; - _description = ""; - _pane = ""; - _title = ""; - _containerType = ""; - _pageId = "-"; - _moduleId = "-"; - + Message = "
Module Added To Page
"; NavigationManager.NavigateTo(NavigateUrl()); } else { - _message = "
You Must Select A Module
"; + Message = "
You Must Select A Module
"; } } else { - _message = "
Not Authorized
"; + Message = "
Not Authorized
"; } } private async Task ToggleEditMode(bool EditMode) { - if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) + if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) { if (EditMode) { @@ -432,6 +421,7 @@ { PageState.EditMode = true; } + NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"))); } else @@ -447,14 +437,14 @@ private void ShowControlPanel() { - _message = ""; + Message = ""; _display = "width: 25%; min-width: 375px;"; StateHasChanged(); } private void HideControlPanel() { - _message = ""; + Message = ""; _display = "width: 0%;"; StateHasChanged(); } @@ -466,7 +456,7 @@ switch (location) { case "Admin": - // get admin dashboard moduleid + // get admin dashboard moduleid module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.AdminDashboardModule); if (module != null) @@ -478,7 +468,7 @@ case "Add": case "Edit": string url = ""; - // get page management moduleid + // get page management moduleid module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.PageManagementModule); if (module != null) @@ -536,4 +526,18 @@ } } + private string settingName = "CP-category"; + + private async Task LoadSettingsAsync() + { + Dictionary settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); + _category = SettingService.GetSetting(settings, settingName, "Common"); + } + + private async Task UpdateSettingsAsync() + { + Dictionary settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); + SettingService.SetSetting(settings, settingName, _category); + await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId); + } }