diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor index 681ccaa352..3f6c931d9a 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor @@ -10,7 +10,9 @@ - @L["SelectAllInAllTabs"] + + @L["SelectAllInAllTabs"] + @@ -47,6 +49,7 @@ x.Permissions)) @@ -250,4 +254,12 @@ public partial class PermissionManagementModal eventArgs.Cancel = eventArgs.CloseReason == CloseReason.FocusLostClosing; return Task.CompletedTask; } + + protected virtual bool IsPermissionGroupDisabled(PermissionGroupDto group) + { + var permissions = group.Permissions; + var grantedProviders = permissions.SelectMany(x => x.GrantedProviders); + + return permissions.All(x => x.IsGranted) && grantedProviders.All(p => p.ProviderName != _providerName); + } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml index c1fb697308..fbdffa806c 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml @@ -15,7 +15,7 @@ - +
@@ -33,7 +33,8 @@ name="SelectAllInThisTab" id="SelectAllInThisTab-@group.GetNormalizedGroupName()" data-tab-id="v-pills-tab-@group.GetNormalizedGroupName()" - label="@L["SelectAllInThisTab"].Value"/> + label="@L["SelectAllInThisTab"].Value" + disabled="@group.IsDisabled(Model.ProviderName)" />
@for (var j = 0; j < group.Permissions.Count; j++) { diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml.cs index 9d91fc573e..7707c16799 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml.cs @@ -126,6 +126,13 @@ public class PermissionManagementModal : AbpPageModel { return Name.Replace(".", "_"); } + + public bool IsDisabled(string currentProviderName) + { + var grantedProviders = Permissions.SelectMany(x => x.GrantedProviders); + + return Permissions.All(x => x.IsGranted) && grantedProviders.All(p => p.ProviderName != currentProviderName); + } } public class PermissionGrantInfoViewModel : IFlatTreeItem diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js index 9577d38696..298ad3791f 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js @@ -234,6 +234,14 @@ var abp = abp || {}; $('.tab-pane input[type="checkbox"]') .not(':disabled') .prop('checked', true); + + $('input[name="SelectAllInThisTab"]').each(function () { + var $this = $(this); + if($this.is(':indeterminate') === true) { + $this.prop('indeterminate', false); + $this.prop('checked', true); + } + }); } else { $('.tab-pane input[type="checkbox"]') .not(':disabled')