From 7ec1f2bb05fb4265082e688e97befcc0a9a8809b Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 1 Jun 2021 23:16:09 +0800 Subject: [PATCH 1/4] Add setting management feature --- .../Menus/SettingManagementMenuContributor.cs | 7 ++--- .../SettingManagement/SettingManagement.razor | 6 ++--- ...Abp.SettingManagement.Domain.Shared.csproj | 2 ++ .../AbpSettingManagementDomainSharedModule.cs | 8 ++++-- .../Resources/AbpSettingManagement/en.json | 5 +++- .../AbpSettingManagement/zh-Hans.json | 5 +++- .../AbpSettingManagement/zh-Hant.json | 7 +++-- ...tingManagementFeatureDefinitionProvider.cs | 27 +++++++++++++++++++ .../SettingManagementFeatures.cs | 9 +++++++ .../AbpSettingManagementWebModule.cs | 5 ---- .../SettingManagementMainMenuContributor.cs | 3 ++- .../Pages/SettingManagement/Index.cshtml.cs | 2 ++ 12 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs index 5070cef3a6..29288a1bd8 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Volo.Abp.Features; using Volo.Abp.SettingManagement.Localization; using Volo.Abp.UI.Navigation; @@ -33,7 +34,7 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus /* This may happen if MVC UI is being used in the same application. * In this case, we are removing the MVC setting management UI. */ context.Menu.GetAdministration().TryRemoveMenuItem(SettingManagementMenus.GroupName); - + context.Menu .GetAdministration() .AddItem( @@ -42,7 +43,7 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus l["Settings"], "~/setting-management", icon: "fa fa-cog" - ) + ).RequireFeatures(SettingManagementFeatures.Enable) ); } @@ -60,4 +61,4 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus return false; } } -} \ No newline at end of file +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor index e1b3680bc7..d4d1beeafc 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor @@ -1,6 +1,6 @@ @page "/setting-management" -@using Microsoft.AspNetCore.Authorization -@attribute [Authorize(SettingManagementPermissions.Emailing)] +@using Volo.Abp.Features +@attribute [RequiresFeature(SettingManagementFeatures.Enable)] @* ************************* PAGE HEADER ************************* *@ @@ -39,4 +39,4 @@ - \ No newline at end of file + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj index e9c00a0afc..38991408d5 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj @@ -26,6 +26,8 @@ + + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs index d6b6ba065e..0db97f0c6a 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs @@ -1,11 +1,15 @@ -using Volo.Abp.Modularity; +using Volo.Abp.Features; +using Volo.Abp.Modularity; using Volo.Abp.Localization; using Volo.Abp.SettingManagement.Localization; +using Volo.Abp.Validation; using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.SettingManagement { - [DependsOn(typeof(AbpLocalizationModule))] + [DependsOn(typeof(AbpLocalizationModule), + typeof(AbpValidationModule), + typeof(AbpFeaturesModule))] public class AbpSettingManagementDomainSharedModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json index 88eb894435..a58714bf0f 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json @@ -14,6 +14,9 @@ "SmtpEnableSsl": "Enable ssl", "SmtpUseDefaultCredentials": "Use default credentials", "DefaultFromAddress": "Default from address", - "DefaultFromDisplayName": "Default from display name" + "DefaultFromDisplayName": "Default from display name", + "Feature:SettingManagementGroup": "Setting Management", + "Feature:SettingManagementEnable": "Enable setting management", + "Feature:SettingManagementEnableDescription": "Enable setting management system in the application." } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json index 996c07ebc2..906d75ace9 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json @@ -14,6 +14,9 @@ "SmtpEnableSsl": "启用ssl", "SmtpUseDefaultCredentials": "使用默认证书", "DefaultFromAddress": "默认发件人", - "DefaultFromDisplayName": "默认显示名称" + "DefaultFromDisplayName": "默认显示名称", + "Feature:SettingManagementGroup": "设置管理", + "Feature:SettingManagementEnable": "启用设置管理", + "Feature:SettingManagementEnableDescription": "在应用程序中启用设置模板管理系统." } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json index 175cd47124..5490bf678a 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json @@ -14,6 +14,9 @@ "SmtpEnableSsl": "啟用 SSL", "SmtpUseDefaultCredentials": "使用預設Credentials", "DefaultFromAddress": "預設發信信箱", - "DefaultFromDisplayName": "預設信件顯示名稱" + "DefaultFromDisplayName": "預設信件顯示名稱", + "Feature:SettingManagementGroup": "設定管理", + "Feature:SettingManagementEnable": "啟用設定管理", + "Feature:SettingManagementEnableDescription": "在應用程序中啟用設定管理系統." } -} \ No newline at end of file +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs new file mode 100644 index 0000000000..19248e85b1 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs @@ -0,0 +1,27 @@ +using Volo.Abp.Features; +using Volo.Abp.Localization; +using Volo.Abp.SettingManagement.Localization; +using Volo.Abp.Validation.StringValues; + +namespace Volo.Abp.SettingManagement +{ + public class SettingManagementFeatureDefinitionProvider: FeatureDefinitionProvider + { + public override void Define(IFeatureDefinitionContext context) + { + var group = context.AddGroup(SettingManagementFeatures.GroupName, + L("Feature:SettingManagementGroup")); + + group.AddFeature(SettingManagementFeatures.Enable, + "true", + L("Feature:SettingManagementEnable"), + L("Feature:SettingManagementEnableDescription"), + new ToggleStringValueType()); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs new file mode 100644 index 0000000000..e8b2b69846 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.SettingManagement +{ + public class SettingManagementFeatures + { + public const string GroupName = "TextManagement"; + + public const string Enable = GroupName + ".Enable"; + } +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs index d1c1df76fe..6a2a970b43 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs @@ -43,11 +43,6 @@ namespace Volo.Abp.SettingManagement.Web options.FileSets.AddEmbedded(); }); - Configure(options => - { - options.Conventions.AuthorizePage("/SettingManagement/Index", SettingManagementPermissions.Emailing); - }); - Configure(options => { options.ScriptBundles diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs index 59fc10c174..3efc217186 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; using System.Linq; using System.Threading.Tasks; +using Volo.Abp.Features; using Volo.Abp.SettingManagement.Web.Pages.SettingManagement; using Volo.Abp.UI.Navigation; using Volo.Abp.SettingManagement.Localization; @@ -44,7 +45,7 @@ namespace Volo.Abp.SettingManagement.Web.Navigation l["Settings"], "~/SettingManagement", icon: "fa fa-cog" - ) + ).RequireFeatures(SettingManagementFeatures.Enable) ); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml.cs index 8cc7f62143..656b71daec 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml.cs @@ -4,9 +4,11 @@ using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.Abp.EventBus.Local; +using Volo.Abp.Features; namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement { + [RequiresFeature(SettingManagementFeatures.Enable)] public class IndexModel : AbpPageModel { public SettingPageCreationContext SettingPageCreationContext { get; private set; } From 1cd4b36303db428c71c0576aa1728eba41836e4f Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 1 Jun 2021 23:22:51 +0800 Subject: [PATCH 2/4] Update zh-hans.json --- .../Localization/Resources/AbpSettingManagement/zh-Hans.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json index 906d75ace9..b9763644c4 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json @@ -17,6 +17,6 @@ "DefaultFromDisplayName": "默认显示名称", "Feature:SettingManagementGroup": "设置管理", "Feature:SettingManagementEnable": "启用设置管理", - "Feature:SettingManagementEnableDescription": "在应用程序中启用设置模板管理系统." + "Feature:SettingManagementEnableDescription": "在应用程序中启用设置管理系统." } } From c9621f66333bd1db652ff4fa86fd04dc62afb525 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 2 Jun 2021 08:36:08 +0800 Subject: [PATCH 3/4] Update SettingManagementMenuContributor.cs --- .../Menus/SettingManagementMenuContributor.cs | 8 +++++++- .../SettingManagementMainMenuContributor.cs | 12 ++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs index 29288a1bd8..65812eb807 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs @@ -20,6 +20,12 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus private async Task ConfigureMainMenuAsync(MenuConfigurationContext context) { + var featureChecker = context.ServiceProvider.GetRequiredService(); + if (!await featureChecker.IsEnabledAsync(SettingManagementFeatures.Enable)) + { + return; + } + var settingManagementPageOptions = context.ServiceProvider.GetRequiredService>().Value; var settingPageCreationContext = new SettingComponentCreationContext(context.ServiceProvider); if (!settingManagementPageOptions.Contributors.Any() || @@ -43,7 +49,7 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus l["Settings"], "~/setting-management", icon: "fa fa-cog" - ).RequireFeatures(SettingManagementFeatures.Enable) + ) ); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs index 3efc217186..45ad67b375 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs @@ -1,6 +1,4 @@ -using System; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Localization; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System.Linq; using System.Threading.Tasks; @@ -27,6 +25,12 @@ namespace Volo.Abp.SettingManagement.Web.Navigation return; } + var featureChecker = context.ServiceProvider.GetRequiredService(); + if (!await featureChecker.IsEnabledAsync(SettingManagementFeatures.Enable)) + { + return; + } + var settingManagementPageOptions = context.ServiceProvider.GetRequiredService>().Value; var settingPageCreationContext = new SettingPageCreationContext(context.ServiceProvider); if (!settingManagementPageOptions.Contributors.Any() || @@ -45,7 +49,7 @@ namespace Volo.Abp.SettingManagement.Web.Navigation l["Settings"], "~/SettingManagement", icon: "fa fa-cog" - ).RequireFeatures(SettingManagementFeatures.Enable) + ) ); } From fafc6ee0d723fef5e06fbb093d80ce3036891c9c Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Wed, 2 Jun 2021 09:16:09 +0300 Subject: [PATCH 4/4] Add missing localization for TR --- .../Localization/Resources/AbpSettingManagement/tr.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json index 1540501b6e..5755313c65 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json @@ -14,6 +14,9 @@ "SmtpEnableSsl": "Ssl'i aktif et", "SmtpUseDefaultCredentials": "Varsayılan yetkilendirmeleri kullan", "DefaultFromAddress": "Varsayılan gönderici görünen isim", - "DefaultFromDisplayName": "Varsayılan gönderici email adresi" + "DefaultFromDisplayName": "Varsayılan gönderici email adresi", + "Feature:SettingManagementGroup": "Ayar yönetimi", + "Feature:SettingManagementEnable": "Ayar yönetimini etkinleştir", + "Feature:SettingManagementEnableDescription": "Uygulamada ayar yönetim sistemini etkinleştirin." } }