CmsKit - Add Public Menu Contributor

pull/9261/head
Enis Necipoğlu 4 years ago
parent 64b68b04f5
commit 8026b0a143

@ -1,5 +1,12 @@
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.UI.Navigation;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Public.Menus;
namespace Volo.CmsKit.Public.Web.Menus
{
@ -13,11 +20,54 @@ namespace Volo.CmsKit.Public.Web.Menus
}
}
private Task ConfigureMainMenuAsync(MenuConfigurationContext context)
private async Task ConfigureMainMenuAsync(MenuConfigurationContext context)
{
//Add main menu items.
if (GlobalFeatureManager.Instance.IsEnabled<MenuFeature>())
{
var menuAppService = context.ServiceProvider.GetRequiredService<IMenuPublicAppService>();
var mainMenu = await menuAppService.GetMainMenuAsync();
if (mainMenu != null)
{
// TODO: Consider about not to remove existing static menus.
context.Menu.Items.Clear();
foreach (var menuItemDto in mainMenu.Items.Where(x => x.ParentId == null))
{
var applicationMenuItem = CreateApplicationMenu(menuItemDto);
context.Menu.Items.Add(applicationMenuItem);
AddChildItems(applicationMenuItem, menuItemDto, mainMenu.Items);
}
}
}
}
private ApplicationMenuItem CreateApplicationMenu(MenuItemDto menuItem)
{
return new ApplicationMenuItem(
menuItem.DisplayName,
menuItem.DisplayName,
menuItem.Url,
menuItem.Icon,
menuItem.Order,
customData: null,
menuItem.Target,
menuItem.ElementId,
menuItem.CssClass,
menuItem.RequiredPermissionName
);
}
private void AddChildItems(ApplicationMenuItem parent, MenuItemDto menuItem, List<MenuItemDto> source)
{
var applicationMenuItem = CreateApplicationMenu(menuItem);
parent.Items.Add(applicationMenuItem);
return Task.CompletedTask;
foreach (var item in source.Where(x => x.ParentId == menuItem.Id))
{
AddChildItems(applicationMenuItem, item, source);
}
}
}
}
Loading…
Cancel
Save