@namespace Oqtane.Modules.Admin.UrlMappings @inherits ModuleBase @inject NavigationManager NavigationManager @inject IUrlMappingService UrlMappingService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer


@SharedLocalizer["Cancel"]
@code { private ElementReference form; private bool validated = false; private string _url = string.Empty; private string _mappedurl = string.Empty; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; private async Task SaveUrlMapping() { validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) { if (_url != _mappedurl) { var url = PageState.Uri.Scheme + "://" + PageState.Uri.Authority + "/"; url = url + (!string.IsNullOrEmpty(PageState.Alias.Path) ? PageState.Alias.Path + "/" : ""); _url = (_url.StartsWith("/")) ? _url.Substring(1) : _url; _url = (!_url.StartsWith("http")) ? url + _url : _url; _mappedurl = _mappedurl.Replace(url, ""); _mappedurl = (_mappedurl.StartsWith("/") && _mappedurl != "/") ? _mappedurl.Substring(1) : _mappedurl; if (_url.StartsWith(url)) { 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; 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; } }