hi
The module should be abstract, it can depend on the Volo.Abp.BackgroundJobs.Abstractions or Volo.Abp.BackgroundJobs module.
Then, use hangfire to replace it in your application.
So that your application can use its preferred implementation(hangfire or Quartz)
hi
You can create a new template project, then use your steps to reproduce the problem and share the template project. liming.ma@volosoft.com
Thanks.
hi
You can create a new template project, then use your steps to reproduce the problem and share the template project. liming.ma@volosoft.com
Thanks.
No, We have mentioned this in the document.
I have refunded your ticket.
Thanks.
hi
Use the MyMainHeader.razor.cs and MyMainHeader.razor to override MainHeader
MyMainHeader.razor.cs
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components;
using Volo.Abp.AspNetCore.Components.Web;
using Volo.Abp.LeptonTheme.Management;
namespace Cns.Modules.Docusign.Blazor.Server.Host.Pages;
public partial class MyMainHeader
{
[Inject]
private IAbpUtilsService UtilsService { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
if (Menu != null)
{
if (Menu.Placement == MenuPlacement.Top)
{
await UtilsService.AddClassToTagAsync("body", "lp-topmenu");
}
else
{
if (Menu.NavBarStatus == MenuStatus.OpenOnHover)
{
await UtilsService.AddClassToTagAsync("body", "lp-closed");
await UtilsService.RemoveClassFromTagAsync("body", "lp-opened-sidebar");
await UtilsService.RemoveClassFromTagAsync("body", "lp-body-fixed");
}
else
{
await UtilsService.RemoveClassFromTagAsync("body", "lp-closed");
await UtilsService.AddClassToTagAsync("body", "lp-opened-sidebar");
await UtilsService.AddClassToTagAsync("body", "lp-body-fixed");
}
}
}
await InvokeAsync(StateHasChanged);
}
}
async Task MyToggleNavbarStatusAsync()
{
if (Menu != null)
{
Menu.ToggleNavbarStatus();
if (Menu.Placement == MenuPlacement.Top)
{
await UtilsService.AddClassToTagAsync("body", "lp-topmenu");
}
else
{
if (Menu.NavBarStatus == MenuStatus.OpenOnHover)
{
await UtilsService.AddClassToTagAsync("body", "lp-closed");
await UtilsService.RemoveClassFromTagAsync("body", "lp-opened-sidebar");
await UtilsService.RemoveClassFromTagAsync("body", "lp-body-fixed");
}
else
{
await UtilsService.RemoveClassFromTagAsync("body", "lp-closed");
await UtilsService.AddClassToTagAsync("body", "lp-opened-sidebar");
await UtilsService.AddClassToTagAsync("body", "lp-body-fixed");
}
}
}
}
protected virtual async Task OnNavBarMouseOverAsync()
{
//TODO: MOUSEOVER IS NOT PERFORMANT, WE SHOULD USE MOUSEENTER/MOUSELEAVE
if (Menu != null)
{
if (Menu.NavBarStatus == MenuStatus.OpenOnHover)
{
if (await UtilsService.HasClassOnTagAsync("body", "lp-closed"))
{
await UtilsService.AddClassToTagAsync("body", "lp-extended");
}
}
}
}
protected virtual async Task OnNavbarMouseOutAsync()
{
if (Menu != null)
{
if (Menu.NavBarStatus == MenuStatus.OpenOnHover)
{
if (await UtilsService.HasClassOnTagAsync("body", "lp-closed"))
{
await UtilsService.RemoveClassFromTagAsync("body", "lp-extended");
}
}
}
}
protected virtual void ToggleToolbarNav()
{
IsToolbarNavShown = !IsToolbarNavShown;
}
protected virtual void ToggleSidebarNav()
{
IsSidebarNavShown = !IsSidebarNavShown;
}
}
MyMainHeader.razor
@using Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components.ApplicationLayout.Navigation
@using Volo.Abp.DependencyInjection
@using Volo.Abp.LeptonTheme.Management
@using Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components.ApplicationLayout.MainHeader
@inherits Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components.ApplicationLayout.MainHeader.MainHeader
@attribute [Dependency(ReplaceServices = true)]
@attribute [ExposeServices(typeof(Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components.ApplicationLayout.MainHeader.MainHeader))]
<header>
<MainHeaderBranding/>
<nav class="navbar navbar-expand-xl navbar-dark d-lg-none nav-mobile">
<button @onclick="ToggleToolbarNav" class="navbar-toggler border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToolbar" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-user"></i>
</button>
<button @onclick="ToggleSidebarNav" class="navbar-toggler border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSidebar" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-align-justify"></i>
</button>
</nav>
<nav class="navbar navbar-expand-lg user-nav-mobile">
<div class="collapse navbar-collapse d-lg-block toolbar-nav-wrapper @(IsToolbarNavShown ? "show" : "")" id="navbarToolbar">
<ul class="navbar-nav toolbar-nav ms-auto">
<MainHeaderToolbar/>
</ul>
</div>
</nav>
<div class="lp-sidebar collapse navbar-collapse d-lg-block @(IsSidebarNavShown ? "show" : "")" id="navbarSidebar" @onmouseover="OnNavBarMouseOverAsync" @onmouseout="OnNavbarMouseOutAsync">
<div class="lp-sidebar-header">
<div class="lp-toggle-sidebar" @onclick="MyToggleNavbarStatusAsync">
<i class="fa fa-align-left material-icons lp-open-icon"></i>
<i class="fa fa-align-justify material-icons lp-close-icon"></i>
</div>
</div>
<div class="lp-sidebar-wrapper">
<MainSiderbar/>
</div>
</div>
</header>
great
: )