_Layout.cshtml 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. @inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
  2. @{
  3. var viewModel = HttpContextAccessor.HttpContext.Items["layoutViewModel"] as bitforum.Models.LayoutViewModel;
  4. }
  5. <!DOCTYPE html>
  6. <html lang="ko">
  7. <head>
  8. <meta charset="utf-8" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  10. <title>@ViewData["Title"] - @viewModel.AppConfig.AppName</title>
  11. <meta name="description" content="bitforum.io 관리자 영역입니다. 외부인은 이용이 불가합니다." />
  12. <meta name="author" content="www.playr.co.kr" />
  13. <meta name="copyright" content="playr, 2025" />
  14. <meta name="referrer" content="no-referrer">
  15. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  16. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  17. <meta http-equiv="Content-Language" content="ko" />
  18. <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
  19. <meta http-equiv="Pragma" content="no-cache" />
  20. <meta http-equiv="Expires" content="0" />
  21. <meta name="robots" content="noindex, nofollow" />
  22. <link rel="stylesheet" href="~/node_modules/bootstrap/dist/css/bootstrap.min.css" />
  23. <link rel="stylesheet" href="~/node_modules/bootstrap-icons/font/bootstrap-icons.min.css" />
  24. <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
  25. <link rel="stylesheet" href="~/css/admin.css" asp-append-version="true" />
  26. @await RenderSectionAsync("Styles", required: false)
  27. </head>
  28. <body>
  29. <!-- 좌측 -->
  30. <aside id="aside">
  31. <!-- 메뉴 -->
  32. <ul class="nav flex-column">
  33. @foreach (var menu in viewModel.Menus)
  34. {
  35. @Html.Partial("_MenuItem", menu)
  36. }
  37. </ul>
  38. <footer>ⓒ <a href="https://playr.co.kr" target="_blank" rel="external">PLAYR</a>. All Rights Reserved</footer>
  39. </aside>
  40. <!-- 우측 -->
  41. <main id="main">
  42. <!-- 상단 -->
  43. <header id="header">
  44. <div class="row justify-content-between align-items-center g-0">
  45. <div class="col">
  46. <button type="button" id="btnAsideToggle" class="btn btn-light">
  47. <i class="bi bi-arrow-left"></i>
  48. </button>
  49. </div>
  50. <div class="col text-center">
  51. <strong class="logo">
  52. <img src="/images/favicon.ico" /> @viewModel.AppConfig.AppName
  53. </strong>
  54. </div>
  55. <div class="col text-end">
  56. <div class="dropdown profile">
  57. <button class="btn btn-light dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
  58. @User.Identity.Name
  59. </button>
  60. <ul class="dropdown-menu">
  61. <li><a href="/Identity/Account/Manage" class="dropdown-item">내 정보</a></li>
  62. <li>
  63. <form asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="~/" method="post">
  64. <button type="submit" class="dropdown-item">로그아웃</button>
  65. </form>
  66. </li>
  67. </ul>
  68. </div>
  69. </div>
  70. </div>
  71. </header>
  72. <div class="pt-4">
  73. <!-- 내용 -->
  74. @RenderBody()
  75. </div>
  76. </main>
  77. <script src="~/node_modules/jquery/dist/jquery.min.js"></script>
  78. <script src="~/node_modules/jquery-validation/dist/jquery.validate.min.js"></script>
  79. <script src="~/node_modules/jquery-validation/dist/additional-methods.min.js"></script>
  80. <script src="~/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
  81. <script src="~/js/func.js" asp-append-version="true"></script>
  82. <script src="~/js/site.js" asp-append-version="true"></script>
  83. @await RenderSectionAsync("Scripts", required: false)
  84. </body>
  85. </html>