Activities of "liangshiwei"

Hi,

The CMS kit module does not support such feature yet.

You can custom the module:

ObjectExtensionManager.Instance.Modules()
    .ConfigureCmsKit(cmsKit =>
  {
      cmsKit.ConfigureMenuItem(menu =>
      {
          menu.AddOrUpdateProperty<string>( //property type: string
              "PermissionName", //property name
              property =>
              {
                 
              }
          );
      });
  });
public class MyCmsKitPublicMenuContributor : IMenuContributor
{
    public async Task ConfigureMenuAsync(MenuConfigurationContext context)
    {
        if (context.Menu.Name == CmsKitMenus.Public)
        {
            await ConfigureMainMenuAsync(context);
        }
    }

    private async Task ConfigureMainMenuAsync(MenuConfigurationContext context)
    {
        var featureChecker = context.ServiceProvider.GetRequiredService<IFeatureChecker>();
        if (GlobalFeatureManager.Instance.IsEnabled<MenuFeature>() && await featureChecker.IsEnabledAsync(CmsKitFeatures.MenuEnable))
        {
            var menuAppService = context.ServiceProvider.GetRequiredService<IMenuItemPublicAppService>();
            var permissionCheck = context.ServiceProvider.GetRequiredService<IPermissionChecker>();

            var menuItems = await menuAppService.GetListAsync();

            if (!menuItems.IsNullOrEmpty())
            {
                foreach (var menuItemDto in menuItems.Where(x => x.ParentId == null && x.IsActive))
                {
                    var permissionName = menuItemDto.GetProperty<string>("PermissionName");
                    if (!permissionName.IsNullOrWhiteSpace() && !await permissionCheck.IsGrantedAsync(permissionName))
                    {
                        continue;
                    }
                    
                    AddChildItems(menuItemDto, menuItems, context.Menu);
                }
            }
        }
    }

    private void AddChildItems(MenuItemDto menuItem, List<MenuItemDto> source, IHasMenuItems parent = null)
    {
        var applicationMenuItem = CreateApplicationMenuItem(menuItem);

        foreach (var item in source.Where(x => x.ParentId == menuItem.Id && x.IsActive))
        {
            AddChildItems(item, source, applicationMenuItem);
        }

        parent?.Items.Add(applicationMenuItem);
    }

    private ApplicationMenuItem CreateApplicationMenuItem(MenuItemDto menuItem)
    {
        return new ApplicationMenuItem(
            menuItem.DisplayName,
            menuItem.DisplayName,
            menuItem.Url,
            menuItem.Icon,
            menuItem.Order,
            menuItem.Target,
            menuItem.ElementId,
            menuItem.CssClass
        );
    }
}
Configure<AbpNavigationOptions>(options =>
{
    options.MenuContributors.RemoveAll(x => x.GetType() == typeof(CmsKitPublicMenuContributor));
    options.MenuContributors.Add(new MyCmsKitPublicMenuContributor());
});

Hi,

It looks no problem

We will fix it in the next patch version: https://github.com/abpframework/abp/issues/17866

Hi,

It looks like a problem. you can try:

public class MyCmsKitPublicMenuContributor : IMenuContributor
{
    public async Task ConfigureMenuAsync(MenuConfigurationContext context)
    {
        if (context.Menu.Name == CmsKitMenus.Public)
        {
            await ConfigureMainMenuAsync(context);
        }
    }

    private async Task ConfigureMainMenuAsync(MenuConfigurationContext context)
    {
        var featureCheck = context.ServiceProvider.GetRequiredService<IFeatureChecker>();
        if (GlobalFeatureManager.Instance.IsEnabled<MenuFeature>() && await featureCheck.IsEnabledAsync(CmsKitFeatures.MenuEnable))
        {
            var menuAppService = context.ServiceProvider.GetRequiredService<IMenuItemPublicAppService>();

            var menuItems = await menuAppService.GetListAsync();

            if (!menuItems.IsNullOrEmpty())
            {
                foreach (var menuItemDto in menuItems.Where(x => x.ParentId == null && x.IsActive))
                {
                    AddChildItems(menuItemDto, menuItems, context.Menu);
                }
            }
        }
    }

    private void AddChildItems(MenuItemDto menuItem, List<MenuItemDto> source, IHasMenuItems parent = null)
    {
        var applicationMenuItem = CreateApplicationMenuItem(menuItem);

        foreach (var item in source.Where(x => x.ParentId == menuItem.Id && x.IsActive))
        {
            AddChildItems(item, source, applicationMenuItem);
        }

        parent?.Items.Add(applicationMenuItem);
    }

    private ApplicationMenuItem CreateApplicationMenuItem(MenuItemDto menuItem)
    {
        return new ApplicationMenuItem(
            menuItem.DisplayName,
            menuItem.DisplayName,
            menuItem.Url,
            menuItem.Icon,
            menuItem.Order,
            menuItem.Target,
            menuItem.ElementId,
            menuItem.CssClass
        );
    }
}
Configure<AbpNavigationOptions>(options =>
{
    options.MenuContributors.RemoveAll(x => x.GetType() == typeof(CmsKitPublicMenuContributor));
    options.MenuContributors.Add(new MyCmsKitPublicMenuContributor());;
});

Hi, you can use dependency injection:

Hi,

Please make sure all ABP packages are 7.4.0 version.

And try abp clean & dotnet build again.

I didn't use this package in my application

This is the basic package of abp and is included in the template.

please close this. thanks

Hello, If you want, I can send you a sample app if you give me an email address ok here are the steps.

Yes, please. my emali is shiwei.liang@volosoft.com

Hi,

Could you use suite to create a new project to reproduce this problem and share it with me? shiwei.liang@volosoft.com I will check it.

I will let you know when the problem is resolved

Showing 3291 to 3300 of 6692 entries
Learn More, Pay Less
33% OFF
All Trainings!
Get Your Deal
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on September 12, 2025, 10:20