diff --git a/src/Bundle/ChillMainBundle/Resources/public/scss/_alert-first-child.scss b/src/Bundle/ChillMainBundle/Resources/public/scss/_alert-first-child.scss new file mode 100644 index 000000000..9a089c8a7 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/scss/_alert-first-child.scss @@ -0,0 +1,10 @@ +/* + * when an alert is the first child of the page, with a banner, we do not want the alert to be merged with the banner + */ +div.container.content { + & > div { + div.alert:nth-child(2) { + margin-top: 1rem; + } + } +} diff --git a/src/Bundle/ChillMainBundle/Resources/public/scss/_alert-with-actions.scss b/src/Bundle/ChillMainBundle/Resources/public/scss/_alert-with-actions.scss new file mode 100644 index 000000000..0779ca7b3 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/scss/_alert-with-actions.scss @@ -0,0 +1,29 @@ + +div.alert.alert-with-actions { + display: flex; + flex-direction: row; + + ul.record_actions { + display: flex; + flex-direction: column; + padding: 0; + margin: 0; + + li:nth-child(1n+2) { + margin-top: 0.5rem; + } + + li { + margin-right: 0; + } + } + + @media screen and (max-width: 1050px) { + flex-direction: column; + + ul.record_actions { + margin-top: 1rem; + text-align: center; + } + } +} diff --git a/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss b/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss index 30c7f561d..bd53ad0cb 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss +++ b/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss @@ -7,6 +7,10 @@ */ +@import 'alert-first-child'; +@import 'alert-with-actions'; + + /* [hack] /!\ Contourne le positionnement problématique du div#content_conainter suivant, * car sa position: relative le place au-dessus du bandeau et les liens sont incliquables */ div.subheader { diff --git a/src/Bundle/ChillMainBundle/Resources/views/layout.html.twig b/src/Bundle/ChillMainBundle/Resources/views/layout.html.twig index 8af7aa1e2..13fe8de26 100644 --- a/src/Bundle/ChillMainBundle/Resources/views/layout.html.twig +++ b/src/Bundle/ChillMainBundle/Resources/views/layout.html.twig @@ -169,7 +169,7 @@ $('.select2').select2({allowClear: true}); chill.categoryLinkParentChildSelect(); }); - - {% block js%}{% endblock %} - - + + {% block js%}{% endblock %} + + diff --git a/src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php b/src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php index e5b0cdda7..c33fc636e 100644 --- a/src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php +++ b/src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseController.php @@ -86,8 +86,19 @@ class AccompanyingCourseController extends Controller */ public function indexAction(AccompanyingPeriod $accompanyingCourse): Response { + // compute some warnings + // get persons without household + $withoutHousehold = []; + foreach ($accompanyingCourse->getParticipations() as + $p) { + if (FALSE === $p->getPerson()->isSharingHousehold()) { + $withoutHousehold[] = $p->getPerson(); + } + } + return $this->render('@ChillPerson/AccompanyingCourse/index.html.twig', [ - 'accompanyingCourse' => $accompanyingCourse + 'accompanyingCourse' => $accompanyingCourse, + 'withoutHousehold' => $withoutHousehold ]); } diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/store/index.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/store/index.js index 31ee5a7c3..bb5e79004 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/store/index.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/store/index.js @@ -162,6 +162,8 @@ const store = createStore({ }, setWarnings(state, warnings) { state.warnings = warnings; + // reset errors, which should come from servers + state.errors.splice(0, state.errors.length); }, setErrors(state, errors) { state.errors = errors; @@ -176,8 +178,9 @@ const store = createStore({ commit('markPosition', { person_id, position_id }); dispatch('computeWarnings'); }, - toggleHolder({ commit }, conc) { + toggleHolder({ commit, dispatch }, conc) { commit('toggleHolder', conc); + dispatch('computeWarnings'); }, removePosition({ commit, dispatch }, conc) { commit('removePosition', conc); @@ -195,8 +198,9 @@ const store = createStore({ commit('forceLeaveWithoutHousehold'); dispatch('computeWarnings'); }, - setStartDate({ commit }, date) { + setStartDate({ commit, dispatch }, date) { commit('setStartDate', date); + dispatch('computeWarnings'); }, setComment({ commit }, payload) { commit('setComment', payload); @@ -240,8 +244,9 @@ const store = createStore({ } else { // we assume the answer was 422... error = household; - for (let e in error.violations) { - errors.push('TODO'); + for (let i in error.violations) { + let e = error.violations[i]; + errors.push(e.title); } commit('setErrors', errors); diff --git a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourse/index.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourse/index.html.twig index 4fef55ceb..4c3ad8b56 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourse/index.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourse/index.html.twig @@ -18,6 +18,45 @@ {% endif %} + {% if withoutHousehold|length > 0 %} +
+
+ {{ 'Some peoples does not belong to any household currently. Add them to an household soon'|trans }} +
+ +
+ +
+
+ +

{{ 'household.Select people to move'|trans }}

+ + + +
+
+ + {% endif %} +

{{ 'Associated peoples'|trans }}

{% for p in accompanyingCourse.participations %} diff --git a/src/Bundle/ChillPersonBundle/Validator/Constraints/Household/MaxHolderValidator.php b/src/Bundle/ChillPersonBundle/Validator/Constraints/Household/MaxHolderValidator.php index 6a8571c38..41d7a5557 100644 --- a/src/Bundle/ChillPersonBundle/Validator/Constraints/Household/MaxHolderValidator.php +++ b/src/Bundle/ChillPersonBundle/Validator/Constraints/Household/MaxHolderValidator.php @@ -36,8 +36,8 @@ class MaxHolderValidator extends ConstraintValidator $this->context->buildViolation($msg) ->setParameters([ - 'start' => $start->format('d-m-Y'), // TODO fix when MessageParameter works with timezone - 'end' => $end === null ? null : $end->format('d-m-Y') + '{{ start }}' => $start->format('d-m-Y'), // TODO fix when MessageParameter works with timezone + '{{ end }}' => $end === null ? null : $end->format('d-m-Y') ]) ->addViolation(); } diff --git a/src/Bundle/ChillPersonBundle/translations/messages+intl-icu.fr.yaml b/src/Bundle/ChillPersonBundle/translations/messages+intl-icu.fr.yaml index 75021c90e..ff8e45cd2 100644 --- a/src/Bundle/ChillPersonBundle/translations/messages+intl-icu.fr.yaml +++ b/src/Bundle/ChillPersonBundle/translations/messages+intl-icu.fr.yaml @@ -8,6 +8,8 @@ Born the date: >- household: Household: Ménage Household members: Membres du ménage + Household editor: Modifier l'appartenance + Select people to move: Choisir les usagers Show future or past memberships: >- {length, plural, one {Montrer une ancienne appartenance} diff --git a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml index df1ef996f..936d4f3bc 100644 --- a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml @@ -178,6 +178,8 @@ Edit & activate accompanying course: Modifier et valider See accompanying periods: Voir les périodes d'accompagnement See accompanying period: Voir cette période d'accompagnement Referrer: Référent +Some peoples does not belong to any household currently. Add them to an household soon: Certaines personnes n'appartiennent à aucun ménage actuellement. Renseignez leur appartenance à un ménage dès que possible. +Add to household now: Ajouter à un ménage # pickAPersonType Pick a person: Choisir une personne diff --git a/src/Bundle/ChillPersonBundle/translations/validators.fr.yml b/src/Bundle/ChillPersonBundle/translations/validators.fr.yml index 9f2030f02..930494d58 100644 --- a/src/Bundle/ChillPersonBundle/translations/validators.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/validators.fr.yml @@ -33,3 +33,8 @@ You should select an option: Une option doit être choisie. # aggregator by age The date should not be empty: La date ne doit pas être vide + +# household +household: + max_holder_overflowed_infinity: Il ne peut pas y avoir plus de deux titulaires simultanément. Or, avec cette modification, ce nombre sera dépassé à partir du {{ start }}. + max_holder_overflowed: Il ne peut y avoir plus de deux titulaires simultanément. Or, avec cette modification, ce nombre sera dépassé entre le {{ start }} et le {{ end }}.