Compare commits

..

35 Commits

Author SHA1 Message Date
98419e3533 change interface single task 2022-06-16 10:45:53 +02:00
977c034b64 changes info fiches usager 2022-06-15 17:39:46 +02:00
1b2aeaea2f Merge branch 'master' into interface_propositions 2022-06-15 16:44:54 +02:00
7ac54a6c9f Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-06-15 16:06:15 +02:00
ccaf430b37 remove border from address 2022-06-15 16:06:06 +02:00
72ce5c716d remove border from address 2022-06-15 16:02:37 +02:00
86afe2f702 fix condition 2022-06-15 15:58:53 +02:00
f297548a3a adjust styling of address + button 2022-06-15 15:46:24 +02:00
2529ee46d3 styling resume household page 2022-06-15 15:17:13 +02:00
65faf7c803 Merge branch 'master' into interface_propositions 2022-06-15 13:15:09 +02:00
d20d38e5f4 change icon house to map marker 2022-06-15 12:35:20 +02:00
3735f24e10 Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles 2022-06-15 12:26:22 +02:00
4b5cdd471b fix showPane component for editing address 2022-06-15 11:55:49 +02:00
f339cf56d6 notify the referrer from an activity page or list 2022-06-14 21:24:50 +02:00
4592be3a8d improve syntax for the js fix 2022-06-14 21:24:50 +02:00
4e1d7278c6 change translation in twig template for creation of household in user create form 2022-06-14 17:33:12 +02:00
a26346859c change translation to add household for new user 2022-06-14 17:21:57 +02:00
a48b990c73 condition correction to fix display of addAddress btn in parcours and household tunnel 2022-06-14 17:15:33 +02:00
fecc1f5ad3 workflow visuals 2022-06-14 16:41:50 +02:00
93e9cab10a adjust style of card-item 2022-06-14 16:24:24 +02:00
0943366d39 only prefill agents traitants of action if parcours has a referrer, otherwise null 2022-06-13 17:59:29 +02:00
4719a74307 constraint added to workflow transtion - cannot be null 2022-06-13 17:40:01 +02:00
72167b9e77 fix merge conflict 2022-06-13 16:38:37 +02:00
c14ae98130 fix merge conflict 2022-06-13 16:36:09 +02:00
83b928b0b0 fix merge conflict 2022-06-13 16:35:04 +02:00
f0187536c1 visual changes when option 'create household' is checked in user create form 2022-06-13 16:33:56 +02:00
fec27babbe visual changes when option 'create household' is checked in user create form 2022-06-13 15:35:35 +02:00
ceb0f741ef order of birthdate fields changed in advanced search 2022-06-13 15:05:18 +02:00
427f461b61 more tweaking in workflow 2022-06-13 13:54:09 +02:00
ffbd0c3d4e change layout of workflow 2022-06-13 13:16:29 +02:00
93a052583d restyle notification for more clarity 2022-06-13 13:16:11 +02:00
8e7b8d6eff visual card effect to make parcours or action stand out more within notif and workflow 2022-06-13 13:15:24 +02:00
ac88e46a7d change order of birthdate fields in advanced search 2022-06-13 09:51:08 +02:00
149d4c3846 changelog updated 2022-06-13 09:46:45 +02:00
9a29532362 fix bux to quickly add names that exist of multiple parts to the namefield of a person or thirdparty 2022-06-09 18:31:38 +02:00
25 changed files with 514 additions and 274 deletions

View File

@@ -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
@@ -37,6 +41,7 @@ and this project adheres to
* [activity] activity admin: translations + remove label field for comment on admin activity type (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/587) * [activity] activity admin: translations + remove label field for comment on admin activity type (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/587)
* [main] admin user_job: improvements (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/588) * [main] admin user_job: improvements (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/588)
* [address] can add extra address info even if noAddress (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/576) * [address] can add extra address info even if noAddress (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/576)
* [search] Change order of birthdate fields in advanced search
### 2022-05-06 ### 2022-05-06

View File

@@ -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 %}

View File

@@ -217,9 +217,30 @@
</a> </a>
</li> </li>
<li> <li>
<a class="btn btn-notify" href="{{ chill_path_add_return_path('chill_main_notification_create', {'entityClass': 'Chill\\ActivityBundle\\Entity\\Activity', 'entityId': entity.id}) }}"> {% set showGroup = entity.accompanyingPeriod is not null and entity.accompanyingPeriod.hasUser and entity.accompanyingPeriod.user is not same as(app.user) %}
{{ 'notification.Notify'|trans }} <div class="{% if showGroup %}btn-group{% endif %}" {% if showGroup %}role="group"{% endif %}>
</a> {% 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}) }}">
{{ 'notification.Notify'|trans }}
</a>
{% endif %}
</div>
</li> </li>
{% if is_granted('CHILL_ACTIVITY_UPDATE', entity) %} {% if is_granted('CHILL_ACTIVITY_UPDATE', entity) %}
<li> <li>

