tools-sidebar.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * Partiel : Barre latérale des outils (extrait de header.php)
  4. */
  5. ?>
  6. <div class="sidebar">
  7. <nav class="nav flex-column">
  8. <!-- Outils de dessin -->
  9. <div class="tool-group">
  10. <h6><i class="bi bi-brush me-1"></i>Historique</h6>
  11. <a class="nav-link" href="#" id="header-undoBtn">
  12. <i class="bi bi-arrow-counterclockwise me-2"></i>Annuler
  13. </a>
  14. <a class="nav-link" href="#" id="header-redoBtn">
  15. <i class="bi bi-arrow-clockwise me-2"></i>Rétablir
  16. </a>
  17. <hr>
  18. <a class="nav-link" href="#" id="selectTool">
  19. <i class="bi bi-cursor me-2"></i>Sélection
  20. </a>
  21. </div>
  22. <!-- Options de type de tuile (visible quand une tuile est sélectionnée) -->
  23. <div class="tool-group" id="tile-type-tool" style="display:none;">
  24. <h6><i class="bi bi-grid-1x2-fill me-1"></i>Type de tuile</h6>
  25. <div id="tileTypeOptions" class="d-flex flex-column gap-2">
  26. <?php
  27. // Récupérer le template depuis les données de la vue
  28. $template = 'neutral'; // template par défaut
  29. if (isset($map_data) && isset($map_data['template'])) {
  30. $template = $map_data['template'];
  31. } elseif (isset($GLOBALS['view_data']['map_data']['template'])) {
  32. $template = $GLOBALS['view_data']['map_data']['template'];
  33. }
  34. // Charger dynamiquement les SVG depuis mapModels/{template}/assets/
  35. $assetsDir = __DIR__ . '/../../../mapModels/' . $template . '/assets';
  36. $svgFiles = glob($assetsDir . '/*.svg');
  37. if (empty($svgFiles)) {
  38. // Fallback vers neutral si aucun fichier trouvé
  39. $assetsDir = __DIR__ . '/../../../mapModels/neutral/assets';
  40. $svgFiles = glob($assetsDir . '/*.svg');
  41. }
  42. foreach ($svgFiles as $svgFile) {
  43. $filename = basename($svgFile, '.svg');
  44. $tileType = $filename;
  45. $svgContent = file_get_contents($svgFile);
  46. // Modifier les attributs du SVG pour l'adapter à la taille des boutons
  47. $svgContent = preg_replace('/width="[^"]*"/', 'width="36"', $svgContent);
  48. $svgContent = preg_replace('/height="[^"]*"/', 'height="24"', $svgContent);
  49. $svgContent = preg_replace('/viewBox="[^"]*"/', 'viewBox="0 0 36 24"', $svgContent);
  50. // Capitaliser le nom pour l'affichage
  51. $displayName = ucfirst(str_replace('-', ' ', $tileType));
  52. echo '<button type="button" class="btn btn-light tile-type-option d-flex align-items-center gap-2" data-type="' . htmlspecialchars($tileType) . '" title="' . htmlspecialchars($displayName) . '" aria-label="' . htmlspecialchars($displayName) . '">' . "\n";
  53. echo ' ' . $svgContent . "\n";
  54. echo ' <span>' . htmlspecialchars($displayName) . '</span>' . "\n";
  55. echo '</button>' . "\n";
  56. }
  57. ?>
  58. </div>
  59. </div>
  60. </nav>
  61. </div>