Created
June 1, 2014 18:37
-
-
Save bdukes/2e311c44d77dfc8d5e8f to your computer and use it in GitHub Desktop.
DNN DDR Razor menu template with level checking
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@using DotNetNuke.Web.DDRMenu; | |
@using System.Dynamic; | |
@inherits DotNetNuke.Web.Razor.DotNetNukeWebPage<dynamic> | |
@helper RenderNodes(IEnumerable<MenuNode> nodes, int level) | |
{ | |
if (nodes.Any()) | |
{ | |
var dropdown = level == 0 ? "nav navbar-nav" : "dropdown-menu"; | |
var topLevelId = level == 0 ? Model.ControlID : null; | |
<ul id="@topLevelId" class="@dropdown"> | |
@foreach (var node in nodes) | |
{ | |
var cssClasses = new List<string> { "level-" + level }; | |
if (node.HasChildren()) | |
{ | |
if (level == 0) { cssClasses.Add("dropdown"); } else { cssClasses.Add("dropdown-submenu"); } | |
} | |
cssClasses.Add("node-" + node.TabId); | |
if (node.Selected) { cssClasses.Add("active"); } | |
var classes = new HtmlString((cssClasses.Count == 0) ? null : string.Join(" ", cssClasses))); | |
<li class="@classes"> | |
@if (node.HasChildren()) | |
{ | |
if (level == 0) | |
{ | |
if (node.Enabled) | |
{ | |
<a href="@node.Url" target="@node.Target" class="dropdown-toggle" >@node.Text <b class="caret"></b></a> | |
} | |
else | |
{ | |
<a class="dropdown-toggle">@node.Text <b class="caret"></b></a> | |
} | |
} | |
else | |
{ | |
<a href="@node.Url" target="@node.Target">@node.Text <b class="caret"></b></a> | |
} | |
@RenderNodes(node.Children, level + 1) | |
} | |
else if (node.Enabled) | |
{ | |
<a href="@node.Url" target="@node.Target">@node.Text</a> | |
} | |
else | |
{ | |
@node.Text | |
} | |
</li> | |
} | |
</ul> | |
} | |
} | |
<div class="nav-wrap"> | |
@RenderNodes(Model.Source.root.Children, 0) | |
</div> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, I have tried to use this template but menu doesn't show. Actually when I add just "int level" it doesn't show. I use dnn 7.2.2. What can be wrong? I am trying to render ul/li for sub items and set classes to them.