mirror of https://github.com/abpframework/abp.git
10 changed files with 121 additions and 24 deletions
@ -1,22 +0,0 @@ |
|||||
using System.Threading.Tasks; |
|
||||
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Toolbar.Items.LanguageSwitch; |
|
||||
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Toolbar.Items.UserMenu; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
|
|
||||
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars |
|
||||
{ |
|
||||
public class ToolbarManager : IToolbarManager, ITransientDependency |
|
||||
{ |
|
||||
public async Task<Toolbar> GetAsync(string name) |
|
||||
{ |
|
||||
return new Toolbar(name) |
|
||||
{ |
|
||||
Items = |
|
||||
{ |
|
||||
new ToolbarItem(typeof(LanguageSwitchViewComponent)), |
|
||||
new ToolbarItem(typeof(UserMenuViewComponent)) |
|
||||
} |
|
||||
}; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,23 @@ |
|||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Toolbar.Items.LanguageSwitch; |
||||
|
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Toolbar.Items.UserMenu; |
||||
|
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Toolbars |
||||
|
{ |
||||
|
public class BasicThemeMainTopToolbarContributor : IToolbarContributor |
||||
|
{ |
||||
|
public Task ConfigureToolbarAsync(IToolbarConfigurationContext context) |
||||
|
{ |
||||
|
if (context.Toolbar.Name != StandardToolbars.Main) |
||||
|
{ |
||||
|
return Task.CompletedTask; |
||||
|
} |
||||
|
|
||||
|
context.Toolbar.Items.Add(new ToolbarItem(typeof(LanguageSwitchViewComponent))); |
||||
|
context.Toolbar.Items.Add(new ToolbarItem(typeof(UserMenuViewComponent))); |
||||
|
|
||||
|
return Task.CompletedTask; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars |
||||
|
{ |
||||
|
public interface IToolbarConfigurationContext : IServiceProviderAccessor |
||||
|
{ |
||||
|
Toolbar Toolbar { get; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars |
||||
|
{ |
||||
|
public interface IToolbarContributor |
||||
|
{ |
||||
|
Task ConfigureToolbarAsync(IToolbarConfigurationContext context); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
using System; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars |
||||
|
{ |
||||
|
public class ToolbarConfigurationContext : IToolbarConfigurationContext |
||||
|
{ |
||||
|
public Toolbar Toolbar { get; } |
||||
|
|
||||
|
public IServiceProvider ServiceProvider { get; } |
||||
|
|
||||
|
public ToolbarConfigurationContext(Toolbar toolbar, IServiceProvider serviceProvider) |
||||
|
{ |
||||
|
Toolbar = toolbar; |
||||
|
ServiceProvider = serviceProvider; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,37 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Microsoft.Extensions.Options; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars |
||||
|
{ |
||||
|
public class ToolbarManager : IToolbarManager, ITransientDependency |
||||
|
{ |
||||
|
protected ToolbarOptions Options { get; } |
||||
|
protected IServiceProvider ServiceProvider { get; } |
||||
|
|
||||
|
public ToolbarManager(IOptions<ToolbarOptions> options, IServiceProvider serviceProvider) |
||||
|
{ |
||||
|
ServiceProvider = serviceProvider; |
||||
|
Options = options.Value; |
||||
|
} |
||||
|
|
||||
|
public async Task<Toolbar> GetAsync(string name) |
||||
|
{ |
||||
|
var menu = new Toolbar(name); |
||||
|
|
||||
|
using (var scope = ServiceProvider.CreateScope()) |
||||
|
{ |
||||
|
var context = new ToolbarConfigurationContext(menu, scope.ServiceProvider); |
||||
|
|
||||
|
foreach (var contributor in Options.Contributors) |
||||
|
{ |
||||
|
await contributor.ConfigureToolbarAsync(context); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return menu; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,16 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
using JetBrains.Annotations; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars |
||||
|
{ |
||||
|
public class ToolbarOptions |
||||
|
{ |
||||
|
[NotNull] |
||||
|
public List<IToolbarContributor> Contributors { get; } |
||||
|
|
||||
|
public ToolbarOptions() |
||||
|
{ |
||||
|
Contributors = new List<IToolbarContributor>(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,10 +1,11 @@ |
|||||
|
using System; |
||||
using Volo.Abp.DependencyInjection; |
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
namespace Volo.Abp.UI.Navigation |
namespace Volo.Abp.UI.Navigation |
||||
{ |
{ |
||||
public interface IMenuConfigurationContext : IServiceProviderAccessor |
public interface IMenuConfigurationContext : IServiceProviderAccessor |
||||
{ |
{ |
||||
ApplicationMenu Menu { get; set; } |
ApplicationMenu Menu { get; } |
||||
|
|
||||
//TODO: Add Localization, Authorization components since they are most used components on menu creation!
|
//TODO: Add Localization, Authorization components since they are most used components on menu creation!
|
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue