_SideBarNav.cshtml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. @using System.Text
  2. @using Abp.Application.Navigation
  3. @using Abp.Collections.Extensions
  4. @using WeApp.Views
  5. @model WeApp.Models.Layout.SideBarNavViewModel
  6. @{
  7. var pageTitleStr = "";
  8. var calculateMenuUrl = new Func<string, string>((url) =>
  9. {
  10. if (string.IsNullOrEmpty(url))
  11. {
  12. return ApplicationPath;
  13. }
  14. if (UrlChecker.IsRooted(url))
  15. {
  16. return url;
  17. }
  18. return ApplicationPath + url;
  19. });
  20. string MenuHtml(UserMenuItem menuItem)
  21. {
  22. if (menuItem==null)
  23. {
  24. return "";
  25. }
  26. StringBuilder sb = new StringBuilder();
  27. var active = Model.ActiveNames == null ? "" : (Model.ActiveNames.Contains(menuItem.Name) ? "active" : "");
  28. sb.AppendFormat("<li class=\"{0}\">", active);
  29. sb.AppendLine();
  30. string iconHtml = string.IsNullOrWhiteSpace(menuItem.Icon) ? "" : " <i class=\"iconfont " + menuItem.Icon + "\"></i>";
  31. if (menuItem.Items.IsNullOrEmpty())
  32. {
  33. sb.AppendFormat("<a href=\"{0}\">{1}<span>{2}</span> </a>", calculateMenuUrl(menuItem.Url), iconHtml, menuItem.DisplayName);
  34. sb.AppendLine();
  35. }
  36. else
  37. {
  38. sb.AppendFormat("<a href=\"javascript:void(0);\" class=\"menu-toggle\">{0}<span>{1}</span> </a>", iconHtml, menuItem.DisplayName);
  39. sb.AppendLine();
  40. sb.Append("<ul class=\"ml-menu\">");
  41. sb.AppendLine();
  42. foreach (var childItem in menuItem.Items)
  43. {
  44. sb.Append(MenuHtml(childItem));
  45. sb.AppendLine();
  46. }
  47. sb.Append("</ul>");
  48. sb.AppendLine();
  49. }
  50. sb.Append("</li>");
  51. sb.AppendLine();
  52. return sb.ToString();
  53. }
  54. }
  55. <div class="menu">
  56. <ul class="list">
  57. @foreach (var menuItem in Model.MainMenu.Items)
  58. {
  59. @Html.Raw(MenuHtml(menuItem))
  60. }
  61. </ul>
  62. </div>
  63. @if (Model != null && Model.PageTitles.Any())
  64. {
  65. foreach (var pageTitle in Model.PageTitles)
  66. {
  67. pageTitleStr += "<li class=\"m-nav__separator\">></li><li class=\"m-nav__item\" style=\"padding:0 10px\"><a href=\"javascript:;\" class=\"m-nav__link\"><span class=\"m-nav__link-text\"><i class=\"iconfont " + pageTitle.Icon + "\"></i>" + pageTitle.Name + "</span></a></li>";
  68. }
  69. }
  70. <script>
  71. var pageTitle = '@Html.Raw(pageTitleStr)';
  72. </script>
  73. @*<div class="menu">
  74. <ul class="list">
  75. @foreach (var menuItem in Model.MainMenu.Items)
  76. {
  77. <li class="@(Model.ActiveMenuItemName == menuItem.Name ? "active" : "")">
  78. @if (menuItem.Items.IsNullOrEmpty())
  79. {
  80. <a href="@calculateMenuUrl(menuItem.Url)">
  81. @if (!string.IsNullOrWhiteSpace(menuItem.Icon))
  82. {
  83. <i class="iconfont @menuItem.Icon"></i>
  84. }
  85. <span>@menuItem.DisplayName</span>
  86. </a>
  87. }
  88. else
  89. {
  90. <a href="javascript:void(0);" class="menu-toggle">
  91. @if (!string.IsNullOrWhiteSpace(menuItem.Icon))
  92. {
  93. <i class="iconfont @menuItem.Icon"></i>
  94. }
  95. <span>@menuItem.DisplayName</span>
  96. </a>
  97. <ul class="ml-menu">
  98. @foreach (var subMenuItem in menuItem.Items)
  99. {
  100. <li class="@(Model.ActiveMenuItemName == subMenuItem.Name ? "active" : "")">
  101. @if (subMenuItem.Items.IsNullOrEmpty())
  102. {
  103. <a href="@calculateMenuUrl(subMenuItem.Url)">
  104. @if (!string.IsNullOrWhiteSpace(subMenuItem.Icon))
  105. {
  106. <i class="iconfont @subMenuItem.Icon"></i>
  107. }
  108. <span>@subMenuItem.DisplayName</span>
  109. </a>
  110. }
  111. else
  112. {
  113. <a href="javascript:void(0);" class="menu-toggle">
  114. @if (!string.IsNullOrWhiteSpace(subMenuItem.Icon))
  115. {
  116. <i class="iconfont @menuItem.Icon"></i>
  117. }
  118. <span>@subMenuItem.DisplayName</span>
  119. </a>
  120. <ul class="ml-menu">
  121. @foreach (var subSubMenuItem in subMenuItem.Items)
  122. {
  123. <li class="@(Model.ActiveMenuItemName == subSubMenuItem.Name ? "active" : "")">
  124. <a href="@calculateMenuUrl(subSubMenuItem.Url)">
  125. @if (!string.IsNullOrWhiteSpace(subSubMenuItem.Icon))
  126. {
  127. <i class="iconfont @subSubMenuItem.Icon"></i>
  128. }
  129. @subSubMenuItem.DisplayName
  130. </a>
  131. </li>
  132. }
  133. </ul>
  134. }
  135. </li>
  136. }
  137. </ul>
  138. }
  139. </li>
  140. }
  141. </ul>
  142. </div>*@
  143. @*<div class="menu">
  144. <ul class="list">
  145. @foreach (var menuItem in Model.MainMenu.Items)
  146. {
  147. <li class="@(Model.ActiveMenuItemName == menuItem.Name ? "active" : "")">
  148. @if (menuItem.Items.IsNullOrEmpty())
  149. {
  150. <a href="@calculateMenuUrl(menuItem.Url)">
  151. @if (!string.IsNullOrWhiteSpace(menuItem.Icon))
  152. {
  153. <i class="material-icons">@menuItem.Icon</i>
  154. }
  155. <span>@menuItem.DisplayName</span>
  156. </a>
  157. }
  158. else
  159. {
  160. <a href="javascript:void(0);" class="menu-toggle">
  161. @if (!string.IsNullOrWhiteSpace(menuItem.Icon))
  162. {
  163. <i class="material-icons">@menuItem.Icon</i>
  164. }
  165. <span>@menuItem.DisplayName</span>
  166. </a>
  167. <ul class="ml-menu">
  168. @foreach (var subMenuItem in menuItem.Items)
  169. {
  170. <li class="@(Model.ActiveMenuItemName == subMenuItem.Name ? "active" : "")">
  171. @if (subMenuItem.Items.IsNullOrEmpty())
  172. {
  173. <a href="@calculateMenuUrl(subMenuItem.Url)">
  174. @if (!string.IsNullOrWhiteSpace(subMenuItem.Icon))
  175. {
  176. <i class="material-icons">@subMenuItem.Icon</i>
  177. }
  178. <span>@subMenuItem.DisplayName</span>
  179. </a>
  180. }
  181. else
  182. {
  183. <a href="javascript:void(0);" class="menu-toggle">
  184. @if (!string.IsNullOrWhiteSpace(subMenuItem.Icon))
  185. {
  186. <i class="material-icons">@subMenuItem.Icon</i>
  187. }
  188. <span>@subMenuItem.DisplayName</span>
  189. </a>
  190. <ul class="ml-menu">
  191. @foreach (var subSubMenuItem in subMenuItem.Items)
  192. {
  193. <li class="@(Model.ActiveMenuItemName == subSubMenuItem.Name ? "active" : "")">
  194. <a href="@calculateMenuUrl(subSubMenuItem.Url)">
  195. @subSubMenuItem.DisplayName
  196. </a>
  197. </li>
  198. }
  199. </ul>
  200. }
  201. </li>
  202. }
  203. </ul>
  204. }
  205. </li>
  206. }
  207. </ul>
  208. </div>*@