AssetLoader.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. if (!class_exists('AssetLoader')) {
  3. class AssetLoader
  4. {
  5. public static function loadCSS(array $files): void
  6. {
  7. foreach ($files as $file) {
  8. echo '<link href="' . htmlspecialchars($file) . '" rel="stylesheet">' . PHP_EOL;
  9. }
  10. }
  11. public static function loadJS(array $files): void
  12. {
  13. foreach ($files as $file) {
  14. echo '<script src="' . htmlspecialchars($file) . '"></script>' . PHP_EOL;
  15. }
  16. }
  17. /**
  18. * Charge les scripts spécifiques à une page en fonction des données passées au renderer.
  19. * Attendu: $data est généralement $GLOBALS['view_data'] (tableau) et peut contenir 'page' et 'loaded_map'.
  20. */
  21. public static function loadPageScripts(array $data = []): void
  22. {
  23. $mapping = [
  24. 'projects' => '/assets/js/pages/projects.js',
  25. 'new_project' => '/assets/js/pages/new-project.js',
  26. // 'home' ne charge pas automatiquement l'éditeur sauf si une carte est chargée
  27. ];
  28. $toLoad = [];
  29. if (!empty($data['page']) && isset($mapping[$data['page']])) {
  30. $toLoad[] = $mapping[$data['page']];
  31. }
  32. // Cas particulier: page home avec map chargée (map editor)
  33. if (!empty($data['page']) && $data['page'] === 'home' && !empty($data['loaded_map'])) {
  34. $toLoad[] = '/assets/js/editor/map-editor.js';
  35. }
  36. // Eviter les doublons
  37. $toLoad = array_values(array_unique($toLoad));
  38. self::loadJS($toLoad);
  39. }
  40. }
  41. }