diff --git a/CHANGELOG.md b/CHANGELOG.md index c2bf5a5ab..324c343e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to * [person] Order social issues by the field "ordering" (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/388) * [Person/Household list] when listing other simultaneous members of an household, exclude the members on person, not on members (avoid to show two membersship with the same person) +* [Person] Display suffixText in RenderPerson, PersonText.vue, RenderPersonBox.vue (was made for displaying "enfant confie") (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/441) ## Test releases diff --git a/src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php b/src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php index 7ee09690a..a787e9ecd 100644 --- a/src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php +++ b/src/Bundle/ChillActivityBundle/Service/DocGenerator/ActivityContext.php @@ -22,7 +22,7 @@ use Chill\DocStoreBundle\Repository\DocumentCategoryRepository; use Chill\MainBundle\Templating\TranslatableStringHelperInterface; use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\Person; -use Chill\PersonBundle\Templating\Entity\PersonRender; +use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; @@ -43,7 +43,7 @@ class ActivityContext implements private NormalizerInterface $normalizer; - private PersonRender $personRender; + private PersonRenderInterface $personRender; private TranslatableStringHelperInterface $translatableStringHelper; @@ -54,7 +54,7 @@ class ActivityContext implements NormalizerInterface $normalizer, TranslatableStringHelperInterface $translatableStringHelper, EntityManagerInterface $em, - PersonRender $personRender, + PersonRenderInterface $personRender, TranslatorInterface $translator, BaseContextData $baseContextData ) { diff --git a/src/Bundle/ChillMainBundle/ChillMainBundle.php b/src/Bundle/ChillMainBundle/ChillMainBundle.php index 07daf65ea..32e075b7f 100644 --- a/src/Bundle/ChillMainBundle/ChillMainBundle.php +++ b/src/Bundle/ChillMainBundle/ChillMainBundle.php @@ -29,7 +29,6 @@ use Chill\MainBundle\Security\ProvideRoleInterface; use Chill\MainBundle\Security\Resolver\CenterResolverInterface; use Chill\MainBundle\Security\Resolver\ScopeResolverInterface; use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface; -use Chill\MainBundle\Templating\Entity\CompilerPass as RenderEntityCompilerPass; use Chill\MainBundle\Templating\UI\NotificationCounterInterface; use Chill\MainBundle\Workflow\EntityWorkflowHandlerInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -70,7 +69,6 @@ class ChillMainBundle extends Bundle $container->addCompilerPass(new MenuCompilerPass()); $container->addCompilerPass(new ACLFlagsCompilerPass()); $container->addCompilerPass(new GroupingCenterCompilerPass()); - $container->addCompilerPass(new RenderEntityCompilerPass()); $container->addCompilerPass(new CRUDControllerCompilerPass()); } } diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRenderExtension.php b/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRenderExtension.php index e1eae3884..2081f3d9a 100644 --- a/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRenderExtension.php +++ b/src/Bundle/ChillMainBundle/Templating/Entity/ChillEntityRenderExtension.php @@ -25,21 +25,17 @@ class ChillEntityRenderExtension extends AbstractExtension protected $defaultRender; /** - * @var ChillEntityRenderInterface + * @var iterable|ChillEntityRenderInterface[] */ protected $renders = []; /** * ChillEntityRenderExtension constructor. */ - public function __construct() + public function __construct(iterable $renders) { $this->defaultRender = new ChillEntityRender(); - } - - public function addRender(ChillEntityRenderInterface $render) - { - $this->renders[] = $render; + $this->renders = $renders; } /** diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/CompilerPass.php b/src/Bundle/ChillMainBundle/Templating/Entity/CompilerPass.php deleted file mode 100644 index 38f6284ca..000000000 --- a/src/Bundle/ChillMainBundle/Templating/Entity/CompilerPass.php +++ /dev/null @@ -1,31 +0,0 @@ -getDefinition(ChillEntityRenderExtension::class); - - foreach ($container->findTaggedServiceIds('chill.render_entity') as $id => $tags) { - $extension->addMethodCall('addRender', [new Reference($id)]); - } - } -} diff --git a/src/Bundle/ChillMainBundle/config/services/templating.yaml b/src/Bundle/ChillMainBundle/config/services/templating.yaml index ade26b946..e69700732 100644 --- a/src/Bundle/ChillMainBundle/config/services/templating.yaml +++ b/src/Bundle/ChillMainBundle/config/services/templating.yaml @@ -32,6 +32,8 @@ services: - { name: twig.extension } Chill\MainBundle\Templating\Entity\ChillEntityRenderExtension: + arguments: + $renders: !tagged_iterator chill.render_entity tags: - { name: twig.extension } diff --git a/src/Bundle/ChillPersonBundle/Form/PersonResourceType.php b/src/Bundle/ChillPersonBundle/Form/PersonResourceType.php index f69081584..31af0a649 100644 --- a/src/Bundle/ChillPersonBundle/Form/PersonResourceType.php +++ b/src/Bundle/ChillPersonBundle/Form/PersonResourceType.php @@ -16,7 +16,7 @@ use Chill\MainBundle\Form\Type\CommentType; use Chill\PersonBundle\Entity\Person\PersonResource; use Chill\PersonBundle\Entity\Person\PersonResourceKind; use Chill\PersonBundle\Form\Type\PickPersonDynamicType; -use Chill\PersonBundle\Templating\Entity\PersonRender; +use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use Chill\PersonBundle\Templating\Entity\ResourceKindRender; use Chill\ThirdPartyBundle\Form\Type\PickThirdpartyDynamicType; use Chill\ThirdPartyBundle\Templating\Entity\ThirdPartyRender; @@ -29,7 +29,7 @@ use Symfony\Contracts\Translation\TranslatorInterface; final class PersonResourceType extends AbstractType { - private PersonRender $personRender; + private PersonRenderInterface $personRender; private ResourceKindRender $resourceKindRender; @@ -37,7 +37,7 @@ final class PersonResourceType extends AbstractType private TranslatorInterface $translator; - public function __construct(ResourceKindRender $resourceKindRender, PersonRender $personRender, ThirdPartyRender $thirdPartyRender, TranslatorInterface $translator) + public function __construct(ResourceKindRender $resourceKindRender, PersonRenderInterface $personRender, ThirdPartyRender $thirdPartyRender, TranslatorInterface $translator) { $this->resourceKindRender = $resourceKindRender; $this->personRender = $personRender; diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Entity/PersonRenderBox.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Entity/PersonRenderBox.vue index 85ac8ae7c..f77f006db 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Entity/PersonRenderBox.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Entity/PersonRenderBox.vue @@ -12,6 +12,7 @@ {{ person.firstName }} {{ person.lastName }} +  {{ person.suffixText }} {{ altNameLabel }} @@ -20,6 +21,7 @@ {{ person.firstName }} {{ person.lastName }} +  {{ person.suffixText }} (‡) {{ altNameLabel }} diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Entity/PersonText.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Entity/PersonText.vue index 8f89649d8..8b991e3da 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Entity/PersonText.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Entity/PersonText.vue @@ -6,6 +6,7 @@ ({{ altNameLabel }}) +  {{ person.suffixText }} {{ $tc('renderbox.years_old', person.age) }}  (‡) diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Entity/person.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Entity/person.html.twig index 02fc00e4c..e3280d755 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Entity/person.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Entity/person.html.twig @@ -12,6 +12,7 @@ * hLevel integer * addDeath bool * addAgeBadge bool + * suffixText bool * address_multiline bool * customButtons [ 'before' Twig\Markup, (injected with macro) @@ -46,6 +47,11 @@ ({{- 'years_old'|trans({ 'age': person.age }) -}}) {% endif %} {% endif %} + {%- if options['suffixText'] is defined -%} + {% for o in options['suffixText'] %} + {{ o }} + {% endfor %} + {% endif %} {% endmacro raw %} {% macro label(person, options) %} diff --git a/src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php b/src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php index 98dc14110..c046c8947 100644 --- a/src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php +++ b/src/Bundle/ChillPersonBundle/Search/SimilarPersonMatcher.php @@ -15,7 +15,7 @@ use Chill\MainBundle\Security\Authorization\AuthorizationHelper; use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Repository\PersonNotDuplicateRepository; use Chill\PersonBundle\Security\Authorization\PersonVoter; -use Chill\PersonBundle\Templating\Entity\PersonRender; +use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; @@ -39,7 +39,7 @@ class SimilarPersonMatcher protected PersonNotDuplicateRepository $personNotDuplicateRepository; - protected PersonRender $personRender; + protected PersonRenderInterface $personRender; /** * @var TokenStorageInterface @@ -51,7 +51,7 @@ class SimilarPersonMatcher AuthorizationHelper $authorizationHelper, TokenStorageInterface $tokenStorage, PersonNotDuplicateRepository $personNotDuplicateRepository, - PersonRender $personRender + PersonRenderInterface $personRender ) { $this->em = $em; $this->authorizationHelper = $authorizationHelper; diff --git a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php index 4dd32aa54..c19b35b57 100644 --- a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php +++ b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonDocGenNormalizer.php @@ -19,7 +19,7 @@ use Chill\PersonBundle\Entity\Household\Household; use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\PersonAltName; use Chill\PersonBundle\Repository\Relationships\RelationshipRepository; -use Chill\PersonBundle\Templating\Entity\PersonRender; +use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use DateTimeInterface; use Doctrine\Common\Collections\ArrayCollection; use Symfony\Component\Serializer\Exception\UnexpectedValueException; @@ -37,7 +37,7 @@ class PersonDocGenNormalizer implements { use NormalizerAwareTrait; - private PersonRender $personRender; + private PersonRenderInterface $personRender; private RelationshipRepository $relationshipRepository; @@ -46,7 +46,7 @@ class PersonDocGenNormalizer implements private TranslatorInterface $translator; public function __construct( - PersonRender $personRender, + PersonRenderInterface $personRender, RelationshipRepository $relationshipRepository, TranslatorInterface $translator, TranslatableStringHelper $translatableStringHelper diff --git a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php index e91748de8..e51c730fd 100644 --- a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php +++ b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php @@ -23,26 +23,18 @@ use Doctrine\Common\Collections\Collection; use Symfony\Component\Serializer\Exception\UnexpectedValueException; use Symfony\Component\Serializer\Normalizer\DenormalizerAwareInterface; use Symfony\Component\Serializer\Normalizer\DenormalizerAwareTrait; -use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface; use Symfony\Component\Serializer\Normalizer\NormalizerAwareTrait; -use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectToPopulateTrait; use function array_key_exists; /** * Serialize a Person entity. */ -class PersonJsonNormalizer implements - DenormalizerAwareInterface, - DenormalizerInterface, - NormalizerAwareInterface, - NormalizerInterface +class PersonJsonNormalizer implements DenormalizerAwareInterface, NormalizerAwareInterface, PersonJsonNormalizerInterface { use DenormalizerAwareTrait; - use NormalizerAwareTrait; - use ObjectToPopulateTrait; private CenterResolverManagerInterface $centerResolverManager; diff --git a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizerInterface.php b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizerInterface.php new file mode 100644 index 000000000..fd41752a8 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizerInterface.php @@ -0,0 +1,24 @@ + $options['customArea'] ?? [], 'addDeath' => $options['addDeath'] ?? true, 'addAgeBadge' => $options['addAgeBadge'] ?? false, + 'suffixText' => $options['suffixText'] ?? [], ]; return diff --git a/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRenderInterface.php b/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRenderInterface.php new file mode 100644 index 000000000..631402851 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Templating/Entity/PersonRenderInterface.php @@ -0,0 +1,21 @@ +render = $render; } diff --git a/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php b/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php index 73c29b1b3..f9f88debe 100644 --- a/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php +++ b/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ParticipationOverlapValidator.php @@ -13,7 +13,7 @@ namespace Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod; use Chill\MainBundle\Util\DateRangeCovering; use Chill\PersonBundle\Entity\AccompanyingPeriodParticipation; -use Chill\PersonBundle\Templating\Entity\PersonRender; +use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use Chill\ThirdPartyBundle\Templating\Entity\ThirdPartyRender; use Doctrine\Common\Collections\Collection; use Symfony\Component\Validator\Constraint; @@ -26,11 +26,11 @@ class ParticipationOverlapValidator extends ConstraintValidator { private const MAX_PARTICIPATION = 1; - private PersonRender $personRender; + private PersonRenderInterface $personRender; private ThirdPartyRender $thirdpartyRender; - public function __construct(PersonRender $personRender, ThirdPartyRender $thirdPartyRender) + public function __construct(PersonRenderInterface $personRender, ThirdPartyRender $thirdPartyRender) { $this->personRender = $personRender; $this->thirdpartyRender = $thirdPartyRender; diff --git a/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ResourceDuplicateCheckValidator.php b/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ResourceDuplicateCheckValidator.php index 3b84137fb..daf4d67f7 100644 --- a/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ResourceDuplicateCheckValidator.php +++ b/src/Bundle/ChillPersonBundle/Validator/Constraints/AccompanyingPeriod/ResourceDuplicateCheckValidator.php @@ -12,7 +12,7 @@ declare(strict_types=1); namespace Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod; use Chill\PersonBundle\Entity\Person; -use Chill\PersonBundle\Templating\Entity\PersonRender; +use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use Chill\ThirdPartyBundle\Templating\Entity\ThirdPartyRender; use Doctrine\Common\Collections\Collection; use Symfony\Component\Form\Exception\UnexpectedTypeException; @@ -24,11 +24,11 @@ use function in_array; class ResourceDuplicateCheckValidator extends ConstraintValidator { - private PersonRender $personRender; + private PersonRenderInterface $personRender; private ThirdPartyRender $thirdpartyRender; - public function __construct(PersonRender $personRender, ThirdPartyRender $thirdPartyRender) + public function __construct(PersonRenderInterface $personRender, ThirdPartyRender $thirdPartyRender) { $this->personRender = $personRender; $this->thirdpartyRender = $thirdPartyRender; diff --git a/src/Bundle/ChillPersonBundle/Validator/Constraints/Household/HouseholdMembershipSequentialValidator.php b/src/Bundle/ChillPersonBundle/Validator/Constraints/Household/HouseholdMembershipSequentialValidator.php index c357cb138..eba6fd87e 100644 --- a/src/Bundle/ChillPersonBundle/Validator/Constraints/Household/HouseholdMembershipSequentialValidator.php +++ b/src/Bundle/ChillPersonBundle/Validator/Constraints/Household/HouseholdMembershipSequentialValidator.php @@ -13,7 +13,7 @@ namespace Chill\PersonBundle\Validator\Constraints\Household; use Chill\MainBundle\Util\DateRangeCovering; use Chill\PersonBundle\Entity\Person; -use Chill\PersonBundle\Templating\Entity\PersonRender; +use Chill\PersonBundle\Templating\Entity\PersonRenderInterface; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; use Symfony\Component\Validator\Exception\UnexpectedTypeException; @@ -26,9 +26,9 @@ use function count; */ class HouseholdMembershipSequentialValidator extends ConstraintValidator { - private PersonRender $render; + private PersonRenderInterface $render; - public function __construct(PersonRender $render) + public function __construct(PersonRenderInterface $render) { $this->render = $render; }