Browse Source

Blazor UI: Move "host features" to the settings page

pull/13359/head
liangshiwei 4 years ago
parent
commit
0a11133d69
  1. 13
      modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/AbpFeatureManagementBlazorModule.cs
  2. 12
      modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureSettingGroup/FeatureSettingManagementComponent.razor
  3. 40
      modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureSettingGroup/FeatureSettingManagementComponent.razor.cs
  4. 41
      modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Settings/FeatureSettingManagementComponentContributor.cs
  5. 1
      modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Volo.Abp.FeatureManagement.Blazor.csproj
  6. 2
      modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/Components/FeatureSettingGroup/Default.cshtml
  7. 5
      modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs

13
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/AbpFeatureManagementBlazorModule.cs

@ -1,15 +1,24 @@
using Volo.Abp.AspNetCore.Components.Web.Theming;
using Volo.Abp.FeatureManagement.Blazor.Settings;
using Volo.Abp.Features;
using Volo.Abp.Modularity;
using Volo.Abp.SettingManagement.Blazor;
namespace Volo.Abp.FeatureManagement.Blazor;
[DependsOn(
typeof(AbpAspNetCoreComponentsWebThemingModule),
typeof(AbpFeatureManagementApplicationContractsModule),
typeof(AbpFeaturesModule)
typeof(AbpFeaturesModule),
typeof(AbpSettingManagementBlazorModule)
)]
public class AbpFeatureManagementBlazorModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<SettingManagementComponentOptions>(options =>
{
options.Contributors.Add(new FeatureSettingManagementComponentContributor());
});
}
}

12
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureSettingGroup/FeatureSettingManagementComponent.razor

@ -0,0 +1,12 @@
@inherits Volo.Abp.AspNetCore.Components.AbpComponentBase
@if (Settings != null && Settings.HasManageHostFeaturesPermission)
{
<Form>
<Button Color="Color.Primary" onclick="@OnManageHostFeaturesClicked">
<Icon Name="@("fa-cog")"/> @L["ManageHostFeatures"]
</Button>
</Form>
<FeatureManagementModal @ref="FeatureManagementModal"/>
}

40
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureSettingGroup/FeatureSettingManagementComponent.razor.cs

@ -0,0 +1,40 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Components;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.FeatureManagement.Localization;
using Volo.Abp.Features;
namespace Volo.Abp.FeatureManagement.Blazor.Components.FeatureSettingGroup;
public partial class FeatureSettingManagementComponent : AbpComponentBase
{
[Inject]
protected IStringLocalizer<AbpFeatureManagementResource> L { get; set; }
[Inject]
protected PermissionChecker PermissionChecker { get; set; }
protected FeatureManagementModal FeatureManagementModal;
protected FeatureSettingViewModel Settings;
protected async override Task OnInitializedAsync()
{
Settings = new FeatureSettingViewModel
{
HasManageHostFeaturesPermission = await PermissionChecker.IsGrantedAsync(FeatureManagementPermissions.ManageHostFeatures)
};
}
protected virtual async Task OnManageHostFeaturesClicked()
{
await FeatureManagementModal.OpenAsync(TenantFeatureValueProvider.ProviderName);
}
}
public class FeatureSettingViewModel
{
public bool HasManageHostFeaturesPermission { get; set; }
}

41
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Settings/FeatureSettingManagementComponentContributor.cs

@ -0,0 +1,41 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Volo.Abp.FeatureManagement.Blazor.Components.FeatureSettingGroup;
using Volo.Abp.FeatureManagement.Localization;
using Volo.Abp.SettingManagement.Blazor;
namespace Volo.Abp.FeatureManagement.Blazor.Settings;
public class FeatureSettingManagementComponentContributor: ISettingComponentContributor
{
public virtual async Task ConfigureAsync(SettingComponentCreationContext context)
{
if (!await CheckPermissionsInternalAsync(context))
{
return;
}
var l = context.ServiceProvider.GetRequiredService<IStringLocalizer<AbpFeatureManagementResource>>();
context.Groups.Add(
new SettingComponentGroup(
"Volo.Abp.Feature",
l["Permission:FeatureManagement"],
typeof(FeatureSettingManagementComponent)
)
);
}
public virtual async Task<bool> CheckPermissionsAsync(SettingComponentCreationContext context)
{
return await CheckPermissionsInternalAsync(context);
}
protected virtual async Task<bool> CheckPermissionsInternalAsync(SettingComponentCreationContext context)
{
var authorizationService = context.ServiceProvider.GetRequiredService<IAuthorizationService>();
return await authorizationService.IsGrantedAsync(FeatureManagementPermissions.ManageHostFeatures);
}
}

1
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Volo.Abp.FeatureManagement.Blazor.csproj

@ -14,6 +14,7 @@
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.FeatureManagement.Application.Contracts\Volo.Abp.FeatureManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\setting-management\src\Volo.Abp.SettingManagement.Blazor\Volo.Abp.SettingManagement.Blazor.csproj" />
</ItemGroup>
<ItemGroup>

2
modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/Components/FeatureSettingGroup/Default.cshtml

@ -8,6 +8,6 @@
<form id="FeatureSettingsForm">
@if (Model.HasManageHostFeaturesPermission)
{
<abp-button id="ManageHostFeatures" icon="cog" text="@L["ManageHostFeatures"].Value"/>
<abp-button button-type="Primary" id="ManageHostFeatures" icon="cog" text="@L["ManageHostFeatures"].Value"/>
}
</form>

5
modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs

@ -54,11 +54,6 @@ public partial class TenantManagement
protected override ValueTask SetToolbarItemsAsync()
{
Toolbar.AddButton(L["ManageHostFeatures"],
async () => await FeatureManagementModal.OpenAsync(FeatureProviderName),
"fa fa-cog",
requiredPolicyName: FeatureManagementPermissions.ManageHostFeatures);
Toolbar.AddButton(L["NewTenant"],
OpenCreateModalAsync,
IconName.Add,

Loading…
Cancel
Save