_NavSidebar.cshtml 9.9 KB

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