From f677b63c5c6232452b37a84390d1f2f4e0cd991f Mon Sep 17 00:00:00 2001 From: sbwalker Date: Tue, 13 Feb 2024 13:08:46 -0500 Subject: [PATCH] changes to allow adding modules via control panel in static rendering (note that onchange events have not been changed to an alternative approach yet) --- .../Themes/Controls/Theme/ControlPanel.razor | 356 +++++++++--------- 1 file changed, 170 insertions(+), 186 deletions(-) diff --git a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor index beec2fb0..6705dc8c 100644 --- a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor @@ -118,119 +118,122 @@ } -
-
- - - @if (ModuleType == "new") - { - @if (_moduleDefinitions != null) - { - - - } - } - else - { - - - } -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - +
+ +
+
+ + + @if (_moduleType == "new") + { + @if (_moduleDefinitions != null) + { + + + } + } + else + { + + + } +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
-
-
-
- - -
-
-
-
- - -
-
- - @((MarkupString)Message) +
+
+ + +
+
+
+
+ + +
+
+ + + @((MarkupString)_message)
} @@ -244,8 +247,6 @@
} - - @code{ [Parameter] public string ButtonClass { get; set; } = "btn-outline-secondary"; @@ -274,53 +275,34 @@ private List _pages = new List(); private List _modules = new List(); private List _containers = new List(); + + [SupplyParameterFromForm] public string ModuleType { get => ""; set => _moduleType = value; } + [SupplyParameterFromForm] public string Category { get => ""; set => _category = value; } + [SupplyParameterFromForm] public string ModuleDefinitionName { get => ""; set => _moduleDefinitionName = value; } + [SupplyParameterFromForm] public string PageId { get => ""; set => _pageId = value; } + [SupplyParameterFromForm] public string ModuleId { get => ""; set => _moduleId = value; } + [SupplyParameterFromForm] public string Title { get => ""; set => _title = value; } + [SupplyParameterFromForm] public string Pane { get => ""; set => _pane = value; } + [SupplyParameterFromForm] public int Location { get => -1; set => _location = value; } + [SupplyParameterFromForm] public string Container { get => ""; set => _container = value; } + [SupplyParameterFromForm] public string Visibility { get => ""; set => _visibility = value; } + + protected string _moduleType = "new"; private string _category = "Common"; + protected string _moduleDefinitionName = "-"; + protected string _pageId = "-"; + protected string _moduleId = "-"; + protected string _title = ""; private string _pane = ""; + protected int _location = int.MaxValue; + protected string _container = ""; + protected string _visibility = "view"; - 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 Title { get; private set; } = ""; - protected string ContainerType { get; private set; } = ""; - protected int Location { get; private set; } = int.MaxValue; - protected string Visibility { get; private set; } = "view"; - protected string Message { get; private set; } = ""; + protected string _message { get; private set; } = ""; private string settingCategory = "CP-category"; private string settingPane = "CP-pane"; - protected string Category - { - get => _category; - private set - { - if (_category != value) - { - _category = value; - _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(Category)).ToList(); - ModuleDefinitionName = "-"; - Message = ""; - StateHasChanged(); - _ = UpdateSettingsAsync(); - } - } - } - - protected string Pane - { - get => _pane; - private set - { - if (_pane != value) - { - _pane = value; - _ = UpdateSettingsAsync(); - } - } - } - private void AdminDashboard() { Navigate("Admin"); @@ -351,9 +333,9 @@ var themes = await ThemeService.GetThemesAsync(); _containers = ThemeService.GetContainerControls(themes, PageState.Page.ThemeType); - ContainerType = PageState.Site.DefaultContainerType; + _container = PageState.Site.DefaultContainerType; _allModuleDefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); - _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(Category)).ToList(); + _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(_category)).ToList(); _categories = _allModuleDefinitions.SelectMany(m => m.Categories.Split(',')).Distinct().ToList(); } else @@ -387,35 +369,38 @@ private void CategoryChanged(ChangeEventArgs e) { - Category = (string)e.Value; + _category = (string)e.Value; + _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(Category)).ToList(); + _moduleDefinitionName = "-"; + _message = ""; } - private void ModuleChanged(ChangeEventArgs e) + private void ModuleDefinitionChanged(ChangeEventArgs e) { - ModuleDefinitionName = (string)e.Value; - if (ModuleDefinitionName != "-") + _moduleDefinitionName = (string)e.Value; + if (_moduleDefinitionName != "-") { - var moduleDefinition = _moduleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == ModuleDefinitionName); - Message = "
" + moduleDefinition.Description + "
"; + var moduleDefinition = _moduleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == _moduleDefinitionName); + _message = "
" + moduleDefinition.Description + "
"; } else { - Message = ""; + _message = ""; } StateHasChanged(); } private void PageChanged(ChangeEventArgs e) { - PageId = (string)e.Value; - if (PageId != "-") + _pageId = (string)e.Value; + if (_pageId != "-") { _modules = PageState.Modules - .Where(module => module.PageId == int.Parse(PageId) && + .Where(module => module.PageId == int.Parse(_pageId) && UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, module.PermissionList)) .ToList(); } - ModuleId = "-"; + _moduleId = "-"; StateHasChanged(); } @@ -423,18 +408,18 @@ { if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) { - 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; var permissions = new List(); - if (Visibility == "view") + if (_visibility == "view") { // set module view permissions to page view permissions permissions = SetPermissions(permissions, module.SiteId, PermissionNames.View, PermissionNames.View); @@ -455,24 +440,24 @@ 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.Order = Location; - pageModule.ContainerType = ContainerType; + pageModule.Pane = _pane; + pageModule.Order = _location; + pageModule.ContainerType = _container; if (pageModule.ContainerType == PageState.Site.DefaultContainerType) { @@ -481,19 +466,20 @@ await PageModuleService.AddPageModuleAsync(pageModule); await PageModuleService.UpdatePageModuleOrderAsync(pageModule.PageId, pageModule.Pane); + await UpdateSettingsAsync(); - Message = $"
{Localizer["Success.Page.ModuleAdd"]}
"; - Title = ""; + _message = $"
{Localizer["Success.Page.ModuleAdd"]}
"; + _title = ""; NavigationManager.NavigateTo(NavigateUrl()); } else { - Message = $"
{Localizer["Message.Require.ModuleSelect"]}
"; + _message = $"
{Localizer["Message.Require.ModuleSelect"]}
"; } } else { - Message = $"
{Localizer["Error.Authorize.No"]}
"; + _message = $"
{Localizer["Error.Authorize.No"]}
"; } } @@ -712,8 +698,6 @@ private void ClearMessage() { - - Message = ""; - + _message = ""; } }