Browse Source

Implemented draft for toolbar feature

pull/279/head
Halil İbrahim Kalkan 8 years ago
parent
commit
12a5ed8028
  1. 20
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/ToolbarManager.cs
  2. 5
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Default.cshtml
  3. 6
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Default.cshtml
  4. 0
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/Default.cshtml
  5. 6
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/UserMenuViewComponent.cs
  6. 22
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/MainNavbarToolsViewComponent.cs
  7. 4
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj
  8. 9
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/IToolbarManager.cs
  9. 7
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/StandardToolbars.cs
  10. 18
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/Toolbar.cs
  11. 20
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarItem.cs
  12. 1
      src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs

20
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<Toolbar> GetAsync(string name)
{
return new Toolbar(name)
{
Items =
{
new ToolbarItem(typeof(UserMenuViewComponent))
}
};
}
}
}

5
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
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top" id="main-navbar">
@(await Component.InvokeAsync<MainNavbarBrandViewComponent>())
<button class="navbar-toggler" type="button" data-toggle="collapse"
@ -14,8 +14,7 @@
</ul>
<span id="main-navbar-tools">
@(await Component.InvokeAsync<MainNavbarToolsViewComponent>())
@(await Component.InvokeAsync<MainNavbarToolbarViewComponent>())
</span>
</div>
</nav>

6
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)
{
<text>@(await Component.InvokeAsync(toolbarItem.ComponentType))</text>
}

0
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Tools/Default.cshtml → src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Toolbar/Items/UserMenu/Default.cshtml

6
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Views/Shared/Components/Theme/MainNavbar/Tools/MainNavbarToolsViewComponent.cs → 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");
}
}
}

22
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<IViewComponentResult> InvokeAsync()
{
var toolbar = await _toolbarManager.GetAsync(StandardToolbars.Main);
return View("~/Views/Shared/Components/Theme/MainNavbar/Toolbar/Default.cshtml", toolbar);
}
}
}

4
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj

@ -19,10 +19,6 @@
<EmbeddedResource Include="Views\**\*.cshtml" />
<EmbeddedResource Include="wwwroot\**\*.*" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Remove="Views\Shared\Components\Theme\MainNavbar\Tools\Default.cshtml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj" />

9
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<Toolbar> GetAsync(string name);
}
}

7
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";
}
}

18
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<ToolbarItem> Items { get; }
public Toolbar([NotNull] string name)
{
Name = Check.NotNull(name, nameof(name));
Items = new List<ToolbarItem>();
}
}
}

20
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));
}
}
}

1
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;

Loading…
Cancel
Save