From 6ff59e9b07454c8ffa5f625f901a7e60d02adf65 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Thu, 15 Jan 2026 10:44:30 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20:=20URL=20correcte=20pour=20notifications?= =?UTF-8?q?=20de=20brief=20valid=C3=A9=20depuis=20PDF=20+=20redirect=20bri?= =?UTF-8?q?efs=20vides?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problème 1 : Les notifications de brief validé depuis un PDF renvoyaient vers /projects/xxx/client-brief au lieu de l'URL complète avec dialog et fileIndex. Problème 2 : Les URL /projects/xxx/client-brief pour des briefs non créés affichaient une page vide au lieu de rediriger vers le kanban. Solutions : - Stocker validationDialogUri lors de la validation du brief - Utiliser ce dialogUri dans ContentProvider et Notifications.vue - Rediriger vers le projet parent si brief vide et non validé Co-Authored-By: Claude Sonnet 4.5 --- public/site/blueprints/pages/client-brief.yml | 3 ++- .../site/blueprints/pages/extended-brief.yml | 2 ++ public/site/config/routes/validate-brief.php | 11 ++++++++-- .../src/providers/ContentProvider.php | 11 ++++++++-- src/views/Brief.vue | 21 +++++++++++++++++-- src/views/Notifications.vue | 5 +++++ 6 files changed, 46 insertions(+), 7 deletions(-) diff --git a/public/site/blueprints/pages/client-brief.yml b/public/site/blueprints/pages/client-brief.yml index 9df9168..d7b2100 100644 --- a/public/site/blueprints/pages/client-brief.yml +++ b/public/site/blueprints/pages/client-brief.yml @@ -24,7 +24,6 @@ tabs: type: hidden isValidated: type: hidden - # Champs pour notification "content" (brief validé) validatedBy: type: hidden validatedByName: @@ -35,6 +34,8 @@ tabs: type: hidden validationReadby: type: hidden + validationDialogUri: + type: hidden pdf: label: PDF type: files diff --git a/public/site/blueprints/pages/extended-brief.yml b/public/site/blueprints/pages/extended-brief.yml index 477d4a1..5c96ee2 100644 --- a/public/site/blueprints/pages/extended-brief.yml +++ b/public/site/blueprints/pages/extended-brief.yml @@ -35,6 +35,8 @@ tabs: type: hidden validationReadby: type: hidden + validationDialogUri: + type: hidden pdf: label: PDF type: files diff --git a/public/site/config/routes/validate-brief.php b/public/site/config/routes/validate-brief.php index fb2bf86..5b16c44 100644 --- a/public/site/config/routes/validate-brief.php +++ b/public/site/config/routes/validate-brief.php @@ -15,7 +15,7 @@ return [ $timezone = new DateTimeZone('Europe/Paris'); $dateTime = new DateTime('now', $timezone); - $newPage = $page->update([ + $updateData = [ 'isValidated' => 'true', // Métadonnées pour le système de notifications dérivées 'validatedBy' => (string) $user->uuid(), @@ -23,7 +23,14 @@ return [ 'validatedByEmail' => (string) $user->email(), 'validatedAt' => $dateTime->format('Y-m-d\TH:i:sP'), 'validationReadby' => [], - ]); + ]; + + // Si un dialogUri est fourni (validation depuis PDF), le stocker + if (isset($data->dialogUri) && !empty($data->dialogUri)) { + $updateData['validationDialogUri'] = (string) $data->dialogUri; + } + + $newPage = $page->update($updateData); // Note: Les notifications sont maintenant dérivées. // Plus besoin d'appeler createNotification(). diff --git a/public/site/plugins/notifications/src/providers/ContentProvider.php b/public/site/plugins/notifications/src/providers/ContentProvider.php index 3f09800..94698ec 100644 --- a/public/site/plugins/notifications/src/providers/ContentProvider.php +++ b/public/site/plugins/notifications/src/providers/ContentProvider.php @@ -60,10 +60,10 @@ class ContentProvider implements NotificationProvider ? 'Brief client' : 'Brief étendu'; - $notifications[] = [ + $notification = [ 'id' => 'content-' . (string) $step->uuid(), 'type' => 'content', - 'text' => "Nouveau $stepLabel validé", + 'text' => 'Nouveau ' . strtolower($stepLabel) . ' validé', 'author' => [ 'uuid' => $authorUuid, 'name' => $step->validatedByName()->value() ?? '', @@ -86,6 +86,13 @@ class ContentProvider implements NotificationProvider 'isRead' => in_array($userUuid, $readby), '_briefUri' => $step->uri(), ]; + + // Ajouter le dialogUri si présent (validation depuis PDF) + if ($step->validationDialogUri()->isNotEmpty()) { + $notification['dialogUri'] = $step->validationDialogUri()->value(); + } + + $notifications[] = $notification; } return $notifications; diff --git a/src/views/Brief.vue b/src/views/Brief.vue index acc132f..5d5963e 100644 --- a/src/views/Brief.vue +++ b/src/views/Brief.vue @@ -29,7 +29,7 @@