Browse Source

feat: Refactor culture prefix handling by moving logic to MenuItemCulturePrefixHelper and adding browser check

pull/25174/head
maliming 6 hours ago
parent
commit
bb78038c9d
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 26
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpWasmCultureMenuItemUrlProvider.cs
  2. 22
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpCultureMenuItemUrlProvider.cs
  3. 24
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuItemCulturePrefixHelper.cs

26
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpWasmCultureMenuItemUrlProvider.cs

@ -23,6 +23,11 @@ public class AbpWasmCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransien
public virtual async Task HandleAsync(MenuItemUrlProviderContext context)
{
if (!OperatingSystem.IsBrowser())
{
return;
}
var config = await ConfigurationClient.GetAsync();
if (!config.Localization.UseRouteBasedCulture)
{
@ -35,7 +40,7 @@ public class AbpWasmCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransien
return;
}
PrependCulturePrefix(context.Menu, "/" + culture);
MenuItemCulturePrefixHelper.PrependCulturePrefix(context.Menu, "/" + culture);
}
protected virtual string? GetCulture(Mvc.ApplicationConfigurations.ApplicationConfigurationDto config)
@ -53,23 +58,4 @@ public class AbpWasmCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransien
return isKnownCulture ? currentCulture : null;
}
protected virtual void PrependCulturePrefix(IHasMenuItems menuWithItems, string prefix)
{
foreach (var item in menuWithItems.Items)
{
if (item.Url != null)
{
if (item.Url.StartsWith("~/"))
{
item.Url = "~" + prefix + item.Url[1..];
}
else if (item.Url.StartsWith('/'))
{
item.Url = prefix + item.Url;
}
}
PrependCulturePrefix(item, prefix);
}
}
}

22
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpCultureMenuItemUrlProvider.cs

@ -44,8 +44,7 @@ public class AbpCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransientDep
return Task.CompletedTask;
}
var prefix = "/" + culture;
PrependCulturePrefix(context.Menu, prefix);
MenuItemCulturePrefixHelper.PrependCulturePrefix(context.Menu, "/" + culture);
return Task.CompletedTask;
}
@ -66,23 +65,4 @@ public class AbpCultureMenuItemUrlProvider : IMenuItemUrlProvider, ITransientDep
return isKnownCulture ? currentCulture : null;
}
protected virtual void PrependCulturePrefix(IHasMenuItems menuWithItems, string prefix)
{
foreach (var item in menuWithItems.Items)
{
if (item.Url != null)
{
if (item.Url.StartsWith("~/"))
{
item.Url = "~" + prefix + item.Url[1..];
}
else if (item.Url.StartsWith('/'))
{
item.Url = prefix + item.Url;
}
}
PrependCulturePrefix(item, prefix);
}
}
}

24
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuItemCulturePrefixHelper.cs

@ -0,0 +1,24 @@
namespace Volo.Abp.UI.Navigation;
public static class MenuItemCulturePrefixHelper
{
public static void PrependCulturePrefix(IHasMenuItems menuWithItems, string prefix)
{
foreach (var item in menuWithItems.Items)
{
if (item.Url != null)
{
if (item.Url.StartsWith("~/"))
{
item.Url = "~" + prefix + item.Url.Substring(1);
}
else if (item.Url.StartsWith("/"))
{
item.Url = prefix + item.Url;
}
}
PrependCulturePrefix(item, prefix);
}
}
}
Loading…
Cancel
Save