From fca2c99457779f1ee0a96d43b83362d86c66787d Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 11 Apr 2025 18:06:38 +0800 Subject: [PATCH] Disable features if the value is not from the current provider. --- .../Components/FeatureManagementModal.razor | 4 +- .../Abp/FeatureManagement/FeatureManager.cs | 2 +- .../FeatureManagementModal.cshtml | 86 ++++++++++--------- .../FeatureManagementModal.cshtml.cs | 10 ++- .../feature-management-modal.css | 14 ++- .../Abp/SettingManagement/SettingManager.cs | 2 +- 6 files changed, 70 insertions(+), 48 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor b/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor index 77f5018e10..7e00ecf3c3 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor @@ -57,7 +57,7 @@ var selectedValue = SelectionStringValues[feature.Name]; @feature.DisplayName - @foreach (var item in items) { @@ -75,7 +75,7 @@ if (feature.ValueType is ToggleStringValueType) { - + @feature.DisplayName @if (feature.Description != null) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs index 9805f03752..7227d8d82d 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs @@ -152,7 +152,7 @@ public class FeatureManager : IFeatureManager, ISingletonDependency await using (await providers[0].HandleContextAsync(providerName, providerKey)) { var fallbackValue = await GetOrNullInternalAsync(name, providers[1].Name, null); - if (fallbackValue.Value == value) + if (fallbackValue.Value.Equals(value, StringComparison.OrdinalIgnoreCase)) { //Clear the value if it's same as it's fallback value value = null; diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml index c55399d582..f8372a2ed8 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml @@ -51,20 +51,21 @@ @if (feature.ValueType is ToggleStringValueType) { - - - @if (feature.Description != null) - { -
@feature.Description
- } +
+ + @if (feature.Description != null) + { +
@feature.Description
+ } +
} @if (feature.ValueType is FreeTextStringValueType) @@ -74,42 +75,45 @@ { type = "number"; } - - - @if (feature.Description != null) - { -
@feature.Description
- } +
+ + @if (feature.Description != null) + { +
@feature.Description
+ } +
} @if (feature.ValueType is SelectionStringValueType selectType) { -
- +
+
+ - + @foreach (var item in selectType.ItemSource.Items) { - + if (item.Value == feature.Value) + { + + } + else + { + + } } + + @if (feature.Description != null) + { +
@feature.Description
} - - @if (feature.Description != null) - { -
@feature.Description
- } +
} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs index f08d42cfd2..edebca2fa0 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs @@ -25,9 +25,9 @@ public class FeatureManagementModal : AbpPageModel [HiddenInput] [BindProperty(SupportsGet = true)] public string ProviderKey { get; set; } - + [HiddenInput] - [BindProperty(SupportsGet = true)] + [BindProperty(SupportsGet = true)] public string ProviderKeyDisplayName { get; set; } [BindProperty] @@ -85,6 +85,12 @@ public class FeatureManagementModal : AbpPageModel return NoContent(); } + public bool IsDisabled(FeatureDto featureDto) + { + return featureDto.Provider.Name != ProviderName && + featureDto.Provider.Name != DefaultValueFeatureValueProvider.ProviderName; + } + public class FeatureGroupViewModel { public List Features { get; set; } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/feature-management-modal.css b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/feature-management-modal.css index 615db50fb4..bcd176ce51 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/feature-management-modal.css +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/feature-management-modal.css @@ -5,4 +5,16 @@ .custom-scroll-container > .col-md-4 { max-height: 500px; -} \ No newline at end of file +} + +.disabled-container { + pointer-events: none; + opacity: 0.5; +} + +.disabled-container input, +.disabled-container select, +.disabled-container button { + background-color: #e9ecef; + color: #6c757d; +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManager.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManager.cs index ddf451154d..f0c9df17fd 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManager.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManager.cs @@ -136,7 +136,7 @@ public class SettingManager : ISettingManager, ISingletonDependency if (providers.Count > 1 && !forceToSet && setting.IsInherited && value != null) { var fallbackValue = await GetOrNullInternalAsync(name, providers[1].Name, null); - if (fallbackValue == value) + if (fallbackValue.Equals(value, StringComparison.OrdinalIgnoreCase)) { //Clear the value if it's same as it's fallback value value = null;