From a8fe049ecd3ee56b9c9535de9577196c4bfe8bf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Tue, 4 Jan 2022 17:00:31 +0100 Subject: [PATCH] notification: add more variable in twig template --- ...nderer.php => ActivityNotificationHandler.php} | 15 +++++++++++++-- .../views/Activity/showInNotification.html.twig | 12 ++++++++++-- ... => AccompanyingPeriodNotificationHandler.php} | 15 +++++++++++++-- .../showInNotification.html.twig | 15 ++++++++++++--- .../config/services/notification.yaml | 2 +- 5 files changed, 49 insertions(+), 10 deletions(-) rename src/Bundle/ChillActivityBundle/Notification/{ActivityNotificationRenderer.php => ActivityNotificationHandler.php} (60%) rename src/Bundle/ChillPersonBundle/Notification/{AccompanyingPeriodNotificationRenderer.php => AccompanyingPeriodNotificationHandler.php} (57%) diff --git a/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationRenderer.php b/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php similarity index 60% rename from src/Bundle/ChillActivityBundle/Notification/ActivityNotificationRenderer.php rename to src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php index 2d3d333d9..31e68f95b 100644 --- a/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationRenderer.php +++ b/src/Bundle/ChillActivityBundle/Notification/ActivityNotificationHandler.php @@ -12,11 +12,19 @@ declare(strict_types=1); namespace Chill\ActivityBundle\Notification; use Chill\ActivityBundle\Entity\Activity; +use Chill\ActivityBundle\Repository\ActivityRepository; use Chill\MainBundle\Entity\Notification; use Chill\MainBundle\Notification\NotificationHandlerInterface; -final class ActivityNotificationRenderer implements NotificationHandlerInterface +final class ActivityNotificationHandler implements NotificationHandlerInterface { + private ActivityRepository $activityRepository; + + public function __construct(ActivityRepository $activityRepository) + { + $this->activityRepository = $activityRepository; + } + public function getTemplate() { return '@ChillActivity/Activity/showInNotification.html.twig'; @@ -24,7 +32,10 @@ final class ActivityNotificationRenderer implements NotificationHandlerInterface public function getTemplateData(Notification $notification) { - return ['notification' => $notification]; + return [ + 'notification' => $notification, + 'activity' => $this->activityRepository->find($notification->getRelatedEntityId()), + ]; } public function supports(Notification $notification, array $options = []): bool diff --git a/src/Bundle/ChillActivityBundle/Resources/views/Activity/showInNotification.html.twig b/src/Bundle/ChillActivityBundle/Resources/views/Activity/showInNotification.html.twig index 79badfe26..af1b5d884 100644 --- a/src/Bundle/ChillActivityBundle/Resources/views/Activity/showInNotification.html.twig +++ b/src/Bundle/ChillActivityBundle/Resources/views/Activity/showInNotification.html.twig @@ -1,2 +1,10 @@ - -Go to Activity +{# available variables: notification, activity #} +{% if activity is not null %} + {% if is_granted('CHILL_ACTIVITY_SEE', activity) %} + Go to Activity + {% else %} + you are not allowed to see it details. This is the minimal data: {{ activity.id }} + {% endif %} +{% else %} + You get notified of an activity which does not exists any more. +{% endif %} diff --git a/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationRenderer.php b/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php similarity index 57% rename from src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationRenderer.php rename to src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php index 934f3f1c0..0297c5f39 100644 --- a/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationRenderer.php +++ b/src/Bundle/ChillPersonBundle/Notification/AccompanyingPeriodNotificationHandler.php @@ -14,9 +14,17 @@ namespace Chill\PersonBundle\Notification; use Chill\MainBundle\Entity\Notification; use Chill\MainBundle\Notification\NotificationHandlerInterface; use Chill\PersonBundle\Entity\AccompanyingPeriod; +use Chill\PersonBundle\Repository\AccompanyingPeriodRepository; -final class AccompanyingPeriodNotificationRenderer implements NotificationHandlerInterface +final class AccompanyingPeriodNotificationHandler implements NotificationHandlerInterface { + private AccompanyingPeriodRepository $accompanyingPeriodRepository; + + public function __construct(AccompanyingPeriodRepository $accompanyingPeriodRepository) + { + $this->accompanyingPeriodRepository = $accompanyingPeriodRepository; + } + public function getTemplate() { return 'ChillPersonBundle:AccompanyingPeriod:showInNotification.html.twig'; @@ -24,7 +32,10 @@ final class AccompanyingPeriodNotificationRenderer implements NotificationHandle public function getTemplateData(Notification $notification) { - return ['notification' => $notification]; + return [ + 'notification' => $notification, + 'period' => $this->accompanyingPeriodRepository->find($notification->getRelatedEntityId()), + ]; } public function supports(Notification $notification) diff --git a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/showInNotification.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/showInNotification.html.twig index d92de8cba..92eb251b0 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/showInNotification.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/showInNotification.html.twig @@ -1,3 +1,12 @@ - - Go to Acc. period. - +{# variables availables: notification, period. #} +{% if period is not null %} + {% if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_SEE', period) %} + + Go to Acc. period. + + {% else %} + You are getting a notification for a period you are not allowed to see. This is the minimal details: {{ period.id }} + {% endif %} +{% else %} +
You are getting a notification for a period which does not exists any more
+{% endif %} diff --git a/src/Bundle/ChillPersonBundle/config/services/notification.yaml b/src/Bundle/ChillPersonBundle/config/services/notification.yaml index c5d04f983..a7c9f4142 100644 --- a/src/Bundle/ChillPersonBundle/config/services/notification.yaml +++ b/src/Bundle/ChillPersonBundle/config/services/notification.yaml @@ -1,4 +1,4 @@ services: - Chill\PersonBundle\Notification\AccompanyingPeriodNotificationRenderer: + Chill\PersonBundle\Notification\AccompanyingPeriodNotificationHandler: autowire: true autoconfigure: true