Files
chill-bundles/src/Bundle/ChillEventBundle/Resources/views/Event/show.html.twig

301 lines
12 KiB
Twig

{% extends '@ChillEvent/layout.html.twig' %}
{% block title 'Event : %label%'|trans({ '%label%' : event.name } ) %}
{% import '@ChillPerson/Person/macro.html.twig' as person_macro %}
{% block js %}
{{ parent() }}
{{ encore_entry_script_tags('mod_pickentity_type') }}
{{ encore_entry_script_tags('mod_document_action_buttons_group') }}
{% endblock %}
{% block css %}
{{ parent() }}
{{ encore_entry_link_tags('mod_pickentity_type') }}
{{ encore_entry_link_tags('mod_document_action_buttons_group') }}
{% endblock %}
{% macro insert_onthefly(type, entity, parent = null) %}
{% include '@ChillMain/OnTheFly/_insert_vue_onthefly.html.twig' with {
action: 'show', displayBadge: true,
targetEntity: { name: type, id: entity.id },
buttonText: entity|chill_entity_render_string,
isDead: entity.deathdate is defined and entity.deathdate is not null,
parent: parent
} %}
{% endmacro %}
{% block event_content -%}
<div class="col-10">
<h1>{{ 'Details of an event'|trans }}</h1>
<table class="table table-bordered border-dark align-middle">
<tbody>
<tr>
<th>{{ 'Circle'|trans }}</th>
<td>{{ event.circle.name|localize_translatable_string }}</td>
</tr>
<tr>
<th>{{ 'Center'|trans }}</th>
<td>{{ event.center.name }}</td>
</tr>
<tr>
<th>{{ 'Name'|trans }}</th>
<td>{{ event.name }}</td>
</tr>
<tr>
<th>{{ 'Date'|trans }}</th>
<td>{{ event.date|format_date('long') }}</td>
</tr>
<tr>
<th>{{ 'Event type'|trans }}</th>
<td>{{ event.type.name|localize_translatable_string }}</td>
</tr>
<tr>
<th>{{ 'event.theme.label'|trans }}
<td>
{% for t in event.themes %}
{{ t|chill_entity_render_box }}
{% endfor %}
</td>
</tr>
<tr>
<th>{{ 'Moderator'|trans }}</th>
<td>{{ event.moderator|chill_entity_render_string }}</td>
</tr>
<tr>
<th>{{ 'event.animators.intern'|trans }}</th>
<td>
{% for a in event.animatorsIntern %}
{{ _self.insert_onthefly('user', a) }}
{% endfor %}
</td>
</tr>
<tr>
<th>{{ 'event.animators.extern'|trans }}</th>
<td>
{% for a in event.animatorsExtern %}
{{ _self.insert_onthefly('thirdparty', a) }}
{% endfor %}
</td>
</tr>
<tr>
<th>{{ 'event.fields.location'|trans }}</th>
<td>
{% if event.location is not null %}
{{ event.location.name }}
{% if event.location.address is not same as(null) %}{{ event.location.address|chill_entity_render_box({'multiline': false, 'with_picto': (event.location.name is empty), 'details_button': true}) }}{% endif %}
{% else %}
<span class="chill-no-data-statement">{{ 'Any location for this event'|trans }}</span>
{% endif %}
</td>
</tr>
</tbody>
</table>
<div class="budget-wrapper" style="background-color: whitesmoke; padding: 1rem; margin-bottom: .5rem;">
{% set resources = event.budgetElements|filter(e => e.kind.type.value == 'Resource') %}
{% set charges = event.budgetElements|filter(e => e.kind.type.value == 'Charge') %}
<h2>Budget de l'événement</h2>
<h3>Ressources</h3>
{% if resources is not empty %}
<table class="table table-bordered border-dark align-middle">
<thead>
<tr>
<th>{{ 'event.budget.resource type'|trans }}</th>
<th>{{ 'event.budget.amount'|trans }}</th>
<th>{{ 'event.budget.comment'|trans }}</th>
</tr>
</thead>
<tbody>
{% set totalResources = 0 %}
{% for res in resources %}
<tr>
<td>{{ res.kind.name|localize_translatable_string }}</td>
<td>{{ res.amount|format_currency('EUR') }}</td>
<td>{{ res.comment.comment|chill_print_or_message(null, 'blockquote') }}</td>
</tr>
{% set totalResources = totalResources + res.amount %}
{% endfor %}
</tbody>
<tfoot>
<tr>
<th>Total</th>
<td>{{ totalResources|format_currency('EUR') }}</td>
</tr>
</tfoot>
</table>
{% else %}
<p class="chill-no-data-statement">{{ 'event.budget.no elements'|trans }}</p>
{% endif %}
<h3>Charges</h3>
{% if charges is not empty %}
<table class="table table-bordered border-dark align-middle">
<thead>
<tr>
<th>{{ 'event.budget.charge type'|trans }}</th>
<th>{{ 'event.budget.amount'|trans }}</th>
<th>{{ 'event.budget.comment'|trans }}</th>
</tr>
</thead>
<tbody>
{% set totalCharges = 0 %}
{% for chg in charges %}
<tr>
<td>{{ chg.kind.name|localize_translatable_string }}</td>
<td>{{ chg.amount|format_currency('EUR') }}</td>
<td>{{ chg.comment.comment|chill_print_or_message(null, 'blockquote') }}</td>
</tr>
{% set totalCharges = totalCharges + chg.amount %}
{% endfor %}
</tbody>
<tfoot>
<tr>
<th>Total</th>
<td>{{ totalCharges|format_currency('EUR') }}</td>
</tr>
</tfoot>
</table>
{% else %}
<p class="chill-no-data-statement">{{ 'event.budget.no elements'|trans }}</p>
{% endif %}
</div>
{% if event.documents|length > 0 %}
<div>
<p><strong>{{ 'event.fields.documents'|trans }}</strong></p>
<ul>
{% for d in event.documents %}
<li class="document-list-item">{{ d.title|chill_print_or_message('document.Any title') }} {{ d|chill_document_button_group(d.title, is_granted('CHILL_EVENT_SEE_DETAILS', event), {small: false}) }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% if not event.comment.empty %}
<div>
{{ event.comment|chill_entity_render_box({
'disable_markdown': false,
'metadata': true,
}) }}
</div>
{% endif %}
<div class="participations-wrapper">
<h2>{{ 'Participations'|trans }}</h2>
{% set count = event.participations|length %}
<p class="chill-no-data-statement">{{ 'count participations to this event'|trans({'count': count}) }}</p>
{% if count > 0 %}
<table class="table table-bordered border-dark align-middle">
<thead>
<tr>
<th>{{ 'Person'|trans }}</th>
<th>{{ 'Role'|trans }}</th>
<th>{{ 'Status'|trans }}</th>
<th>{{ 'Last update'|trans }}</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for participation in event.participations %}
<tr>
<td>
{% include '@ChillMain/OnTheFly/_insert_vue_onthefly.html.twig' with {
targetEntity: { name: 'person', id: participation.person.id },
action: 'show',
displayBadge: true,
buttonText: participation.person|chill_entity_render_string,
isDead: participation.person.deathdate is not null
} %}
</td>
<td>{{ participation.role.name|localize_translatable_string }}</td>
<td>{{ participation.status.name|localize_translatable_string }}</td>
<td>{{ participation.lastUpdate|ago }} {# sf4 check: filter 'time_diff' is abandoned,
alternative: knplabs/knp-time-bundle provide filter 'ago' #}
<i class="fa fa-info-circle" title="{{ participation.lastUpdate|format_date("long")|escape('html_attr') }}"></i>
</td>
<td>
<ul class="record_actions">
{% if is_granted('CHILL_EVENT_PARTICIPATION_UPDATE', participation) %}
<li>
<a href="{{ chill_path_add_return_path('chill_event_participation_edit', { 'participation_id' : participation.id }, false, 'See'|trans ) }}"
class="btn btn-edit" title="{{ 'Edit'|trans }}"></a>
</li>
<li>
<a href="{{ path('chill_event_participation_delete', {'participation_id' : participation.id } ) }}"
class="btn btn-delete" title="{{ 'Delete'|trans }}"></a>
</li>
{% endif %}
</ul>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
<div class="row">
<div class="col-8">
{{ form_start(form_add_participation_by_person) }}
<div class="input-group">
{{ form_widget(form_add_participation_by_person.person_id, { 'attr' : {
'class' : 'custom-select',
'style': 'min-width: 15em; max-width: 18em; display: inline-block;'
}} ) }}
</div>
<input type="hidden" name="returnPath" value="{{ app.request.requestUri }}" />
{{ form_end(form_add_participation_by_person) }}
</div>
</div>
<ul class="record_actions">
{% if count > 0 %}
<li>
{{ form_start(form_export, {'attr': {'id': 'export_tableur'}}) }}
<div class="input-group">
{{ form_widget(form_export.format, { 'attr' : { 'class': 'custom-select' } }) }}
<div class="input-group-append">
{{ form_widget(form_export.submit, { 'attr' : { 'class': 'btn btn-save' } }) }}
</div>
<a class="bt-"></a>
</div>
{{ form_rest(form_export) }}
{{ form_end(form_export) }}
</li>
<li><a href="{{ path('chill_event_participation_edit_multiple', { 'event_id' : event.id } ) }}" class="btn btn-edit">{{ 'Edit all the participations'|trans }}</a></li>
{% endif %}
</ul>
</div>
<div class="post_show">
{{ chill_delegated_block('block_footer_show', { 'event': event }) }}
</div>
<ul class="record_actions">
{% set returnPath = app.request.get('return_path') %}
{% set returnLabel = app.request.get('return_label') %}
<li class="cancel">
<a href="{{ chill_return_path_or('chill_event_event_list') }}" class="btn btn-cancel">{{ 'Back to the list'|trans|chill_return_path_label }}</a>
</li>
<li>
<a href="{{ chill_path_add_return_path('chill_event__event_edit', {'event_id': event.id }, false, 'See'|trans) }}" class="btn btn-edit">
{{ 'Edit'|trans }}
</a>
</li>
<li>
<a href="{{ path('chill_event__event_delete', {'event_id' : event.id } ) }}"
class="btn btn-delete">{{ 'Delete event'|trans }}</a>
</li>
</ul>
</div>
{% endblock %}