View File

@@ -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,24 +209,28 @@ class WorkflowStepType extends AbstractType
$transition = $form['transition']->getData(); $transition = $form['transition']->getData();
$toFinal = true; $toFinal = true;
foreach ($transition->getTos() as $to) { if (null === $transition) {
$meta = $workflow->getMetadataStore()->getPlaceMetadata($to);
if (
!array_key_exists('isFinal', $meta) || false === $meta['isFinal']
) {
$toFinal = false;
}
}
$destUsers = $form['future_dest_users']->getData();
$destEmails = $form['future_dest_emails']->getData();
if (!$toFinal && [] === $destUsers && [] === $destEmails) {
$context $context
->buildViolation('workflow.You must add at least one dest user or email') ->buildViolation('workflow.You must select a next step, pick another decision if no next steps are available');
->atPath('future_dest_users') } else {
->addViolation(); foreach ($transition->getTos() as $to) {
$meta = $workflow->getMetadataStore()->getPlaceMetadata($to);
if (
!array_key_exists('isFinal', $meta) || false === $meta['isFinal']
) {
$toFinal = false;
}
}
$destUsers = $form['future_dest_users']->getData();
$destEmails = $form['future_dest_emails']->getData();
if (!$toFinal && [] === $destUsers && [] === $destEmails) {
$context
->buildViolation('workflow.You must add at least one dest user or email')
->atPath('future_dest_users')
->addViolation();
}
} }
} }
), ),

View File

