Ajout masquage de projets pour utilisateurs Pochet
All checks were successful
Deploy Preprod / Build and Deploy to Preprod (push) Successful in 28s
All checks were successful
Deploy Preprod / Build and Deploy to Preprod (push) Successful in 28s
Backend : - Blueprint pochet : champ hiddenProjects - Route API toggle-hidden-project.php - Controller site.php : retourne hiddenProjects + uuid dans projects Frontend : - Store user : hiddenProjects, visibleProjects, toggleHiddenProject() - Store projects : filtrage automatique des projets masqués - Store api : fonction toggleHiddenProject() - Account.vue : section projets avec cartes horizontales + boutons toggle - Affichage pour Pochet (avec toggle) et Client (sans toggle) - Section client masquée pour Pochet Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
7ca72c6d82
commit
30b7697c64
8 changed files with 263 additions and 5 deletions
|
|
@ -19,3 +19,8 @@ fields:
|
|||
type: pages
|
||||
query: page('projects').children
|
||||
width: 3/4
|
||||
hiddenProjects:
|
||||
label: Projets masqués
|
||||
type: pages
|
||||
query: page('projects').children
|
||||
width: 3/4
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ return [
|
|||
require(__DIR__ . '/routes/logout.php'),
|
||||
require(__DIR__ . '/routes/login.php'),
|
||||
require(__DIR__ . '/routes/toggle-favorite.php'),
|
||||
require(__DIR__ . '/routes/toggle-hidden-project.php'),
|
||||
require(__DIR__ . '/routes/upload-images.php'),
|
||||
require(__DIR__ . '/routes/save-page.php'),
|
||||
require(__DIR__ . '/routes/save-file.php'),
|
||||
|
|
|
|||
61
public/site/config/routes/toggle-hidden-project.php
Normal file
61
public/site/config/routes/toggle-hidden-project.php
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'pattern' => '/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()
|
||||
];
|
||||
}
|
||||
}
|
||||
];
|
||||
|
|
@ -33,9 +33,18 @@ return function ($page, $kirby, $site) {
|
|||
"title" => (string) $project->title(),
|
||||
"uri" => (string) $project->uri(),
|
||||
"step" => (string) $project->getStepLabel(),
|
||||
"uuid" => (string) $project->uuid(),
|
||||
];
|
||||
})->data;
|
||||
}
|
||||
|
||||
if ($kirby->user()->hiddenProjects()->exists() && $kirby->user()->hiddenProjects()->isNotEmpty()) {
|
||||
$userData['hiddenProjects'] = $kirby->user()->hiddenProjects()->toPages()->map(function ($project) {
|
||||
return (string) $project->uuid();
|
||||
})->data;
|
||||
} else {
|
||||
$userData['hiddenProjects'] = [];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue