62 lines
2.2 KiB
Plaintext
62 lines
2.2 KiB
Plaintext
@using Microsoft.AspNetCore.Components.Routing
|
|
@using Oqtane.Themes
|
|
@using Oqtane.Services
|
|
@using Oqtane.Models;
|
|
@using Oqtane.Security
|
|
@namespace Oqtane.Themes.Controls
|
|
@inherits ThemeObjectBase
|
|
@inject IPageService PageService
|
|
@inject IUserService UserService
|
|
|
|
<ul class="nav flex-column">
|
|
@if (parent != null)
|
|
{
|
|
string url = NavigateUrl();
|
|
<li class="nav-item px-3">
|
|
<NavLink class="nav-link" href="@parent.Path" Match="NavLinkMatch.All">
|
|
<span class="oi oi-media-skip-backward" aria-hidden="true"></span> Back
|
|
</NavLink>
|
|
</li>
|
|
}
|
|
@foreach (var p in pages)
|
|
{
|
|
if (p.IsNavigation && UserSecurity.IsAuthorized(PageState.User, "View", p.Permissions))
|
|
{
|
|
string url = NavigateUrl(p.Path);
|
|
<li class="nav-item px-3">
|
|
<NavLink @key="@p.PageId" class="nav-link" href="@url" Match="NavLinkMatch.All">
|
|
<span class="oi @p.Icon" aria-hidden="true"></span> @p.Name
|
|
</NavLink>
|
|
</li>
|
|
}
|
|
}
|
|
</ul>
|
|
|
|
@code {
|
|
List<Page> pages;
|
|
Page parent = null;
|
|
|
|
protected override Task OnParametersSetAsync()
|
|
{
|
|
// if current page has no children
|
|
if (PageState.Pages.Where(item => item.ParentId == PageState.Page.PageId).FirstOrDefault() == null)
|
|
{
|
|
// display list of pages which have same parent as current page
|
|
pages = PageState.Pages.Where(item => item.ParentId == PageState.Page.ParentId).OrderBy(item => item.Order).ToList();
|
|
// if current page has parent
|
|
if (PageState.Page.ParentId != null)
|
|
{
|
|
parent = PageState.Pages.Where(item => item.PageId == PageState.Page.ParentId).FirstOrDefault();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// display list of pages which are children of current page
|
|
pages = PageState.Pages.Where(item => item.ParentId == PageState.Page.PageId).OrderBy(item => item.Order).ToList();
|
|
// current page is parent
|
|
parent = PageState.Pages.Where(item => item.ParentId == PageState.Page.ParentId).FirstOrDefault();
|
|
}
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|