mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-28 17:44:58 +00:00
301 lines
12 KiB
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> </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 %}
|