From 4f16cd2d012c12a8ce802921c96db0f11e3fc0bd Mon Sep 17 00:00:00 2001 From: sbwalker Date: Mon, 21 Apr 2025 15:14:39 -0400 Subject: [PATCH] url mapping improvements --- .../Modules/Admin/UrlMappings/Add.razor | 77 +++++++++++-------- .../Modules/Admin/UrlMappings/Edit.razor | 2 +- .../Modules/Admin/UrlMappings/Add.resx | 9 ++- .../Modules/Admin/UrlMappings/Edit.resx | 2 +- Oqtane.Client/UI/SiteRouter.razor | 2 +- Oqtane.Server/Components/App.razor | 2 +- 6 files changed, 57 insertions(+), 37 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/UrlMappings/Add.razor b/Oqtane.Client/Modules/Admin/UrlMappings/Add.razor index a0a7ac9f..8f43985d 100644 --- a/Oqtane.Client/Modules/Admin/UrlMappings/Add.razor +++ b/Oqtane.Client/Modules/Admin/UrlMappings/Add.razor @@ -8,9 +8,12 @@
- +
- +
+ + +
@@ -49,43 +52,57 @@ _url = (!_url.StartsWith("http")) ? url + _url : _url; _mappedurl = _mappedurl.Replace(url, ""); - _mappedurl = (_mappedurl.StartsWith("/")) ? _mappedurl.Substring(1) : _mappedurl; + _mappedurl = (_mappedurl.StartsWith("/") && _mappedurl != "/") ? _mappedurl.Substring(1) : _mappedurl; if (_url.StartsWith(url)) - { - var urlmapping = new UrlMapping(); - urlmapping.SiteId = PageState.Site.SiteId; + { + var urlmapping = new UrlMapping(); + urlmapping.SiteId = PageState.Site.SiteId; urlmapping.Url = new Route(_url, PageState.Alias.Path).PagePath; - urlmapping.MappedUrl = _mappedurl; - urlmapping.Requests = 0; - urlmapping.CreatedOn = DateTime.UtcNow; - urlmapping.RequestedOn = DateTime.UtcNow; + urlmapping.MappedUrl = _mappedurl; + urlmapping.Requests = 0; + urlmapping.CreatedOn = DateTime.UtcNow; + urlmapping.RequestedOn = DateTime.UtcNow; - try - { - urlmapping = await UrlMappingService.AddUrlMappingAsync(urlmapping); - await logger.LogInformation("UrlMapping Saved {UrlMapping}", urlmapping); - NavigationManager.NavigateTo(NavigateUrl()); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Saving UrlMapping {UrlMapping} {Error}", urlmapping, ex.Message); - AddModuleMessage(Localizer["Error.SaveUrlMapping"], MessageType.Error); - } - } - else - { - AddModuleMessage(Localizer["Message.SaveUrlMapping"], MessageType.Warning); - } - } - else - { + try + { + urlmapping = await UrlMappingService.AddUrlMappingAsync(urlmapping); + await logger.LogInformation("UrlMapping Saved {UrlMapping}", urlmapping); + NavigationManager.NavigateTo(NavigateUrl()); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Saving UrlMapping {UrlMapping} {Error}", urlmapping, ex.Message); + AddModuleMessage(Localizer["Error.SaveUrlMapping"], MessageType.Error); + } + } + else + { + AddModuleMessage(Localizer["Message.SaveUrlMapping"], MessageType.Warning); + } + } + else + { AddModuleMessage(Localizer["Message.DuplicateUrlMapping"], MessageType.Warning); - } + } } else { AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } + + private void GenerateUrl() + { + var url = PageState.Uri.Scheme + "://" + PageState.Uri.Authority + "/"; + url = url + (!string.IsNullOrEmpty(PageState.Alias.Path) ? PageState.Alias.Path + "/" : ""); + + var chars = "abcdefghijklmnopqrstuvwxyz"; + Random rnd = new Random(); + for (int i = 0; i < 5; i++) + { + url += chars.Substring(rnd.Next(0, chars.Length - 1), 1); + } + _url = url; + } } diff --git a/Oqtane.Client/Modules/Admin/UrlMappings/Edit.razor b/Oqtane.Client/Modules/Admin/UrlMappings/Edit.razor index 073f851d..78a062f9 100644 --- a/Oqtane.Client/Modules/Admin/UrlMappings/Edit.razor +++ b/Oqtane.Client/Modules/Admin/UrlMappings/Edit.razor @@ -68,7 +68,7 @@ url = url + (!string.IsNullOrEmpty(PageState.Alias.Path) ? PageState.Alias.Path + "/" : ""); _mappedurl = _mappedurl.Replace(url, ""); - _mappedurl = (_mappedurl.StartsWith("/")) ? _mappedurl.Substring(1) : _mappedurl; + _mappedurl = (_mappedurl.StartsWith("/") && _mappedurl != "/") ? _mappedurl.Substring(1) : _mappedurl; var urlmapping = await UrlMappingService.GetUrlMappingAsync(_urlmappingid); urlmapping.MappedUrl = _mappedurl; diff --git a/Oqtane.Client/Resources/Modules/Admin/UrlMappings/Add.resx b/Oqtane.Client/Resources/Modules/Admin/UrlMappings/Add.resx index e1185498..a8de1c59 100644 --- a/Oqtane.Client/Resources/Modules/Admin/UrlMappings/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/UrlMappings/Add.resx @@ -1,4 +1,4 @@ - +