From 49b971280f5d5af9b733048c42c7413a9612b82c Mon Sep 17 00:00:00 2001 From: sbwalker Date: Thu, 19 Sep 2024 14:09:45 -0400 Subject: [PATCH] fix #4628 - preserve Url for all ModuleActions --- .../Modules/Admin/Modules/Export.razor | 2 +- .../Modules/Admin/Modules/Import.razor | 2 +- .../Controls/Container/ModuleActionsBase.cs | 65 +++++++++---------- 3 files changed, 34 insertions(+), 35 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Modules/Export.razor b/Oqtane.Client/Modules/Admin/Modules/Export.razor index 45a22e18f..d2e901931 100644 --- a/Oqtane.Client/Modules/Admin/Modules/Export.razor +++ b/Oqtane.Client/Modules/Admin/Modules/Export.razor @@ -15,7 +15,7 @@ -@SharedLocalizer["Cancel"] +@SharedLocalizer["Cancel"] @code { private string _content = string.Empty; diff --git a/Oqtane.Client/Modules/Admin/Modules/Import.razor b/Oqtane.Client/Modules/Admin/Modules/Import.razor index 961157ebc..04b2557a9 100644 --- a/Oqtane.Client/Modules/Admin/Modules/Import.razor +++ b/Oqtane.Client/Modules/Admin/Modules/Import.razor @@ -17,7 +17,7 @@ - @SharedLocalizer["Cancel"] + @SharedLocalizer["Cancel"] @code { diff --git a/Oqtane.Client/Themes/Controls/Container/ModuleActionsBase.cs b/Oqtane.Client/Themes/Controls/Container/ModuleActionsBase.cs index 37cdb71af..fa131ba33 100644 --- a/Oqtane.Client/Themes/Controls/Container/ModuleActionsBase.cs +++ b/Oqtane.Client/Themes/Controls/Container/ModuleActionsBase.cs @@ -11,9 +11,6 @@ using Microsoft.Extensions.Localization; using Oqtane.UI; -// ReSharper disable UnassignedGetOnlyAutoProperty -// ReSharper disable MemberCanBePrivate.Global - namespace Oqtane.Themes.Controls { public class ModuleActionsBase : ComponentBase @@ -92,20 +89,17 @@ protected virtual List GetActions() return actionList; } - private async Task EditUrlAsync(string url, int moduleId, string import) - { - await Task.Yield(); - return Utilities.EditUrl(PageState.Alias.Path, PageState.Page.Path, moduleId, import, ""); - } - protected async Task ModuleAction(ActionViewModel action) { if (PageState.EditMode && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, ModuleState.PermissionList)) { - PageModule pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId); - - string url = Utilities.NavigateUrl(PageState.Alias.Path, PageState.Page.Path, "edit=true&refresh"); + var url = NavigationManager.Uri.Substring(NavigationManager.BaseUri.Length - 1); + if (!url.Contains("edit=true&refresh")) + { + url += (!url.Contains("?") ? "?" : "&") + "edit=true&refresh"; + } + var pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId); if (action.Action != null) { url = await action.Action(url, pagemodule); @@ -115,29 +109,9 @@ protected async Task ModuleAction(ActionViewModel action) } } - private async Task MoveToPane(string url, string newPane, PageModule pagemodule) - { - string oldPane = pagemodule.Pane; - pagemodule.Pane = newPane; - pagemodule.Order = int.MaxValue; // add to bottom of pane - await PageModuleService.UpdatePageModuleAsync(pagemodule); - await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane); - await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, oldPane); - return url; - } - - private async Task DeleteModule(string url, PageModule pagemodule) - { - pagemodule.IsDeleted = true; - await PageModuleService.UpdatePageModuleAsync(pagemodule); - await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane); - return url; - } - private Task Settings(string url, PageModule pagemodule) { - var returnurl = NavigationManager.Uri.Substring(NavigationManager.BaseUri.Length - 1); - url = Utilities.EditUrl(PageState.Alias.Path, PageState.Page.Path, pagemodule.ModuleId, "Settings", "returnurl=" + WebUtility.UrlEncode(returnurl)); + url = Utilities.EditUrl(PageState.Alias.Path, PageState.Page.Path, pagemodule.ModuleId, "Settings", "returnurl=" + WebUtility.UrlEncode(url)); return Task.FromResult(url); } @@ -173,6 +147,20 @@ private async Task Unpublish(string url, PageModule pagemodule) return url; } + private async Task DeleteModule(string url, PageModule pagemodule) + { + pagemodule.IsDeleted = true; + await PageModuleService.UpdatePageModuleAsync(pagemodule); + await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane); + return url; + } + + private Task EditUrlAsync(string url, int moduleId, string import) + { + url = Utilities.EditUrl(PageState.Alias.Path, PageState.Page.Path, moduleId, import, "returnurl=" + WebUtility.UrlEncode(url)); + return Task.FromResult(url); + } + private async Task MoveTop(string url, PageModule pagemodule) { pagemodule.Order = 0; @@ -205,6 +193,17 @@ private async Task MoveDown(string url, PageModule pagemodule) return url; } + private async Task MoveToPane(string url, string newPane, PageModule pagemodule) + { + string oldPane = pagemodule.Pane; + pagemodule.Pane = newPane; + pagemodule.Order = int.MaxValue; // add to bottom of pane + await PageModuleService.UpdatePageModuleAsync(pagemodule); + await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane); + await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, oldPane); + return url; + } + public class ActionViewModel { public string Icon { get; set; }