diff --git a/public/site/models/project.php b/public/site/models/project.php index 583bfeb..de53a50 100644 --- a/public/site/models/project.php +++ b/public/site/models/project.php @@ -142,19 +142,19 @@ class ProjectPage extends NotificationsPage { if ($child->hasChildren()) { $files['dynamic'] = []; - + foreach ($child->children() as $key => $track) { $trackData = [ 'title' => (string) $track->title(), 'slug' => (string) $track->slug(), 'backgroundColor' => (string) $track->backgroundColor(), 'files' => [], - ]; - + ]; + foreach ($track->views()->toFiles() as $view) { $trackData['files'][] = getFileData($view, true); } - + if ($track->group()->isNotEmpty()) { $files['dynamic'][$track->group()->value()][] = $trackData; } else { @@ -162,12 +162,36 @@ class ProjectPage extends NotificationsPage { } } + // Récupérer l'ordre des groupes depuis le champ groups + $orderedGroups = $child->groups()->split(); + + // Réorganiser $files['dynamic'] selon l'ordre défini + if (!empty($orderedGroups)) { + $orderedDynamic = []; + + foreach ($orderedGroups as $group) { + if (isset($files['dynamic'][$group])) { + $orderedDynamic[$group] = $files['dynamic'][$group]; + } + } + + // Ajouter les groupes non définis dans le champ à la fin + foreach ($files['dynamic'] as $group => $tracks) { + if (!isset($orderedDynamic[$group])) { + $orderedDynamic[$group] = $tracks; + } + } + + $files['dynamic'] = $orderedDynamic; + } + + // Toujours mettre "Autres pistes" à la fin if (isset($files['dynamic']['Autres pistes'])) { $others = $files['dynamic']['Autres pistes']; unset($files['dynamic']['Autres pistes']); $files['dynamic']['Autres pistes'] = $others; } - + } if ($child->rawGlass()->isNotEmpty() || $child->finishedGlass()->isNotEmpty()) { @@ -177,7 +201,7 @@ class ProjectPage extends NotificationsPage { if ($child->rawGlass()->isNotEmpty()) { $files['static']['rawGlass'] = getFileData($child->rawGlass()->toFile()); } - + if ($child->finishedGlass()->isNotEmpty()) { $files['static']['finishedGlass'] = getFileData($child->finishedGlass()->toFile()); }