Browse Source

fix several runtime errors

pull/25235/head
İsmail ÇAĞDAŞ 9 months ago
parent
commit
c5c20bf0e9
  1. 84
      modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.MudBlazorBasicTheme/Themes/Basic/LanguageSwitch.razor
  2. 38
      modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.MudBlazorBasicTheme/Themes/Basic/NavMenu.razor
  3. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/Components/App.razor
  4. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/Components/App.razor

84
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.MudBlazorBasicTheme/Themes/Basic/LanguageSwitch.razor

@ -1,12 +1,10 @@
@using Volo.Abp.Localization
@using System.Globalization
@using System.Collections.Immutable
@using Microsoft.JSInterop
@using MudBlazor
@using Volo.Abp.AspNetCore.Components.Web
@using Microsoft.AspNetCore.RequestLocalization
@inject ILanguageProvider LanguageProvider
@inject IJSRuntime JsRuntime
@inject ICookieService CookieService
@inject NavigationManager NavigationManager
@inject IAbpRequestLocalizationOptionsProvider RequestLocalizationOptionsProvider
@if (_otherLanguages != null && _otherLanguages.Any())
{
@ -15,7 +13,7 @@
<MudDivider />
@foreach (var language in _otherLanguages)
{
<MudMenuItem OnClick="@(() => ChangeLanguageAsync(language))">@language.DisplayName</MudMenuItem>
<MudMenuItem OnClick="@(() => ChangeLanguage(language))">@language.DisplayName</MudMenuItem>
}
</MudMenu>
}
@ -26,60 +24,42 @@
protected override async Task OnInitializedAsync()
{
var selectedLanguageName = await JsRuntime.InvokeAsync<string>(
"localStorage.getItem",
"Abp.SelectedLanguage"
);
var allLanguages = await LanguageProvider.GetLanguagesAsync();
_otherLanguages = allLanguages;
if (!_otherLanguages.Any())
{
return;
}
if (!selectedLanguageName.IsNullOrWhiteSpace())
{
_currentLanguage = _otherLanguages.FirstOrDefault(l => l.UiCultureName == selectedLanguageName);
}
if (_currentLanguage == null)
{
_currentLanguage = _otherLanguages.FirstOrDefault(l => l.UiCultureName == CultureInfo.CurrentUICulture.Name);
}
var languages = await LanguageProvider.GetLanguagesAsync();
var currentLanguage = languages.FindByCulture(
CultureInfo.CurrentCulture.Name,
CultureInfo.CurrentUICulture.Name
);
if (_currentLanguage == null)
if (currentLanguage == null)
{
_currentLanguage = _otherLanguages.FirstOrDefault();
var localizationOptions = await RequestLocalizationOptionsProvider.GetLocalizationOptionsAsync();
if (localizationOptions.DefaultRequestCulture != null)
{
currentLanguage = new LanguageInfo(
localizationOptions.DefaultRequestCulture.Culture.Name,
localizationOptions.DefaultRequestCulture.UICulture.Name,
localizationOptions.DefaultRequestCulture.UICulture.DisplayName);
}
else
{
currentLanguage = new LanguageInfo(
CultureInfo.CurrentCulture.Name,
CultureInfo.CurrentUICulture.Name,
CultureInfo.CurrentUICulture.DisplayName);
}
}
_otherLanguages = _otherLanguages.Where(l => l != _currentLanguage).ToImmutableList();
_currentLanguage = currentLanguage;
_otherLanguages = languages.Where(l => l != _currentLanguage).ToImmutableList();
}
private async Task ChangeLanguageAsync(LanguageInfo language)
private void ChangeLanguage(LanguageInfo language)
{
await JsRuntime.InvokeVoidAsync(
"localStorage.setItem",
"Abp.SelectedLanguage",
language.UiCultureName
);
var relativeUrl = NavigationManager.Uri.RemovePreFix(NavigationManager.BaseUri).EnsureStartsWith('/').EnsureStartsWith('~');
await JsRuntime.InvokeVoidAsync(
"localStorage.setItem",
"Abp.IsRtl",
CultureInfo.GetCultureInfo(language.UiCultureName).TextInfo.IsRightToLeft
NavigationManager.NavigateTo(
$"Abp/Languages/Switch?culture={language.CultureName}&uiCulture={language.UiCultureName}&returnUrl={relativeUrl}",
forceLoad: true
);
await CookieService.SetAsync(
".AspNetCore.Culture",
$"c={language.CultureName}|uic={language.UiCultureName}",
new CookieOptions
{
Path = "/"
}
);
await JsRuntime.InvokeVoidAsync("location.reload");
}
}

