Changeset fa0fbaf for KernelRecordsMVC.Web/Views/Shared/_Layout.cshtml
- Timestamp:
- 09/01/26 06:11:34 (4 weeks ago)
- Branches:
- main
- Children:
- d2eccb3
- Parents:
- 08aefc6
- File:
-
- 1 edited
-
KernelRecordsMVC.Web/Views/Shared/_Layout.cshtml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
KernelRecordsMVC.Web/Views/Shared/_Layout.cshtml
r08aefc6 rfa0fbaf 1 <!DOCTYPE html> 1 @using Microsoft.AspNetCore.Http 2 3 <!DOCTYPE html> 4 2 5 <html lang="en"> 3 6 <head> 4 <meta charset="utf-8"/> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 6 <title>@ViewData["Title"] - KernelRecordsMVC</title> 7 <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css"/> 8 <link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/> 9 <link rel="stylesheet" href="~/KernelRecordsMVC.styles.css" asp-append-version="true"/> 7 <meta charset="utf-8" /> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 9 10 11 <title>@ViewData["Title"] - Kernel Records</title> 12 13 <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" /> 14 15 10 16 </head> 17 11 18 <body> 12 <header> 13 <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> 14 <div class="container-fluid"> 15 <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">KernelRecordsMVC</a> 16 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent" 17 aria-expanded="false" aria-label="Toggle navigation"> 18 <span class="navbar-toggler-icon"></span> 19 </button> 20 <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"> 21 <ul class="navbar-nav flex-grow-1"> 22 <li class="nav-item"> 23 <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a> 24 </li> 25 <li class="nav-item"> 26 <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a> 27 </li> 28 </ul> 19 20 <header class="site-header"> 21 22 23 <!-- ===================================================== 24 MAIN NAVBAR 25 ===================================================== --> 26 27 <nav class="navbar"> 28 29 <div class="navbar-container"> 30 31 <!-- LOGO --> 32 33 <a class="brand" 34 asp-controller="Home" 35 asp-action="Index"> 36 37 <span class="brand-main"> 38 KERNEL 39 </span> 40 41 <span class="brand-sub"> 42 RECORDS 43 </span> 44 45 </a> 46 47 48 <!-- MOBILE MENU BUTTON --> 49 50 <button class="mobile-menu-button" 51 type="button" 52 aria-label="Toggle navigation" 53 onclick="toggleMobileMenu()"> 54 55 ☰ 56 57 </button> 58 59 60 <!-- NAVBAR CONTENT --> 61 62 <div class="navbar-content" 63 id="navbarContent"> 64 65 66 <!-- ================================================= 67 MAIN NAVIGATION 68 ================================================= --> 69 70 <ul class="nav-links"> 71 72 <!-- Browse --> 73 74 <li> 75 76 <a asp-controller="Release" 77 asp-action="Index"> 78 79 Browse 80 81 </a> 82 83 </li> 84 85 86 <!-- Top Sellers --> 87 88 <li> 89 90 <a asp-controller="TopSellers" 91 asp-action="Index"> 92 93 Top Sellers 94 95 </a> 96 97 </li> 98 99 100 <!-- Artists --> 101 102 <li> 103 104 <a asp-controller="Artist" 105 asp-action="Index"> 106 107 Artists 108 109 </a> 110 111 </li> 112 113 114 <!-- Genres --> 115 116 <li class="nav-dropdown"> 117 118 <a href="#" 119 class="dropdown-toggle"> 120 121 Genres 122 123 <span class="arrow"> 124 ⌄ 125 </span> 126 127 </a> 128 129 130 <div class="dropdown-menu"> 131 132 <a asp-controller="Release" 133 asp-action="Index" 134 asp-route-genre="Rock"> 135 136 Rock 137 138 </a> 139 140 <a asp-controller="Release" 141 asp-action="Index" 142 asp-route-genre="Pop"> 143 144 Pop 145 146 </a> 147 148 <a asp-controller="Release" 149 asp-action="Index" 150 asp-route-genre="Hip-Hop"> 151 152 Hip-Hop 153 154 </a> 155 156 <a asp-controller="Release" 157 asp-action="Index" 158 asp-route-genre="Jazz"> 159 160 Jazz 161 162 </a> 163 164 <a asp-controller="Release" 165 asp-action="Index" 166 asp-route-genre="Electronic"> 167 168 Electronic 169 170 </a> 171 172 <a asp-controller="Release" 173 asp-action="Index"> 174 175 All Genres 176 177 </a> 178 179 </div> 180 181 </li> 182 183 184 <!-- Sale --> 185 186 <li> 187 188 <a asp-controller="Sale" 189 asp-action="Index" 190 class="nav-sale"> 191 192 Sale 193 194 </a> 195 196 </li> 197 198 </ul> 199 200 201 <!-- ================================================= 202 SEARCH 203 ================================================= --> 204 205 <form class="navbar-search" 206 asp-controller="Release" 207 asp-action="Index" 208 method="get"> 209 210 <input type="text" 211 name="search" 212 placeholder="Search releases..." 213 autocomplete="off" /> 214 215 <button type="submit" 216 aria-label="Search"> 217 218 <span> 219 ⌕ 220 </span> 221 222 </button> 223 224 </form> 225 226 227 <!-- ================================================= 228 RIGHT SIDE ACTIONS 229 ================================================= --> 230 231 <div class="navbar-actions"> 232 233 234 <!-- ================================================= 235 WISHLIST 236 ================================================= --> 237 238 <a class="nav-icon" 239 asp-controller="Wishlist" 240 asp-action="Index" 241 title="Wishlist"> 242 243 <span class="icon"> 244 ♡ 245 </span> 246 247 <span class="icon-label"> 248 Wishlist 249 </span> 250 251 </a> 252 253 254 <!-- ================================================= 255 CART 256 ================================================= --> 257 258 <a class="nav-icon" 259 asp-controller="Order" 260 asp-action="Cart" 261 title="Shopping Cart"> 262 263 <span class="icon cart-icon"> 264 🛒 265 </span> 266 267 <span class="icon-label"> 268 Cart 269 </span> 270 271 </a> 272 273 274 <!-- ================================================= 275 ACCOUNT 276 ================================================= --> 277 278 @if (Context.Session.GetInt32("UserId") != null) 279 { 280 281 <!-- LOGGED IN --> 282 283 <div class="account-dropdown"> 284 285 286 <button class="account-button" 287 type="button"> 288 289 <span class="user-icon"> 290 ● 291 </span> 292 293 <span class="account-name"> 294 295 @Context.Session.GetString("Username") 296 297 </span> 298 299 <span class="arrow"> 300 ⌄ 301 </span> 302 303 </button> 304 305 306 <!-- ACCOUNT MENU --> 307 308 <div class="account-menu"> 309 310 311 <!-- PROFILE --> 312 313 <a asp-controller="Account" 314 asp-action="Profile"> 315 316 <span> 317 👤 318 </span> 319 320 My Profile 321 322 </a> 323 324 325 <!-- ORDERS --> 326 327 <a asp-controller="Order" 328 asp-action="Cart"> 329 330 <span> 331 📦 332 </span> 333 334 My Orders 335 336 </a> 337 338 339 <!-- WISHLIST --> 340 341 <a asp-controller="Wishlist" 342 asp-action="Index"> 343 344 <span> 345 ♡ 346 </span> 347 348 My Wishlist 349 350 </a> 351 352 353 <!-- ADMIN --> 354 355 @if (Context.Session.GetString("Role") == "Admin") 356 { 357 358 <div class="menu-divider"></div> 359 360 361 <a asp-controller="Admin" 362 asp-action="Index" 363 class="admin-link"> 364 365 <span> 366 ⚙ 367 </span> 368 369 Admin Dashboard 370 371 </a> 372 373 } 374 375 376 <div class="menu-divider"></div> 377 378 379 <!-- LOGOUT --> 380 381 <form asp-controller="Account" 382 asp-action="Logout" 383 method="post"> 384 385 @Html.AntiForgeryToken() 386 387 <button type="submit" 388 class="logout-button"> 389 390 <span>↪</span> 391 392 Logout 393 394 </button> 395 396 </form> 397 398 399 </div> 400 401 </div> 402 403 } 404 else 405 { 406 407 <!-- ================================================= 408 NOT LOGGED IN 409 ================================================= --> 410 411 <div class="auth-buttons"> 412 413 414 <a asp-controller="Account" 415 asp-action="Login" 416 class="login-button"> 417 418 Login 419 420 </a> 421 422 423 <a asp-controller="Account" 424 asp-action="Register" 425 class="register-button"> 426 427 Register 428 429 </a> 430 431 432 </div> 433 434 } 435 29 436 </div> 437 30 438 </div> 31 </nav> 439 440 </div> 441 442 </nav> 443 444 445 <!-- ===================================================== 446 ANNOUNCEMENT BAR 447 ===================================================== --> 448 449 <div class="announcement-bar"> 450 451 <span> 452 FREE SHIPPING ON ORDERS OVER €50 453 </span> 454 455 <span class="announcement-separator"> 456 • 457 </span> 458 459 <span> 460 NEW VINYL EVERY WEEK 461 </span> 462 463 </div> 464 465 32 466 </header> 33 <div class="container"> 34 <main role="main" class="pb-3"> 35 @RenderBody() 36 </main> 467 468 <!-- ========================================================= 469 MAIN CONTENT 470 ========================================================= --> 471 472 <main class="main-content"> 473 474 475 @RenderBody() 476 477 478 </main> 479 480 <!-- ========================================================= 481 FOOTER 482 ========================================================= --> 483 484 <footer class="site-footer"> 485 486 487 <div class="footer-container"> 488 489 490 <!-- BRAND --> 491 492 <div class="footer-brand"> 493 494 <div class="footer-logo"> 495 KERNEL RECORDS 496 </div> 497 498 <p> 499 Your destination for vinyl, CDs and cassettes. 500 </p> 501 502 </div> 503 504 505 <!-- SHOP --> 506 507 <div class="footer-column"> 508 509 <h4> 510 Shop 511 </h4> 512 513 514 <a asp-controller="Release" 515 asp-action="Index"> 516 517 Releases 518 519 </a> 520 521 522 <a asp-controller="Release" 523 asp-action="Index"> 524 525 New Releases 526 527 </a> 528 529 530 <a asp-controller="Artist" 531 asp-action="Index"> 532 533 Artists 534 535 </a> 536 537 </div> 538 539 540 <!-- ACCOUNT --> 541 542 <div class="footer-column"> 543 544 <h4> 545 Account 546 </h4> 547 548 549 @if (Context.Session.GetInt32("UserId") != null) 550 { 551 552 <a asp-controller="Account" 553 asp-action="Profile"> 554 555 My Profile 556 557 </a> 558 559 560 <a asp-controller="Order" 561 asp-action="Cart"> 562 563 My Orders 564 565 </a> 566 567 568 <a asp-controller="Wishlist" 569 asp-action="Index"> 570 571 Wishlist 572 573 </a> 574 575 } 576 else 577 { 578 579 <a asp-controller="Account" 580 asp-action="Login"> 581 582 Login 583 584 </a> 585 586 587 <a asp-controller="Account" 588 asp-action="Register"> 589 590 Register 591 592 </a> 593 594 } 595 596 </div> 597 598 599 <!-- HELP --> 600 601 <div class="footer-column"> 602 603 <h4> 604 Help 605 </h4> 606 607 <a href="#"> 608 Shipping 609 </a> 610 611 <a href="#"> 612 Returns 613 </a> 614 615 <a href="#"> 616 Contact 617 </a> 618 619 </div> 620 37 621 </div> 38 622 39 <footer class="border-top footer text-muted"> 40 <div class="container"> 41 © 2026 - KernelRecordsMVC - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a> 42 </div> 623 624 <!-- FOOTER BOTTOM --> 625 626 <div class="footer-bottom"> 627 628 <span> 629 © @DateTime.Now.Year Kernel Records 630 </span> 631 632 <span> 633 All rights reserved. 634 </span> 635 636 </div> 637 638 43 639 </footer> 44 <script src="~/lib/jquery/dist/jquery.min.js"></script> 45 <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> 46 <script src="~/js/site.js" asp-append-version="true"></script> 47 @await RenderSectionAsync("Scripts", required: false) 640 641 <!-- ========================================================= 642 MOBILE NAVIGATION SCRIPT 643 ========================================================= --> 644 645 <script> 646 647 function toggleMobileMenu() 648 { 649 const menu = 650 document.getElementById("navbarContent"); 651 652 menu.classList.toggle("mobile-open"); 653 } 654 655 656 // Close mobile menu when clicking outside 657 658 document.addEventListener("click", function (event) 659 { 660 const menu = 661 document.getElementById("navbarContent"); 662 663 const button = 664 document.querySelector(".mobile-menu-button"); 665 666 667 if (!menu.contains(event.target) && 668 !button.contains(event.target)) 669 { 670 menu.classList.remove("mobile-open"); 671 } 672 673 }); 674 675 </script> 676 677 @await RenderSectionAsync( 678 "Scripts", 679 required: false) 680 48 681 </body> 49 682 </html>
Note:
See TracChangeset
for help on using the changeset viewer.