@@ -42,6 +42,13 @@ body {
footer { footer {
margin-top: auto; margin-top: auto;
} }
.content-title {
background-color: $chill-l-gray;
border-radius:3px;
padding:.5rem;
margin-bottom: 1rem;
box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px !important;
}
} }
header { header {
@@ -214,6 +221,19 @@ footer.footer {
} }
} }
/*
* PERSON INFO
*/
.chill_view_data, .pop-item {
.info-field {
border: 1px dashed;
padding:.5rem;
border-radius:3px;
margin-top:.5rem;
}
}
/* /*
* ADMIN STYLES * ADMIN STYLES
*/ */
@@ -260,6 +280,8 @@ table.table-bordered {
background-color: $gray-200; background-color: $gray-200;
color: $gray-800; color: $gray-800;
font-size: 90%; font-size: 90%;
box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px;
border-radius: 5px !important;
p { p {
margin-bottom: 0.75rem !important; margin-bottom: 0.75rem !important;
@@ -459,8 +481,19 @@ span.item-key {
/// Workflows /// Workflows
div.workflow { div.workflow {
section.step { section.step {
border: 1px solid $chill-l-gray; form {
padding: 1em 2em; display: flex;
flex-direction: column;
align-items: center;
}
i.fa-angle-double-down {
font-size: 3rem;
color: rgba(0, 0, 0, 0.568);
margin-bottom: 1rem;
margin-top: 1rem;
}
// border: 1px solid $chill-l-gray;
// padding: 1em 2em;
div.flex-table { div.flex-table {
margin: 1.5em -2em; margin: 1.5em -2em;
} }

View File

@@ -6,6 +6,26 @@
* FLEX RESPONSIVE TABLE/BLOCK PRESENTATION * FLEX RESPONSIVE TABLE/BLOCK PRESENTATION
*/ */
.pop-item {
border-radius: 10px !important;
box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px !important;
padding:1.7rem;
margin-top: .5rem;
margin-bottom: .5rem;
.subtitle {
background-color: $chill-ll-gray;
border-radius:3px;
padding:.5rem;
margin-top: 1rem;
}
&:last-child {
margin-bottom: 1rem;
}
&:first-child {
margin-top:1rem;
}
}
div.flex-bloc, div.flex-bloc,
div.flex-table { div.flex-table {
display: flex; display: flex;
@@ -14,11 +34,39 @@ div.flex-table {
box-sizing: border-box; box-sizing: border-box;
margin: 1.5em 0; margin: 1.5em 0;
div.message-item {
border-radius: 10px !important;
box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px !important;
width: 96%;
margin-bottom: .5rem;
margin-left: auto;
margin-right: auto;
}
div.card-item {
border-radius: 10px !important;
box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 4px, rgba(0, 0, 0, 0.3) 0px 7px 13px -3px, rgba(0, 0, 0, 0.2) 0px -3px 0px inset !important;
width: 96%;
margin-left: auto;
margin-right: auto;
}
div.item-bloc { div.item-bloc {
display: flex; display: flex;
@include border-collapse; @include border-collapse;
padding: 1em; padding: 1em;
border-radius: 5px !important;
box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px, rgba(0, 0, 0, 0.24) 0px 1px 2px !important;
margin-left: auto;
margin-right: auto;
margin-top: .5rem;
width: 97%;
&:last-child {
margin-bottom: 1rem;
}
&:first-child {
margin-top:1rem;
}
div.item-row { div.item-row {
display: flex; display: flex;

View File

@@ -48,19 +48,40 @@ div.notification-show {
} }
} }
ul.small_in_title { ul.small_in_title {
list-style-type: circle; // list-style-type: circle;
li { li {
list-style: none;
margin-bottom: 1rem;
span.item-key { span.item-key {
display: inline-block; display: inline-block;
background-color: white;
width: 3em; width: 3em;
font-size: 1.2rem;
} }
} }
} }
} }
div.notification-content { div.notification-content {
margin: 1.5rem; width: 93%;
p { margin: 1.5rem auto 1.5rem auto;
margin-bottom: 0.75rem; .message {
background-color: #f3f3f3;
line-height: 1.75;
box-shadow: rgba(0, 0, 0, 0.25) 0px 0.0625em 0.0625em, rgba(0, 0, 0, 0.25) 0px 0.125em 0.5em, rgba(255, 255, 255, 0.1) 0px 0px 0px 1px inset;
padding: 1.5rem;
border-radius: 5px;
border-left: $chill-yellow 10px solid;
p:first-child {
margin-bottom: 1rem;
&::before {
content: "";
font-family: Georgia;
font-size: 40px;
line-height: 0;
display: inline-block;
display: -webkit-inline-box;
}
}
} }
} }
} }

View File

@@ -15,26 +15,69 @@
<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">
<p class="chill-no-data-statement"> <div class="no-address-yet">
{{ $t('not_yet_address') }} <i class="fa fa-map-marker" aria-hidden="true"></i>
</p> <p class="chill-no-data-statement">
{{ $t('not_yet_address') }}
</p>
<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>
</div>
<div v-if="this.context.edit" class="mb-3 row">
<div class="col-sm-4"></div>
<div class="address-container col-sm-8">
<address-render-box :address="address" :isMultiline="false" :useDatePane="useDatePane"></address-render-box>
</div>
</div>
<div v-if="this.context.target.name === 'household' || this.context.edit">
<action-buttons
:options="this.options"
:defaultz="this.defaultz">
<template v-slot:action>
<button @click.prevent="$emit('openEditPane')"
class="btn btn-sm" :class="getClassButton"
type="button" name="button" :title="$t(getTextButton)">
<span v-if="displayTextButton">{{ $t(getTextButton) }}</span>
</button>
</template>
</action-buttons>
</div>
<div v-if="!this.context.edit">
<address-render-box :address="address" :isMultiline="false" :useDatePane="useDatePane"></address-render-box>
</div> </div>
<address-render-box :address="address" :useDatePane="useDatePane"></address-render-box>
</div> </div>
<action-buttons <div v-if="onlyButton">
:options="this.options" <action-buttons
:defaultz="this.defaultz"> :options="this.options"
<template v-slot:action> :defaultz="this.defaultz"
<button @click.prevent="$emit('openEditPane')" class="add-address-btn">
class="btn" :class="getClassButton" <template v-slot:action>
type="button" name="button" :title="$t(getTextButton)"> <button @click.prevent="$emit('openEditPane')"
<span v-if="displayTextButton">{{ $t(getTextButton) }}</span> class="btn" :class="getClassButton"
</button> type="button" name="button" :title="$t(getTextButton)">
</template> <span v-if="displayTextButton">{{ $t(getTextButton) }}</span>
</action-buttons> </button>
</template>
</action-buttons>
</div>
</template> </template>
@@ -58,6 +101,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 +137,35 @@ 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">
.address-container {
display:flex;
justify-content:flex-end;
border-radius: 5px;
}
.no-address-yet {
text-align: center;
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
padding:1.5rem;
margin-bottom:2rem;
i {
font-size:2rem;
margin-bottom:2rem;
}
.add-address-btn {
display: block
}
}
</style>

View File

@@ -67,14 +67,16 @@
<div class="notification-content"> <div class="notification-content">
{% if c.full_content is defined and c.full_content == true %} {% if c.full_content is defined and c.full_content == true %}
{% if c.notification.message is not empty %} {% if c.notification.message is not empty %}
{{ c.notification.message|chill_markdown_to_html }} <div class="message">{{ c.notification.message|chill_markdown_to_html }}</div>
{% else %} {% else %}
<p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p> <p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p>
{% endif %} {% endif %}
{% else %} {% else %}
{% if c.notification.message is not empty %} {% if c.notification.message is not empty %}
{{ c.notification.message|u.truncate(250, '…', false)|chill_markdown_to_html }} <div class="message">
<p class="read-more"><a href="{{ chill_path_add_return_path('chill_main_notification_show', {'id': c.notification.id}) }}">{{ 'Read more'|trans }}</a></p> {{ c.notification.message|u.truncate(250, '…', false)|chill_markdown_to_html }}
<p class="read-more"><a href="{{ chill_path_add_return_path('chill_main_notification_show', {'id': c.notification.id}) }}">{{ 'Read more'|trans }}</a></p>
</div>
{% else %} {% else %}
<p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p> <p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p>
{% endif %} {% endif %}

View File

@@ -9,7 +9,7 @@
{% set labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %} {% set labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %}
{% set label = labels is null ? step.currentStep : labels|localize_translatable_string %} {% set label = labels is null ? step.currentStep : labels|localize_translatable_string %}
<div class="card"> <div class="pop-item">
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
@@ -47,38 +47,40 @@
{% endif %} {% endif %}
</div> </div>
</div> </div>
<i class="fa fa-angle-double-down" aria-hidden="true"></i>
<div class="pop-item">
<div id="transitionFilter">
{% if transition_form.transitionFilter is defined %}
{{ form_row(transition_form.transitionFilter) }}
{% endif %}
</div>
<div id="transitionFilter"> <div id="transitions">
{% if transition_form.transitionFilter is defined %} {{ form_row(transition_form.transition) }}
{{ form_row(transition_form.transitionFilter) }} </div>
{% if transition_form.freezeAfter is defined %}
{{ form_row(transition_form.freezeAfter) }}
{% endif %} {% endif %}
<div id="futureDests">
{{ form_row(transition_form.future_dest_users) }}
{{ form_row(transition_form.future_dest_emails) }}
</div>
<p>{{ form_label(transition_form.comment) }}</p>
{{ form_widget(transition_form.comment) }}
<ul class="record_actions">
<li>
<button type="submit" class="btn btn-save">{{ 'Save'|trans }}</button>
</li>
</ul>
{{ form_end(transition_form) }}
</div> </div>
<div id="transitions">
{{ form_row(transition_form.transition) }}
</div>
{% if transition_form.freezeAfter is defined %}
{{ form_row(transition_form.freezeAfter) }}
{% endif %}
<div id="futureDests">
{{ form_row(transition_form.future_dest_users) }}
{{ form_row(transition_form.future_dest_emails) }}
</div>
<p>{{ form_label(transition_form.comment) }}</p>
{{ form_widget(transition_form.comment) }}
<ul class="record_actions">
<li>
<button type="submit" class="btn btn-save">{{ 'Save'|trans }}</button>
</li>
</ul>
{{ form_end(transition_form) }}
{% else %} {% else %}
<div class="alert alert-chill-yellow"> <div class="alert alert-chill-yellow">

View File

@@ -5,7 +5,7 @@
{% set place_labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %} {% set place_labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %}
{% set place_label = place_labels is null ? step.currentStep : place_labels|localize_translatable_string %} {% set place_label = place_labels is null ? step.currentStep : place_labels|localize_translatable_string %}
<div class="item-bloc {{ 'bloc' ~ step.id }} {% if loop.first %}initial{% endif %}"> <div class="item-bloc message-item {{ 'bloc' ~ step.id }} {% if loop.first %}initial{% endif %}">
<div class="item-row"> <div class="item-row">
{% if loop.first and step.next is null %} {% if loop.first and step.next is null %}

View File

@@ -32,33 +32,31 @@
- src/Bundle/ChillPersonBundle/Resources/views/Workflow/_accompanying_period_work.html.twig - src/Bundle/ChillPersonBundle/Resources/views/Workflow/_accompanying_period_work.html.twig
- src/Bundle/ChillDocStoreBundle/Resources/views/AccompanyingCourseDocument/_workflow.html.twig - src/Bundle/ChillDocStoreBundle/Resources/views/AccompanyingCourseDocument/_workflow.html.twig
#} #}
<section class="step my-4"> <section class="step my-4 pop-item">
<div class="mb-5"> <div class="mb-3">
<h2>{{ handler.entityTitle(entity_workflow) }}</h2> <h2>{{ handler.entityTitle(entity_workflow) }}</h2>
{{ macro.breadcrumb({'entity_workflow': entity_workflow}) }} {{ macro.breadcrumb({'entity_workflow': entity_workflow}) }}
</div> </div>
{% include handler_template with handler_template_data|merge({'display_action': true }) %} {% include handler_template with handler_template_data|merge({'display_action': true }) %}
{% if is_granted('CHILL_MAIN_WORKFLOW_DELETE', entity_workflow) %}
<ul class="record_actions">
<li>
<a class="btn btn-delete"
href="{{ chill_path_add_return_path('chill_main_workflow_delete', {'id': entity_workflow.id}) }}"
>
{{ 'workflow.Delete workflow'|trans }}
</a>
</li>
</ul>
{% endif %}
</section> </section>
<section class="step my-4">{% include '@ChillMain/Workflow/_follow.html.twig' %}</section> <section class="step my-4">{% include '@ChillMain/Workflow/_decision.html.twig' %}</section>
<section class="step my-4">{% include '@ChillMain/Workflow/_decision.html.twig' %}</section>{# <section class="step my-4 pop-item">{% include '@ChillMain/Workflow/_follow.html.twig' %}</section>
<section class="step my-4">{% include '@ChillMain/Workflow/_comment.html.twig' %}</section> #} {#<section class="step my-4">{% include '@ChillMain/Workflow/_comment.html.twig' %}</section> #}
<section class="step my-4">{% include '@ChillMain/Workflow/_history.html.twig' %}</section> <section class="step my-4 pop-item">{% include '@ChillMain/Workflow/_history.html.twig' %}</section>
{% if is_granted('CHILL_MAIN_WORKFLOW_DELETE', entity_workflow) %}
<ul class="record_actions">
<li>
<a class="btn btn-delete"
href="{{ chill_path_add_return_path('chill_main_workflow_delete', {'id': entity_workflow.id}) }}"
>
{{ 'workflow.Delete workflow'|trans }}
</a>
</li>
</ul>
{% endif %}
{# useful ? {# useful ?
<ul class="record_actions sticky-form-buttons"> <ul class="record_actions sticky-form-buttons">
<li class="cancel"> <li class="cancel">

View File

@@ -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

View File

@@ -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);
} }
} }
} }

View File

@@ -226,16 +226,35 @@ div.banner {
div.household-resume { div.household-resume {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: flex-start;
justify-content: space-between;
padding-left: 1rem;
padding-right:1rem;
div.col-address { div.col-address {
font-size: 120%; font-size: 120%;
padding-left: 1em; padding: 1rem;
border-radius: 5px;
border: 1px dotted tint-color($chill-accourse-context, 10%);
border-left: 1px dotted tint-color($chill-accourse-context, 10%);
border-right: 1px dotted tint-color($chill-accourse-context, 10%);
div.address-box {
width: 100%;
justify-content: flex-start;
align-items: flex-start;
display: flex;
i {
font-size: 200%;
margin-right: 2rem;
margin-top: 2rem;
margin-left: 1rem;
}
}
} }
div.col-comment { div.col-comment {
//padding: 0; //padding: 0;
margin-bottom: 1rem; margin-bottom: 1rem;
width: 50%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
> * > * { > * > * {

View File

@@ -333,10 +333,10 @@ export default {
addQueryItem(field, queryItem) { addQueryItem(field, queryItem) {
switch (field) { switch (field) {
case 'lastName': case 'lastName':
this.person.lastName = queryItem; this.person.lastName = this.person.lastName ? this.person.lastName += ` ${queryItem}` : queryItem;
break; break;
case 'firstName': case 'firstName':
this.person.firstName = queryItem; this.person.firstName = this.person.firstName ? this.person.firstName += ` ${queryItem}` : queryItem;
break; break;
} }
}, },

View File

@@ -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."
} }
}, },

View File

@@ -1,5 +1,4 @@
<div class="item-bloc accompanying_course_work-item{% if itemBlocClass is defined %} {{ itemBlocClass }}{% endif %}"> <div class="item-bloc card-item accompanying_course_work-item{% if itemBlocClass is defined %} {{ itemBlocClass }}{% endif %}">
<div class="item-row"> <div class="item-row">
<h2 class="badge-title"> <h2 class="badge-title">
<span class="title_label"></span> <span class="title_label"></span>
@@ -145,5 +144,4 @@
</ul> </ul>
{% endif %} {% endif %}
</div> </div>
</div> </div>

View File

@@ -1,4 +1,4 @@
<div class="item-bloc accompanying-period-item{% if itemBlocClass is defined %} {{ itemBlocClass|raw }}{% endif %}" data-accompanying-period-id="{{ period.id|e('html_attr') }}"> <div class="item-bloc card-item accompanying-period-item{% if itemBlocClass is defined %} {{ itemBlocClass|raw }}{% endif %}" data-accompanying-period-id="{{ period.id|e('html_attr') }}">
<div class="item-row"> <div class="item-row">
<div class="wrap-header"> <div class="wrap-header">
<div class="wh-row"> <div class="wh-row">

View File

@@ -19,12 +19,14 @@
<div class="row household-resume"> <div class="row household-resume">
<div class="item-bloc col-5 col-address"> <div class="item-bloc col-5 col-address">
<h2>{{ 'Address'|trans }}</h2> <h2>{{ 'Address'|trans }}</h2>
<div class="address-box">
{% if address is empty %} <i class="fa fa-map-marker" aria-hidden="true"></i>
<p class="chill-no-data-statement">{{ 'household.Household does not have any address currently'|trans }}</p> {% if address is empty %}
{% else %} <p class="chill-no-data-statement">{{ 'household.Household does not have any address currently'|trans }}</p>
{{ address|chill_entity_render_box({'multiline': true, 'extended_infos': true }) }} {% else %}
{% endif %} {{ address|chill_entity_render_box({'multiline': true, 'extended_infos': true }) }}
{% endif %}
</div>
<ul class="list-inline text-right mt-2"> <ul class="list-inline text-right mt-2">
<li class="list-inline-item"> <li class="list-inline-item">
@@ -49,95 +51,95 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="item-bloc col-7 col-comment"> <div class="item-bloc col-7 col-comment pop-item">
{% if form is null %} {% if form is null %}
{% set currentComposition = household.currentComposition %} {% set currentComposition = household.currentComposition %}
{% if currentComposition is not null %} {% if currentComposition is not null %}
<div> <div>
<h6> <h6>
{{ currentComposition.householdCompositionType.label|localize_translatable_string }} {{ currentComposition.householdCompositionType.label|localize_translatable_string }}
</h6> </h6>
<p> <p>
{{ 'household_composition.numberOfChildren children in household'|trans({'numberOfChildren': currentComposition.numberOfChildren}) }} {{ 'household_composition.numberOfChildren children in household'|trans({'numberOfChildren': currentComposition.numberOfChildren}) }}
</p> </p>
<p> <p>
{{ 'household_composition.Since'|trans({'startDate': currentComposition.startDate}) }} {{ 'household_composition.Since'|trans({'startDate': currentComposition.startDate}) }}
</p> </p>
<ul class="record_actions"> <ul class="record_actions">
<li>
<a class="btn btn-sm btn-update change-icon"
href="{{ path('chill_person_household_composition_index', {'id': household.id}) }}">
{{ 'household_composition.Update composition'|trans }}
</a>
</li>
</ul>
</div>
{% else %}
<div class="alert alert-danger">
<p>
{{ 'household_composition.Currently no composition'|trans }}
</p>
<ul class="record_actions" style="margin-bottom: 0">
<li> <li>
<a class="btn btn-sm btn-update change-icon" <a class="btn btn-sm btn-update change-icon"
href="{{ path('chill_person_household_composition_index', {'id': household.id}) }}"> href="{{ path('chill_person_household_composition_index', {'id': household.id}) }}">
{{ 'household_composition.Update composition'|trans }} {{ 'household_composition.Add a composition'|trans }}
</a> </a>
</li> </li>
</ul> </ul>
</div>
{% else %}
<div class="alert alert-danger">
<p>
{{ 'household_composition.Currently no composition'|trans }}
</p>
<ul class="record_actions" style="margin-bottom: 0">
<li>
<a class="btn btn-sm btn-update change-icon"
href="{{ path('chill_person_household_composition_index', {'id': household.id}) }}">
{{ 'household_composition.Add a composition'|trans }}
</a>
</li>
</ul>
</div>
{% endif %}
{% if household.waitingForBirth or not household.commentMembers.isEmpty() %}
<div class="p-4 bg-light">
{% if household.waitingForBirth %}
<i class="fa fa-check-square-o pe-2"></i>
{% if household.waitingForBirthDate is not null %}
{{ 'household.Expecting for birth on date'|trans({ 'date': household.waitingForBirthDate|format_date('long') }) }}
{% else %}
{{ 'household.Expecting for birth'|trans }}
{% endif %}
{% endif %}
{% if not household.commentMembers.isEmpty() %}
{{ household.commentMembers|chill_entity_render_box }}
{% endif %}
</div>
{% endif %}
{% if not household.commentMembers.isEmpty() %}
<a href="{{ chill_path_add_return_path('chill_person_household_summary', { 'household_id': household.id, 'edit': 1 }) }}"
class="btn btn-edit btn-block">
{{ 'household.Edit comment and expecting birth'|trans }}
</a>
{% else %}
<a href="{{ chill_path_add_return_path('chill_person_household_summary', { 'household_id': household.id, 'edit': 1 }) }}"
class="btn btn-create btn-block">
{{ 'household.New comment and expecting birth'|trans }}
</a>
{% endif %}
{% else %}
{{ form_start(form) }}
<div id="waitingForBirthContainer">
{{ form_widget(form.waitingForBirth) }}
</div> </div>
<div id="waitingForBirthDateContainer">
{{ form_widget(form.waitingForBirthDate) }}
</div>
<div class="mt-3">
{{ form_widget(form.commentMembers) }}
</div>
<ul class="record_actions">
<li>
<button type="submit" class="btn btn-save" id="form_household_comment_confirm">
{{ 'Save'|trans }}
</button>
</li>
</ul>
{{ form_end(form) }}
{% endif %} {% endif %}
</div> {% if household.waitingForBirth or not household.commentMembers.isEmpty() %}
<div class="p-4 bg-light">
{% if household.waitingForBirth %}
<i class="fa fa-check-square-o pe-2"></i>
{% if household.waitingForBirthDate is not null %}
{{ 'household.Expecting for birth on date'|trans({ 'date': household.waitingForBirthDate|format_date('long') }) }}
{% else %}
{{ 'household.Expecting for birth'|trans }}
{% endif %}
{% endif %}
{% if not household.commentMembers.isEmpty() %}
{{ household.commentMembers|chill_entity_render_box }}
{% endif %}
</div>
{% endif %}
{% if not household.commentMembers.isEmpty() %}
<a href="{{ chill_path_add_return_path('chill_person_household_summary', { 'household_id': household.id, 'edit': 1 }) }}"
class="btn btn-edit btn-block">
{{ 'household.Edit comment and expecting birth'|trans }}
</a>
{% else %}
<a href="{{ chill_path_add_return_path('chill_person_household_summary', { 'household_id': household.id, 'edit': 1 }) }}"
class="btn btn-create btn-block">
{{ 'household.New comment and expecting birth'|trans }}
</a>
{% endif %}
{% else %}
{{ form_start(form) }}
<div id="waitingForBirthContainer">
{{ form_widget(form.waitingForBirth) }}
</div>
<div id="waitingForBirthDateContainer">
{{ form_widget(form.waitingForBirthDate) }}
</div>
<div class="mt-3">
{{ form_widget(form.commentMembers) }}
</div>
<ul class="record_actions">
<li>
<button type="submit" class="btn btn-save" id="form_household_comment_confirm">
{{ 'Save'|trans }}
</button>
</li>
</ul>
{{ form_end(form) }}
{% endif %}
</div>
</div> </div>
<h2 class="my-5">{{ 'household.Household members'|trans }}</h2> <h2 class="my-5">{{ 'household.Household members'|trans }}</h2>
@@ -153,7 +155,7 @@
{% endif %} {% endif %}
{% if not (p == '_none' and members|length == 0 and old_members|length == 0) %} {% if not (p == '_none' and members|length == 0 and old_members|length == 0) %}
<div class="mb-5"> <div class="mb-5 pop-item">
{% if p != '_none' %} {% if p != '_none' %}
<h3>{{ p.label|localize_translatable_string }} <h3>{{ p.label|localize_translatable_string }}
{% if false == p.shareHousehold %} {% if false == p.shareHousehold %}

View File

@@ -82,18 +82,22 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf
'label' => 'Last name', 'label' => 'Last name',
'required' => false, 'required' => false,
]) ])
->add('birthdate-after', ChillDateType::class, [
'label' => 'Birthdate after',
'required' => false,
])
->add('birthdate', ChillDateType::class, [ ->add('birthdate', ChillDateType::class, [
'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,
]) ])
->add('birthdate-after', ChillDateType::class, [
'label' => 'Birthdate after',
'required' => false,
])
->add('phonenumber', TelType::class, [ ->add('phonenumber', TelType::class, [
'required' => false, 'required' => false,
'label' => 'Part of the phonenumber', 'label' => 'Part of the phonenumber',

View File

@@ -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

View File

@@ -7,15 +7,12 @@
&.place-new { &.place-new {
background-color: $chill-yellow; background-color: $chill-yellow;
} }
&.place-in_progress { &.place-in_progress {
background-color: $chill-green; background-color: $chill-green;
} }
&.place-closed { &.place-closed {
background-color: $chill-blue; background-color: $chill-blue;
} }
&.place-canceled { &.place-canceled {
background-color: $chill-beige; background-color: $chill-beige;
} }

View File

@@ -1,71 +1,68 @@
<div class="task-show"> <div class="task-show">
<h1>{{ 'Task'|trans }}</h1> {# <h1 class="content-title">{{ 'Task'|trans }}</h1> #}
<h2>{{ task.title }} <h2 style="margin-bottom: 1rem;">{{ task.title }}
{% for place in workflow_marked_places(task) %} {% for place in workflow_marked_places(task) %}
<span class="task-status box type-{{ task.type }} place-{{ place }}">{{ place|trans }}</span> <span class="task-status badge rounded-pill box type-{{ task.type }} place-{{ place }}">{{ place|trans }}</span>
{% endfor %} {% endfor %}
</h2> </h2>
<dl class="chill_view_data"> <div class="pop-item">
<dl class="chill_view_data">
<dt class="inline">{{ 'Description'|trans }}</dt> <dt class="inline">{{ 'Description'|trans }}</dt>
<dd>
{% if task.description is empty %}
<span class="chill-no-data-statement">{{"No description"|trans}}</span>
{% else %}
<blockquote class="chill-user-quote">
{{ task.description|chill_markdown_to_html }}
</blockquote>
{% endif %}
</dd>
<dt class="inline">{{ 'Assignee'|trans }}</dt>
<dd>
{% if task.assignee is null %}
<span class="chill-no-data-statement">{{"No one assignee"|trans}}</span>
{% else %}
{{ task.assignee }}
{% endif %}
</dd>
{% if task.scope is not null %}
<dt class="inline">{{ 'Scope'|trans }}</dt>
<dd> <dd>
<span class="scope">{{ task.scope.name|localize_translatable_string }}</span> {% if task.description is empty %}
<span class="chill-no-data-statement">{{"No description"|trans}}</span>
{% else %}
<blockquote class="chill-user-quote">
{{ task.description|chill_markdown_to_html }}
</blockquote>
{% endif %}
</dd> </dd>
{% endif %} <dt class="inline">{{ 'Assignee'|trans }}</dt>
<dd class="info-field">
<h3>{{"Dates"|trans}}</h3> {% if task.assignee is null %}
{% if task.startDate is null and task.endDate is null and task.warningDate is null %} <span class="chill-no-data-statement">{{"No one assignee"|trans}}</span>
<dt></dt> {% else %}
<dd> {{ task.assignee }}
<span class="chill-no-data-statement">{{"No dates specified"|trans}}</span> {% endif %}
</dd> </dd>
</dt> {% if task.scope is not null %}
{% else %} <dt class="inline">{{ 'Scope'|trans }}</dt>
{% if task.startDate is not null %} <dd class="info-field">
<dt class="inline">{{ 'Start'|trans }}</dt> <span class="scope">{{ task.scope.name|localize_translatable_string }}</span>
<dd>{{ task.startDate|format_date('long') }}</dd> </dd>
{% endif %}
<h3 class="subtitle">{{"Dates"|trans}}</h3>
{% if task.startDate is null and task.endDate is null and task.warningDate is null %}
<dt></dt>
<dd class="info-field">
<span class="chill-no-data-statement">{{"No dates specified"|trans}}</span>
</dd>
</dt>
{% else %}
{% if task.startDate is not null %}
<dt class="inline">{{ 'Start'|trans }}</dt>
<dd class="info-field">{{ task.startDate|format_date('long') }}</dd>
{% endif %}
{% if task.endDate is not null %}
<dt class="inline">{{ 'End'|trans }}</dt>
<dd class="info-field">{{ task.endDate|format_date('long') }}</dd>
{% endif %}
{% if task.warningDate is not null %}
<dt class="inline">{{ 'Warning'|trans }}</dt>
<dd class="info-field">{{ task.warningDate|format_date('long') }}</dd>
{% endif %}
{% endif %} {% endif %}
</dl>
{% if task.endDate is not null %} </div>
<dt class="inline">{{ 'End'|trans }}</dt>
<dd>{{ task.endDate|format_date('long') }}</dd>
{% endif %}
{% if task.warningDate is not null %}
<dt class="inline">{{ 'Warning'|trans }}</dt>
<dd>{{ task.warningDate|format_date('long') }}</dd>
{% endif %}
{% endif %}
</dl>
{% if timeline is not null %} {% if timeline is not null %}
<h3>{{"Timeline"|trans}}</h3> <div class="pop-item">
{{ timeline|raw }} <h3 class="subtitle">{{"Timeline"|trans}}</h3>
{{ timeline|raw }}
</div>
{% endif %} {% endif %}
<ul class="record_actions sticky-form-buttons"> <ul class="record_actions sticky-form-buttons">

View File

@@ -297,7 +297,7 @@ export default {
addQueryItem(field, queryItem) { addQueryItem(field, queryItem) {
switch (field) { switch (field) {
case 'name': case 'name':
this.thirdparty.name = queryItem; this.thirdparty.name ? this.thirdparty.name += ` ${queryItem}` : this.thirdparty.name = queryItem;
break; break;
case 'firstName': case 'firstName':
this.thirdparty.firstname = queryItem; this.thirdparty.firstname = queryItem;