38
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.MudBlazorBasicTheme/Themes/Basic/NavMenu.razor

@ -1,24 +1,26 @@
@using Microsoft.AspNetCore.Components.Routing
<MudNavMenu>
@foreach (var menuItem in Menu.Items)
{
@if (menuItem.Items.IsNullOrEmpty())
{
<MudNavLink Href="@menuItem.Url" Match="@(menuItem.Url != null ? NavLinkMatch.All : NavLinkMatch.Prefix)">
@if (!string.IsNullOrEmpty(menuItem.Icon))
{
<MudIcon Icon="@GetIcon(menuItem.Icon)" Class="me-2" />
}
@menuItem.DisplayName
</MudNavLink>
}
else
@if (Menu != null)
{
<MudNavMenu>
@foreach (var menuItem in Menu.Items)
{
<FirstLevelNavMenuItem MenuItem="menuItem" />
@if (menuItem.Items.IsNullOrEmpty())
{
<MudNavLink Href="@menuItem.Url" Match="@(menuItem.Url != null ? NavLinkMatch.All : NavLinkMatch.Prefix)">
@if (!string.IsNullOrEmpty(menuItem.Icon))
{
<MudIcon Icon="@GetIcon(menuItem.Icon)" Class="me-2" />
}
@menuItem.DisplayName
</MudNavLink>
}
else
{
<FirstLevelNavMenuItem MenuItem="menuItem" />
}
}
}
</MudNavMenu>
</MudNavMenu>
}
@code {
private string? GetIcon(string? icon)

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/Components/App.razor

@ -19,7 +19,7 @@
<title>MyCompanyName.MyProjectName.Blazor.Server</title>
<base href="/" />
<AbpStyles BundleName="@BlazorMudBlazorBasicThemeBundles.Styles.Global" WebAssemblyStyleFiles="GlobalStyles" @rendermode="InteractiveAuto" />
<AbpStyles BundleName="@BlazorMudBlazorBasicThemeBundles.Styles.Global" WebAssemblyStyleFiles="GlobalStyles" />
<HeadOutlet @rendermode="InteractiveAuto" />
@ -28,7 +28,7 @@
<Routes @rendermode="InteractiveAuto" />
<AbpScripts BundleName="@BlazorMudBlazorBasicThemeBundles.Scripts.Global" WebAssemblyScriptFiles="GlobalScripts" @rendermode="InteractiveAuto" />
<AbpScripts BundleName="@BlazorMudBlazorBasicThemeBundles.Scripts.Global" WebAssemblyScriptFiles="GlobalScripts" />
<script src="_framework/blazor.web.js"></script>

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/Components/App.razor

@ -16,7 +16,7 @@
<title>MyCompanyName.MyProjectName.Blazor.Server</title>
<base href="/" />
<AbpStyles BundleName="@BlazorMudBlazorBasicThemeBundles.Styles.Global" WebAssemblyStyleFiles="GlobalStyles" @rendermode="InteractiveAuto" />
<AbpStyles BundleName="@BlazorMudBlazorBasicThemeBundles.Styles.Global" WebAssemblyStyleFiles="GlobalStyles" />
<HeadOutlet @rendermode="InteractiveAuto" />
@ -25,7 +25,7 @@
<Routes @rendermode="InteractiveAuto" />
<AbpScripts BundleName="@BlazorMudBlazorBasicThemeBundles.Scripts.Global" WebAssemblyScriptFiles="GlobalScripts" @rendermode="InteractiveAuto" />
<AbpScripts BundleName="@BlazorMudBlazorBasicThemeBundles.Scripts.Global" WebAssemblyScriptFiles="GlobalScripts" />
<script src="_framework/blazor.web.js"></script>

Loading…
Cancel
Save