4 changed files with 279 additions and 8 deletions
@ -0,0 +1,258 @@ |
|||
using LINGYUN.Abp.SettingManagement; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Options; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Emailing; |
|||
using Volo.Abp.Localization; |
|||
using Volo.Abp.SettingManagement; |
|||
using Volo.Abp.SettingManagement.Localization; |
|||
using Volo.Abp.Settings; |
|||
using Volo.Abp.Timing; |
|||
using ValueType = Volo.Abp.Settings.ValueType; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.AdminService; |
|||
|
|||
public class SystemGroupSettingDefinitionProvider : SettingDefinitionProvider |
|||
{ |
|||
private const string GroupName = "System"; |
|||
|
|||
protected ITimezoneProvider TimezoneProvider { get; } |
|||
protected AbpLocalizationOptions LocalizationOptions { get; } |
|||
protected IStringLocalizerFactory StringLocalizerFactory { get; } |
|||
|
|||
public SystemGroupSettingDefinitionProvider( |
|||
ITimezoneProvider timezoneProvider, |
|||
IStringLocalizerFactory stringLocalizerFactory, |
|||
IOptions<AbpLocalizationOptions> localizationOptions) |
|||
{ |
|||
TimezoneProvider = timezoneProvider; |
|||
StringLocalizerFactory = stringLocalizerFactory; |
|||
LocalizationOptions = localizationOptions.Value; |
|||
} |
|||
|
|||
public override void Define(ISettingDefinitionContext context) |
|||
{ |
|||
SetSystemSettingGroup(context); |
|||
SetEmailSettingGroup(context); |
|||
} |
|||
|
|||
private void SetSystemSettingGroup(ISettingDefinitionContext context) |
|||
{ |
|||
context.GetOrNull(LocalizationSettingNames.DefaultLanguage) |
|||
?.WithGroup(GroupName, L("Settings:System"), order: 0) |
|||
?.WithParent("Language", L("Settings:System.Language"), order: 0) |
|||
?.WithOrder(0) |
|||
?.WithOptions(LocalizationOptions.Languages.Select(l => new NameValue<string>(l.DisplayName, l.CultureName))) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
|
|||
var timezoneSetting = context.GetOrNull(TimingSettingNames.TimeZone); |
|||
if (timezoneSetting != null) |
|||
{ |
|||
var stringLocalizer = StringLocalizerFactory.Create<AbpSettingManagementResource>(); |
|||
var timezones = TimeZoneHelper.GetTimezones(TimezoneProvider.GetIanaTimezones()); |
|||
timezones.Insert(0, new NameValue |
|||
{ |
|||
Name = stringLocalizer["DefaultTimeZone"], |
|||
Value = "Unspecified" |
|||
}); |
|||
|
|||
timezoneSetting |
|||
.WithGroup( |
|||
GroupName, |
|||
L("Settings:System"), |
|||
order: 0, |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.TimeZone]) |
|||
.WithParent("Timing", L("Settings:System.Timing"), order: 0) |
|||
.WithOrder(1) |
|||
.WithOptions(timezones) |
|||
.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
} |
|||
} |
|||
|
|||
private static void SetEmailSettingGroup(ISettingDefinitionContext context) |
|||
{ |
|||
context.GetOrNull(EmailSettingNames.DefaultFromAddress) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Default", |
|||
L("Settings:Emailing.Default"), |
|||
order: 0) |
|||
?.WithOrder(0) |
|||
?.WithValueType(ValueType.String) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
context.GetOrNull(EmailSettingNames.DefaultFromDisplayName) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Default", |
|||
L("Settings:Emailing.Default"), |
|||
order: 0) |
|||
?.WithOrder(1) |
|||
?.WithValueType(ValueType.String) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
|
|||
context.GetOrNull(EmailSettingNames.Smtp.Domain) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Smtp", |
|||
L("Settings:Emailing.Smtp"), |
|||
order: 1, |
|||
requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) |
|||
?.WithOrder(0) |
|||
?.WithValueType(ValueType.String) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
context.GetOrNull(EmailSettingNames.Smtp.Host) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Smtp", |
|||
L("Settings:Emailing.Smtp"), |
|||
order: 1, |
|||
requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) |
|||
?.WithOrder(1) |
|||
?.WithValueType(ValueType.String) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
context.GetOrNull(EmailSettingNames.Smtp.Port) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Smtp", |
|||
L("Settings:Emailing.Smtp"), |
|||
order: 1, |
|||
requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) |
|||
?.WithOrder(2) |
|||
?.WithValueType(ValueType.Number) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
context.GetOrNull(EmailSettingNames.Smtp.UserName) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Smtp", |
|||
L("Settings:Emailing.Smtp"), |
|||
order: 1, |
|||
requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) |
|||
?.WithOrder(3) |
|||
?.WithValueType(ValueType.String) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
context.GetOrNull(EmailSettingNames.Smtp.Password) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Smtp", |
|||
L("Settings:Emailing.Smtp"), |
|||
order: 1, |
|||
requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) |
|||
?.WithOrder(4) |
|||
?.WithValueType(ValueType.String) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
context.GetOrNull(EmailSettingNames.Smtp.EnableSsl) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Smtp", |
|||
L("Settings:Emailing.Smtp"), |
|||
order: 1, |
|||
requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) |
|||
?.WithOrder(5) |
|||
?.WithValueType(ValueType.Boolean) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
context.GetOrNull(EmailSettingNames.Smtp.UseDefaultCredentials) |
|||
?.WithGroup( |
|||
"Emailing", |
|||
L("Settings:Emailing"), |
|||
order: 1, |
|||
requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], |
|||
requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) |
|||
?.WithParent( |
|||
"Smtp", |
|||
L("Settings:Emailing.Smtp"), |
|||
order: 1, |
|||
requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) |
|||
?.WithOrder(6) |
|||
?.WithValueType(ValueType.Boolean) |
|||
?.ReplaceProviders( |
|||
DefaultValueSettingValueProvider.ProviderName, |
|||
ConfigurationSettingValueProvider.ProviderName, |
|||
GlobalSettingValueProvider.ProviderName, |
|||
TenantSettingValueProvider.ProviderName); |
|||
} |
|||
|
|||
public static LocalizableString L(string name) |
|||
{ |
|||
return LocalizableString.Create<AbpSettingManagementResource>(name); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue