'/toggle-hidden-project.json', 'method' => 'POST', 'action' => function() { $json = file_get_contents("php://input"); $data = json_decode($json); try { $user = kirby()->user(); $projectUuid = $data->projectUuid; // Récupérer la collection des projets masqués actuels $hiddenProjects = $user->hiddenProjects()->toPages(); // Trouver le projet à toggle $projectPage = Find::page($projectUuid); if (!$projectPage) { throw new Exception('Projet introuvable'); } // Toggle: ajouter ou retirer le projet de la collection if ($hiddenProjects->has($projectPage)) { $hiddenProjects->remove($projectPage); $action = 'shown'; } else { $hiddenProjects->add($projectPage); $action = 'hidden'; } // Convertir la collection en array puis en YAML $array = $hiddenProjects->toArray(); $yaml = Data::encode($array, 'yaml'); // Mettre à jour l'utilisateur $user->update([ 'hiddenProjects' => $yaml ]); // Retourner les UUIDs pour le frontend $hiddenProjectsUuids = []; foreach ($hiddenProjects as $project) { $hiddenProjectsUuids[] = $project->uuid(); } return [ 'status' => 'success', 'action' => $action, 'hiddenProjects' => $hiddenProjectsUuids ]; } catch (\Throwable $th) { return [ 'status' => 'error', 'message' => 'Impossible de modifier les projets masqués : ' . $th->getMessage() . ' in file ' . $th->getFile() . ' line ' . $th->getLine() ]; } } ];