| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using Abp.Application.Navigation;
- using Abp.Authorization;
- using Abp.Domain.Repositories;
- using Abp.Domain.Uow;
- using Abp.Localization;
- using Abp.Runtime.Caching;
- using VberZero.BaseSystem;
- namespace VberZero.Navigation;
- public class VzNavigationProvider : NavigationProvider
- {
- protected ICacheManager CacheManager { get; }
- protected IRepository<SysFunction, int?> FunRepository { get; }
- public VzNavigationProvider(ICacheManager cacheManager, IRepository<SysFunction, int?> funRepository)
- {
- CacheManager = cacheManager;
- FunRepository = funRepository;
- }
- public void Refresh(INavigationProviderContext context)
- {
- var itemNames = context.Manager.MainMenu.Items.Select(a => a.Name);
- foreach (var name in itemNames)
- {
- context.Manager.MainMenu.RemoveItem(name);
- }
- SetNavigation(context);
- }
- [UnitOfWork]
- public override void SetNavigation(INavigationProviderContext context)
- {
- if (context is VzNavigationProviderContext)
- {
- var funs = CacheManager.GetCache<string, List<SysFunction>>(VzConsts.CacheFunction).Get(
- "ALL-FUN", () => FunRepository.GetAllList());
- var funRootName = VzConsts.FunRootName;
- var fun = funs.FirstOrDefault(a => a.Name == funRootName);
- if (fun != null)
- {
- context.Manager.MainMenu.AddItem(new MenuItemDefinition(fun.PermissionName, L("Home"), fun.Icon, fun.Url,
- fun.NeedAuth, fun.Sort, fun, permissionDependency: new SimplePermissionDependency(fun.PermissionName)));
- SetChildNavigation(context.Manager.MainMenu, funs, fun.Id);
- }
- }
- }
- private void SetChildNavigation(MenuDefinition menu, IList<SysFunction> list, int? parentNo)
- {
- var funs = list.Where(a => a.ParentNo == parentNo).ToList();
- if (funs.Any())
- {
- foreach (var fun in funs)
- {
- if (fun.FunctionType != VzDefinition.FunctionType.Catalog &&
- fun.FunctionType != VzDefinition.FunctionType.Menu)
- continue;
- var item = new MenuItemDefinition(fun.PermissionName,
- L(fun.PermissionName.Replace(".", "")), fun.Icon, fun.Url,
- fun.NeedAuth, fun.Sort, fun, permissionDependency: new SimplePermissionDependency(fun.PermissionName));
- SetChildNavigation(item, list, fun.Id);
- menu.AddItem(item);
- }
- }
- }
- private void SetChildNavigation(MenuItemDefinition menu, IList<SysFunction> list, int? parentNo)
- {
- var funs = list.Where(a => a.ParentNo == parentNo).OrderBy(a => a.Sort).ToList();
- if (funs.Any())
- {
- foreach (var fun in funs)
- {
- if (fun.FunctionType != VzDefinition.FunctionType.Catalog && fun.FunctionType != VzDefinition.FunctionType.Menu)
- continue;
- var item = new MenuItemDefinition(fun.PermissionName, L(fun.PermissionName.Replace(".", "")), fun.Icon, fun.Url,
- fun.NeedAuth, fun.Sort, fun, permissionDependency: new SimplePermissionDependency(fun.PermissionName));
- SetChildNavigation(item, list, fun.Id);
- menu.AddItem(item);
- }
- }
- }
- private static ILocalizableString L(string name)
- {
- return new LocalizableString(name, VzConsts.LocalizationSourceName);
- }
- }
|