'/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 les projets masqués actuels $hiddenProjects = $user->hiddenProjects()->toPages(); $hiddenProjectsArray = []; foreach ($hiddenProjects as $project) { $hiddenProjectsArray[] = 'page://' . $project->uuid(); } // Toggle: ajouter ou retirer le projet $projectPage = Find::page($projectUuid); $projectRef = 'page://' . $projectPage->uuid(); $index = array_search($projectRef, $hiddenProjectsArray); if ($index !== false) { // Projet déjà masqué, on le retire unset($hiddenProjectsArray[$index]); $action = 'shown'; } else { // Projet non masqué, on l'ajoute $hiddenProjectsArray[] = $projectRef; $action = 'hidden'; } // Réindexer le tableau $hiddenProjectsArray = array_values($hiddenProjectsArray); // Encoder en YAML pour Kirby $yaml = Data::encode($hiddenProjectsArray, 'yaml'); // Mettre à jour l'utilisateur $user->update([ 'hiddenProjects' => $yaml ]); return [ 'status' => 'success', 'action' => $action, 'hiddenProjects' => $hiddenProjectsArray ]; } catch (\Throwable $th) { return [ 'status' => 'error', 'message' => 'Impossible de modifier les projets masqués : ' . $th->getMessage() . ' in file ' . $th->getFile() . ' line ' . $th->getLine() ]; } } ];