Compare commits

...

12 Commits

15 changed files with 336 additions and 214 deletions

View File

@@ -41,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)
* [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)
* [search] Change order of birthdate fields in advanced search
### 2022-05-06

View File

@@ -42,6 +42,13 @@ body {
footer {
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 {
@@ -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
*/
@@ -260,6 +280,8 @@ table.table-bordered {
background-color: $gray-200;
color: $gray-800;
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 {
margin-bottom: 0.75rem !important;
@@ -459,8 +481,19 @@ span.item-key {
/// Workflows
div.workflow {
section.step {
border: 1px solid $chill-l-gray;
padding: 1em 2em;
form {
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 {
margin: 1.5em -2em;
}

View File

@@ -6,6 +6,26 @@
* 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-table {
display: flex;
@@ -14,11 +34,39 @@ div.flex-table {
box-sizing: border-box;
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 {
display: flex;
@include border-collapse;
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 {
display: flex;

View File

@@ -48,19 +48,40 @@ div.notification-show {
}
}
ul.small_in_title {
list-style-type: circle;
// list-style-type: circle;
li {
list-style: none;
margin-bottom: 1rem;
span.item-key {
display: inline-block;
background-color: white;
width: 3em;
font-size: 1.2rem;
}
}
}
}
div.notification-content {
margin: 1.5rem;
p {
margin-bottom: 0.75rem;
width: 93%;
margin: 1.5rem auto 1.5rem auto;
.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

@@ -67,14 +67,16 @@
<div class="notification-content">
{% if c.full_content is defined and c.full_content == true %}
{% 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 %}
<p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p>
{% endif %}
{% else %}
{% if c.notification.message is not empty %}
{{ 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 class="message">
{{ 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 %}
<p class="chill-no-data-statement">{{ 'Any comment'|trans }}</p>
{% endif %}

View File

@@ -9,7 +9,7 @@
{% set labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %}
{% set label = labels is null ? step.currentStep : labels|localize_translatable_string %}
<div class="card">
<div class="pop-item">
<div class="card-body">
<div class="row">
<div class="col-sm-12">
@@ -47,38 +47,40 @@
{% endif %}
</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">
{% if transition_form.transitionFilter is defined %}
{{ form_row(transition_form.transitionFilter) }}
<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) }}
</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 %}
<div class="alert alert-chill-yellow">

View File

@@ -5,7 +5,7 @@
{% set place_labels = workflow_metadata(entity_workflow, 'label', step.currentStep) %}
{% 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">
{% 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/ChillDocStoreBundle/Resources/views/AccompanyingCourseDocument/_workflow.html.twig
#}
<section class="step my-4">
<div class="mb-5">
<section class="step my-4 pop-item">
<div class="mb-3">
<h2>{{ handler.entityTitle(entity_workflow) }}</h2>
{{ macro.breadcrumb({'entity_workflow': entity_workflow}) }}
</div>
{% 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 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/_comment.html.twig' %}</section> #}
<section class="step my-4">{% include '@ChillMain/Workflow/_history.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 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 ?
<ul class="record_actions sticky-form-buttons">
<li class="cancel">

View File

@@ -226,16 +226,35 @@ div.banner {
div.household-resume {
display: flex;
flex-direction: row;
align-items: center;
align-items: flex-start;
justify-content: space-between;
padding-left: 1rem;
padding-right:1rem;
div.col-address {
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 {
//padding: 0;
margin-bottom: 1rem;
width: 50%;
display: flex;
flex-direction: column;
> * > * {

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">
<h2 class="badge-title">
<span class="title_label"></span>
@@ -145,5 +144,4 @@
</ul>
{% endif %}
</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="wrap-header">
<div class="wh-row">

View File

@@ -19,12 +19,14 @@
<div class="row household-resume">
<div class="item-bloc col-5 col-address">
<h2>{{ 'Address'|trans }}</h2>
{% if address is empty %}
<p class="chill-no-data-statement">{{ 'household.Household does not have any address currently'|trans }}</p>
{% else %}
{{ address|chill_entity_render_box({'multiline': true, 'extended_infos': true }) }}
{% endif %}
<div class="address-box">
<i class="fa fa-map-marker" aria-hidden="true"></i>
{% if address is empty %}
<p class="chill-no-data-statement">{{ 'household.Household does not have any address currently'|trans }}</p>
{% else %}
{{ address|chill_entity_render_box({'multiline': true, 'extended_infos': true }) }}
{% endif %}
</div>
<ul class="list-inline text-right mt-2">
<li class="list-inline-item">
@@ -49,95 +51,95 @@
</li>
</ul>
</div>
<div class="item-bloc col-7 col-comment">
{% if form is null %}
{% set currentComposition = household.currentComposition %}
{% if currentComposition is not null %}
<div>
<h6>
{{ currentComposition.householdCompositionType.label|localize_translatable_string }}
</h6>
<p>
{{ 'household_composition.numberOfChildren children in household'|trans({'numberOfChildren': currentComposition.numberOfChildren}) }}
</p>
<p>
{{ 'household_composition.Since'|trans({'startDate': currentComposition.startDate}) }}
</p>
<ul class="record_actions">
<div class="item-bloc col-7 col-comment pop-item">
{% if form is null %}
{% set currentComposition = household.currentComposition %}
{% if currentComposition is not null %}
<div>
<h6>
{{ currentComposition.householdCompositionType.label|localize_translatable_string }}
</h6>
<p>
{{ 'household_composition.numberOfChildren children in household'|trans({'numberOfChildren': currentComposition.numberOfChildren}) }}
</p>
<p>
{{ 'household_composition.Since'|trans({'startDate': currentComposition.startDate}) }}
</p>
<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>
<a class="btn btn-sm btn-update change-icon"
href="{{ path('chill_person_household_composition_index', {'id': household.id}) }}">
{{ 'household_composition.Update composition'|trans }}
href="{{ path('chill_person_household_composition_index', {'id': household.id}) }}">
{{ 'household_composition.Add a 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>
<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 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>
{% 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>
<h2 class="my-5">{{ 'household.Household members'|trans }}</h2>
@@ -153,7 +155,7 @@
{% endif %}
{% 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' %}
<h3>{{ p.label|localize_translatable_string }}
{% if false == p.shareHousehold %}

View File

@@ -94,6 +94,10 @@ class PersonSearch extends AbstractSearch implements HasAdvancedSearchFormInterf
'label' => 'Birthdate before',
'required' => false,
])
->add('birthdate-after', ChillDateType::class, [
'label' => 'Birthdate after',
'required' => false,
])
->add('phonenumber', TelType::class, [
'required' => false,
'label' => 'Part of the phonenumber',

View File

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

View File

@@ -1,71 +1,68 @@
<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) %}
<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 %}
</h2>
<dl class="chill_view_data">
<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>
<div class="pop-item">
<dl class="chill_view_data">
<dt class="inline">{{ 'Description'|trans }}</dt>
<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>
{% endif %}
<h3>{{"Dates"|trans}}</h3>
{% if task.startDate is null and task.endDate is null and task.warningDate is null %}
<dt></dt>
<dd>
<span class="chill-no-data-statement">{{"No dates specified"|trans}}</span>
<dt class="inline">{{ 'Assignee'|trans }}</dt>
<dd class="info-field">
{% if task.assignee is null %}
<span class="chill-no-data-statement">{{"No one assignee"|trans}}</span>
{% else %}
{{ task.assignee }}
{% endif %}
</dd>
</dt>
{% else %}
{% if task.startDate is not null %}
<dt class="inline">{{ 'Start'|trans }}</dt>
<dd>{{ task.startDate|format_date('long') }}</dd>
{% if task.scope is not null %}
<dt class="inline">{{ 'Scope'|trans }}</dt>
<dd class="info-field">
<span class="scope">{{ task.scope.name|localize_translatable_string }}</span>
</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 %}
{% if task.endDate is not null %}
<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>
</dl>
</div>
{% if timeline is not null %}
<h3>{{"Timeline"|trans}}</h3>
{{ timeline|raw }}
<div class="pop-item">
<h3 class="subtitle">{{"Timeline"|trans}}</h3>
{{ timeline|raw }}
</div>
{% endif %}
<ul class="record_actions sticky-form-buttons">