_Layout.cshtml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. @using Masuit.MyBlogs.Core.Common
  2. @using Masuit.MyBlogs.Core.Models.DTO
  3. @using Masuit.MyBlogs.Core.Models.Entity
  4. @using Masuit.MyBlogs.Core.Models.Enum
  5. @using Masuit.MyBlogs.Core.Models.ViewModel
  6. @using Masuit.MyBlogs.Core.Views.Shared
  7. @using Masuit.Tools
  8. @using Masuit.Tools.Core.Net
  9. @{
  10. string[] colors = { "success", "info", "warning", "danger", "default" };
  11. List<Menu> menus = ViewBag.menus;
  12. UserInfoDto user = Context.Session.Get<UserInfoDto>(SessionKey.UserInfo) ?? new UserInfoDto();
  13. PageFootViewModel footer = ViewBag.Footer;
  14. }
  15. <!DOCTYPE html>
  16. <html lang="zh-CN">
  17. <head>
  18. <meta charset="utf-8">
  19. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  20. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  21. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  22. <title>@(ViewBag.Title + "_" + CommonHelper.SystemSettings["Title"])</title>
  23. <meta name="keywords" content="@(CommonHelper.SystemSettings["Keyword"]+","+ViewBag.Keyword)" />
  24. <meta name="description" content="@ViewBag.Desc" />
  25. @Html.Raw(CommonHelper.SystemSettings.GetOrAdd("Styles", ""))
  26. <link href="https://cdn.staticfile.org/normalize/8.0.1/normalize.min.css" rel="stylesheet" async defer>
  27. <link href="https://cdn.staticfile.org/limonte-sweetalert2/6.11.5/sweetalert2.min.css" rel="stylesheet" async defer>
  28. <link href="https://cdn.staticfile.org/notie/4.3.1/notie.min.css" rel="stylesheet" async defer>
  29. <link href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" async defer>
  30. <link href="https://cdn.staticfile.org/animate.css/3.7.0/animate.min.css" rel="stylesheet" async defer>
  31. <link href="https://cdn.staticfile.org/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
  32. <link href="~/Assets/layui/css/layui.min.css" rel="stylesheet" async defer>
  33. <environment names="Development">
  34. <link href="~/fonts/icomoon.css" rel="stylesheet" />
  35. <link href="~/Content/jquery.paging.css" rel="stylesheet" />
  36. <link href="~/Content/common/reset.css" rel="stylesheet" />
  37. <link href="~/Content/common/loading.css" rel="stylesheet" />
  38. <link href="~/Content/common/style.css" rel="stylesheet" />
  39. <link href="~/Content/common/articlestyle.css" rel="stylesheet" />
  40. <link href="~/Content/common/leaderboard.css" rel="stylesheet" />
  41. <link href="~/Assets/breadcrumb/style.css" rel="stylesheet" />
  42. <link href="~/Assets/nav/css/style.css" rel="stylesheet" />
  43. </environment>
  44. <environment names="Stage,Production">
  45. @await Styles.RenderAsync("~/bundles/main.css")
  46. </environment>
  47. <script src="https://cdn.staticfile.org/bluebird/3.5.3/bluebird.min.js" async defer></script>
  48. <script src="https://cdn.staticfile.org/modernizr/2010.07.06dev/modernizr.min.js" async defer></script>
  49. <script src="https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js"></script>
  50. <script src="https://cdn.staticfile.org/limonte-sweetalert2/6.6.9/sweetalert2.min.js" async defer></script>
  51. <script src="https://cdn.staticfile.org/notie/4.3.1/notie.min.js" async defer></script>
  52. <script src="https://cdn.staticfile.org/jquery.form/4.2.2/jquery.form.min.js" async defer></script>
  53. <script src="https://cdn.staticfile.org/jqueryui/1.9.2/jquery.ui.widget.min.js"></script>
  54. <script src="https://cdn.staticfile.org/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
  55. <script src="~/Scripts/layer/layer.js"></script>
  56. <script src="~/Assets/layui/layui.js"></script>
  57. <script src="~/Assets/lazyload.min.js"></script>
  58. <environment names="Development">
  59. <script src="~/Scripts/jquery.query.js"></script>
  60. <script src="~/Scripts/jquery.paging.js"></script>
  61. <script src="~/Scripts/ripplet.js"></script>
  62. <script src="~/Scripts/global/scripts.js"></script>
  63. <script src="~/Scripts/platform.js"></script>
  64. <script src="~/Assets/newsbox/jquery.bootstrap.newsbox.js"></script>
  65. <script src="~/Assets/tagcloud/js/tagcloud.js"></script>
  66. <script src="~/Assets/scrolltop/js/scrolltop.js"></script>
  67. <script src="~/Assets/nav/js/main.js"></script>
  68. </environment>
  69. <environment names="Stage,Production">
  70. @await Scripts.RenderAsync("~/bundles/main.js")
  71. </environment>
  72. </head>
  73. <body>
  74. <noscript>
  75. <meta http-equiv="Refresh" content="3;url=/ServiceUnavailable" />
  76. <style>
  77. .header {
  78. display: none !important;
  79. }
  80. </style>
  81. <div style="position: absolute;top: 0;left: 0;right: 0;bottom: 0;">
  82. <p class="size48">检测到您的浏览器不支持javascript或已禁用javascript功能,当前页面无法正常显示!</p>
  83. </div>
  84. </noscript>
  85. <div id="toc" style="display: none;">
  86. <a class="close">
  87. <i class="icon-cross"></i>
  88. </a>
  89. </div>
  90. <div class="header">
  91. <header class="cd-main-header">
  92. <a class="cd-logo" href="/"><img src="@CommonHelper.SystemSettings["logo"]" alt="@CommonHelper.SystemSettings["Title"]"><h1 class="slogan">@CommonHelper.SystemSettings["Slogan"]</h1></a>
  93. <ul class="cd-header-buttons">
  94. <li><a class="cd-search-trigger" href="#cd-search">搜索<span></span></a></li>
  95. <li><a class="cd-nav-trigger" href="#cd-primary-nav">菜单<span></span></a></li>
  96. </ul>
  97. </header>
  98. <nav class="cd-nav">
  99. <ul id="cd-primary-nav" class="cd-primary-nav is-fixed">
  100. @{
  101. if (user.IsAdmin)
  102. {
  103. <li>
  104. <a asp-controller="Dashboard" asp-action="Index" asp-fragment="/writeblog" target="_blank">
  105. <i class="icon icon-pencil"></i>
  106. 写文章
  107. </a>
  108. </li>
  109. <li>
  110. <a asp-action="Index" asp-controller="Dashboard" target="_blank">控制面板</a>
  111. </li>
  112. <li>
  113. <a> | </a>
  114. </li>
  115. }
  116. foreach (var m in menus)
  117. {
  118. if (m.MenuType == MenuType.SubMenu)
  119. {
  120. <li class="has-children">
  121. <a href="#">@m.Name</a>
  122. <ul class="cd-secondary-nav is-hidden">
  123. <li class="go-back"><a href="#">上级菜单</a></li>
  124. <li class="see-all"><a asp-controller="Post" asp-action="All">所有 @m.Name</a></li>
  125. @foreach (var m2 in m.Children.OrderBy(c => c.Sort))
  126. {
  127. if (m2.Children.Any())
  128. {
  129. <li class="has-children">
  130. <a href="#">@m2.Name</a>
  131. <ul class="is-hidden">
  132. <li class="go-back"><a href="#">上级菜单</a></li>
  133. @foreach (var m3 in m2.Children.OrderBy(c => c.Sort))
  134. {
  135. if (m3.Children.Any())
  136. {
  137. <li class="has-children">
  138. <a href="#">@m3.Name</a>
  139. <ul class="is-hidden">
  140. <li class="go-back"><a href="#">上级菜单</a></li>
  141. @foreach (var m4 in m.Children.OrderBy(c => c.Sort))
  142. {
  143. if (m4.NewTab)
  144. {
  145. <li><a href="@m4.Url" target="_blank">@m4.Name</a></li>
  146. }
  147. else
  148. {
  149. <li><a href="@m4.Url">@m4.Name</a></li>
  150. }
  151. }
  152. </ul>
  153. </li>
  154. }
  155. else
  156. {
  157. if (m3.NewTab)
  158. {
  159. <li><a href="@m3.Url" target="_blank">@m3.Name</a></li>
  160. }
  161. else
  162. {
  163. <li><a href="@m3.Url">@m3.Name</a></li>
  164. }
  165. }
  166. }
  167. </ul>
  168. </li>
  169. }
  170. else
  171. {
  172. if (m2.NewTab)
  173. {
  174. <li><a href="@m2.Url" target="_blank">@m2.Name</a></li>
  175. }
  176. else
  177. {
  178. <li><a href="@m2.Url">@m2.Name</a></li>
  179. }
  180. }
  181. }
  182. </ul>
  183. </li>
  184. }
  185. else if (m.MenuType == MenuType.GalleryMenu)
  186. {
  187. <li class="has-children">
  188. <a href="#">@m.Name</a>
  189. <ul class="cd-nav-gallery is-hidden">
  190. <li class="go-back"><a href="#">返回主菜单</a></li>
  191. <li class="see-all"><a asp-controller="Post" asp-action="All">所有 @m.Name</a></li>
  192. @{
  193. foreach (var mm in m.Children)
  194. {
  195. if (mm.NewTab)
  196. {
  197. <li>
  198. <a class="cd-nav-item" href="@mm.Url" target="_blank">
  199. <img src="@mm.Icon" alt="@mm.Name">
  200. <h3>@mm.Name</h3>
  201. </a>
  202. </li>
  203. }
  204. else
  205. {
  206. <li>
  207. <a class="cd-nav-item" href="@mm.Url">
  208. <img src="@mm.Icon" alt="@mm.Name">
  209. <h3>@mm.Name</h3>
  210. </a>
  211. </li>
  212. }
  213. }
  214. }
  215. </ul>
  216. </li>
  217. }
  218. else if (m.MenuType == MenuType.IconMenu)
  219. {
  220. <li class="has-children">
  221. <a href="#">@m.Name</a>
  222. <ul class="cd-nav-icons is-hidden">
  223. <li class="go-back"><a href="#">返回主菜单</a></li>
  224. @{
  225. var step = 1;
  226. foreach (var mm in m.Children)
  227. {
  228. if (mm.NewTab)
  229. {
  230. <li>
  231. <a class="cd-nav-item item-@(step++%8)" href="@mm.Url" target="_blank">
  232. <p>@mm.Name</p>
  233. </a>
  234. </li>
  235. }
  236. else
  237. {
  238. <li>
  239. <a class="cd-nav-item item-@(step++%8)" href="@mm.Url">
  240. <p>@mm.Name</p>
  241. </a>
  242. </li>
  243. }
  244. }
  245. }
  246. </ul>
  247. </li>
  248. }
  249. else
  250. {
  251. if (m.NewTab)
  252. {
  253. <li><a href="@m.Url" target="_blank">@m.Name</a></li>
  254. }
  255. else
  256. {
  257. <li><a href="@m.Url">@m.Name</a></li>
  258. }
  259. }
  260. }
  261. }
  262. </ul>
  263. </nav>
  264. <div id="cd-search" class="cd-search">
  265. <form method="get" action="/search">
  266. <input type="search" name="wd" placeholder="请在此处输入您想要的搜索的关键词,支持部分指令:intitle,content,如:intitle:会声会影 content:懒得勤快,指令支持组合">
  267. </form>
  268. </div>
  269. <main class="cd-main-content">
  270. @RenderBody()
  271. <div class="cd-overlay"></div>
  272. <footer class="footer wow fadeIn">
  273. <div class="container">
  274. <section>
  275. 友情链接:
  276. @{
  277. if (user.IsAdmin)
  278. {
  279. <a asp-controller="Dashboard" asp-action="FileManager" target="_blank">资源管理器</a>
  280. <span> | </span>
  281. <a href="/taskcenter" target="_blank">任务管理器</a>
  282. <span> | </span>
  283. }
  284. foreach (var link in footer.Links)
  285. {
  286. <a href="@link.Url" target="_blank" referrerpolicy="unsafe-url">@link.Name</a>
  287. <span> | </span>
  288. }
  289. }
  290. <a asp-controller="Links" asp-action="Index">更多链接>></a>
  291. </section>
  292. <section class="copy">
  293. @Html.Raw(CommonHelper.SystemSettings["Copyright"])
  294. @Html.Raw(CommonHelper.SystemSettings.GetOrAdd("Scripts", ""))
  295. </section>
  296. </div>
  297. <component type="typeof(Ping)" render-mode="ServerPrerendered" />
  298. </footer>
  299. </main>
  300. </div>
  301. @*loading*@
  302. <div id="loading">
  303. <div class="loading1 animated fadeIn">
  304. <div class="loadEffect">
  305. @{
  306. var num = new Random().StrictNext();
  307. for (int i = 0; i < 7; i++)
  308. {
  309. <div>
  310. <span class="bg-@colors[(num+i) % 5]"></span>
  311. </div>
  312. }
  313. }
  314. </div>
  315. </div>
  316. </div>
  317. @*返回顶部火箭*@
  318. <div style="display: none;" id="rocket-to-top" class="hidden-xs">
  319. <div style="opacity: 0; display: block;" class="level-2"></div>
  320. <div class="level-3"></div>
  321. </div>
  322. <button type="button" class="btn btn-info btn-sm canvas-close" style="position: fixed;right: 0;bottom: 0;z-index: 200;display: none">不再显示canvas背景</button>
  323. <script type="text/javascript" color="0,104,183" opacity='1' zIndex="-1" count="100" src="~/Scripts/line.js"></script>
  324. <script src="/_framework/blazor.server.js"></script>
  325. </body>
  326. </html>
  327. @if (Context.Request.Headers["User-Agent"].ToString().Contains(new[] { "IE", "InternetExplorer" }))
  328. {
  329. <script type="text/javascript">
  330. var b = localStorage.getItem("browser");
  331. if (!b) {
  332. layer.open({
  333. title: '浏览器版本提示',
  334. area: '400px;',
  335. closeBtn: false,
  336. content: '亲爱的访客,我们检测到您正在使用IE浏览器,本网站的某些功能或特性可能不会完美地支持IE浏览器,但您可以继续浏览,不过为了更好的体验效果,建议您使用Chrome、Firefox等相同或类似的更高级浏览器访问本网站。珍惜生命,远离IE!',
  337. btn: ['知道了', '哦'],
  338. btn1: function (layero) {
  339. layer.closeAll();
  340. layer.msg('为消灭IE做一点贡献,就是为世界上所有广大的互联网开发者们少加一点儿班做善事!<br/>IE:只要不升级,我还会回来的,我就是这么倔强!', {
  341. icon: 5
  342. });
  343. window.localStorage.setItem("browser", true);
  344. },
  345. btn2: function (index) {
  346. }
  347. });
  348. }
  349. </script>
  350. }
  351. <script>
  352. (function () {
  353. var bp = document.createElement('script');
  354. var curProtocol = window.location.protocol.split(':')[0];
  355. if (curProtocol === 'https') {
  356. bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
  357. }
  358. else {
  359. bp.src = 'http://push.zhanzhang.baidu.com/push.js';
  360. }
  361. var s = document.getElementsByTagName("script")[0];
  362. s.parentNode.insertBefore(bp, s);
  363. })();
  364. </script>
  365. <mini-profiler max-traces="5" />