For booking that are agency initiated (groups) different rules apply concerning mutability and requirement of personal data and whether the first participant is the applicant or not. This commit adds logic to evaluate the agency id assigned to the booking data to decide.
79 lines
4.1 KiB
Twig
79 lines
4.1 KiB
Twig
{% extends 'layout_booking.html.twig' %}
|
|
|
|
{% block content %}
|
|
{% include '_partials/_flashes.html.twig' %}
|
|
{{ form_start(form, {
|
|
'attr': {
|
|
'class': 'flex-1 flex flex-col min-h-0'
|
|
}
|
|
}) }}
|
|
{# Pagination - mobile only (above summary) #}
|
|
<div class="lg:hidden">
|
|
{% include 'booking/_pagination.html.twig' with { 'current_step': 2 } %}
|
|
</div>
|
|
<div class="flex-1 flex flex-col lg:grid lg:grid-cols-5 min-h-0 relative">
|
|
{% block booking_summary %}
|
|
<div id="booking-summary"
|
|
class="order-1 lg:order-2 lg:flex-1 lg:min-h-0 lg:col-span-2"
|
|
{{ stimulus_controller('toggle', { 'open': false }, { 'closed': 'hidden', 'open': 'absolute inset-0 z-20', 'iconOpen': 'rotate-180' }) }}
|
|
{% if htmx_oob_swap|default(false) %} hx-swap-oob="true"{% endif %}>
|
|
{% include 'booking/_summary.html.twig' with {
|
|
'bookingCreateDto': bookingDto,
|
|
'summaryData': summaryData
|
|
} %}
|
|
</div>
|
|
{% endblock %}
|
|
{% block participant_cards %}
|
|
<div id="main-content"
|
|
class="flex-1 order-2 lg:order-1 lg:col-span-3 bg-primary-bg flex flex-col min-h-0">
|
|
{# Pagination - desktop only (fixed above scrollable content) #}
|
|
<div class="hidden lg:block shrink-0">
|
|
{% include 'booking/_pagination.html.twig' with { 'current_step': 2 } %}
|
|
</div>
|
|
<div class="flex-1 overflow-y-auto px-4 lg:px-8 py-8">
|
|
<h2 class="pb-4">
|
|
Teilnehmer:innen
|
|
</h2>
|
|
|
|
{# Display form-level validation errors #}
|
|
{% if form.vars.submitted and not form.vars.valid %}
|
|
{% include '_partials/_alert.html.twig' with {
|
|
level: 'error',
|
|
title: 'Bitte überprüfe die Teilnehmerdaten',
|
|
messages: ['Einige Teilnehmer haben noch unvollständige oder fehlerhafte Angaben. Bitte bearbeite die markierten Teilnehmer.']
|
|
} %}
|
|
{% endif %}
|
|
|
|
<div class="divide-y divide-gray-200">
|
|
{% for cardData in cardsData %}
|
|
{% include 'booking/_participant_card.html.twig' with {
|
|
'cardData': cardData,
|
|
'index': loop.index0,
|
|
'participantNumber': loop.index,
|
|
'mode': 'create',
|
|
'isSubmitted': isSubmitted
|
|
} %}
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
</div>
|
|
<div class="shrink-0 bg-primary-dark px-4 lg:px-8 py-2 lg:py-4 z-20">
|
|
<div class="flex justify-between" hx-disinherit="*">
|
|
<button type="button"
|
|
hx-get="{{ path('app_booking_cancel') }}"
|
|
hx-target="body"
|
|
hx-swap="beforeend"
|
|
class="inline-flex items-center justify-center bg-gray-200 rounded-md w-10 h-10">
|
|
<svg class="w-8 h-8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"><rect width="256" height="256" fill="none"/><line x1="200" y1="56" x2="56" y2="200" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="200" y1="200" x2="56" y2="56" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/></svg>
|
|
</button>
|
|
<button type="submit" class="button button--primary" {{ qa_attribute('btn-submit') }}>
|
|
Weiter zu Schritt 3
|
|
</button>
|
|
</div>
|
|
</div>
|
|
{{ form_rest(form) }}
|
|
{{ form_end(form) }}
|
|
{% endblock %}
|