Refonte du système de notifications : passage aux notifications dérivées
Remplace le système de notifications stockées par un système de providers qui dérivent les notifications des données existantes (commentaires, réponses, demandes de projet, demandes de rendez-vous, validations de brief). - Ajout du NotificationCollector et de l'interface NotificationProvider - Création de 5 providers : Comment, Reply, ProjectRequest, AppointmentRequest, Content - Métadonnées de notifications stockées directement sur les entités source - Nouvelles routes mark-as-read et mark-all-read - Mise à jour du frontend pour le nouveau système - Route de migration pour les données existantes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
c68b51f639
commit
a7d315942a
26 changed files with 1406 additions and 137 deletions
46
public/site/plugins/notifications/routes/mark-as-read.php
Normal file
46
public/site/plugins/notifications/routes/mark-as-read.php
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Route pour marquer une notification comme lue.
|
||||
* Délègue au bon provider selon le type de notification.
|
||||
*/
|
||||
return [
|
||||
'pattern' => '(:all)mark-notification-read.json',
|
||||
'method' => 'POST',
|
||||
'action' => function () {
|
||||
$json = file_get_contents('php://input');
|
||||
$data = json_decode($json);
|
||||
|
||||
if (!$data || !isset($data->type) || !isset($data->id)) {
|
||||
return json_encode([
|
||||
'status' => 'error',
|
||||
'message' => 'Missing required fields: type, id'
|
||||
]);
|
||||
}
|
||||
|
||||
try {
|
||||
$collector = kirby()->option('adrienpayet.pdc-notifications.collector');
|
||||
|
||||
if (!$collector) {
|
||||
throw new Exception('NotificationCollector not initialized');
|
||||
}
|
||||
|
||||
$success = $collector->markAsRead(
|
||||
$data->type,
|
||||
$data->id,
|
||||
(array) $data,
|
||||
kirby()->user()
|
||||
);
|
||||
|
||||
return json_encode([
|
||||
'status' => $success ? 'success' : 'error',
|
||||
'message' => $success ? 'Notification marked as read' : 'Failed to mark notification as read'
|
||||
]);
|
||||
} catch (\Throwable $th) {
|
||||
return json_encode([
|
||||
'status' => 'error',
|
||||
'message' => $th->getMessage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
];
|
||||
Loading…
Add table
Add a link
Reference in a new issue