diff --git a/CHANGELOG.md b/CHANGELOG.md
index 222f1dffd..7e5c281a0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,9 +11,19 @@ and this project adheres to
## Unreleased
+* [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
+* [on-the-fly] close modal only after validation
+* [person] correct thirdparty PATCH url + add email and altnames in AddPerson and serializer (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/433)
* change order for accompanying course work list
* [parcours]: Mes parcours brouillon added to user menu (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/440)
-
+* [person]: style fix in parcours listing per person. (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/432)
+* ajoute un ordre dans les localisation (api)
+* [pick entity]: fix translations in modal (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/419)
+* [homepage_widget]: fix translation on emergency badge (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/440)
+* [person]: create person and household added to button dropdown (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/454)
+* display full address in address.text in normalization. Adapt AddressRenderBox
+* [address]: Correction residential address 'depuis le' (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/459)
## Test releases
diff --git a/phpstan-deprecations.neon b/phpstan-deprecations.neon
index bc372e96b..b41a746b9 100644
--- a/phpstan-deprecations.neon
+++ b/phpstan-deprecations.neon
@@ -927,15 +927,6 @@ parameters:
count: 1
path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php
- -
- message:
- """
- #^Parameter \\$trans of method Chill\\\\PersonBundle\\\\Controller\\\\AccompanyingCourseWorkController\\:\\:__construct\\(\\) has typehint with deprecated interface Symfony\\\\Component\\\\Translation\\\\TranslatorInterface\\:
- since Symfony 4\\.2, use Symfony\\\\Contracts\\\\Translation\\\\TranslatorInterface instead$#
- """
- count: 1
- path: src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseWorkController.php
-
-
message:
"""
diff --git a/src/Bundle/ChillMainBundle/Controller/LocationApiController.php b/src/Bundle/ChillMainBundle/Controller/LocationApiController.php
index 250d92980..2cf5caaf9 100644
--- a/src/Bundle/ChillMainBundle/Controller/LocationApiController.php
+++ b/src/Bundle/ChillMainBundle/Controller/LocationApiController.php
@@ -12,6 +12,8 @@ declare(strict_types=1);
namespace Chill\MainBundle\Controller;
use Chill\MainBundle\CRUD\Controller\ApiController;
+use Chill\MainBundle\Pagination\PaginatorInterface;
+use Doctrine\ORM\QueryBuilder;
use Symfony\Component\HttpFoundation\Request;
/**
@@ -19,7 +21,7 @@ use Symfony\Component\HttpFoundation\Request;
*/
class LocationApiController extends ApiController
{
- public function customizeQuery(string $action, Request $request, $query): void
+ protected function customizeQuery(string $action, Request $request, $query): void
{
$query
->leftJoin('e.locationType', 'lt')
@@ -31,4 +33,14 @@ class LocationApiController extends ApiController
)
);
}
+
+ /**
+ * @param QueryBuilder $query
+ * @param mixed $_format
+ */
+ protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator, $_format)
+ {
+ return $query
+ ->addOrderBy('e.name', 'ASC');
+ }
}
diff --git a/src/Bundle/ChillMainBundle/Controller/WorkflowController.php b/src/Bundle/ChillMainBundle/Controller/WorkflowController.php
index 247cdf552..876e095a8 100644
--- a/src/Bundle/ChillMainBundle/Controller/WorkflowController.php
+++ b/src/Bundle/ChillMainBundle/Controller/WorkflowController.php
@@ -167,6 +167,7 @@ class WorkflowController extends AbstractController
$handler = $this->entityWorkflowManager->getHandler($entityWorkflow);
$workflow = $this->registry->get($entityWorkflow, $entityWorkflow->getWorkflowName());
+ $errors = [];
if (count($workflow->getEnabledTransitions($entityWorkflow)) > 0) {
// possible transition
@@ -245,7 +246,7 @@ class WorkflowController extends AbstractController
'handler_template_data' => $handler->getTemplateData($entityWorkflow),
'transition_form' => isset($transitionForm) ? $transitionForm->createView() : null,
'entity_workflow' => $entityWorkflow,
- 'transition_form_errors' => $errors ?? [],
+ 'transition_form_errors' => $errors,
//'comment_form' => $commentForm->createView(),
]
);
diff --git a/src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflow.php b/src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflow.php
index a132706d7..b9773040a 100644
--- a/src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflow.php
+++ b/src/Bundle/ChillMainBundle/Entity/Workflow/EntityWorkflow.php
@@ -135,6 +135,7 @@ class EntityWorkflow implements TrackCreationInterface, TrackUpdateInterface
if (!$this->steps->contains($step)) {
$this->steps[] = $step;
$step->setEntityWorkflow($this);
+ $this->stepsChainedCache = null;
}
return $this;
@@ -332,32 +333,26 @@ class EntityWorkflow implements TrackCreationInterface, TrackUpdateInterface
public function isFinal(): bool
{
- $steps = $this->getStepsChained();
-
- if (1 === count($steps)) {
- // the initial step cannot be finalized
- return false;
+ foreach ($this->getStepsChained() as $step) {
+ if ($step->isFinal()) {
+ return true;
+ }
}
- /** @var EntityWorkflowStep $last */
- $last = end($steps);
-
- return $last->isFinal();
+ return false;
}
public function isFreeze(): bool
{
$steps = $this->getStepsChained();
- if (1 === count($steps)) {
- // the initial step cannot be finalized
- return false;
+ foreach ($this->getStepsChained() as $step) {
+ if ($step->isFreezeAfter()) {
+ return true;
+ }
}
- /** @var EntityWorkflowStep $last */
- $last = end($steps);
-
- return $last->getPrevious()->isFreezeAfter();
+ return false;
}
public function isUserSubscribedToFinal(User $user): bool
@@ -434,7 +429,7 @@ class EntityWorkflow implements TrackCreationInterface, TrackUpdateInterface
$newStep->setCurrentStep($step);
// copy the freeze
- if ($this->getCurrentStep()->isFreezeAfter()) {
+ if ($this->isFreeze()) {
$newStep->setFreezeAfter(true);
}
diff --git a/src/Bundle/ChillMainBundle/Repository/Workflow/EntityWorkflowStepRepository.php b/src/Bundle/ChillMainBundle/Repository/Workflow/EntityWorkflowStepRepository.php
index ad1b21c79..e4f0aa45d 100644
--- a/src/Bundle/ChillMainBundle/Repository/Workflow/EntityWorkflowStepRepository.php
+++ b/src/Bundle/ChillMainBundle/Repository/Workflow/EntityWorkflowStepRepository.php
@@ -56,7 +56,7 @@ class EntityWorkflowStepRepository implements ObjectRepository
public function getClassName()
{
- return EntityWorkflow::class;
+ return EntityWorkflowStep::class;
}
private function buildQueryByUser(User $user): QueryBuilder
diff --git a/src/Bundle/ChillMainBundle/Resources/public/module/pick-entity/index.js b/src/Bundle/ChillMainBundle/Resources/public/module/pick-entity/index.js
index 4cc917502..f184bf100 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/module/pick-entity/index.js
+++ b/src/Bundle/ChillMainBundle/Resources/public/module/pick-entity/index.js
@@ -17,7 +17,12 @@ function loadDynamicPicker(element) {
isMultiple = parseInt(el.dataset.multiple) === 1,
uniqId = el.dataset.uniqid,
input = element.querySelector('[data-input-uniqid="'+ el.dataset.uniqid +'"]'),
- picked = (isMultiple) ? (JSON.parse(input.value)) : ((input.value === '[]') ? (null) : ([JSON.parse(input.value)]));
+ picked = isMultiple ?
+ JSON.parse(input.value) : (
+ (input.value === '[]' || input.value === '') ?
+ null : [ JSON.parse(input.value) ]
+ )
+ ;
if (!isMultiple) {
if (input.value === '[]'){
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/MyAccompanyingCourses.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/MyAccompanyingCourses.vue
index 4292c3af5..1c3b5e152 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/MyAccompanyingCourses.vue
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/MyAccompanyingCourses.vue
@@ -32,7 +32,7 @@
- {{ $t('emergency') }}
+ {{ $t('emergency') }}
{{ $t('confidential') }}
@@ -80,5 +80,7 @@ export default {
\ No newline at end of file
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/js/i18n.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/js/i18n.js
index 0b3d6a428..29f9dac62 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/js/i18n.js
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/js/i18n.js
@@ -50,7 +50,9 @@ const appMessages = {
assignated_evaluations: "{n} évaluation assignée | {n} évaluations assignées",
alert_tasks: "{n} tâche en rappel | {n} tâches en rappel",
warning_tasks: "{n} tâche à échéance | {n} tâches à échéance",
- }
+ },
+ emergency: "Urgent",
+ confidential: "Confidentiel",
}
};
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/OnTheFly.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/OnTheFly.vue
index 116ed86c1..7b06776ba 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/OnTheFly.vue
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/OnTheFly.vue
@@ -90,7 +90,7 @@ export default {
OnTheFlyThirdparty,
OnTheFlyCreate
},
- props: ['type', 'id', 'action', 'buttonText', 'displayBadge', 'isDead', 'parent', 'canCloseModal'],
+ props: ['type', 'id', 'action', 'buttonText', 'displayBadge', 'isDead', 'parent'],
emits: ['saveFormOnTheFly'],
data() {
return {
@@ -160,17 +160,10 @@ export default {
},
badgeType() {
return 'entity-' + this.type + ' badge-' + this.type;
- }
- },
- watch: {
- canCloseModal: {
- handler: function(val, oldVal) {
- if (val) {
- this.closeModal();
- }
- },
- deep: true
- }
+ },
+ getReturnPath() {
+ return `?returnPath=${window.location.pathname}${window.location.search}${window.location.hash}`;
+ },
},
methods: {
closeModal() {
@@ -217,9 +210,9 @@ export default {
buildLocation(id, type) {
if (type === 'person') {
// TODO i18n
- return `/fr/person/${id}/general`;
+ return encodeURI(`/fr/person/${id}/general${this.getReturnPath}`);
} else if (type === 'thirdparty') {
- return `/fr/3party/3party/${id}/view`;
+ return encodeURI(`/fr/3party/3party/${id}/view${this.getReturnPath}`);
}
}
}
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/i18n.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/i18n.js
index 2c4432218..f3ae3a928 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/i18n.js
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/i18n.js
@@ -1,4 +1,7 @@
import { personMessages } from 'ChillPersonAssets/vuejs/_js/i18n';
+import { thirdpartyMessages } from 'ChillThirdPartyAssets/vuejs/_js/i18n';
+import { addressMessages } from 'ChillMainAssets/vuejs/Address/i18n';
+import { ontheflyMessages } from 'ChillMainAssets/vuejs/OnTheFly/i18n';
const appMessages = {
fr: {
@@ -12,6 +15,6 @@ const appMessages = {
}
}
-Object.assign(appMessages.fr, personMessages.fr);
+Object.assign(appMessages.fr, personMessages.fr, thirdpartyMessages.fr, addressMessages.fr, ontheflyMessages.fr );
export { appMessages };
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/Entity/AddressRenderBox.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/Entity/AddressRenderBox.vue
index 385f7aa3d..9a5dc2644 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/Entity/AddressRenderBox.vue
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/Entity/AddressRenderBox.vue
@@ -42,57 +42,11 @@
class="street">
{{ address.text }}
-
- {{ address.postcode.code }} {{ address.postcode.name }}
-
-
- {{ address.country.name.fr }}
-
-
-
diff --git a/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php b/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php
index 10e889344..78e8729be 100644
--- a/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php
+++ b/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php
@@ -64,7 +64,7 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw
if ($address instanceof Address) {
$data = [
'address_id' => $address->getId(),
- 'text' => $address->isNoAddress() ? null : $this->addressRender->renderStreetLine($address, []),
+ 'text' => $this->addressRender->renderString($address, []),
'street' => $address->getStreet(),
'streetNumber' => $address->getStreetNumber(),
'postcode' => [
diff --git a/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php b/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php
index 66d6e9e41..3a97d0ef6 100644
--- a/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php
+++ b/src/Bundle/ChillMainBundle/Templating/Entity/AddressRender.php
@@ -124,7 +124,7 @@ class AddressRender implements ChillEntityRenderInterface
*/
public function renderString($addr, array $options): string
{
- return implode(' - ', $this->renderLines($addr));
+ return implode(' — ', $this->renderLines($addr));
}
public function supports($entity, array $options): bool
diff --git a/src/Bundle/ChillMainBundle/Tests/Entity/Workflow/EntityWorkflowTest.php b/src/Bundle/ChillMainBundle/Tests/Entity/Workflow/EntityWorkflowTest.php
index c89101c5b..91783a77b 100644
--- a/src/Bundle/ChillMainBundle/Tests/Entity/Workflow/EntityWorkflowTest.php
+++ b/src/Bundle/ChillMainBundle/Tests/Entity/Workflow/EntityWorkflowTest.php
@@ -24,30 +24,30 @@ final class EntityWorkflowTest extends TestCase
{
$entityWorkflow = new EntityWorkflow();
- $entityWorkflow->getCurrentStep()->setFinalizeAfter(true);
$entityWorkflow->setStep('final');
+ $entityWorkflow->getCurrentStep()->setIsFinal(true);
- $this->assertTrue($entityWorkflow->isFinalize());
+ $this->assertTrue($entityWorkflow->isFinal());
}
public function testIsFinalizeWith4Steps()
{
$entityWorkflow = new EntityWorkflow();
- $this->assertFalse($entityWorkflow->isFinalize());
+ $this->assertFalse($entityWorkflow->isFinal());
$entityWorkflow->setStep('two');
- $this->assertFalse($entityWorkflow->isFinalize());
+ $this->assertFalse($entityWorkflow->isFinal());
$entityWorkflow->setStep('previous_final');
- $this->assertFalse($entityWorkflow->isFinalize());
+ $this->assertFalse($entityWorkflow->isFinal());
- $entityWorkflow->getCurrentStep()->setFinalizeAfter(true);
+ $entityWorkflow->getCurrentStep()->setIsFinal(true);
$entityWorkflow->setStep('final');
- $this->assertTrue($entityWorkflow->isFinalize());
+ $this->assertTrue($entityWorkflow->isFinal());
}
public function testIsFreeze()
@@ -64,11 +64,8 @@ final class EntityWorkflowTest extends TestCase
$this->assertFalse($entityWorkflow->isFreeze());
- $entityWorkflow->getCurrentStep()->setFreezeAfter(true);
-
- $this->assertFalse($entityWorkflow->isFreeze());
-
$entityWorkflow->setStep('freezed');
+ $entityWorkflow->getCurrentStep()->setFreezeAfter(true);
$this->assertTrue($entityWorkflow->isFreeze());
diff --git a/src/Bundle/ChillMainBundle/Workflow/Counter/WorkflowByUserCounter.php b/src/Bundle/ChillMainBundle/Workflow/Counter/WorkflowByUserCounter.php
index 41ffd63c2..aaac6b216 100644
--- a/src/Bundle/ChillMainBundle/Workflow/Counter/WorkflowByUserCounter.php
+++ b/src/Bundle/ChillMainBundle/Workflow/Counter/WorkflowByUserCounter.php
@@ -32,20 +32,20 @@ final class WorkflowByUserCounter implements NotificationCounterInterface, Event
$this->cacheItemPool = $cacheItemPool;
}
- public function addNotification(UserInterface $user): int
+ public function addNotification(UserInterface $u): int
{
- if (!$user instanceof User) {
+ if (!$u instanceof User) {
return 0;
}
- $key = self::generateCacheKeyWorkflowByUser($user);
+ $key = self::generateCacheKeyWorkflowByUser($u);
$item = $this->cacheItemPool->getItem($key);
if ($item->isHit()) {
return $item->get();
}
- $nb = $this->getCountUnreadByUser($user);
+ $nb = $this->getCountUnreadByUser($u);
$item->set($nb)
->expiresAfter(60 * 15);
diff --git a/src/Bundle/ChillMainBundle/Workflow/Helper/MetadataExtractor.php b/src/Bundle/ChillMainBundle/Workflow/Helper/MetadataExtractor.php
index 60b65020e..32f78a548 100644
--- a/src/Bundle/ChillMainBundle/Workflow/Helper/MetadataExtractor.php
+++ b/src/Bundle/ChillMainBundle/Workflow/Helper/MetadataExtractor.php
@@ -72,17 +72,18 @@ class MetadataExtractor
foreach ($transitions as $transition) {
if ($transition->getName() === $transitionName) {
- break;
+ $metadata = $workflow->getMetadataStore()->getTransitionMetadata($transition);
+
+ return [
+ 'name' => $transition->getName(),
+ 'text' => array_key_exists('label', $metadata) ?
+ $this->translatableStringHelper->localize($metadata['label']) : $transition->getName(),
+ 'isForward' => $metadata['isForward'] ?? null,
+ ];
}
}
- $metadata = $workflow->getMetadataStore()->getTransitionMetadata($transition);
- return [
- 'name' => $transition->getName(),
- 'text' => array_key_exists('label', $metadata) ?
- $this->translatableStringHelper->localize($metadata['label']) : $transition->getName(),
- 'isForward' => $metadata['isForward'] ?? null,
- ];
+ return [];
}
public function buildArrayPresentationForWorkflow(WorkflowInterface $workflow): array
diff --git a/src/Bundle/ChillPersonBundle/Controller/HouseholdApiController.php b/src/Bundle/ChillPersonBundle/Controller/HouseholdApiController.php
index da8655f3d..1ebde2b57 100644
--- a/src/Bundle/ChillPersonBundle/Controller/HouseholdApiController.php
+++ b/src/Bundle/ChillPersonBundle/Controller/HouseholdApiController.php
@@ -50,7 +50,6 @@ class HouseholdApiController extends ApiController
*/
public function getHouseholdByAddressReference(AddressReference $addressReference): Response
{
- // TODO ACL
$this->denyAccessUnlessGranted('ROLE_USER');
$total = $this->householdACLAwareRepository->countByAddressReference($addressReference);
diff --git a/src/Bundle/ChillPersonBundle/Controller/PersonController.php b/src/Bundle/ChillPersonBundle/Controller/PersonController.php
index 02c77ebd3..ac371a2af 100644
--- a/src/Bundle/ChillPersonBundle/Controller/PersonController.php
+++ b/src/Bundle/ChillPersonBundle/Controller/PersonController.php
@@ -224,6 +224,8 @@ final class PersonController extends AbstractController
'label' => 'Add the person',
])->add('createPeriod', SubmitType::class, [
'label' => 'Add the person and create an accompanying period',
+ ])->add('createHousehold', SubmitType::class, [
+ 'label' => 'Add the person and create a household'
]);
$form->handleRequest($request);
@@ -252,6 +254,12 @@ final class PersonController extends AbstractController
]);
}
+ if ($form->get('createHousehold')->isClicked()) {
+ return $this->redirectToRoute('chill_person_household_members_editor', [
+ 'persons' => [$person->getId()],
+ ]);
+ }
+
return $this->redirectToRoute(
'chill_person_general_edit',
['person_id' => $person->getId()]
diff --git a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php
index 593cdfc83..1e7444af6 100644
--- a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php
+++ b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod.php
@@ -1153,11 +1153,8 @@ class AccompanyingPeriod implements
$this->removeComment($this->pinnedComment);
}
- if ($comment instanceof Comment) {
- if (null !== $this->pinnedComment) {
- $this->addComment($this->pinnedComment);
- }
- $this->addComment($comment);
+ if (null !== $this->pinnedComment) {
+ $this->addComment($this->pinnedComment);
}
$this->pinnedComment = $comment;
diff --git a/src/Bundle/ChillPersonBundle/Repository/Household/HouseholdACLAwareRepository.php b/src/Bundle/ChillPersonBundle/Repository/Household/HouseholdACLAwareRepository.php
index dc5e8f5d3..48dabd054 100644
--- a/src/Bundle/ChillPersonBundle/Repository/Household/HouseholdACLAwareRepository.php
+++ b/src/Bundle/ChillPersonBundle/Repository/Household/HouseholdACLAwareRepository.php
@@ -14,7 +14,7 @@ namespace Chill\PersonBundle\Repository\Household;
use Chill\MainBundle\Entity\AddressReference;
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
use Chill\PersonBundle\Entity\Household\Household;
-use Chill\PersonBundle\Security\Authorization\HouseholdVoter;
+use Chill\PersonBundle\Security\Authorization\PersonVoter;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\QueryBuilder;
@@ -39,7 +39,7 @@ final class HouseholdACLAwareRepository implements HouseholdACLAwareRepositoryIn
{
$centers = $this->authorizationHelper->getReachableCenters(
$this->security->getUser(),
- HouseholdVoter::SEE
+ PersonVoter::SEE // the authorization to see a household is the same as seeing a person
);
if ([] === $centers) {
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/PersonsAssociated/ParticipationItem.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/PersonsAssociated/ParticipationItem.vue
index 2ed08ffc0..1a1a7e26e 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/PersonsAssociated/ParticipationItem.vue
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/PersonsAssociated/ParticipationItem.vue
@@ -10,6 +10,7 @@
addAge : true,
hLevel : 3,
isConfidential : false,
+ isMultiline: true,
}"
:person="participation.person"
:returnPath="getAccompanyingCourseReturnPath">
@@ -28,7 +29,7 @@
-
+
{
- this.$store.dispatch('addPerson', { target: payload.target, body: response })
- this.canCloseOnTheFlyModal = true;
+ this.$store.dispatch('addPerson', { target: payload.target, body: response });
+ this.$refs.onTheFly.closeModal();
})
.catch((error) => {
if (error.name === 'ValidationException') {
@@ -143,10 +145,10 @@ export default {
body.telephone = payload.data.phonenumber;
body.address = { id: payload.data.address.address_id };
- makeFetch('PATCH', `/api/1.0/third-party/third-party/${payload.data.id}.json`, body)
+ makeFetch('PATCH', `/api/1.0/thirdparty/thirdparty/${payload.data.id}.json`, body)
.then(response => {
this.$store.dispatch('addThirdparty', { target: payload.target, body: response })
- this.canCloseOnTheFlyModal = true;
+ this.$refs.onTheFly.closeModal();
})
.catch((error) => {
if (error.name === 'ValidationException') {
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue
index 8f29f4771..92931cfcb 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue
@@ -26,7 +26,7 @@
@@ -52,7 +52,7 @@
@@ -92,7 +92,7 @@
@@ -114,7 +114,7 @@
@@ -189,7 +189,6 @@ export default {
uniq: true,
}
},
- canCloseOnTheFlyModal: false
}
},
computed: {
@@ -261,12 +260,14 @@ export default {
if (payload.data.birthdate !== null) { body.birthdate = payload.data.birthdate; }
body.phonenumber = payload.data.phonenumber;
body.mobilenumber = payload.data.mobilenumber;
+ body.email = payload.data.email;
+ body.altNames = payload.data.altNames;
body.gender = payload.data.gender;
makeFetch('PATCH', `/api/1.0/person/person/${payload.data.id}.json`, body)
.then(response => {
this.$store.dispatch('addPerson', { target: payload.target, body: response })
- this.canCloseOnTheFlyModal = true;
+ this.$refs.onTheFly.closeModal();
})
.catch((error) => {
if (error.name === 'ValidationException') {
@@ -284,10 +285,10 @@ export default {
body.telephone = payload.data.phonenumber;
body.address = { id: payload.data.address.address_id };
- makeFetch('PATCH', `/api/1.0/third-party/third-party/${payload.data.id}.json`, body)
+ makeFetch('PATCH', `/api/1.0/thirdparty/thirdparty/${payload.data.id}.json`, body)
.then(response => {
this.$store.dispatch('addThirdparty', { target: payload.target, body: response })
- this.canCloseOnTheFlyModal = true;
+ this.$refs.onTheFly.closeModal();
})
.catch((error) => {
if (error.name === 'ValidationException') {
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Resources/ResourceItem.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Resources/ResourceItem.vue
index 102dcf741..edd90f262 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Resources/ResourceItem.vue
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Resources/ResourceItem.vue
@@ -35,7 +35,7 @@
:id="resource.resource.id"
action="edit"
@saveFormOnTheFly="saveFormOnTheFly"
- :canCloseModal="canCloseOnTheFlyModal">
+ ref="onTheFly">
@@ -82,7 +82,7 @@
:id="resource.resource.id"
action="edit"
@saveFormOnTheFly="saveFormOnTheFly"
- :canCloseModal="canCloseOnTheFlyModal">
+ ref="onTheFly">
@@ -116,11 +116,6 @@ export default {
},
props: ['resource'],
emits: ['remove'],
- data() {
- return {
- canCloseOnTheFlyModal: false
- }
- },
computed: {
parent() {
return {
@@ -152,12 +147,14 @@ export default {
if (payload.data.birthdate !== null) { body.birthdate = payload.data.birthdate; }
body.phonenumber = payload.data.phonenumber;
body.mobilenumber = payload.data.mobilenumber;
+ body.email = payload.data.email;
+ body.altNames = payload.data.altNames;
body.gender = payload.data.gender;
makeFetch('PATCH', `/api/1.0/person/person/${payload.data.id}.json`, body)
.then(response => {
this.$store.dispatch('addPerson', { target: payload.target, body: response })
- this.canCloseOnTheFlyModal = true;
+ this.$refs.onTheFly.closeModal();
})
.catch((error) => {
if (error.name === 'ValidationException') {
@@ -175,10 +172,10 @@ export default {
body.telephone = payload.data.phonenumber;
body.address = { id: payload.data.address.address_id };
- makeFetch('PATCH', `/api/1.0/third-party/third-party/${payload.data.id}.json`, body)
+ makeFetch('PATCH', `/api/1.0/thirdparty/thirdparty/${payload.data.id}.json`, body)
.then(response => {
this.$store.dispatch('addThirdparty', { target: payload.target, body: response })
- this.canCloseOnTheFlyModal = true;
+ this.$refs.onTheFly.closeModal();
})
.catch((error) => {
if (error.name === 'ValidationException') {
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/App.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/App.vue
index f9d1a747c..34c0794fb 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/App.vue
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/App.vue
@@ -211,7 +211,7 @@
-
+
@@ -286,6 +286,8 @@ import ListWorkflowModal from 'ChillMainAssets/vuejs/_components/EntityWorkflow/
import PickWorkflow from 'ChillMainAssets/vuejs/_components/EntityWorkflow/PickWorkflow.vue';
import PersonText from 'ChillPersonAssets/vuejs/_components/Entity/PersonText.vue';
import {buildLinkCreate} from 'ChillMainAssets/lib/entity-workflow/api.js';
+import { makeFetch } from 'ChillMainAssets/lib/api/apiMethods';
+
const i18n = {
messages: {
@@ -476,15 +478,27 @@ export default {
},
saveFormOnTheFly(payload) {
console.log('saveFormOnTheFly: type', payload.type, ', data', payload.data);
- payload.target = 'resource';
- this.$store.dispatch('patchOnTheFly', payload)
- .catch(({name, violations}) => {
- if (name === 'ValidationException' || name === 'AccessException') {
- violations.forEach((violation) => this.$toast.open({message: violation}));
+
+ let body = { type: payload.type };
+ body.name = payload.data.text;
+ body.email = payload.data.email;
+ body.telephone = payload.data.phonenumber;
+ body.address = { id: payload.data.address.address_id };
+
+ makeFetch('PATCH', `/api/1.0/thirdparty/thirdparty/${payload.data.id}.json`, body)
+ .then(response => {
+ this.$store.dispatch('updateThirdParty', response)
+ this.$refs.onTheFly.closeModal();
+ })
+ .catch((error) => {
+ if (error.name === 'ValidationException') {
+ for (let v of error.violations) {
+ this.$toast.open({message: v });
+ }
} else {
- this.$toast.open({message: 'An error occurred'})
+ this.$toast.open({message: 'An error occurred'});
}
- });
+ })
}
}
};
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js
index 0ef2d0de4..143d34215 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js
@@ -1,7 +1,9 @@
import { createApp } from 'vue';
import { _createI18n } from 'ChillMainAssets/vuejs/_js/i18n';
import { store } from './store';
-import { personMessages } from 'ChillPersonAssets/vuejs/_js/i18n'
+import { personMessages } from 'ChillPersonAssets/vuejs/_js/i18n';
+import VueToast from 'vue-toast-notification';
+import 'vue-toast-notification/dist/theme-sugar.css';
import App from './App.vue';
const i18n = _createI18n(personMessages);
@@ -10,6 +12,12 @@ const app = createApp({
template: ` `,
})
.use(store)
+.use(VueToast, {
+ position: "bottom-right",
+ type: "error",
+ duration: 5000,
+ dismissible: true
+})
.use(i18n)
.component('app', App)
.mount('#accompanying_course_work_edit');
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js
index 0cc85fb76..6c81748d2 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js
@@ -266,6 +266,14 @@ const store = createStore({
state.thirdParties.push(unexistings[i]);
}
},
+ updateThirdParty(state, thirdParty) {
+ for (let t of state.thirdParties) {
+ if (t.id === thirdParty.id){
+ state.thirdParties = state.thirdParties.filter(t => t.id !== thirdParty.id);
+ state.thirdParties.push(thirdParty);
+ }
+ }
+ },
removeThirdParty(state, thirdParty) {
state.thirdParties = state.thirdParties
.filter(t => t.id !== thirdParty.id);
@@ -278,6 +286,10 @@ const store = createStore({
},
},
actions: {
+ updateThirdParty({ commit }, payload) {
+ console.log(payload);
+ commit('updateThirdParty', payload);
+ },
getReachablesGoalsForAction({ getters, commit, dispatch }) {
let
socialActionId = getters.socialAction.id,
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue
index 9e318ff96..1f017d28d 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue
@@ -69,7 +69,7 @@
:buttonText="$t('onthefly.create.button', {q: query})"
action="create"
@saveFormOnTheFly="saveFormOnTheFly"
- :canCloseModal="canCloseOnTheFlyModal">
+ ref="onTheFly">
@@ -121,7 +121,6 @@ export default {
selected: [],
priorSuggestion: {}
},
- canCloseOnTheFlyModal: false
}
},
computed: {
@@ -271,7 +270,7 @@ export default {
makeFetch('POST', '/api/1.0/person/person.json', data)
.then(response => {
this.newPriorSuggestion(response);
- this.canCloseOnTheFlyModal = true;
+ this.$refs.onTheFly.closeModal();
})
.catch((error) => {
if (error.name === 'ValidationException') {
@@ -287,7 +286,7 @@ export default {
makeFetch('POST', '/api/1.0/thirdparty/thirdparty.json', data)
.then(response => {
this.newPriorSuggestion(response);
- this.canCloseOnTheFlyModal = true;
+ this.$refs.onTheFly.closeModal();
})
.catch((error) => {
if (error.name === 'ValidationException') {
@@ -299,7 +298,6 @@ export default {
}
})
}
- this.canCloseOnTheFlyModal = false;
}
},
}
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/OnTheFly/Person.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/OnTheFly/Person.vue
index 9543da3bb..0e511ce5e 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/OnTheFly/Person.vue
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/OnTheFly/Person.vue
@@ -43,10 +43,11 @@
{{ $t('person.firstname') }}
-