kreta/KretaWeb/Views/Shared/DisplayTemplates/MenuHelperModel.cshtml
2024-03-13 00:33:46 +01:00

31 lines
1.5 KiB
Text

@model MenuHelperModel
@using System.Web.Mvc.Html
@using Kreta.Web.Menu
<span id="Menu_Menu">
<div id="mb1_menudiv" class="navbar-collapse collapse">
<ul id="mb1" class="nav navbar-nav" role="menubar">
@foreach (var node in Model.Nodes)
{
var menuLarge = node.Children.Any(menu => menu.IsClickable == false) ? "menu-large" : ""; // csoportositas
var menuwithoutarrow = node.Parent != null && node.Parent.IsRootNode && node.Children.Count == 0 ? "menuwithoutarrow" : ""; // ha főmenü elem, kattintaható és nincsenek almenüpontok
var hasChild = node.HasClickabeChild();
if ((hasChild || node.IsClickable) && node.IsVisible())
{
//HasClickabeChild csak Claim alapján ellenőríz, míg az almenüben megjelenő elemekben tételesen Visible.
//Abban az esetben, hogyha Claim alapján van benne, viszont Visible alapján üres így nem jelenik meg üresen a főmenü.
if (node.Children.Any(x => !x.IsClickable && x.Children.Any(y => y.IsVisible())) || !node.Children.Any(x => !x.IsClickable))
{
var disabledCssClass = node.IsDisabled() ? "disabledMenuItem" : string.Empty;
<li role="menuitem" tabindex="0" aria-haspopup="true" class="dropdown @menuLarge menu-icon @menuwithoutarrow @disabledCssClass" onfocus="" onblur="">
@Html.DisplayFor(m => node)
@if (hasChild)
{
@Html.DisplayFor(m => node.Children)
}
</li>
}
}
}
</ul>
</div>
</span>