| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <?php
- if (!class_exists('AssetLoader')) {
- class AssetLoader
- {
- public static function loadCSS(array $files): void
- {
- foreach ($files as $file) {
- echo '<link href="' . htmlspecialchars($file) . '" rel="stylesheet">' . PHP_EOL;
- }
- }
- public static function loadJS(array $files): void
- {
- foreach ($files as $file) {
- echo '<script src="' . htmlspecialchars($file) . '"></script>' . PHP_EOL;
- }
- }
- /**
- * Charge les scripts spécifiques à une page en fonction des données passées au renderer.
- * Attendu: $data est généralement $GLOBALS['view_data'] (tableau) et peut contenir 'page' et 'loaded_map'.
- */
- public static function loadPageScripts(array $data = []): void
- {
- $mapping = [
- 'projects' => '/assets/js/pages/projects.js',
- 'new_project' => '/assets/js/pages/new-project.js',
- // 'home' ne charge pas automatiquement l'éditeur sauf si une carte est chargée
- ];
- $toLoad = [];
- if (!empty($data['page']) && isset($mapping[$data['page']])) {
- $toLoad[] = $mapping[$data['page']];
- }
- // Cas particulier: page home avec map chargée (map editor)
- if (!empty($data['page']) && $data['page'] === 'home' && !empty($data['loaded_map'])) {
- $toLoad[] = '/assets/js/editor/map-editor.js';
- }
- // Eviter les doublons
- $toLoad = array_values(array_unique($toLoad));
- self::loadJS($toLoad);
- }
- }
- }
|