mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 09:18:24 +00:00 
			
		
		
		
	Compare commits
	
		
			15 Commits
		
	
	
		
			issue435_n
			...
			issue444_m
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bb86d04e52 | |||
| 4c704734cd | |||
| 0ffd6a857c | |||
| aebb21935b | |||
| f2221565c5 | |||
| 9ead38ee22 | |||
| 6402962990 | |||
| 9e9fa5039f | |||
| e6d503a1e2 | |||
| 4920142540 | |||
|  | eee38e9577 | ||
|  | 1f5d529d33 | ||
|  | c19099e76c | ||
|  | 692343aae4 | ||
|  | 4dd9bc1123 | 
							
								
								
									
										13
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -9,9 +9,17 @@ and this project adheres to | ||||
| * date versioning for test releases | ||||
|  | ||||
| ## Unreleased | ||||
| * AddPersons: remove ul-li html tags from AddPersons (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/419) | ||||
|  | ||||
| <!-- write down unreleased development here --> | ||||
|  | ||||
| ## Test releases | ||||
|  | ||||
| ### test release 2022-02-14 | ||||
|  | ||||
| * AddPersons: remove ul-li html tags from AddPersons (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/419) | ||||
| * [doc-generator] do not set required fields for mainPerson, person1, person2 (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement#456) | ||||
| * [doc-generation] add age and obele in the mainPerson, person1 and person2 list + add obele in person renderString if addAge (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/370) | ||||
| * [person] accompanying course work: fix on-the-fly update of thirdParty | ||||
| * fix normalisation of accompanying course requestor api (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/378) | ||||
| * [person] add a returnPath when clicking on some Person or ThirdParty badge (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/427) | ||||
| * [person] accompanying course work: fix on-the-fly update of thirdParty  | ||||
| @@ -30,8 +38,7 @@ and this project adheres to | ||||
| * [address]: Correction residential address 'depuis le' (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/459) | ||||
| * [Documents]: List view adapted to display more information (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/414) | ||||
| * [Thirdparty_contact]: address blurred if confidential in view page (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/450) | ||||
|  | ||||
| ## Test releases | ||||
| * [homepage_widget]: If no sender then display as 'notification automatique' (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/435) | ||||
|  | ||||
| ### test release 2021-02-01 | ||||
|  | ||||
|   | ||||
| @@ -15,19 +15,13 @@ use Chill\ActivityBundle\Security\Authorization\ActivityVoter; | ||||
| use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class PersonMenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     /** | ||||
|      * @var AuthorizationCheckerInterface | ||||
|      */ | ||||
|     protected $authorizationChecker; | ||||
|     protected AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     protected $translator; | ||||
|     protected TranslatorInterface $translator; | ||||
|  | ||||
|     public function __construct( | ||||
|         AuthorizationCheckerInterface $authorizationChecker, | ||||
|   | ||||
| @@ -16,29 +16,17 @@ use Chill\TaskBundle\Templating\UI\CountNotificationTask; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class UserMenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     /** | ||||
|      * @var AuthorizationCheckerInterface | ||||
|      */ | ||||
|     public $authorizationChecker; | ||||
|     public AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     /** | ||||
|      * @var CountNotificationTask | ||||
|      */ | ||||
|     public $counter; | ||||
|     public CountNotificationTask $counter; | ||||
|  | ||||
|     /** | ||||
|      * @var TokenStorageInterface | ||||
|      */ | ||||
|     public $tokenStorage; | ||||
|     public TokenStorageInterface $tokenStorage; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     public $translator; | ||||
|     public TranslatorInterface $translator; | ||||
|  | ||||
|     public function __construct( | ||||
|         CountNotificationTask $counter, | ||||
|   | ||||
| @@ -14,14 +14,18 @@ namespace Chill\CalendarBundle\Menu; | ||||
| use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Chill\MainBundle\Security\Authorization\AuthorizationHelper; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; | ||||
| use Symfony\Component\Security\Core\Security; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     protected AuthorizationHelper $authorizationHelper; | ||||
|  | ||||
|     protected Security $security; | ||||
|  | ||||
|     protected TokenStorageInterface $tokenStorage; | ||||
|  | ||||
|     protected TranslatorInterface $translator; | ||||
| @@ -29,11 +33,13 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface | ||||
|     public function __construct( | ||||
|         TokenStorageInterface $tokenStorage, | ||||
|         AuthorizationHelper $authorizationHelper, | ||||
|         TranslatorInterface $translator | ||||
|         TranslatorInterface $translator, | ||||
|         Security $security | ||||
|     ) { | ||||
|         $this->translator = $translator; | ||||
|         $this->authorizationHelper = $authorizationHelper; | ||||
|         $this->tokenStorage = $tokenStorage; | ||||
|         $this->security = $security; | ||||
|     } | ||||
|  | ||||
|     public function buildMenu($menuId, MenuItem $menu, array $parameters) | ||||
| @@ -41,12 +47,14 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface | ||||
|         $period = $parameters['accompanyingCourse']; | ||||
|  | ||||
|         if (AccompanyingPeriod::STEP_DRAFT !== $period->getStep()) { | ||||
|             $menu->addChild($this->translator->trans('Calendar'), [ | ||||
|                 'route' => 'chill_calendar_calendar_list', | ||||
|                 'routeParameters' => [ | ||||
|                     'accompanying_period_id' => $period->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 35]); | ||||
|             if ($this->security->isGranted(AccompanyingPeriodVoter::SEE, $period)) { | ||||
|                 $menu->addChild($this->translator->trans('Calendar'), [ | ||||
|                     'route' => 'chill_calendar_calendar_list', | ||||
|                     'routeParameters' => [ | ||||
|                         'accompanying_period_id' => $period->getId(), | ||||
|                     ], ]) | ||||
|                     ->setExtras(['order' => 35]); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -15,19 +15,13 @@ use Chill\AMLI\FamilyMembersBundle\Security\Voter\FamilyMemberVoter; | ||||
| use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class UserMenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     /** | ||||
|      * @var AuthorizationCheckerInterface | ||||
|      */ | ||||
|     protected $authorizationChecker; | ||||
|     protected AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     protected $translator; | ||||
|     protected TranslatorInterface $translator; | ||||
|  | ||||
|     public function __construct( | ||||
|         AuthorizationCheckerInterface $authorizationChecker, | ||||
|   | ||||
| @@ -11,7 +11,6 @@ | ||||
|     * buttonText    string | ||||
|     * displayBadge  boolean (default: false)  replace button by badge, need to define buttonText for content | ||||
|     * parent        object  (optional)        pass parent context of the targetEntity (used for course resource comment) | ||||
|     * isDead        boolean (default: false)  is the person dead | ||||
|  | ||||
| #} | ||||
| <span class="onthefly-container" | ||||
| @@ -29,10 +28,6 @@ | ||||
|         data-button-text="{{ buttonText|e('html_attr') }}" | ||||
|     {% endif %} | ||||
|  | ||||
|     {% if isDead is defined and isDead == 1  %} | ||||
|         data-is-dead="true" | ||||
|     {% endif %} | ||||
|  | ||||
|     {% if displayBadge is defined and displayBadge == 1 %} | ||||
|         data-display-badge="true" | ||||
|     {% endif %} | ||||
|   | ||||
| @@ -12,11 +12,23 @@ declare(strict_types=1); | ||||
| namespace Chill\MainBundle\Routing\MenuBuilder; | ||||
|  | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
|  | ||||
| class LocationMenuBuilder implements \Chill\MainBundle\Routing\LocalMenuBuilderInterface | ||||
| { | ||||
|     private AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     public function __construct(AuthorizationCheckerInterface $authorizationChecker) | ||||
|     { | ||||
|         $this->authorizationChecker = $authorizationChecker; | ||||
|     } | ||||
|  | ||||
|     public function buildMenu($menuId, MenuItem $menu, array $parameters) | ||||
|     { | ||||
|         if (!$this->authorizationChecker->isGranted('ROLE_ADMIN')) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $menu->addChild('Location type list', [ | ||||
|             'route' => 'chill_crud_main_location_type_index', | ||||
|         ])->setExtras(['order' => 205]); | ||||
|   | ||||
| @@ -12,11 +12,23 @@ declare(strict_types=1); | ||||
| namespace Chill\MainBundle\Routing\MenuBuilder; | ||||
|  | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
|  | ||||
| class PermissionMenuBuilder implements \Chill\MainBundle\Routing\LocalMenuBuilderInterface | ||||
| { | ||||
|     private AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     public function __construct(AuthorizationCheckerInterface $authorizationChecker) | ||||
|     { | ||||
|         $this->authorizationChecker = $authorizationChecker; | ||||
|     } | ||||
|  | ||||
|     public function buildMenu($menuId, MenuItem $menu, array $parameters) | ||||
|     { | ||||
|         if (!$this->authorizationChecker->isGranted('ROLE_ADMIN')) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $menu->addChild('Permissions group list', [ | ||||
|             'route' => 'admin_permissionsgroup', | ||||
|         ])->setExtras([ | ||||
|   | ||||
| @@ -15,22 +15,16 @@ use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Chill\MainBundle\Security\Authorization\ChillExportVoter; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| /** | ||||
|  * Class SectionMenuBuilder. | ||||
|  */ | ||||
| class SectionMenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     /** | ||||
|      * @var AuthorizationCheckerInterface | ||||
|      */ | ||||
|     protected $authorizationChecker; | ||||
|     protected AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     protected $translator; | ||||
|     protected TranslatorInterface $translator; | ||||
|  | ||||
|     /** | ||||
|      * SectionMenuBuilder constructor. | ||||
| @@ -46,22 +40,24 @@ class SectionMenuBuilder implements LocalMenuBuilderInterface | ||||
|      */ | ||||
|     public function buildMenu($menuId, MenuItem $menu, array $parameters) | ||||
|     { | ||||
|         $menu->addChild($this->translator->trans('Homepage'), [ | ||||
|             'route' => 'chill_main_homepage', | ||||
|         ]) | ||||
|             ->setExtras([ | ||||
|                 'icons' => ['home'], | ||||
|                 'order' => 0, | ||||
|             ]); | ||||
|         if (!$this->authorizationChecker->isGranted('ROLE_USER')) { | ||||
|             $menu->addChild($this->translator->trans('Homepage'), [ | ||||
|                 'route' => 'chill_main_homepage', | ||||
|             ]) | ||||
|                 ->setExtras([ | ||||
|                     'icons' => ['home'], | ||||
|                     'order' => 0, | ||||
|                 ]); | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('Global timeline'), [ | ||||
|             'route' => 'chill_center_timeline', | ||||
|         ]) | ||||
|             ->setExtras( | ||||
|                 [ | ||||
|                     'order' => 10, | ||||
|                 ] | ||||
|             ); | ||||
|             $menu->addChild($this->translator->trans('Global timeline'), [ | ||||
|                 'route' => 'chill_center_timeline', | ||||
|             ]) | ||||
|                 ->setExtras( | ||||
|                     [ | ||||
|                         'order' => 10, | ||||
|                     ] | ||||
|                 ); | ||||
|         } | ||||
|  | ||||
|         if ($this->authorizationChecker->isGranted(ChillExportVoter::EXPORT)) { | ||||
|             $menu->addChild($this->translator->trans('Export Menu'), [ | ||||
|   | ||||
| @@ -15,11 +15,14 @@ use Chill\MainBundle\Entity\User; | ||||
| use Chill\MainBundle\Notification\Counter\NotificationByUserCounter; | ||||
| use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Chill\MainBundle\Workflow\Counter\WorkflowByUserCounter; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Security\Core\Security; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class UserMenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     private AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     private NotificationByUserCounter $notificationByUserCounter; | ||||
|  | ||||
|     private Security $security; | ||||
| @@ -32,16 +35,22 @@ class UserMenuBuilder implements LocalMenuBuilderInterface | ||||
|         NotificationByUserCounter $notificationByUserCounter, | ||||
|         WorkflowByUserCounter $workflowByUserCounter, | ||||
|         Security $security, | ||||
|         TranslatorInterface $translator | ||||
|         TranslatorInterface $translator, | ||||
|         AuthorizationCheckerInterface $authorizationChecker | ||||
|     ) { | ||||
|         $this->notificationByUserCounter = $notificationByUserCounter; | ||||
|         $this->workflowByUserCounter = $workflowByUserCounter; | ||||
|         $this->security = $security; | ||||
|         $this->translator = $translator; | ||||
|         $this->authorizationChecker = $authorizationChecker; | ||||
|     } | ||||
|  | ||||
|     public function buildMenu($menuId, \Knp\Menu\MenuItem $menu, array $parameters) | ||||
|     { | ||||
|         if (!$this->authorizationChecker->isGranted('ROLE_USER')) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $user = $this->security->getUser(); | ||||
|  | ||||
|         if ($user instanceof User) { | ||||
|   | ||||
| @@ -19,6 +19,7 @@ use Chill\PersonBundle\Entity\Person; | ||||
| use Chill\PersonBundle\Form\HouseholdMemberType; | ||||
| use Chill\PersonBundle\Household\MembersEditor; | ||||
| use Chill\PersonBundle\Repository\AccompanyingPeriodRepository; | ||||
| use Chill\PersonBundle\Security\Authorization\HouseholdVoter; | ||||
| use Chill\PersonBundle\Security\Authorization\PersonVoter; | ||||
| use Symfony\Component\HttpFoundation\Exception\BadRequestException; | ||||
| use Symfony\Component\HttpFoundation\Request; | ||||
| @@ -26,7 +27,7 @@ use Symfony\Component\HttpFoundation\Response; | ||||
| use Symfony\Component\Routing\Annotation\Route; | ||||
| use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | ||||
| use Symfony\Component\Serializer\Exception; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| use function count; | ||||
|  | ||||
| @@ -56,7 +57,7 @@ class HouseholdMemberController extends ApiController | ||||
|      */ | ||||
|     public function editMembership(Request $request, HouseholdMember $member): Response | ||||
|     { | ||||
|         // TODO ACL | ||||
|         $this->denyAccessUnlessGranted(HouseholdVoter::EDIT, $member); | ||||
|  | ||||
|         $form = $this->createForm(HouseholdMemberType::class, $member, [ | ||||
|             'validation_groups' => ['household_memberships'], | ||||
|   | ||||
| @@ -30,7 +30,7 @@ class UserAccompanyingPeriodController extends AbstractController | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Route("/{_locale}/accompanying-periods", name="chill_person_accompanying_period_user") | ||||
|      * @Route("/{_locale}/person/accompanying-periods/my", name="chill_person_accompanying_period_user") | ||||
|      */ | ||||
|     public function listAction(Request $request) | ||||
|     { | ||||
| @@ -44,13 +44,13 @@ class UserAccompanyingPeriodController extends AbstractController | ||||
|         ); | ||||
|  | ||||
|         return $this->render('@ChillPerson/AccompanyingPeriod/user_periods_list.html.twig', [ | ||||
|             'accompanyingds' => $accompanyingPeriods, | ||||
|             'accompanyingPeriods' => $accompanyingPeriods, | ||||
|             'pagination' => $pagination, | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Route("/{_locale}/accompanying-periods/drafts", name="chill_person_accompanying_period_draft_user") | ||||
|      * @Route("/{_locale}/person/accompanying-periods/my/drafts", name="chill_person_accompanying_period_draft_user") | ||||
|      */ | ||||
|     public function listDraftsAction(Request $request) | ||||
|     { | ||||
|   | ||||
| @@ -29,10 +29,7 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface | ||||
|  | ||||
|     protected Security $security; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     protected $translator; | ||||
|     protected TranslatorInterface $translator; | ||||
|  | ||||
|     public function __construct(TranslatorInterface $translator, Registry $registry, Security $security) | ||||
|     { | ||||
| @@ -46,12 +43,14 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface | ||||
|         /** @var AccompanyingPeriod $period */ | ||||
|         $period = $parameters['accompanyingCourse']; | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('Resume Accompanying Course'), [ | ||||
|             'route' => 'chill_person_accompanying_course_index', | ||||
|             'routeParameters' => [ | ||||
|                 'accompanying_period_id' => $period->getId(), | ||||
|             ], ]) | ||||
|             ->setExtras(['order' => 10]); | ||||
|         if ($this->security->isGranted(AccompanyingPeriodVoter::SEE, $period)) { | ||||
|             $menu->addChild($this->translator->trans('Resume Accompanying Course'), [ | ||||
|                 'route' => 'chill_person_accompanying_course_index', | ||||
|                 'routeParameters' => [ | ||||
|                     'accompanying_period_id' => $period->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 10]); | ||||
|         } | ||||
|  | ||||
|         if ($this->security->isGranted(AccompanyingPeriodVoter::EDIT, $period)) { | ||||
|             $menu->addChild($this->translator->trans('Edit Accompanying Course'), [ | ||||
| @@ -94,22 +93,24 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface | ||||
|  | ||||
|         $workflow = $this->registry->get($period, 'accompanying_period_lifecycle'); | ||||
|  | ||||
|         if (null !== $period->getClosingDate()) { | ||||
|             $menu->addChild($this->translator->trans('Re-open accompanying course'), [ | ||||
|                 'route' => 'chill_person_accompanying_course_reopen', | ||||
|                 'routeParameters' => [ | ||||
|                     'accompanying_period_id' => $period->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 99998]); | ||||
|         } | ||||
|         if ($this->security->isGranted(AccompanyingPeriodVoter::EDIT, $period)) { | ||||
|             if (null !== $period->getClosingDate()) { | ||||
|                 $menu->addChild($this->translator->trans('Re-open accompanying course'), [ | ||||
|                     'route' => 'chill_person_accompanying_course_reopen', | ||||
|                     'routeParameters' => [ | ||||
|                         'accompanying_period_id' => $period->getId(), | ||||
|                     ], ]) | ||||
|                     ->setExtras(['order' => 99998]); | ||||
|             } | ||||
|  | ||||
|         if ($workflow->can($period, 'close')) { | ||||
|             $menu->addChild($this->translator->trans('Close Accompanying Course'), [ | ||||
|                 'route' => 'chill_person_accompanying_course_close', | ||||
|                 'routeParameters' => [ | ||||
|                     'accompanying_period_id' => $period->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 99999]); | ||||
|             if ($workflow->can($period, 'close')) { | ||||
|                 $menu->addChild($this->translator->trans('Close Accompanying Course'), [ | ||||
|                     'route' => 'chill_person_accompanying_course_close', | ||||
|                     'routeParameters' => [ | ||||
|                         'accompanying_period_id' => $period->getId(), | ||||
|                     ], ]) | ||||
|                     ->setExtras(['order' => 99999]); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -12,7 +12,9 @@ declare(strict_types=1); | ||||
| namespace Chill\PersonBundle\Menu; | ||||
|  | ||||
| use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Chill\PersonBundle\Security\Authorization\HouseholdVoter; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Security; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class HouseholdMenuBuilder implements LocalMenuBuilderInterface | ||||
| @@ -22,9 +24,12 @@ class HouseholdMenuBuilder implements LocalMenuBuilderInterface | ||||
|      */ | ||||
|     protected $translator; | ||||
|  | ||||
|     public function __construct(TranslatorInterface $translator) | ||||
|     private $security; | ||||
|  | ||||
|     public function __construct(TranslatorInterface $translator, Security $security) | ||||
|     { | ||||
|         $this->translator = $translator; | ||||
|         $this->security = $security; | ||||
|     } | ||||
|  | ||||
|     public function buildMenu($menuId, MenuItem $menu, array $parameters): void | ||||
| @@ -32,40 +37,46 @@ class HouseholdMenuBuilder implements LocalMenuBuilderInterface | ||||
|         /** @var \Chill\PersonBundle\Entity\Household\Household $household */ | ||||
|         $household = $parameters['household']; | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('household.Household summary'), [ | ||||
|             'route' => 'chill_person_household_summary', | ||||
|             'routeParameters' => [ | ||||
|                 'household_id' => $household->getId(), | ||||
|             ], ]) | ||||
|             ->setExtras(['order' => 10]); | ||||
|         if ($this->security->isGranted(HouseholdVoter::SEE, $household)) { | ||||
|             $menu->addChild($this->translator->trans('household.Household summary'), [ | ||||
|                 'route' => 'chill_person_household_summary', | ||||
|                 'routeParameters' => [ | ||||
|                     'household_id' => $household->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 10]); | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('household.Relationship'), [ | ||||
|             'route' => 'chill_person_household_relationship', | ||||
|             'routeParameters' => [ | ||||
|                 'household_id' => $household->getId(), | ||||
|             ], ]) | ||||
|             ->setExtras(['order' => 15]); | ||||
|             $menu->addChild($this->translator->trans('household.Relationship'), [ | ||||
|                 'route' => 'chill_person_household_relationship', | ||||
|                 'routeParameters' => [ | ||||
|                     'household_id' => $household->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 15]); | ||||
|         } | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('household_composition.Compositions'), [ | ||||
|             'route' => 'chill_person_household_composition_index', | ||||
|             'routeParameters' => [ | ||||
|                 'id' => $household->getId(), | ||||
|             ], ]) | ||||
|             ->setExtras(['order' => 17]); | ||||
|         if ($this->security->isGranted(HouseholdVoter::EDIT, $household)) { | ||||
|             $menu->addChild($this->translator->trans('household_composition.Compositions'), [ | ||||
|                 'route' => 'chill_person_household_composition_index', | ||||
|                 'routeParameters' => [ | ||||
|                     'id' => $household->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 17]); | ||||
|         } | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('household.Accompanying period'), [ | ||||
|             'route' => 'chill_person_household_accompanying_period', | ||||
|             'routeParameters' => [ | ||||
|                 'household_id' => $household->getId(), | ||||
|             ], ]) | ||||
|             ->setExtras(['order' => 20]); | ||||
|         if ($this->security->isGranted(HouseholdVoter::SEE, $household)) { | ||||
|             $menu->addChild($this->translator->trans('household.Accompanying period'), [ | ||||
|                 'route' => 'chill_person_household_accompanying_period', | ||||
|                 'routeParameters' => [ | ||||
|                     'household_id' => $household->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 20]); | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('household.Addresses'), [ | ||||
|             'route' => 'chill_person_household_addresses', | ||||
|             'routeParameters' => [ | ||||
|                 'household_id' => $household->getId(), | ||||
|             ], ]) | ||||
|             ->setExtras(['order' => 30]); | ||||
|             $menu->addChild($this->translator->trans('household.Addresses'), [ | ||||
|                 'route' => 'chill_person_household_addresses', | ||||
|                 'routeParameters' => [ | ||||
|                     'household_id' => $household->getId(), | ||||
|                 ], ]) | ||||
|                 ->setExtras(['order' => 30]); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static function getMenuIds(): array | ||||
|   | ||||
| @@ -13,6 +13,7 @@ namespace Chill\PersonBundle\Menu; | ||||
|  | ||||
| use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter; | ||||
| use Chill\PersonBundle\Security\Authorization\PersonVoter; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; | ||||
| use Symfony\Component\Security\Core\Security; | ||||
| @@ -33,10 +34,7 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface | ||||
|      */ | ||||
|     protected $showAccompanyingPeriod; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     protected $translator; | ||||
|     protected TranslatorInterface $translator; | ||||
|  | ||||
|     private Security $security; | ||||
|  | ||||
| @@ -52,45 +50,46 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface | ||||
|  | ||||
|     public function buildMenu($menuId, MenuItem $menu, array $parameters) | ||||
|     { | ||||
|         $menu->addChild($this->translator->trans('Person details'), [ | ||||
|             'route' => 'chill_person_view', | ||||
|             'routeParameters' => [ | ||||
|                 'person_id' => $parameters['person']->getId(), | ||||
|             ], | ||||
|         ]) | ||||
|             ->setExtras([ | ||||
|                 'order' => 50, | ||||
|             ]); | ||||
|         if ($this->security->isGranted(PersonVoter::SEE, $parameters['person'])) { | ||||
|             $menu->addChild($this->translator->trans('Person details'), [ | ||||
|                 'route' => 'chill_person_view', | ||||
|                 'routeParameters' => [ | ||||
|                     'person_id' => $parameters['person']->getId(), | ||||
|                 ], | ||||
|             ]) | ||||
|                 ->setExtras([ | ||||
|                     'order' => 50, | ||||
|                 ]); | ||||
|             $menu->addChild($this->translator->trans('Residential addresses'), [ | ||||
|                 'route' => 'chill_person_residential_address_list', | ||||
|                 'routeParameters' => [ | ||||
|                     'id' => $parameters['person']->getId(), | ||||
|                 ], | ||||
|             ]) | ||||
|                 ->setExtras([ | ||||
|                     'order' => 60, | ||||
|                 ]); | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('Residential addresses'), [ | ||||
|             'route' => 'chill_person_residential_address_list', | ||||
|             'routeParameters' => [ | ||||
|                 'id' => $parameters['person']->getId(), | ||||
|             ], | ||||
|         ]) | ||||
|             ->setExtras([ | ||||
|                 'order' => 60, | ||||
|             ]); | ||||
|             $menu->addChild($this->translator->trans('household.person history'), [ | ||||
|                 'route' => 'chill_person_household_person_history', | ||||
|                 'routeParameters' => [ | ||||
|                     'person_id' => $parameters['person']->getId(), | ||||
|                 ], | ||||
|             ]) | ||||
|                 ->setExtras([ | ||||
|                     'order' => 99999, | ||||
|                 ]); | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('household.person history'), [ | ||||
|             'route' => 'chill_person_household_person_history', | ||||
|             'routeParameters' => [ | ||||
|                 'person_id' => $parameters['person']->getId(), | ||||
|             ], | ||||
|         ]) | ||||
|             ->setExtras([ | ||||
|                 'order' => 99999, | ||||
|             ]); | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('Person duplicate'), [ | ||||
|             'route' => 'chill_person_duplicate_view', | ||||
|             'routeParameters' => [ | ||||
|                 'person_id' => $parameters['person']->getId(), | ||||
|             ], | ||||
|         ]) | ||||
|             ->setExtras([ | ||||
|                 'order' => 99999, | ||||
|             ]); | ||||
|             $menu->addChild($this->translator->trans('Person duplicate'), [ | ||||
|                 'route' => 'chill_person_duplicate_view', | ||||
|                 'routeParameters' => [ | ||||
|                     'person_id' => $parameters['person']->getId(), | ||||
|                 ], | ||||
|             ]) | ||||
|                 ->setExtras([ | ||||
|                     'order' => 99999, | ||||
|                 ]); | ||||
|         } | ||||
|  | ||||
|         if ( | ||||
|             'visible' === $this->showAccompanyingPeriod | ||||
| @@ -107,15 +106,17 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface | ||||
|                 ]); | ||||
|         } | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('person_resources_menu'), [ | ||||
|             'route' => 'chill_person_resource_list', | ||||
|             'routeParameters' => [ | ||||
|                 'person_id' => $parameters['person']->getId(), | ||||
|             ], | ||||
|         ]) | ||||
|             ->setExtras([ | ||||
|                 'order' => 99999, | ||||
|             ]); | ||||
|         if ($this->security->isGranted(PersonVoter::SEE, $parameters['person'])) { | ||||
|             $menu->addChild($this->translator->trans('person_resources_menu'), [ | ||||
|                 'route' => 'chill_person_resource_list', | ||||
|                 'routeParameters' => [ | ||||
|                     'person_id' => $parameters['person']->getId(), | ||||
|                 ], | ||||
|             ]) | ||||
|                 ->setExtras([ | ||||
|                     'order' => 99999, | ||||
|                 ]); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static function getMenuIds(): array | ||||
|   | ||||
| @@ -12,6 +12,7 @@ declare(strict_types=1); | ||||
| namespace Chill\PersonBundle\Menu; | ||||
|  | ||||
| use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter; | ||||
| use Chill\PersonBundle\Security\Authorization\PersonVoter; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| @@ -56,13 +57,15 @@ class SectionMenuBuilder implements LocalMenuBuilderInterface | ||||
|                 ]); | ||||
|         } | ||||
|  | ||||
|         $menu->addChild($this->translator->trans('Create an accompanying course'), [ | ||||
|             'route' => 'chill_person_accompanying_course_new', | ||||
|         ]) | ||||
|             ->setExtras([ | ||||
|                 'order' => 11, | ||||
|                 'icons' => ['plus'], | ||||
|             ]); | ||||
|         if ($this->authorizationChecker->isGranted(AccompanyingPeriodVoter::CREATE)) { | ||||
|             $menu->addChild($this->translator->trans('Create an accompanying course'), [ | ||||
|                 'route' => 'chill_person_accompanying_course_new', | ||||
|             ]) | ||||
|                 ->setExtras([ | ||||
|                     'order' => 11, | ||||
|                     'icons' => ['plus'], | ||||
|                 ]); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static function getMenuIds(): array | ||||
|   | ||||
| @@ -71,7 +71,7 @@ final class AccompanyingPeriodRepository implements ObjectRepository | ||||
|         $qb = $this->buildQueryByRecentUserHistory($user, $since); | ||||
|  | ||||
|         return $qb->select('a') | ||||
|             ->distinct(true) | ||||
|             ->addOrderBy('userHistory.startDate', 'DESC') | ||||
|             ->getQuery() | ||||
|             ->setMaxResults($limit) | ||||
|             ->setFirstResult($offset) | ||||
| @@ -95,6 +95,7 @@ final class AccompanyingPeriodRepository implements ObjectRepository | ||||
|         $qb | ||||
|             ->join('a.userHistories', 'userHistory') | ||||
|             ->where($qb->expr()->eq('a.user', ':user')) | ||||
|             ->andWhere($qb->expr()->neq('a.step', "'" . AccompanyingPeriod::STEP_DRAFT . "'")) | ||||
|             ->andWhere($qb->expr()->gte('userHistory.startDate', ':since')) | ||||
|             ->andWhere($qb->expr()->isNull('userHistory.endDate')) | ||||
|             ->setParameter('user', $user) | ||||
|   | ||||
| @@ -20,6 +20,8 @@ | ||||
|         <div class="flex-table accompanyingcourse-list"> | ||||
|             {% for period in accompanyingPeriods %} | ||||
|                 {% include '@ChillPerson/AccompanyingPeriod/_list_item.html.twig' with {'period': period, 'recordAction': _self.recordAction(period)} %} | ||||
|             {% else %} | ||||
|                 <p class="chill-no-data-statement">{{ 'Any accompanying period'|trans }}</p> | ||||
|             {% endfor %} | ||||
|         </div> | ||||
|  | ||||
|   | ||||
| @@ -62,7 +62,6 @@ class AccompanyingPeriodWorkVoter extends Voter | ||||
|                 case self::UPDATE: | ||||
|                     return $this->security->isGranted(AccompanyingPeriodVoter::EDIT, $subject->getAccompanyingPeriod()); | ||||
|  | ||||
|  | ||||
|                 default: | ||||
|                     throw new UnexpectedValueException("attribute {$attribute} is not supported"); | ||||
|             } | ||||
|   | ||||
| @@ -161,11 +161,13 @@ class AccompanyingPeriodContext implements | ||||
|                     'class' => Person::class, | ||||
|                     'choices' => $persons, | ||||
|                     'choice_label' => function (Person $p) { | ||||
|                         return $this->personRender->renderString($p, []); | ||||
|                         return $this->personRender->renderString($p, ['addAge' => true]); | ||||
|                     }, | ||||
|                     'multiple' => false, | ||||
|                     'expanded' => true, | ||||
|                     'required' => false, | ||||
|                     'label' => $options[$key . 'Label'], | ||||
|                     'placeholder' => $this->translator->trans('Any person selected'), | ||||
|                 ]); | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -83,6 +83,12 @@ class PersonRender extends AbstractChillEntityRender | ||||
|             . $this->addAltNames($person, false) . ' (' . $this->translator->trans('years_old', ['age' => $person->getAge()]) . ')'; | ||||
|         } | ||||
|  | ||||
|         if (null !== $person->getDeathDate() && $options['addAge']) { | ||||
|             return $person->getFirstName() . ' ' . $person->getLastName() | ||||
|             . ' (‡)' | ||||
|             . $this->addAltNames($person, false); | ||||
|         } | ||||
|  | ||||
|         return $person->getFirstName() . ' ' . $person->getLastName() | ||||
|             . $this->addAltNames($person, false); | ||||
|     } | ||||
|   | ||||
| @@ -85,6 +85,7 @@ Course number: Parcours n° | ||||
| Civility: Civilité | ||||
| choose civility: -- | ||||
| All genders: tous les genres | ||||
| Any person selected: Aucune personne sélectionnée | ||||
|  | ||||
| # dédoublonnage | ||||
| Old person: Doublon | ||||
|   | ||||
| @@ -16,19 +16,13 @@ use Chill\TaskBundle\Security\Authorization\TaskVoter; | ||||
| use Knp\Menu\MenuItem; | ||||
| use LogicException; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class MenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     /** | ||||
|      * @var AuthorizationCheckerInterface | ||||
|      */ | ||||
|     protected $authorizationChecker; | ||||
|     protected AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     protected $translator; | ||||
|     protected TranslatorInterface $translator; | ||||
|  | ||||
|     public function __construct( | ||||
|         AuthorizationCheckerInterface $authorizationChecker, | ||||
|   | ||||
| @@ -15,19 +15,13 @@ use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Chill\TaskBundle\Security\Authorization\TaskVoter; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class SectionMenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     /** | ||||
|      * @var AuthorizationCheckerInterface | ||||
|      */ | ||||
|     public $authorizationChecker; | ||||
|     public AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     public $translator; | ||||
|     public TranslatorInterface $translator; | ||||
|  | ||||
|     public function __construct( | ||||
|         AuthorizationCheckerInterface $authorizationChecker, | ||||
|   | ||||
| @@ -17,29 +17,17 @@ use Chill\TaskBundle\Templating\UI\CountNotificationTask; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| class UserMenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     /** | ||||
|      * @var AuthorizationCheckerInterface | ||||
|      */ | ||||
|     public $authorizationChecker; | ||||
|     public AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     /** | ||||
|      * @var CountNotificationTask | ||||
|      */ | ||||
|     public $counter; | ||||
|     public CountNotificationTask $counter; | ||||
|  | ||||
|     /** | ||||
|      * @var TokenStorageInterface | ||||
|      */ | ||||
|     public $tokenStorage; | ||||
|     public TokenStorageInterface $tokenStorage; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     public $translator; | ||||
|     public TranslatorInterface $translator; | ||||
|  | ||||
|     public function __construct( | ||||
|         CountNotificationTask $counter, | ||||
|   | ||||
| @@ -15,22 +15,16 @@ use Chill\MainBundle\Routing\LocalMenuBuilderInterface; | ||||
| use Chill\ThirdPartyBundle\Security\Voter\ThirdPartyVoter; | ||||
| use Knp\Menu\MenuItem; | ||||
| use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Symfony\Contracts\Translation\TranslatorInterface; | ||||
|  | ||||
| /** | ||||
|  * Add an entry in section to go to third party index page. | ||||
|  */ | ||||
| class MenuBuilder implements LocalMenuBuilderInterface | ||||
| { | ||||
|     /** | ||||
|      * @var AuthorizationCheckerInterface | ||||
|      */ | ||||
|     protected $authorizationChecker; | ||||
|     protected AuthorizationCheckerInterface $authorizationChecker; | ||||
|  | ||||
|     /** | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     protected $translator; | ||||
|     protected TranslatorInterface $translator; | ||||
|  | ||||
|     public function __construct( | ||||
|         AuthorizationCheckerInterface $authorizationChecker, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user