1
huseyinalan created
Hi, I wanna disable CMS feature in runtime. I couldn't see the under the Saas > Editions > Features menu
Thanks
- ABP Framework version: v5.2.1
- UI type: MVC
- DB provider: EF Core
- Tiered (MVC) or Identity Server Separated (Angular): yes
Markdown supported.
Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
1 Answer(s)
-
0
Hi @huseyininalan
Currently, CmsKit doesn't have Features.
I've created an issue (#13579) for that implementation to the next release.
But I'll share some ways to achieve that on your version.
Let's say we'll add a feature for Pages feature.
Define a FeatureDefinitionProvider
public class CmsKitFeatureDefinitionProvider : FeatureDefinitionProvider { public override void Define(IFeatureDefinitionContext context) { var cmsKit = context.AddGroup(CmsKitFeatures.GroupName); cmsKit.AddFeature(CmsKitFeatures.Pages, "true", L("Pages"), L("Toggle pages feature"), new ToggleStringValueType()); } private static LocalizableString L(string name) { return LocalizableString.Create<MyProjectNameResource>(name); } } public static class CmsKitFeatures { public const string GroupName = "CmsKit"; public const string Pages = GroupName + ".Pages"; }Override both Admin & Public PagesAppService and add
[RequiresFeature]attribute on themusing Volo.Abp.DependencyInjection; using Volo.Abp.Features; using Volo.CmsKit.Admin.Pages; using Volo.CmsKit.Contents; using Volo.CmsKit.Domain.Shared.Volo.CmsKit; using Volo.CmsKit.Pages; using Volo.CmsKit.Public.Pages; namespace MyCompanyName.MyProjectName; [Dependency(ReplaceServices = true)] [ExposeServices(typeof(PageAdminAppService))] [RequiresFeature(CmsKitFeatures.Pages)] public class MyCmsKitPageAdminAppService : PageAdminAppService { public MyCmsKitPageAdminAppService(IPageRepository pageRepository, PageManager pageManager) : base(pageRepository, pageManager) { } } [Dependency(ReplaceServices = true)] [ExposeServices(typeof(PagePublicAppService))] [RequiresFeature(CmsKitFeatures.Pages)] public class MyCmsKitPagePublicAppService : PagePublicAppService { public MyCmsKitPagePublicAppService(IPageRepository pageRepository, ContentParser contentParser) : base(pageRepository, contentParser) { } }Hide it from Admin menu if disabled a. Add a custom menu contributor
public class MyMenuContributor : IMenuContributor { public async Task ConfigureMenuAsync(MenuConfigurationContext context) { var cmsMenu = context.Menu.FindMenuItem(CmsKitAdminMenus.GroupName); if (cmsMenu is not null) { var featureChecker = context.ServiceProvider.GetRequiredService<IFeatureChecker>(); if (!await featureChecker.IsEnabledAsync(CmsKitFeatures.Pages)) { cmsMenu.TryRemoveMenuItem(CmsKitAdminMenus.Pages.PagesMenu); } } return; } }b. Configure it to the module file
```csharp Configure<AbpNavigationOptions>(options => { options.MenuContributors.Add(new MyMenuContributor()); }); ```That's it. You'll see it in the features modal and you'll be able to manage it to the your tenants.

You can apply those methods for each of the CmsKit features.
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)