diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/ToolbarManager.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/ToolbarManager.cs new file mode 100644 index 0000000000..51793c0cd7 --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/ToolbarManager.cs @@ -0,0 +1,20 @@ +using System.Threading.Tasks; +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 GetAsync(string name) + { + return new Toolbar(name) + { + Items = + { + new ToolbarItem(typeof(UserMenuViewComponent)) + } + }; + } + } +} \ No newline at end of file diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Default.cshtml b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Default.cshtml index 33a8a423f0..68a10e8c20 100644 --- a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Default.cshtml +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Default.cshtml @@ -1,6 +1,6 @@ @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Brand @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Menu -@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Tools +@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Toolbar diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Default.cshtml b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Default.cshtml new file mode 100644 index 0000000000..96b82b2f1c --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Default.cshtml @@ -0,0 +1,6 @@ +@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars +@model Toolbar +@foreach (var toolbarItem in Model.Items) +{ + @(await Component.InvokeAsync(toolbarItem.ComponentType)) +} \ No newline at end of file diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Tools/Default.cshtml b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/Default.cshtml similarity index 100% rename from src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Tools/Default.cshtml rename to src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/Default.cshtml diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Tools/MainNavbarToolsViewComponent.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/UserMenuViewComponent.cs similarity index 61% rename from src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Tools/MainNavbarToolsViewComponent.cs rename to src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/UserMenuViewComponent.cs index fe582848c1..e80bf10153 100644 --- a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Tools/MainNavbarToolsViewComponent.cs +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/UserMenuViewComponent.cs @@ -1,12 +1,12 @@ using Microsoft.AspNetCore.Mvc; -namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Tools +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Toolbar.Items.UserMenu { - public class MainNavbarToolsViewComponent : AbpViewComponent + public class UserMenuViewComponent : AbpViewComponent { public IViewComponentResult Invoke() { - return View("~/Views/Shared/Components/Theme/MainNavbar/Tools/Default.cshtml"); + return View("~/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/Default.cshtml"); } } } diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/MainNavbarToolsViewComponent.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/MainNavbarToolsViewComponent.cs new file mode 100644 index 0000000000..86265cdc00 --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/MainNavbarToolsViewComponent.cs @@ -0,0 +1,22 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Views.Shared.Components.Theme.MainNavbar.Toolbar +{ + public class MainNavbarToolbarViewComponent : AbpViewComponent + { + private readonly IToolbarManager _toolbarManager; + + public MainNavbarToolbarViewComponent(IToolbarManager toolbarManager) + { + _toolbarManager = toolbarManager; + } + + public async Task InvokeAsync() + { + var toolbar = await _toolbarManager.GetAsync(StandardToolbars.Main); + return View("~/Views/Shared/Components/Theme/MainNavbar/Toolbar/Default.cshtml", toolbar); + } + } +} diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj index 9321d3887f..2c358b1033 100644 --- a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj @@ -19,10 +19,6 @@ - - - - diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/IToolbarManager.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/IToolbarManager.cs new file mode 100644 index 0000000000..2a2d3a867e --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/IToolbarManager.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars +{ + public interface IToolbarManager + { + Task GetAsync(string name); + } +} diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/StandardToolbars.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/StandardToolbars.cs new file mode 100644 index 0000000000..1f25571350 --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/StandardToolbars.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars +{ + public static class StandardToolbars + { + public const string Main = "Main"; + } +} \ No newline at end of file diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/Toolbar.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/Toolbar.cs new file mode 100644 index 0000000000..f4bb0c22a4 --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/Toolbar.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using JetBrains.Annotations; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars +{ + public class Toolbar + { + public string Name { get; } + + public List Items { get; } + + public Toolbar([NotNull] string name) + { + Name = Check.NotNull(name, nameof(name)); + Items = new List(); + } + } +} diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarItem.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarItem.cs new file mode 100644 index 0000000000..6f735f5824 --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarItem.cs @@ -0,0 +1,20 @@ +using System; +using JetBrains.Annotations; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars +{ + public class ToolbarItem + { + public Type ComponentType + { + get => _componentType; + set => _componentType = Check.NotNull(value, nameof(value)); + } + private Type _componentType; + + public ToolbarItem([NotNull] Type componentType) + { + ComponentType = Check.NotNull(componentType, nameof(componentType)); + } + } +} \ No newline at end of file diff --git a/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs b/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs index eeae370ae4..204473551d 100644 --- a/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs +++ b/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs @@ -6,7 +6,6 @@ using Volo.Abp.DependencyInjection; namespace Volo.Abp.UI.Navigation { - //TODO: We can move Navigation to a dedicated dll, or to a Volo.Abp.Ui dll. public class MenuManager : IMenuManager, ITransientDependency { private readonly NavigationOptions _options;