header.php 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <!DOCTYPE html>
  2. <html lang="fr">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Map Generator</title>
  7. <?php AssetLoader::loadCSS(['/assets/bootstrap.min.css', '/assets/bootstrap-icons.min.css', '/assets/styles.css']); ?>
  8. </head>
  9. <body>
  10. <?php
  11. // Démarrer la session si nécessaire pour les messages flash
  12. if (session_status() === PHP_SESSION_NONE) {
  13. session_start();
  14. }
  15. ?>
  16. <header id="global-header">
  17. <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  18. <div class="container-fluid">
  19. <a class="navbar-brand" href="#">
  20. <i class="bi bi-geo-alt-fill me-2"></i>
  21. Map Generator
  22. </a>
  23. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
  24. <span class="navbar-toggler-icon"></span>
  25. </button>
  26. <div class="collapse navbar-collapse" id="navbarNav">
  27. <ul class="navbar-nav ms-auto">
  28. <li class="nav-item dropdown">
  29. <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  30. <i class="bi bi-gear me-1"></i>Paramètres
  31. </a>
  32. <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
  33. <li><a class="dropdown-item" href="/projects/new">
  34. <i class="bi bi-plus-circle me-1"></i>Nouveau projet
  35. </a></li>
  36. <li><a class="dropdown-item" href="#" id="loadBtn">
  37. <i class="bi bi-folder2-open me-1"></i>Charger
  38. </a></li>
  39. <li><a class="dropdown-item" href="#" id="saveBtn">
  40. <i class="bi bi-save me-1"></i>Sauvegarder
  41. </a></li>
  42. <li>
  43. <hr class="dropdown-divider">
  44. </li>
  45. <li><a class="dropdown-item" href="#">À propos</a></li>
  46. </ul>
  47. </li>
  48. </ul>
  49. </div>
  50. </div>
  51. </nav>
  52. </header>
  53. <?php include __DIR__ . '/tools-sidebar.php'; ?>
  54. <div class="main-content">
  55. <!-- Affichage des messages flash (succès / erreur) -->
  56. <div class="container mt-3">
  57. <?php if (!empty($_SESSION['flash']) && is_array($_SESSION['flash'])): ?>
  58. <?php foreach ($_SESSION['flash'] as $flash): ?>
  59. <?php $type = $flash['type'] ?? 'info'; $message = $flash['message'] ?? ''; ?>
  60. <div class="alert alert-<?php echo $type === 'error' ? 'danger' : ($type === 'success' ? 'success' : 'info'); ?> alert-dismissible fade show" role="alert">
  61. <?php echo htmlspecialchars($message); ?>
  62. <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Fermer"></button>
  63. </div>
  64. <?php endforeach; ?>
  65. <?php unset($_SESSION['flash']); ?>
  66. <?php endif; ?>
  67. </div>
  68. <!-- Contenu principal de l'application -->
  69. </div>
  70. <?php AssetLoader::loadJS(['/assets/bootstrap.bundle.min.js', '/assets/js/loader.js']); ?>