Hi,
Sorry, I could not reproduce the problem.
public static class Activities
{
public const string Default = QaPermissions.GroupName +".Activities";
public const string Edit = Default + ".Edit";
public const string Delete = Default + ".Delete";
public const string Create = Default + ".Create";
private const string List = Default + ".List";
public const string ListFull = List + ".Full";
public const string ListFullLimitedCompaigns = List + ".FullLimitedCompaigns";
public const string ListFullLimited= List + ".FullLimited";
private const string Detail = Default + ".Detail";
public const string DetailFull = Default + ".Full";
public const string DetailFullLimitedCompaigns = Detail + ".FullLimitedCompaigns";
public const string DetailFullLimited = Detail + ".FullLimited";
}
public static class SecurityFilters
{
public const string Default = QaPermissions.GroupName +".SecurityFilters";
public const string Campaign = Default + ".Campaign";
public const string CampaignAssigned = Campaign +".Assigned";
public const string CampaignAll = Campaign +".ALl";
public const string Prospect = Default +".Prospect";
public const string ProspectAssigned = Prospect +".Assigned";
public const string ProspectAll = Prospect +".ALL";
}
var permissionActivities = myGroup.AddPermission(Activities.Default, L("Permission:Activities"));
permissionActivities.AddChild(Activities.Create, L("Create"));
permissionActivities.AddChild(Activities.Delete, L("Delete"));
permissionActivities.AddChild(Activities.Edit, L("Edit"));
permissionActivities.AddChild(Activities.DetailFull, L("DetailFull"));
permissionActivities.AddChild(Activities.DetailFullLimitedCompaigns, L("DetailFullLimitedCompaigns"));
permissionActivities.AddChild(Activities.DetailFullLimited, L("DetailFullLimited"));
var permissionActivitiesListFullLimited = permissionActivities.AddChild(Activities.ListFullLimited, L("ListFullLimited"));
permissionActivitiesListFullLimited.AddChild(Activities.ListFullLimitedCompaigns, L("ListFullLimitedCompaigns"));
permissionActivitiesListFullLimited.AddChild(Activities.ListFull, L("ListFull"));
var securityFilters = myGroup.AddPermission(SecurityFilters.Default, L("SecurityFilters"));
var securityFiltersCampaign = securityFilters.AddChild(SecurityFilters.Campaign, L("Campaign"));
securityFiltersCampaign.AddChild(SecurityFilters.CampaignAssigned, L("CampaignAssigned"));
securityFiltersCampaign.AddChild(SecurityFilters.CampaignAll, L("CampaignAll"));
var securityFiltersProspect = securityFilters.AddChild(SecurityFilters.Prospect, L("Prospect"));
securityFiltersProspect.AddChild(SecurityFilters.ProspectAssigned, L("ProspectAssigned"));
securityFiltersProspect.AddChild(SecurityFilters.ProspectAll, L("ProspectAll"));
Hi,
Sorry, I don't even know the UI type and ABP version of your project.
This information is not enough to reproduce the problem.
Could you just share a project that can reproduce the problem to make progress? my email is shiwei.liang@volosoft.com Thx
Could you share the full steps to reproduce? thanks.
But my Activities section still has the problem
Can you share the full steps to reproduce?
Hi,
Will this work for you?
@using Microsoft.Extensions.Localization
@using Volo.Abp.PermissionManagement.Localization
@using Volo.Abp.PermissionManagement.Blazor.Components
@using Volo.Abp.DependencyInjection
@using Volo.Abp.PermissionManagement
@inherits PermissionManagementModal
@attribute [ExposeServices(typeof(PermissionManagementModal))]
@attribute [Dependency(ReplaceServices = true)]
<Modal @ref="_modal" Closing="@ClosingModal">
<ModalContent Size="ModalSize.Large" Centered="true">
<ModalHeader>
<ModalTitle>@L["Permissions"] - @_entityDisplayName</ModalTitle>
<CloseButton Clicked="CloseModal" />
</ModalHeader>
<ModalBody MaxHeight="50">
<Field>
<Check Disabled="_selectAllDisabled" Cursor="Cursor.Pointer" @bind-Checked="@GrantAll" TValue="bool">
@L["SelectAllInAllTabs"]
</Check>
</Field>
<Divider />
@if (_groups != null)
{
<Tabs TabPosition="TabPosition.Start" Pills="true" @bind-SelectedTab="@_selectedTabName">
<Items>
@foreach (var group in _groups)
{
<Tab Name="@GetNormalizedGroupName(group.Name)">
@if (group.Permissions.Any(x => x.IsGranted))
{
<span>
<b>@group.DisplayName ( @(group.Permissions.Count(x => x.IsGranted)) )</b>
</span>
}
else
{
<span>
@group.DisplayName ( @(group.Permissions.Count(x => x.IsGranted)) )
</span>
}
</Tab>
}
</Items>
<Content>
@foreach (var group in _groups)
{
<TabPanel Name="@GetNormalizedGroupName(group.Name)">
<h4>@group.DisplayName</h4>
<Divider />
<Field>
<Check
Disabled="@(IsPermissionGroupDisabled(group))"
Checked="@(group.Permissions.All(x => x.IsGranted))"
Cursor="Cursor.Pointer"
CheckedChanged="@(b => GroupGrantAllChanged(b, group))"
TValue="bool">
@L["SelectAllInThisTab"]
</Check>
</Field>
<Divider />
@foreach (var permission in group.Permissions)
{
<Field Style="@GetMarginStyle(group.Permissions, permission.ParentName)">
<Check
Disabled="@(IsDisabledPermission(permission))"
Cursor="Cursor.Pointer"
Checked="@permission.IsGranted"
CheckedChanged="@(b => PermissionChanged(b, group, permission))"
TValue="bool">
@GetShownName(permission)
</Check>
</Field>
}
</TabPanel>
}
</Content>
</Tabs>
}
</ModalBody>
<ModalFooter>
<Button Color="Color.Secondary" Clicked="CloseModal">@L["Cancel"]</Button>
<Button Color="Color.Primary" Clicked="SaveAsync">@L["Save"]</Button>
</ModalFooter>
</ModalContent>
</Modal>
@code{
protected virtual string GetMarginStyle(List<Volo.Abp.PermissionManagement.PermissionGrantInfoDto> permissions, string currentParent)
{
var currentDepth = GetDepth(permissions, currentParent, 0);
return $"margin-inline-start: {currentDepth * 20}px;";
}
private int GetDepth(List<Volo.Abp.PermissionManagement.PermissionGrantInfoDto> permissions, string currentParent, int currentDepth)
{
foreach (var item in permissions)
{
if (item.Name == currentParent)
{
currentDepth++;
if (item.ParentName != null)
{
currentDepth = GetDepth(permissions, item.ParentName, currentDepth);
}
}
}
return currentDepth;
}
protected override void PermissionChanged(bool value, PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission)
{
SetPermissionGrant(permission, value);
if (value)
{
SetParentPermissionGrant(permissionGroup, permission);
}
else if (value == false)
{
var childPermissions = GetChildPermissions(permissionGroup, permission);
foreach (var childPermission in childPermissions)
{
SetPermissionGrant(childPermission, false);
}
}
}
private void SetParentPermissionGrant(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission)
{
if(permission.ParentName == null)
{
return;
}
var parentPermission = GetParentPermission(permissionGroup, permission);
SetPermissionGrant(parentPermission, true);
SetParentPermissionGrant(permissionGroup, parentPermission);
}
private void SetPermissionGrant(PermissionGrantInfoDto permission, bool value)
{
if (permission.IsGranted == value)
{
return;
}
if (value)
{
_grantedPermissionCount++;
_notGrantedPermissionCount--;
}
else
{
_grantedPermissionCount--;
_notGrantedPermissionCount++;
}
permission.IsGranted = value;
}
}
Hi,
Ok, I can reproduce it now
Hi,
Can you share the full app error logs?
Hi,
I could not reproduce the problem.