I can't see any subclass of
MainSiderbar
andMainHeaderToolbarUserMenu
pls share subclass
MainHeadertoolbarUserMenu.razor
.cs code
namespace Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme.Components.ApplicationLayout.MainHeader { public partial class RKIMainHeaderToolbarUserMenu : IDisposable { [Inject] protected IMenuManager MenuManager { get; set; }
[Inject]
protected ICurrentUser CurrentUser { get; set; }
[Inject]
protected ICurrentTenant CurrentTenant { get; set; }
[Inject]
protected SignOutSessionStateManager SignOutManager { get; set; }
[Inject]
protected NavigationManager Navigation { get; set; }
[Inject]
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
[Inject]
protected IStringLocalizer<AbpUiResource> UiLocalizer { get; set; }
[Inject]
protected IOptions<AbpRemoteServiceOptions> RemoteServiceOptions { get; set; }
[Inject]
protected IJSRuntime JsRuntime { get; set; }
protected ApplicationMenu UserMenu { get; set; }
protected Guid? UserId { get; set; }
protected string UserName { get; set; }
protected string TenantName { get; set; }
protected string ProfileImageUrl { get; set; }
protected string UserFullName { get; set; }
protected override async Task OnInitializedAsync()
{
await SetUserMenuAndProfileAsync();
Navigation.LocationChanged += OnLocationChanged;
AuthenticationStateProvider.AuthenticationStateChanged += AuthenticationStateProviderOnAuthenticationStateChanged;
}
private async Task SetUserMenuAndProfileAsync()
{
UserMenu = await MenuManager.GetAsync(StandardMenus.User);
UserId = CurrentUser.Id;
UserName = CurrentUser.UserName;
UserFullName = CalculateUserFullName();
TenantName = CurrentTenant.Name;
if (UserId != null)
{
ProfileImageUrl = RemoteServiceOptions.Value.RemoteServices.GetConfigurationOrDefaultOrNull("AbpAccountPublic")?.BaseUrl.TrimEnd('/') +
$"/api/account/profile-picture-file/{UserId}";
}
}
protected virtual void OnLocationChanged(object sender, LocationChangedEventArgs e)
{
InvokeAsync(StateHasChanged);
}
private async void AuthenticationStateProviderOnAuthenticationStateChanged(Task<AuthenticationState> task)
{
await SetUserMenuAndProfileAsync();
await InvokeAsync(StateHasChanged);
}
protected virtual async Task BeginSignOut()
{
await SignOutManager.SetSignOutState();
await NavigateToAsync("authentication/logout");
}
protected virtual async Task NavigateToAsync(string uri, string target = null)
{
if (target == "_blank")
{
await JsRuntime.InvokeVoidAsync("open", uri, target);
}
else
{
Navigation.NavigateTo(uri);
}
}
protected virtual string CalculateUserFullName()
{
//TODO: Should we move this logic to some extension method for the ICurrentUser?
var fullName = new StringBuilder();
if (!CurrentUser.Name.IsNullOrEmpty())
{
fullName.Append(CurrentUser.Name);
}
if (!CurrentUser.SurName.IsNullOrEmpty())
{
if (fullName.Length > 0)
{
fullName.Append(" ");
}
fullName.Append(CurrentUser.SurName);
}
if (fullName.Length == 0)
{
fullName.Append(CurrentUser.UserName);
}
return fullName.ToString();
}
public void Dispose()
{
Navigation.LocationChanged -= OnLocationChanged;
AuthenticationStateProvider.AuthenticationStateChanged -= AuthenticationStateProviderOnAuthenticationStateChanged;
}
}
}
Is anyone there to help me out.
Ok can u please check this and reply https://support.abp.io/QA/Questions/2901/How-can-I-set-a-landing-page-for-admin-in-Abp-io
Please check this document carefully https://docs.abp.io/en/abp/latest/UI/Blazor/Customization-Overriding-Components#example-replacing-with-the-code-behind-file
I copied code from above answer https://support.abp.io/QA/files/c24af87f24acad470c7b3a0333981190.png
https://support.abp.io/QA/files/91d3c9b655169d2d50cb3a033397ea66.png
Please it's very important for me to resolve this can we connect on zoom?