Browse Source

Add useful services to IToolbarConfigurationContext and MenuConfigurationContext

Resolve #4017
pull/4032/head
maliming 6 years ago
parent
commit
e88161c0d0
  1. 11
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/IToolbarConfigurationContext.cs
  2. 32
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarConfigurationContext.cs
  3. 1
      framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj
  4. 6
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs
  5. 9
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/IMenuConfigurationContext.cs
  6. 32
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuConfigurationContext.cs

11
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/IToolbarConfigurationContext.cs

@ -1,4 +1,7 @@
using Volo.Abp.AspNetCore.Mvc.UI.Theming; using System;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Theming;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars
@ -8,5 +11,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars
ITheme Theme { get; } ITheme Theme { get; }
Toolbar Toolbar { get; } Toolbar Toolbar { get; }
IAuthorizationService AuthorizationService { get; }
IStringLocalizerFactory StringLocalizerFactory { get; }
} }
} }

32
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarConfigurationContext.cs

@ -1,16 +1,42 @@
using System; using System;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Theming; using Volo.Abp.AspNetCore.Mvc.UI.Theming;
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars
{ {
public class ToolbarConfigurationContext : IToolbarConfigurationContext public class ToolbarConfigurationContext : IToolbarConfigurationContext
{ {
public IServiceProvider ServiceProvider { get; }
private readonly object _serviceProviderLock = new object();
private TRef LazyGetRequiredService<TRef>(Type serviceType, ref TRef reference)
{
if (reference == null)
{
lock (_serviceProviderLock)
{
if (reference == null)
{
reference = (TRef)ServiceProvider.GetRequiredService(serviceType);
}
}
}
return reference;
}
public IAuthorizationService AuthorizationService => LazyGetRequiredService(typeof(IAuthorizationService), ref _authorizationService);
private IAuthorizationService _authorizationService;
private IStringLocalizerFactory _stringLocalizerFactory;
public IStringLocalizerFactory StringLocalizerFactory => LazyGetRequiredService(typeof(IStringLocalizerFactory),ref _stringLocalizerFactory);
public ITheme Theme { get; } public ITheme Theme { get; }
public Toolbar Toolbar { get; } public Toolbar Toolbar { get; }
public IServiceProvider ServiceProvider { get; }
public ToolbarConfigurationContext(ITheme currentTheme, Toolbar toolbar, IServiceProvider serviceProvider) public ToolbarConfigurationContext(ITheme currentTheme, Toolbar toolbar, IServiceProvider serviceProvider)
{ {
Theme = currentTheme; Theme = currentTheme;
@ -18,4 +44,4 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars
ServiceProvider = serviceProvider; ServiceProvider = serviceProvider;
} }
} }
} }

1
framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj

@ -20,6 +20,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.Abp.Authorization\Volo.Abp.Authorization.csproj" />
<ProjectReference Include="..\Volo.Abp.UI\Volo.Abp.UI.csproj" /> <ProjectReference Include="..\Volo.Abp.UI\Volo.Abp.UI.csproj" />
</ItemGroup> </ItemGroup>

6
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs

@ -1,12 +1,12 @@
using Volo.Abp.Localization; using Volo.Abp.Authorization;
using Volo.Abp.Localization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.UI.Navigation;
using Volo.Abp.UI.Navigation.Localization.Resource; using Volo.Abp.UI.Navigation.Localization.Resource;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.UI.Navigation namespace Volo.Abp.UI.Navigation
{ {
[DependsOn(typeof(AbpUiModule))] [DependsOn(typeof(AbpUiModule), typeof(AbpAuthorizationModule))]
public class AbpUiNavigationModule : AbpModule public class AbpUiNavigationModule : AbpModule
{ {
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)

9
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/IMenuConfigurationContext.cs

@ -1,4 +1,5 @@
using System; using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Localization;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.UI.Navigation namespace Volo.Abp.UI.Navigation
@ -7,6 +8,8 @@ namespace Volo.Abp.UI.Navigation
{ {
ApplicationMenu Menu { get; } ApplicationMenu Menu { get; }
//TODO: Add Localization, Authorization components since they are most used components on menu creation! IAuthorizationService AuthorizationService { get; }
IStringLocalizerFactory StringLocalizerFactory { get; }
} }
} }

32
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuConfigurationContext.cs

@ -1,12 +1,38 @@
using System; using System;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
namespace Volo.Abp.UI.Navigation namespace Volo.Abp.UI.Navigation
{ {
public class MenuConfigurationContext : IMenuConfigurationContext public class MenuConfigurationContext : IMenuConfigurationContext
{ {
public ApplicationMenu Menu { get; }
public IServiceProvider ServiceProvider { get; } public IServiceProvider ServiceProvider { get; }
private readonly object _serviceProviderLock = new object();
private TRef LazyGetRequiredService<TRef>(Type serviceType, ref TRef reference)
{
if (reference == null)
{
lock (_serviceProviderLock)
{
if (reference == null)
{
reference = (TRef)ServiceProvider.GetRequiredService(serviceType);
}
}
}
return reference;
}
public IAuthorizationService AuthorizationService => LazyGetRequiredService(typeof(IAuthorizationService), ref _authorizationService);
private IAuthorizationService _authorizationService;
private IStringLocalizerFactory _stringLocalizerFactory;
public IStringLocalizerFactory StringLocalizerFactory => LazyGetRequiredService(typeof(IStringLocalizerFactory),ref _stringLocalizerFactory);
public ApplicationMenu Menu { get; }
public MenuConfigurationContext(ApplicationMenu menu, IServiceProvider serviceProvider) public MenuConfigurationContext(ApplicationMenu menu, IServiceProvider serviceProvider)
{ {
@ -14,4 +40,4 @@ namespace Volo.Abp.UI.Navigation
ServiceProvider = serviceProvider; ServiceProvider = serviceProvider;
} }
} }
} }

Loading…
Cancel
Save