mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-07-18 06:46:11 +00:00
Merge branch 'master' into interface_propositions
This commit is contained in:
commit
65faf7c803
@ -13,6 +13,10 @@ and this project adheres to
|
|||||||
<!-- write down unreleased development here -->
|
<!-- write down unreleased development here -->
|
||||||
* [workflow]: added pagination to workflow list page
|
* [workflow]: added pagination to workflow list page
|
||||||
* [homepage_widget]: null error on tasks widget fixed
|
* [homepage_widget]: null error on tasks widget fixed
|
||||||
|
* [person-thirdparty]: fix quick-add of names that consist of multiple parts (eg. De Vlieger) within onthefly modal person/thirdparty
|
||||||
|
* [search]: Order of birthdate fields changed in advanced search to avoid confusion.
|
||||||
|
* [workflow]: Constraint added to workflow (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/675)
|
||||||
|
* [action]: Agents traitants should be prefilled with referrer of the parcours or left empty if there is no referrer (https://gitlab.com/champs-libres/departement-de-la-vendee/accent-suivi-developpement/-/issues/696)
|
||||||
|
|
||||||
## Test releases
|
## Test releases
|
||||||
|
|
||||||
|
@ -2,12 +2,30 @@
|
|||||||
{% if is_granted('CHILL_ACTIVITY_SEE_DETAILS', activity) %}
|
{% if is_granted('CHILL_ACTIVITY_SEE_DETAILS', activity) %}
|
||||||
{% if no_action is not defined or no_action == false %}
|
{% if no_action is not defined or no_action == false %}
|
||||||
<li>
|
<li>
|
||||||
<a class="btn btn-misc" href="{{ chill_path_add_return_path('chill_main_notification_create', {
|
{% set showGroup = activity.accompanyingPeriod is not null and activity.accompanyingPeriod.hasUser and activity.accompanyingPeriod.user is not same as(app.user) %}
|
||||||
'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity',
|
<div class="{% if showGroup %}btn-group{% endif %}" {% if showGroup %}role="group"{% endif %}>
|
||||||
'entityId': activity.id
|
{% if showGroup %}
|
||||||
}) }}">
|
<button id="btnGroupNotifyButtons" type="button" class="btn btn-notify dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
<i class="fa fa-paper-plane fa-fw"></i>
|
{{ 'notification.Notify'|trans }}
|
||||||
{{ 'notification.Notify'|trans }}</a>
|
</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="btnGroupNotifyButtons">
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': activity.id, 'tos': [activity.accompanyingPeriod.user.id]}) }}">
|
||||||
|
{{ 'notification.Notify referrer'|trans }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': activity.id}) }}">
|
||||||
|
{{ 'notification.Notify any'|trans }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
<a class="btn btn-notify" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': activity.id}) }}">
|
||||||
|
{{ 'notification.Notify'|trans }}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if context == 'person' and activity.accompanyingPeriod is not empty %}
|
{% if context == 'person' and activity.accompanyingPeriod is not empty %}
|
||||||
|
@ -217,9 +217,30 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
{% set showGroup = entity.accompanyingPeriod is not null and entity.accompanyingPeriod.hasUser and entity.accompanyingPeriod.user is not same as(app.user) %}
|
||||||
|
<div class="{% if showGroup %}btn-group{% endif %}" {% if showGroup %}role="group"{% endif %}>
|
||||||
|
{% if showGroup %}
|
||||||
|
<button id="btnGroupNotifyButtons" type="button" class="btn btn-notify dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
{{ 'notification.Notify'|trans }}
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="btnGroupNotifyButtons">
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id, 'tos': [entity.accompanyingPeriod.user.id]}) }}">
|
||||||
|
{{ 'notification.Notify referrer'|trans }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id}) }}">
|
||||||
|
{{ 'notification.Notify any'|trans }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
<a class="btn btn-notify" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id}) }}">
|
<a class="btn btn-notify" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id}) }}">
|
||||||
{{ 'notification.Notify'|trans }}
|
{{ 'notification.Notify'|trans }}
|
||||||
</a>
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{% if is_granted('CHILL_ACTIVITY_UPDATE', entity) %}
|
{% if is_granted('CHILL_ACTIVITY_UPDATE', entity) %}
|
||||||
<li>
|
<li>
|
||||||
|
@ -109,6 +109,7 @@ class WorkflowStepType extends AbstractType
|
|||||||
'multiple' => false,
|
'multiple' => false,
|
||||||
'expanded' => true,
|
'expanded' => true,
|
||||||
'choices' => $choices,
|
'choices' => $choices,
|
||||||
|
'constraints' => [new NotNull()],
|
||||||
'choice_label' => function (Transition $transition) use ($workflow) {
|
'choice_label' => function (Transition $transition) use ($workflow) {
|
||||||
$meta = $workflow->getMetadataStore()->getTransitionMetadata($transition);
|
$meta = $workflow->getMetadataStore()->getTransitionMetadata($transition);
|
||||||
|
|
||||||
@ -208,6 +209,10 @@ class WorkflowStepType extends AbstractType
|
|||||||
$transition = $form['transition']->getData();
|
$transition = $form['transition']->getData();
|
||||||
$toFinal = true;
|
$toFinal = true;
|
||||||
|
|
||||||
|
if (null === $transition) {
|
||||||
|
$context
|
||||||
|
->buildViolation('workflow.You must select a next step, pick another decision if no next steps are available');
|
||||||
|
} else {
|
||||||
foreach ($transition->getTos() as $to) {
|
foreach ($transition->getTos() as $to) {
|
||||||
$meta = $workflow->getMetadataStore()->getPlaceMetadata($to);
|
$meta = $workflow->getMetadataStore()->getPlaceMetadata($to);
|
||||||
|
|
||||||
@ -217,7 +222,6 @@ class WorkflowStepType extends AbstractType
|
|||||||
$toFinal = false;
|
$toFinal = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$destUsers = $form['future_dest_users']->getData();
|
$destUsers = $form['future_dest_users']->getData();
|
||||||
$destEmails = $form['future_dest_emails']->getData();
|
$destEmails = $form['future_dest_emails']->getData();
|
||||||
|
|
||||||
@ -228,6 +232,7 @@ class WorkflowStepType extends AbstractType
|
|||||||
->addViolation();
|
->addViolation();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -15,18 +15,17 @@
|
|||||||
<span v-if="forceRedirect">{{ $t('wait_redirection') }}</span>
|
<span v-if="forceRedirect">{{ $t('wait_redirection') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="showMessageWhenNoAddress" class="mt-5">
|
<div v-if="(!this.context.edit && !this.flag.success && this.context.target.name !== 'household')" class="mt-5">
|
||||||
|
<div class="no-address-yet">
|
||||||
|
<i class="fa fa-map-marker" aria-hidden="true"></i>
|
||||||
<p class="chill-no-data-statement">
|
<p class="chill-no-data-statement">
|
||||||
{{ $t('not_yet_address') }}
|
{{ $t('not_yet_address') }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
|
||||||
|
|
||||||
<address-render-box :address="address" :useDatePane="useDatePane"></address-render-box>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<action-buttons
|
<action-buttons
|
||||||
:options="this.options"
|
:options="this.options"
|
||||||
:defaultz="this.defaultz">
|
:defaultz="this.defaultz"
|
||||||
|
class="add-address-btn">
|
||||||
<template v-slot:action>
|
<template v-slot:action>
|
||||||
<button @click.prevent="$emit('openEditPane')"
|
<button @click.prevent="$emit('openEditPane')"
|
||||||
class="btn" :class="getClassButton"
|
class="btn" :class="getClassButton"
|
||||||
@ -35,6 +34,41 @@
|
|||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
</action-buttons>
|
</action-buttons>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-else-if="this.context.target.name === 'household' || this.context.edit">
|
||||||
|
<action-buttons
|
||||||
|
:options="this.options"
|
||||||
|
:defaultz="this.defaultz"
|
||||||
|
class="add-address-btn">
|
||||||
|
<template v-slot:action>
|
||||||
|
<button @click.prevent="$emit('openEditPane')"
|
||||||
|
class="btn" :class="getClassButton"
|
||||||
|
type="button" name="button" :title="$t(getTextButton)">
|
||||||
|
<span v-if="displayTextButton">{{ $t(getTextButton) }}</span>
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
</action-buttons>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<address-render-box :address="address" :useDatePane="useDatePane"></address-render-box>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="onlyButton">
|
||||||
|
<action-buttons
|
||||||
|
:options="this.options"
|
||||||
|
:defaultz="this.defaultz"
|
||||||
|
class="add-address-btn">
|
||||||
|
<template v-slot:action>
|
||||||
|
<button @click.prevent="$emit('openEditPane')"
|
||||||
|
class="btn" :class="getClassButton"
|
||||||
|
type="button" name="button" :title="$t(getTextButton)">
|
||||||
|
<span v-if="displayTextButton">{{ $t(getTextButton) }}</span>
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
</action-buttons>
|
||||||
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -58,6 +92,9 @@ export default {
|
|||||||
'useDatePane'
|
'useDatePane'
|
||||||
],
|
],
|
||||||
emits: ['openEditPane'],
|
emits: ['openEditPane'],
|
||||||
|
mounted() {
|
||||||
|
console.log('context', this.context)
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
address() {
|
address() {
|
||||||
return this.entity.address;
|
return this.entity.address;
|
||||||
@ -91,13 +128,29 @@ export default {
|
|||||||
forceRedirect() {
|
forceRedirect() {
|
||||||
return (!(this.context.backUrl === null || typeof this.context.backUrl === 'undefined'));
|
return (!(this.context.backUrl === null || typeof this.context.backUrl === 'undefined'));
|
||||||
},
|
},
|
||||||
showMessageWhenNoAddress() {
|
// showMessageWhenNoAddress() {
|
||||||
let showMessageWhenNoAddress = this.options.showMessageWhenNoAddress === undefined ? this.defaultz.showMessageWhenNoAddress : this.options.showMessageWhenNoAddress;
|
// let showMessageWhenNoAddress = this.options.showMessageWhenNoAddress === undefined ? this.defaultz.showMessageWhenNoAddress : this.options.showMessageWhenNoAddress;
|
||||||
if (showMessageWhenNoAddress === true || showMessageWhenNoAddress === false) {
|
// if (showMessageWhenNoAddress === true || showMessageWhenNoAddress === false) {
|
||||||
return !this.context.edit && !this.address.id && showMessageWhenNoAddress;
|
// return !this.context.edit && !this.address.id && showMessageWhenNoAddress;
|
||||||
}
|
// }
|
||||||
return !this.context.edit && !this.address.id && this.options.stickyActions;
|
// return !this.context.edit && !this.address.id && this.options.stickyActions;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
|
||||||
|
.no-address-yet {
|
||||||
|
text-align: center;
|
||||||
|
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
||||||
|
padding:1.5rem;
|
||||||
|
i {
|
||||||
|
font-size:2rem;
|
||||||
|
margin-bottom:2rem;
|
||||||
|
}
|
||||||
|
.add-address-btn {
|
||||||
|
display: block
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@ -463,6 +463,7 @@ workflow:
|
|||||||
Previous transitionned: Anciens workflows
|
Previous transitionned: Anciens workflows
|
||||||
Previous workflow transitionned help: Workflows où vous avez exécuté une action.
|
Previous workflow transitionned help: Workflows où vous avez exécuté une action.
|
||||||
For: Pour
|
For: Pour
|
||||||
|
You must select a next step, pick another decision if no next steps are available: Il faut une prochaine étape. Choissisez une autre décision si nécessaire.
|
||||||
|
|
||||||
|
|
||||||
Subscribe final: Recevoir une notification à l'étape finale
|
Subscribe final: Recevoir une notification à l'étape finale
|
||||||
|
@ -26,8 +26,9 @@ class AccompanyingPeriodWorkEventListener
|
|||||||
|
|
||||||
public function prePersistAccompanyingPeriodWork(AccompanyingPeriodWork $work): void
|
public function prePersistAccompanyingPeriodWork(AccompanyingPeriodWork $work): void
|
||||||
{
|
{
|
||||||
if ($this->security->getUser() instanceof User) {
|
$referrer = $work->getAccompanyingPeriod()->getUser();
|
||||||
$work->addReferrer($this->security->getUser());
|
if (null !== $referrer) {
|
||||||
|
$work->addReferrer($referrer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -333,10 +333,10 @@ export default {
|
|||||||
addQueryItem(field, queryItem) {
|
addQueryItem(field, queryItem) {
|
||||||
switch (field) {
|
switch (field) {
|
||||||
case 'lastName':
|
case 'lastName':
|
||||||
this.person.lastName ? this.person.lastName += ` ${queryItem}` : this.person.lastName = queryItem;
|
this.person.lastName = this.person.lastName ? this.person.lastName += ` ${queryItem}` : queryItem;
|
||||||
break;
|
break;
|
||||||
case 'firstName':
|
case 'firstName':
|
||||||
this.person.firstName ? this.person.firstName += ` ${queryItem}` : this.person.firstName = queryItem;
|
this.person.firstName = this.person.firstName ? this.person.firstName += ` ${queryItem}` : queryItem;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -45,7 +45,7 @@ const personMessages = {
|
|||||||
},
|
},
|
||||||
address: {
|
address: {
|
||||||
create_address: "Ajouter une adresse",
|
create_address: "Ajouter une adresse",
|
||||||
show_address_form: "Créer un ménage et ajouter une adresse",
|
show_address_form: "Ajouter une adresse pour un usager non suivi et seul dans un ménage",
|
||||||
warning: "Un nouveau ménage va être créé. L'usager sera membre de ce ménage."
|
warning: "Un nouveau ménage va être créé. L'usager sera membre de ce ménage."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -86,6 +86,10 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf
|
|||||||
'label' => 'Birthdate',
|
'label' => 'Birthdate',
|
||||||
'required' => false,
|
'required' => false,
|
||||||
])
|
])
|
||||||
|
->add('birthdate-after', ChillDateType::class, [
|
||||||
|
'label' => 'Birthdate after',
|
||||||
|
'required' => false,
|
||||||
|
])
|
||||||
->add('birthdate-before', ChillDateType::class, [
|
->add('birthdate-before', ChillDateType::class, [
|
||||||
'label' => 'Birthdate before',
|
'label' => 'Birthdate before',
|
||||||
'required' => false,
|
'required' => false,
|
||||||
|
@ -86,7 +86,7 @@ Civility: Civilité
|
|||||||
choose civility: --
|
choose civility: --
|
||||||
All genders: tous les genres
|
All genders: tous les genres
|
||||||
Any person selected: Aucune personne sélectionnée
|
Any person selected: Aucune personne sélectionnée
|
||||||
Create a household and add an address: Créer un ménage et ajouter une adresse
|
Create a household and add an address: Ajouter une adresse pour un usager non suivi et seul dans un ménage
|
||||||
A new household will be created. The person will be member of this household.: Un nouveau ménage va être créé. L'usager sera membre de ce ménage.
|
A new household will be created. The person will be member of this household.: Un nouveau ménage va être créé. L'usager sera membre de ce ménage.
|
||||||
|
|
||||||
# dédoublonnage
|
# dédoublonnage
|
||||||
|
Loading…
x
Reference in New Issue
Block a user