feat: integrate with htmx

This commit is contained in:
Björn Fromme
2024-02-07 10:15:59 +01:00
parent 4d1799ca49
commit 1e572606f8
154 changed files with 1447 additions and 1461 deletions
-22
View File
@@ -1,22 +0,0 @@
<div id="ajax-modal"
class="fixed inset-0 w-full h-full z-50 hidden"
{{ stimulus_controller('ajax-modal') }}
>
<div class="absolute inset-0 w-full h-full bg-black/80" {{ stimulus_action('ajax-modal', 'hide', 'click') }}></div>
<div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 px-4 w-full max-w-2xl">
<div class="bg-white p-8 rounded-md">
<div class="flex justify-between pb-4">
<div class="text-2xl font-bold" {{ stimulus_target('ajax-modal', 'title') }}></div>
<button type="button"
class="inline-block"
{{ stimulus_action('ajax-modal', 'hide') }}>
{{ icon('close', 'w-6 h-6')}}
</button>
</div>
<div class="hidden" {{ stimulus_target('ajax-modal', 'content') }}></div>
<div {{ stimulus_target('ajax-modal', 'spinner') }}>
{% include '_partials/_spinner.html.twig' with { 'class': 'w-8 h-8 mx-auto'} %}
</div>
</div>
</div>
</div>
@@ -1,28 +0,0 @@
<div id="confirmation-modal"
class="fixed top-0 left-0 z-50 inset-0 hidden"
{{ stimulus_controller('confirmation-modal') }}
>
<div class="absolute top-0 left-0 inset-0 bg-black/80" {{ stimulus_action('confirmation-modal', 'hide', 'click') }}></div>
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white p-8 w-full max-w-3xl rounded-md">
<div class="flex justify-between border-b border-gray-200 pb-2 mb-4">
<div class="flex items-center space-x-2">
{{ icon('alert', 'w-8 h-8') }}
<span class="text-xl font-bold" {{ stimulus_target('confirmation-modal', 'title') }}></span>
</div>
<button class="inline-block" {{ stimulus_action('confirmation-modal', 'hide') }}>
{{ icon('close', 'w-8 h-8') }}
</button>
</div>
<form method="post" {{ stimulus_target('confirmation-modal', 'form') }}>
<div {{ stimulus_target('confirmation-modal', 'content') }}></div>
<div class="mt-6 flex items-center justify-between">
<button type="submit" class="btn bg-red-500">
Ja
</button>
<button type="button" class="btn" {{ stimulus_action('confirmation-modal', 'hide') }}>
Abbrechen
</button>
</div>
</form>
</div>
</div>
+4 -6
View File
@@ -56,7 +56,7 @@
</a>
</td>
<td>
{% if assignment.pickup %}
{% if assignment.pickup and assignment.destination.pickup(assignment.pickup) %}
{% set pickup = assignment.destination.pickup(assignment.pickup) %}
<a href="{{ path('app_admin_assignment_detail', { 'uuid': assignment.uuid, 'r': return_url() }) }}">
<span class="whitespace-nowrap">ab {{ pickup.city }}</span>
@@ -77,11 +77,9 @@
role="button"
title="Bewerber:innen-Info anzeigen"
aria-label="Bewerber:innen-Info anzeigen"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', 'click', {
'title': 'Teamer:innen-Info ' ~ application.teamer,
'url': path('app_admin_teamer_info', { 'uuid': application.teamer.uuid })
}) }}>
hx-get="{{ path('app_admin_teamer_info', { 'uuid': application.teamer.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{% set requirementsMet = true %}
{% if assignment.pickup and not application.matchesPickup %}
{{ icon('bus', 'w-5 h-5 text-red-500 shrink-0') }}
@@ -1,44 +0,0 @@
<div class="flex items-start">
<div class="flex-1 pr-8">
{% include '_partials/_assignment_requirements_info.html.twig' with {
'assignment': application.assignment,
'teamer': application.teamer
} %}
<ul class="pb-8 divide-y divide-gray-200">
{% for type in ['ski', 'snowboard'] %}
<li class="py-2">
<div class="flex items-center justify-between">
<span class="flex-1">{{ type|license_label }}</span>
{% set license = application.teamer.licenseOfType(type) %}
{% if license %}
<div class="flex items-center space-x-2">
<span>{{ license.date|date('m/Y') }}</span>
{% if is_granted('DOWNLOAD', license.certificate) %}
<a href="{{ path('app_common_download', { 'uuid': license.certificate.uuid, 'inline': true }) }}"
target="_blank"
title="Download Nachweis">
{{ icon('download', 'w-4 h-4') }}
</a>
{% endif %}
</div>
{% else %}
{{ icon('minus', 'w-4 h-4') }}
{% endif %}
</div>
</li>
{% endfor %}
</ul>
</div>
<div>
{% set teamer = application.teamer %}
{% if teamer.photo %}
<img src="{{ asset(teamer.photo.filename | imagine_filter('profile')) }}"
class="w-32 h-auto border-2 border-primary"
alt="{{ teamer.firstName }}">
{% else %}
<div class="border-2 border-primary">
{{ icon('user', 'w-32 h-32 text-gray-200') }}
</div>
{% endif %}
</div>
</div>
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du die Bewerbung von {{ application.teamer }} wirklich löschen?
</div>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du {{ application.teamer }} wirklich einteilen?
</div>
{% endblock %}
@@ -0,0 +1,50 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Teamer:inneninfo {{ application.teamer }}{% endblock %}
{% block content %}
<div class="flex items-start">
<div class="flex-1 pr-8">
{% include '_partials/_assignment_requirements_info.html.twig' with {
'assignment': application.assignment,
'teamer': application.teamer
} %}
<ul class="pb-8 divide-y divide-gray-200">
{% for type in ['ski', 'snowboard'] %}
<li class="py-2">
<div class="flex items-center justify-between">
<span class="flex-1">{{ type|license_label }}</span>
{% set license = application.teamer.licenseOfType(type) %}
{% if license %}
<div class="flex items-center space-x-2">
<span>{{ license.date|date('m/Y') }}</span>
{% if is_granted('DOWNLOAD', license.certificate) %}
<a href="{{ path('app_common_download', { 'uuid': license.certificate.uuid, 'inline': true }) }}"
target="_blank"
title="Download Nachweis">
{{ icon('download', 'w-4 h-4') }}
</a>
{% endif %}
</div>
{% else %}
{{ icon('minus', 'w-4 h-4') }}
{% endif %}
</div>
</li>
{% endfor %}
</ul>
</div>
<div>
{% set teamer = application.teamer %}
{% if teamer.photo %}
<img src="{{ asset(teamer.photo.filename | imagine_filter('profile')) }}"
class="w-32 h-auto border-2 border-primary"
alt="{{ teamer.firstName }}">
{% else %}
<div class="border-2 border-primary">
{{ icon('user', 'w-32 h-32 text-gray-200') }}
</div>
{% endif %}
</div>
</div>
{% endblock %}
@@ -0,0 +1,17 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Bewerbungsstatus bearbeiten{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.status) }}
{{ form_row(form.comment) }}
{{ form_row(form.commentVisible) }}
</div>
<button type="submit" class="btn">
Aktualisieren
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
@@ -1,11 +0,0 @@
{{ form_start(form) }}
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.status) }}
{{ form_row(form.comment) }}
{{ form_row(form.commentVisible) }}
</div>
<button type="submit" class="btn">
Aktualisieren
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
+39 -45
View File
@@ -10,52 +10,46 @@
</div>
{% endmacro %}
<div {{ stimulus_controller('form-partial', { 'url': path('app_admin_assignment_pickup_form') }) }}>
{{ form_start(form, { 'attr': { 'data-form-partial-target': 'form' } }) }}
<div class="flex flex-col space-y-4 pb-8">
<div class="grid lg:grid-cols-6 gap-x-4 gap-y-4">
<div class="lg:col-span-3">
{{ form_row(form.destination) }}
</div>
{{ form_row(form.status) }}
{{ form_row(form.availableDispositions) }}
<div>
<h4 class="font-bold pb-2">
{{ form_label(form.showAvailableDispositions) }}
</h4>
{{ form_widget(form.showAvailableDispositions) }}
</div>
{{ form_start(form) }}
<div class="flex flex-col space-y-4 pb-8">
<div class="grid lg:grid-cols-6 gap-x-4 gap-y-4">
<div class="lg:col-span-3">
{{ form_row(form.destination) }}
</div>
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4">
{{ form_row(form.jobProfile) }}
{{ form_row(form.jobProfileInfo) }}
{{ form_row(form.benefits) }}
{{ form_row(form.contact) }}
</div>
<div class="relative">
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4" {{ stimulus_target('form-partial', 'container') }}>
{% block partial_form %}
{{ form_row(form.pickup) }}
{#{{ form_row(form.pickupDate) }}#}
{% endblock %}
</div>
<div class="absolute top-0 left-0 inset-0 bg-white/90 flex items-center justify-center" {{ stimulus_target('form-partial', 'spinner') }}>
{% include '_partials/_spinner.html.twig' with { 'class': 'w-8 h-8'} %}
</div>
</div>
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4">
{{ form_row(form.fees) }}
{{ form_row(form.remarks) }}
{{ form_row(form.status) }}
{{ form_row(form.availableDispositions) }}
<div>
<h4 class="font-bold pb-2">
{{ form_label(form.showAvailableDispositions) }}
</h4>
{{ form_widget(form.showAvailableDispositions) }}
</div>
</div>
<div class="flex items-center space-x-2">
<button type="submit" class="btn">
Speichern
</button>
<a href="{{ path('app_admin_assignment_index') }}" class="btn btn--secondary">
Abbrechen
</a>
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4">
{{ form_row(form.jobProfile) }}
{{ form_row(form.jobProfileInfo) }}
{{ form_row(form.benefits) }}
{{ form_row(form.contact) }}
</div>
{{ form_rest(form) }}
{{ form_end(form) }}
</div>
<div class="relative">
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4" id="pickup-form">
{% block partial_form %}
{{ form_row(form.pickup) }}
{% endblock %}
</div>
</div>
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4">
{{ form_row(form.fees) }}
{{ form_row(form.remarks) }}
</div>
</div>
<div class="flex items-center space-x-2">
<button type="submit" class="btn">
Speichern
</button>
<a href="{{ path('app_admin_assignment_index') }}" class="btn btn--secondary">
Abbrechen
</a>
</div>
{{ form_rest(form) }}
{{ form_end(form) }}
+26 -33
View File
@@ -39,11 +39,10 @@
<td>
<button type="button"
class="flex items-center space-x-1"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Teamer:inneninfo ' ~ application.teamer,
'url': path('app_admin_application_info', { 'uuid': application.uuid })
}) }}>
title="Teamer:inneninfo {{ application.teamer }}"
hx-get="{{ path('app_admin_application_info', { 'uuid': application.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
<span>{{ application.teamer }}</span>
{{ icon('info', 'w-4 h-4') }}
</button>
@@ -63,34 +62,30 @@
{% if is_granted('DISPOSE', application) %}
<button type="button"
class="text-green-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du ' ~ application.teamer ~ ' wirklich einteilen?',
'target-url': path('app_admin_application_dispose', { 'uuid': application.uuid })
}) }}>
title="einteilen"
hx-get="{{ path('app_admin_application_dispose', { 'uuid': application.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('check') }}
</button>
{% endif %}
{% if is_granted('STATUS', application) %}
<button type="button"
class="text-primary"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Bewerbungsstatus bearbeiten',
'url': path('app_admin_application_status', { 'uuid': application.uuid })
}) }}>
title="Bewerbungsstatus bearbeiten"
hx-get="{{ path('app_admin_application_status', { 'uuid': application.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('power') }}
</button>
{% endif %}
{% if is_granted('DELETE', application) %}
<button type="button" class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du die Bewerbung von ' ~ application.teamer ~ ' wirklich löschen?',
'target-url': path('app_admin_application_delete', { 'uuid': application.uuid })
}) }}>
<button type="button"
class="text-red-500"
title="Bewerbung löschen"
hx-get="{{ path('app_admin_application_delete', { 'uuid': application.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
{% endif %}
@@ -134,11 +129,10 @@
<td>
<button type="button"
class="flex items-center space-x-1"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Teamer:inneninfo ' ~ disposition.teamer,
'url': path('app_admin_teamer_info', { 'uuid': disposition.teamer.uuid })
}) }}>
title="Teamer:inneninfo {{ disposition.teamer }}"
hx-get="{{ path('app_admin_teamer_info', { 'uuid': disposition.teamer.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
<span>{{ disposition.teamer }}</span>
{{ icon('info', 'w-4 h-4') }}
</button>
@@ -155,11 +149,10 @@
{% if is_granted('DELETE', disposition) %}
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Einteilung löschen',
'url': path('app_admin_disposition_delete', { 'uuid': disposition.uuid })
}) }}>
title="Einteilung löschen"
hx-get="{{ path('app_admin_disposition_delete', { 'uuid': disposition.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
{% endif %}
+7 -13
View File
@@ -10,19 +10,16 @@
<div class="flex flex-col items-end space-y-2 md:flex-row md:items-center md:space-x-2 md:space-y-0">
<button type="button"
class="{{ html_classes('btn btn--small', { 'btn--secondary': filterDto.active }) }}"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Einsätze filtern',
'url': path('app_common_assignment_filter', { 'r': return_url() })
}) }}>
<div class="flex items-center space-x-1">
title="Filter"
hx-get="{{ path('app_common_assignment_filter', { 'r': return_url() }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('filter', 'w-4 h-4 shrink-0') }}
{% if filterDto.active %}
<span class="whitespace-nowrap">{{ filterDto.activeFiltersCount }} Filter aktiv</span>
{% else %}
<span>Filter</span>
{% endif %}
</div>
</button>
{% if filterDto.active %}
<a href="{{ path('app_common_assignment_filter_reset', { 'r': return_url() }) }}" class="btn btn--small btn--secondary">
@@ -109,12 +106,9 @@
<div class="flex items-center space-x-1 justify-end">
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du den Einsatz wirklich löschen?',
'target-url': path('app_admin_assignment_delete', { 'uuid': assignment.uuid })
}) }}>
hx-get="{{ path('app_admin_assignment_delete', { 'uuid': assignment.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
<a href="{{ path('app_admin_assignment_duplicate', { 'uuid': assignment.uuid, 'r': return_url() }) }}">
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du den Einsatz <em>{{ assignment.destination.product }}</em> wirklich löschen?
</div>
{% endblock %}
@@ -1,9 +0,0 @@
{{ form_start(form) }}
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.remarks) }}
</div>
<button type="submit" class="btn">
Löschen
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
@@ -0,0 +1,15 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Einteilung löschen{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.remarks) }}
</div>
<button type="submit" class="btn">
Löschen
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
-13
View File
@@ -1,13 +0,0 @@
{{ form_start(form) }}
<h2 class="font-bold text-lg pb-4">
{{ ('label.document.type.' ~ document.type)|trans }} {{ document.disposition.teamer }} vom {{ document.createdAt|date('d.m.Y') }}
</h2>
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.status) }}
{{ form_row(form.comment) }}
</div>
<button type="submit" class="btn">
Aktualisieren
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
+6 -11
View File
@@ -69,22 +69,17 @@
{% if is_granted('DELETE', upload) %}
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du das Dokument wirklich löschen?',
'target-url': path('app_admin_document_delete', { 'uuid': upload.uuid })
}) }}>
hx-get="{{ path('app_admin_document_delete', { 'uuid': upload.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
{% endif %}
{% if is_granted('CHECK', upload) %}
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Dokumentenstatus bearbeiten',
'url': path('app_admin_document_check', { 'uuid': upload.uuid })
}) }}>
hx-get="{{ path('app_admin_document_check', { 'uuid': upload.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('edit') }}
</button>
{% endif %}
@@ -0,0 +1,19 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Dokumentenstatus bearbeiten{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<h2 class="font-bold text-lg pb-4">
{{ ('label.document.type.' ~ document.type)|trans }} {{ document.disposition.teamer }} vom {{ document.createdAt|date('d.m.Y') }}
</h2>
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.status) }}
{{ form_row(form.comment) }}
</div>
<button type="submit" class="btn">
Aktualisieren
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du das Dokument <em>{{ ('label.document.type.' ~ document.type)|trans }}</em> wirklich löschen?
</div>
{% endblock %}
@@ -1,10 +0,0 @@
{{ form_start(form) }}
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.comment) }}
{{ form_row(form.commentInternal) }}
</div>
<button type="submit" class="btn">
Speichern und freigeben
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
@@ -0,0 +1,16 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Feedback freigeben{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.comment) }}
{{ form_row(form.commentInternal) }}
</div>
<button type="submit" class="btn">
Speichern und freigeben
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
+6 -8
View File
@@ -127,20 +127,18 @@
{% for feedback in feedbacks %}
<li class="py-2 first:pt-0 last:pb-0">
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Feedback freigeben',
'url': path('app_admin_feedback_approve', { 'uuid': feedback.uuid })
}) }}>
<div class="flex items-center space-x-1">
hx-get="{{ path('app_admin_feedback_approve', { 'uuid': feedback.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
<span class="flex items-center space-x-1">
{{ icon('feedback', 'w-4 h-4 shrink-0') }}
<div class="flex items-center space-x-1 truncate">
<span class="whitespace-nowrap">{{ feedback.teamer }}</span>
{% include '_partials/_dot.html.twig' %}
<span class="whitespace-nowrap">{{ feedback.destinationName }}</span>
</div>
</div>
<div class="pl-5 whitespace-nowrap">{{ feedback.jobProfileName }}</div>
</span>
<span class="pl-5 whitespace-nowrap">{{ feedback.jobProfileName }}</span>
</button>
</li>
{% else %}
@@ -1,4 +1,4 @@
{{ form_start(form) }}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.dateFrom) }}
{{ form_row(form.dateTo) }}
@@ -1,11 +0,0 @@
{{ form_start(form) }}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.dateFrom) }}
{{ form_row(form.dateTo) }}
{{ form_row(form.description) }}
</div>
<button type="submit" class="btn">
Speichern
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
@@ -39,28 +39,24 @@
<div class="flex items-center space-x-2 justify-end">
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du den Zeitraum wirklich löschen?',
'target-url': path('app_admin_system_availability_delete', { 'id': availability.id })
}) }}>
title="Zeitraum löschen"
hx-get="{{ path('app_admin_system_availability_delete', { 'id': availability.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Verfügbarkeit bearbeiten',
'url': path('app_admin_system_availability_edit', { 'id': availability.id })
}) }}>
title="Verfügbarkeit bearbeiten"
hx-get="{{ path('app_admin_system_availability_edit', { 'id': availability.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('edit') }}
</button>
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Verfügbarkeit duplizieren',
'url': path('app_admin_system_availability_duplicate', { 'id': availability.id })
}) }}>
title="Verfügbarkeit duplizieren"
hx-get="{{ path('app_admin_system_availability_duplicate', { 'id': availability.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('copy') }}
</button>
</div>
@@ -80,11 +76,10 @@
</div>
<button type="button"
class="btn"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Zeitraum hinzufügen',
'url': path('app_admin_system_availability_create')
}) }}>
title="Zeitraum hinzufügen"
hx-get="{{ path('app_admin_system_availability_create') }}"
hx-target="body"
hx-swap="beforeend">
Zeitraum hinzufügen
</button>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Zeitraum hinzufügen{% endblock %}
{% block content %}
{% include 'admin/system/availability/_form.html.twig' %}
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du den Zeitraum wirklich löschen?
</div>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Zeitraum duplizieren{% endblock %}
{% block content %}
{% include 'admin/system/availability/_form.html.twig' %}
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Zeitraum bearbeiten{% endblock %}
{% block content %}
{% include 'admin/system/availability/_form.html.twig' %}
{% endblock %}
@@ -1,4 +1,4 @@
{{ form_start(form) }}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-4">
{{ form_row(form.name) }}
{{ form_row(form.email) }}
@@ -1 +0,0 @@
{% include 'admin/system/contact/_form.html.twig' %}
@@ -1 +0,0 @@
{% include 'admin/system/contact/_form.html.twig' %}
+12 -16
View File
@@ -39,20 +39,17 @@
<div class="flex items-center space-x-2 justify-end">
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du die Ansprechperson wirklich löschen?',
'target-url': path('app_admin_system_contact_delete', { 'id': contact.id })
}) }}>
title="Ansprechperson löschen"
hx-get="{{ path('app_admin_system_contact_delete', { 'id': contact.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Ansprechperson bearbeiten',
'url': path('app_admin_system_contact_edit', { 'id': contact.id })
}) }}>
title="Ansprechperson bearbeiten"
hx-get="{{ path('app_admin_system_contact_edit', { 'id': contact.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('edit') }}
</button>
</div>
@@ -71,11 +68,10 @@
</div>
<button type="button"
class="btn"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Ansprechperson hinzufügen',
'url': path('app_admin_system_contact_create')
}) }}>
title="Ansprechperson hinzufügen"
hx-get="{{ path('app_admin_system_contact_create') }}"
hx-target="body"
hx-swap="beforeend">
Neu
</button>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Ansprechperson hinzufügen{% endblock %}
{% block content %}
{% include 'admin/system/contact/_form.html.twig' %}
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du <em>{{ contact }}</em> als Ansprechperson wirklich löschen?
</div>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Ansprechperson bearbeiten{% endblock %}
{% block content %}
{% include 'admin/system/contact/_form.html.twig' %}
{% endblock %}
@@ -1,9 +0,0 @@
{{ form_start(form) }}
<div class="pb-4">
{{ form_row(form.displayName) }}
</div>
<button type="submit" class="btn">
aktualisieren
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
+12 -21
View File
@@ -45,28 +45,21 @@
<div class="flex items-center space-x-2 justify-end">
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du das Dokument wirklich löschen?',
'target-url': path('app_admin_system_document_delete', { 'uuid': document.uuid })
}) }}>
hx-get="{{ path('app_admin_system_document_delete', { 'uuid': document.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Dokument ersetzen',
'url': path('app_admin_system_document_replace', { 'uuid': document.uuid })
}) }}>
hx-get="{{ path('app_admin_system_document_replace', { 'uuid': document.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('refresh') }}
</button>
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Dokument umbenennen',
'url': path('app_admin_system_document_edit', { 'uuid': document.uuid })
}) }}>
hx-get="{{ path('app_admin_system_document_edit', { 'uuid': document.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('edit') }}
</button>
<a href="{{ path('app_common_download', { 'uuid': document.uuid }) }}"
@@ -90,11 +83,9 @@
</div>
<button type="button"
class="btn"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Dokumente hinzufügen',
'url': path('app_admin_system_document_upload')
}) }}>
hx-get="{{ path('app_admin_system_document_upload') }}"
hx-target="body"
hx-swap="beforeend">
Dokumente hinzufügen
</button>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du das Dokument <em>{{ document }}</em> wirklich löschen?
</div>
{% endblock %}
@@ -0,0 +1,15 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Dokument umbenennen{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="pb-4">
{{ form_row(form.displayName) }}
</div>
<button type="submit" class="btn">
aktualisieren
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
@@ -0,0 +1,20 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Dokument ersetzen{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="pb-4">
{% include '_partials/_upload_collection_form.html.twig' with {
'endpoint_upload': path('_uploader_upload_document'),
'max_filesize': 5,
'max_files': 1,
'accepted_files': 'application/pdf',
} %}
</div>
<button type="submit" class="btn">
ersetzen
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
@@ -0,0 +1,19 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Dokumente hinzufügen{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' }}) }}
<div class="pb-4">
{% include '_partials/_upload_collection_form.html.twig' with {
'endpoint_upload': path('_uploader_upload_document'),
'max_filesize': 5,
'accepted_files': 'application/pdf',
} %}
</div>
<button type="submit" class="btn">
Uploads speichern
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
@@ -1,14 +0,0 @@
{{ form_start(form) }}
<div class="pb-4">
{% include '_partials/_upload_collection_form.html.twig' with {
'endpoint_upload': path('_uploader_upload_document'),
'max_filesize': 5,
'max_files': 1,
'accepted_files': 'application/pdf',
} %}
</div>
<button type="submit" class="btn">
ersetzen
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
@@ -1,13 +0,0 @@
{{ form_start(form) }}
<div class="pb-4">
{% include '_partials/_upload_collection_form.html.twig' with {
'endpoint_upload': path('_uploader_upload_document'),
'max_filesize': 5,
'accepted_files': 'application/pdf',
} %}
</div>
<button type="submit" class="btn">
Uploads speichern
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
+4 -6
View File
@@ -33,12 +33,10 @@
<div class="flex items-center space-x-2 justify-end">
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du das Honorar wirklich löschen?',
'target-url': path('app_admin_system_faq_delete', { 'id': faq.id })
}) }}>
title="FAQ löschen"
hx-get="{{ path('app_admin_system_faq_delete', { 'id': faq.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
<a href="{{ path('app_admin_system_faq_edit', { 'id': faq.id }) }}">
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du die FAQ <em>{{ faq.question }}</em> wirklich löschen?
</div>
{% endblock %}
@@ -1,4 +1,4 @@
{{ form_start(form) }}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.name) }}
{{ form_row(form.nameInternal) }}
+16 -21
View File
@@ -39,28 +39,24 @@
<div class="flex items-center space-x-2 justify-end">
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du das Honorar wirklich löschen?',
'target-url': path('app_admin_system_fee_delete', { 'id': fee.id })
}) }}>
title="Honorar löschen"
hx-get="{{ path('app_admin_system_fee_delete', { 'id': fee.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Honorar bearbeiten',
'url': path('app_admin_system_fee_edit', { 'id': fee.id })
}) }}>
title="Honorar bearbeiten"
hx-get="{{ path('app_admin_system_fee_edit', { 'id': fee.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('edit') }}
</button>
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Honorar duplizieren',
'url': path('app_admin_system_fee_duplicate', { 'id': fee.id })
}) }}>
title="Honorar duplizieren"
hx-get="{{ path('app_admin_system_fee_duplicate', { 'id': fee.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('copy') }}
</button>
</div>
@@ -79,11 +75,10 @@
</div>
<button type="button"
class="btn"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Honorar hinzufügen',
'url': path('app_admin_system_fee_create')
}) }}>
title="Honorar hinzufügen"
hx-get="{{ path('app_admin_system_fee_create') }}"
hx-target="body"
hx-swap="beforeend">
Honorar hinzufügen
</button>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Honorar hinzufügen{% endblock %}
{% block content %}
{% include 'admin/system/fee/_form.html.twig' %}
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du das Honorar <em>{{ fee.name }}</em> wirklich löschen?
</div>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Honorar duplizieren{% endblock %}
{% block content %}
{% include 'admin/system/fee/_form.html.twig' %}
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Honorar bearbeiten{% endblock %}
{% block content %}
{% include 'admin/system/fee/_form.html.twig' %}
{% endblock %}
@@ -34,12 +34,9 @@
{% if is_granted('DELETE', feedbackSet) %}
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du das Jobprofil wirklich löschen?',
'target-url': path('app_admin_system_feedback_set_delete', { 'id': feedbackSet.id })
}) }}>
hx-get="{{ path('app_admin_system_feedback_set_delete', { 'id': feedbackSet.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
{% endif %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du die Feedback-Vorlage <em>{{ feedbackSet.name }}</em> wirklich löschen?
</div>
{% endblock %}
@@ -55,12 +55,10 @@
<div class="flex items-center space-x-2 justify-end">
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du das Jobprofil wirklich löschen?',
'target-url': path('app_admin_system_job_profile_delete', { 'id': jobProfile.id })
}) }}>
title="Jobprofil löschen"
hx-get="{{ path('app_admin_system_job_profile_delete', { 'id': jobProfile.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
<a href="{{ path('app_admin_system_job_profile_edit', { 'id': jobProfile.id }) }}">
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du das Jobprofil <em>{{ jobProfile.name }}</em> wirklich löschen?
</div>
{% endblock %}
@@ -1,4 +1,4 @@
{{ form_start(form) }}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.name) }}
</div>
+12 -16
View File
@@ -33,20 +33,17 @@
<div class="flex items-center space-x-2 justify-end">
<button type="button"
class="text-red-500"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du die Fortbildung wirklich löschen?',
'target-url': path('app_admin_system_training_delete', { 'id': training.id })
}) }}>
title="Fortbildung löschen"
hx-get="{{ path('app_admin_system_training_delete', { 'id': training.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Fortbildung bearbeiten',
'url': path('app_admin_system_training_edit', { 'id': training.id })
}) }}>
title="Fortbildung bearbeiten"
hx-get="{{ path('app_admin_system_training_edit', { 'id': training.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('edit') }}
</button>
</div>
@@ -65,11 +62,10 @@
</div>
<button type="button"
class="btn"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Fortbildung hinzufügen',
'url': path('app_admin_system_training_create')
}) }}>
title="Fortbildung hinzufügen"
hx-get="{{ path('app_admin_system_training_create') }}"
hx-target="body"
hx-swap="beforeend">
Fortbildung hinzufügen
</button>
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Fortbildung hinzufügen{% endblock %}
{% block content %}
{% include 'admin/system/training/_form.html.twig' %}
{% endblock %}
@@ -0,0 +1,13 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div class="pb-4">
Möchtest du die Fortbildung <em>{{ training.name }}</em> wirklich löschen?
</div>
{% set attendanceCount = training.trainingAttendances|length %}
{% if attendanceCount > 0 %}
<div class="font-bold">
An dieser Fortbildung haben {{ attendanceCount }} Teamer:innern teilgenommen.
</div>
{% endif %}
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Fortbildung bearbeiten{% endblock %}
{% block content %}
{% include 'admin/system/training/_form.html.twig' %}
{% endblock %}
@@ -1,4 +1,4 @@
{% extends 'admin/layout.html.twig' %}
{% extends 'layout.html.twig' %}
{% block title %}Verfügbarkeit {{ teamer }}{% endblock %}
@@ -29,12 +29,9 @@
{% if is_granted('DELETE', availability) %}
<button type="button"
title="Zeitraum entfernen/löschen"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du den Zeitraum wirklich löschen?',
'target-url': path('app_admin_teamer_availability_delete', { 'teamer_uuid': teamer.uuid, 'availability_id': availability.id, 'r': return_url() })
}) }}>
hx-get="{{ path('app_admin_teamer_availability_delete', { 'teamer_uuid': teamer.uuid, 'availability_id': availability.id, 'r': return_url() }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete', 'w-5 h-5') }}
</button>
{% endif %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du die Verfügbarkeit <em>{{ availability }}</em> wirklich löschen?
</div>
{% endblock %}
+10 -13
View File
@@ -10,19 +10,16 @@
<div class="flex flex-col items-end space-y-2 md:flex-row md:items-center md:space-x-2 md:space-y-0">
<button type="button"
class="{{ html_classes('btn btn--small', { 'btn--secondary': filterDto.active }) }}"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Team filtern',
'url': path('app_common_teamer_filter', { 'r': return_url() })
}) }}>
<div class="flex items-center space-x-1">
{{ icon('filter', 'w-4 h-4 shrink-0') }}
{% if filterDto.active %}
<span class="whitespace-nowrap">{{ filterDto.activeFiltersCount }} Filter aktiv</span>
{% else %}
<span>Filter</span>
{% endif %}
</div>
title="Team filtern"
hx-get="{{ path('app_common_teamer_filter', { 'r': return_url() }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('filter', 'w-4 h-4 shrink-0') }}
{% if filterDto.active %}
<span class="whitespace-nowrap">{{ filterDto.activeFiltersCount }} Filter aktiv</span>
{% else %}
<span>Filter</span>
{% endif %}
</button>
{% if filterDto.active %}
<a href="{{ path('app_common_teamer_filter_reset', { 'r': return_url() }) }}" class="btn btn--small btn--secondary">
-67
View File
@@ -1,67 +0,0 @@
<div class="flex items-start">
<div class="flex-1 pr-8">
{% include '_partials/_teamer_training_info.html.twig' %}
{% include '_partials/_teamer_license_info.html.twig' %}
<h2 class="text-lg font-bold">
Zustiege
</h2>
<ul class="pb-8 divide-y divide-gray-200">
{% for pickup in teamer.pickups %}
<li class="py-2">
{{ pickup|bpn_pickup_label }}
</li>
{% endfor %}
</ul>
<h2 class="text-lg font-bold">
Letzte Einsätze
</h2>
<ul class="pb-4 divide-y divide-gray-200">
{% for disposition in recentDispositions %}
{% set destination = disposition.assignment.destination %}
<li class="py-1">
{{ destination.product }}
<br>
{{ destination.dateFrom|date('d.m.y') }} - {{ destination.dateTo|date('d.m.y') }}
</li>
{% else %}
<li class="py-2">
-
</li>
{% endfor %}
</ul>
</div>
<div class="flex flex-col space-y-4">
{% if teamer.photo %}
<img src="{{ asset(teamer.photo.filename | imagine_filter('profile')) }}"
class="w-32 h-auto border-2 border-primary"
alt="{{ teamer.firstName }}">
{% else %}
<div class="border-2 border-primary">
{{ icon('user', 'w-32 h-32 text-gray-200') }}
</div>
{% endif %}
{% include '_partials/_rating_stars.html.twig' with { 'teamer': teamer } %}
<ul class="pb-8 divide-y divide-gray-200">
{% if teamer.communication.phone %}
<li class="py-2">
<a href="tel:{{ teamer.communication.phone }}" class="flex items-center space-x-2 hover:text-primary">
{{ icon('phone', 'w-4 h-4') }}
<span class="flex-shrink-0">{{ teamer.communication.phone }}</span>
</a>
</li>
{% endif %}
<li class="py-2">
<a href="tel:{{ teamer.communication.mobile }}" class="flex items-center space-x-2 hover:text-primary">
{{ icon('mobile', 'w-4 h-4') }}
<span class="flex-shrink-0">{{ teamer.communication.mobile }}</span>
</a>
</li>
<li class="py-2">
<a href="mailto:{{ teamer.communication.email }}" class="flex items-center space-x-2 hover:text-primary">
{{ icon('at', 'w-4 h-4') }}
<span class="flex-shrink-0">{{ teamer.communication.email }}</span>
</a>
</li>
</ul>
</div>
</div>
@@ -0,0 +1,73 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Teamer:inneninfo {{ teamer }}{% endblock %}
{% block content %}
<div class="flex items-start">
<div class="flex-1 pr-8">
{% include '_partials/_teamer_training_info.html.twig' %}
{% include '_partials/_teamer_license_info.html.twig' %}
<h2 class="text-lg font-bold">
Zustiege
</h2>
<ul class="pb-8 divide-y divide-gray-200">
{% for pickup in teamer.pickups %}
<li class="py-2">
{{ pickup|bpn_pickup_label }}
</li>
{% endfor %}
</ul>
<h2 class="text-lg font-bold">
Letzte Einsätze
</h2>
<ul class="pb-4 divide-y divide-gray-200">
{% for disposition in recentDispositions %}
{% set destination = disposition.assignment.destination %}
<li class="py-1">
{{ destination.product }}
<br>
{{ destination.dateFrom|date('d.m.y') }} - {{ destination.dateTo|date('d.m.y') }}
</li>
{% else %}
<li class="py-2">
-
</li>
{% endfor %}
</ul>
</div>
<div class="flex flex-col space-y-4">
{% if teamer.photo %}
<img src="{{ asset(teamer.photo.filename | imagine_filter('profile')) }}"
class="w-32 h-auto border-2 border-primary"
alt="{{ teamer.firstName }}">
{% else %}
<div class="border-2 border-primary">
{{ icon('user', 'w-32 h-32 text-gray-200') }}
</div>
{% endif %}
{% include '_partials/_rating_stars.html.twig' with { 'teamer': teamer } %}
<ul class="pb-8 divide-y divide-gray-200">
{% if teamer.communication.phone %}
<li class="py-2">
<a href="tel:{{ teamer.communication.phone }}" class="flex items-center space-x-2 hover:text-primary">
{{ icon('phone', 'w-4 h-4') }}
<span class="flex-shrink-0">{{ teamer.communication.phone }}</span>
</a>
</li>
{% endif %}
<li class="py-2">
<a href="tel:{{ teamer.communication.mobile }}" class="flex items-center space-x-2 hover:text-primary">
{{ icon('mobile', 'w-4 h-4') }}
<span class="flex-shrink-0">{{ teamer.communication.mobile }}</span>
</a>
</li>
<li class="py-2">
<a href="mailto:{{ teamer.communication.email }}" class="flex items-center space-x-2 hover:text-primary">
{{ icon('at', 'w-4 h-4') }}
<span class="flex-shrink-0">{{ teamer.communication.email }}</span>
</a>
</li>
</ul>
</div>
</div>
{% endblock %}
+7 -11
View File
@@ -27,22 +27,18 @@
<button type="button"
class="text-red-500"
title="Ausbildung löschen"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du die Teilnahme an dieser Schulung wirklich löschen?',
'target-url': path('app_admin_teamer_skills_training_attendance_delete', { 'uuid': attendance.uuid })
}) }}>
hx-get="{{ path('app_admin_teamer_skills_training_attendance_delete', { 'uuid': attendance.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
</div>
{% else %}
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Teilnahme hinzufügen',
'url': path('app_admin_teamer_skills_training_attendance_create', { 'training_id': training.id, 'teamer_id': teamer.id })
}) }}>
title="Teilnahme hinzufügen"
hx-get="{{ path('app_admin_teamer_skills_training_attendance_create', { 'training_id': training.id, 'teamer_id': teamer.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('calendar', 'w-4 h-4') }}
</button>
{% endif %}
@@ -1,9 +0,0 @@
{{ form_start(form) }}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.date) }}
</div>
<button type="submit" class="btn">
Speichern
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
@@ -0,0 +1,15 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Teilnahme hinzufügen/bestätigen{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.date) }}
</div>
<button type="submit" class="btn">
Speichern
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
@@ -0,0 +1,8 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du die Teilnahme von <em>{{ attendance.teamer}}</em> an der Schulung
<em>{{ attendance.training.name }}</em> wirklich löschen?
</div>
{% endblock %}
@@ -1,15 +0,0 @@
{{ form_start(filterForm) }}
<div class="flex flex-col space-y-2 pb-2">
{{ form_row(filterForm.status) }}
{{ form_row(filterForm.dateFrom) }}
{{ form_row(filterForm.dateTo) }}
{{ form_row(filterForm.jobProfile) }}
{{ form_row(filterForm.destination) }}
{{ form_row(filterForm.duration) }}
</div>
<div class="flex items-center space-x-2">
{{ form_widget(filterForm.apply, { 'attr': { 'class': 'btn' } }) }}
{{ form_widget(filterForm.reset, { 'attr': { 'class': 'btn btn--secondary' } }) }}
</div>
{{ form_rest(filterForm) }}
{{ form_end(filterForm) }}
@@ -0,0 +1,21 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Einsätze filtern{% endblock %}
{% block content %}
{{ form_start(filterForm, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-2 pb-2">
{{ form_row(filterForm.status) }}
{{ form_row(filterForm.dateFrom) }}
{{ form_row(filterForm.dateTo) }}
{{ form_row(filterForm.jobProfile) }}
{{ form_row(filterForm.destination) }}
{{ form_row(filterForm.duration) }}
</div>
<div class="flex items-center space-x-2">
{{ form_widget(filterForm.apply, { 'attr': { 'class': 'btn' } }) }}
{{ form_widget(filterForm.reset, { 'attr': { 'class': 'btn btn--secondary' } }) }}
</div>
{{ form_rest(filterForm) }}
{{ form_end(filterForm) }}
{% endblock %}
@@ -0,0 +1,22 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Team filtern{% endblock %}
{% block content %}
{{ form_start(filterForm, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML'} }) }}
<div class="flex flex-col space-y-2 pb-2">
{{ form_row(filterForm.name) }}
{{ form_row(filterForm.dateFrom) }}
{{ form_row(filterForm.dateTo) }}
{{ form_row(filterForm.jobProfile) }}
{{ form_row(filterForm.pickupId) }}
{{ form_row(filterForm.skiLicense) }}
{{ form_row(filterForm.snowboardLicense) }}
</div>
<div class="flex items-center space-x-2">
{{ form_widget(filterForm.apply, { 'attr': { 'class': 'btn' } }) }}
{{ form_widget(filterForm.reset, { 'attr': { 'class': 'btn btn--secondary' } }) }}
</div>
{{ form_rest(filterForm) }}
{{ form_end(filterForm) }}
{% endblock %}
-16
View File
@@ -1,16 +0,0 @@
{{ form_start(filterForm) }}
<div class="flex flex-col space-y-2 pb-2">
{{ form_row(filterForm.name) }}
{{ form_row(filterForm.dateFrom) }}
{{ form_row(filterForm.dateTo) }}
{{ form_row(filterForm.jobProfile) }}
{{ form_row(filterForm.pickupId) }}
{{ form_row(filterForm.skiLicense) }}
{{ form_row(filterForm.snowboardLicense) }}
</div>
<div class="flex items-center space-x-2">
{{ form_widget(filterForm.apply, { 'attr': { 'class': 'btn' } }) }}
{{ form_widget(filterForm.reset, { 'attr': { 'class': 'btn btn--secondary' } }) }}
</div>
{{ form_rest(filterForm) }}
{{ form_end(filterForm) }}
+1
View File
@@ -192,6 +192,7 @@
{%- endif -%}
<div class="autocomplete"
data-controller="autocomplete"
{{ block('widget_attributes') }}
{% if form.vars.action %}data-action="{{ form.vars.action }}"{% endif %}
{% if form.vars.endpoint_url is defined %}data-autocomplete-url-value="{{ form.vars.endpoint_url }}"{% endif %}
{% if form.vars.choices is defined %}data-autocomplete-choices-value='{{ form.vars.choices | json_encode | raw }}'{% endif %}
@@ -0,0 +1,25 @@
<div id="htmx-confirmation-modal" class="fixed top-0 left-0 z-50 inset-0" {{ stimulus_controller('modal') }}>
<div class="absolute top-0 left-0 inset-0 bg-black/80" {{ stimulus_action('modal', 'close', 'click') }}></div>
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white p-8 w-full max-w-3xl rounded-md">
<div class="flex justify-between border-b border-gray-200 pb-2 mb-4">
<div class="flex items-center space-x-2">
{{ icon('alert', 'w-8 h-8') }}
<div class="text-xl font-bold">
{% block title %}Bist du sicher?{% endblock %}
</div>
</div>
<button type="button" class="inline-block" {{ stimulus_action('modal', 'close') }}>
{{ icon('close', 'w-8 h-8') }}
</button>
</div>
{% block content %}{% endblock %}
<div class="mt-6 flex items-center justify-between">
<button type="button" class="btn bg-red-500" {% block button_attribute %}hx-post="{{ app.request.uri }}"{% endblock %}>
{% block button_confirm %}Ja{% endblock %}
</button>
<button type="button" class="btn" {{ stimulus_action('modal', 'close') }}>
{% block button_cancel %}Abbrechen{% endblock %}
</button>
</div>
</div>
</div>
+21
View File
@@ -0,0 +1,21 @@
<div id="htmx-modal" class="fixed inset-0 w-full h-full z-50" {{ stimulus_controller('modal') }}>
<div class="absolute inset-0 w-full h-full bg-black/80" {{ stimulus_action('modal', 'close', 'click') }}></div>
<div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 px-4 w-full max-w-2xl">
<div class="relative bg-white p-8 rounded-md">
<div class="flex justify-between pb-4">
<div class="text-2xl font-bold">
{% block title %}{% endblock %}
</div>
<button type="button"
class="inline-block"
{{ stimulus_action('modal', 'close') }}>
{{ icon('close', 'w-6 h-6')}}
</button>
</div>
{% block content %}{% endblock %}
<div class="htmx-indicator absolute top-0 left-0 inset-0 bg-white/90 flex items-center justify-center">
{% include '_partials/_spinner.html.twig' with { 'class': 'w-8 h-8'} %}
</div>
</div>
</div>
</div>
-2
View File
@@ -31,8 +31,6 @@
{% block content %}{% endblock %}
</div>
</div>
{% include '_partials/_ajax_modal.html.twig' %}
{% include '_partials/_confirmation_modal.html.twig' %}
<div id="mobilenav"
class="fixed z-50 top-0 left-0 inset-0 pr-16 bg-black/70 -translate-x-full"
{{ stimulus_controller('mobilenav', [], { 'closed': '-translate-x-full' }, { 'mobilenav': '#mobilenav' }) }}
@@ -0,0 +1,5 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>Möchtest du die Bewerbung wirklich zurückziehen?</div>
{% endblock %}
+3 -6
View File
@@ -40,12 +40,9 @@
<button type="button"
class="btn btn--secondary"
title="Bewerbung zurückziehen"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du die Bewerbing wirklich zurückziehen?',
'target-url': path('app_teamer_application_withdraw', { 'uuid': application.uuid })
}) }}>
hx-get="{{ path('app_teamer_application_withdraw', { 'uuid': application.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
Bewerbung zurückziehen
</button>
{% endif %}
+9 -13
View File
@@ -10,19 +10,15 @@
<div class="flex flex-col items-end space-y-2 md:flex-row md:items-center md:space-x-2 md:space-y-0">
<button type="button"
class="{{ html_classes('btn btn--small', { 'btn--secondary': filterDto.active }) }}"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Einsätze filtern',
'url': path('app_common_assignment_filter', { 'r': return_url() })
}) }}>
<div class="flex items-center space-x-1">
{{ icon('filter', 'w-4 h-4 shrink-0') }}
{% if filterDto.active %}
<span class="whitespace-nowrap">{{ filterDto.activeFiltersCount }} Filter aktiv</span>
{% else %}
<span>Filter</span>
{% endif %}
</div>
hx-get="{{ path('app_common_assignment_filter', { 'r': return_url() }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('filter', 'w-4 h-4 shrink-0') }}
{% if filterDto.active %}
<span class="whitespace-nowrap">{{ filterDto.activeFiltersCount }} Filter aktiv</span>
{% else %}
<span>Filter</span>
{% endif %}
</button>
{% if filterDto.active %}
<a href="{{ path('app_common_assignment_filter_reset', { 'r': return_url() }) }}" class="btn btn--small btn--secondary">
-14
View File
@@ -1,14 +0,0 @@
<h2 class=" font-bold text-lg pb-2">
Durchschnittsnote: {{ feedback.averageRating|format_rating }}
</h2>
<ul class="divide-y divide-gray-200 pb-4">
{% for item in feedback.ratings %}
<li class="py-2 first:pt-0 last:pb-0 flex items-start">
<span class="flex-1">{{ item.rating }}</span>
<strong>Note {{ item.mark }}</strong>
</li>
{% endfor %}
</ul>
<p>
abgegeben von {{ feedback.author }} (<a href="mailto:{{ feedback.createdBy }}" class="underline">{{ feedback.createdBy }}</a>)
</p>
+20
View File
@@ -0,0 +1,20 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}{{ feedback.destinationName ~ ' ' ~ feedback.assignmentDate|date('m.Y') }}{% endblock %}
{% block content %}
<h2 class=" font-bold text-lg pb-2">
Durchschnittsnote: {{ feedback.averageRating|format_rating }}
</h2>
<ul class="divide-y divide-gray-200 pb-4">
{% for item in feedback.ratings %}
<li class="py-2 first:pt-0 last:pb-0 flex items-start">
<span class="flex-1">{{ item.rating }}</span>
<strong>Note {{ item.mark }}</strong>
</li>
{% endfor %}
</ul>
<p>
abgegeben von {{ feedback.author }} (<a href="mailto:{{ feedback.createdBy }}" class="underline">{{ feedback.createdBy }}</a>)
</p>
{% endblock %}
+9 -10
View File
@@ -81,22 +81,21 @@
{% for feedback in recentFeedback %}
<li class="py-2 first:pt-0 last:pb-0">
<button type="button"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': feedback.destinationName ~ ' ' ~ feedback.assignmentDate|date('m.Y'),
'url': path('app_teamer_feedback', { 'uuid': feedback.uuid })
}) }}>
<div class="flex items-center space-x-1">
title="Feedback {{ feedback.destinationName ~ ' ' ~ feedback.assignmentDate|date('m.Y') }}"
hx-get="{{ path('app_teamer_feedback', { 'uuid': feedback.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
<span class="flex items-center space-x-1">
{{ icon('feedback', 'w-4 h-4 shrink-0') }}
<div class="flex items-center space-x-1 truncate">
<span class="flex items-center space-x-1 truncate">
<span class="whitespace-nowrap">{{ feedback.createdAt|date('d.m.y') }}</span>
{% include '_partials/_dot.html.twig' %}
<span class="whitespace-nowrap">{{ feedback.author }}</span>
{% include '_partials/_dot.html.twig' %}
<span class="whitespace-nowrap">{{ feedback.averageRating|format_rating }}</span>
</div>
</div>
<div class="pl-5">{{ feedback.comment }}</div>
</span>
</span>
<span class="block pl-5">{{ feedback.comment }}</span>
</button>
</li>
{% else %}
@@ -32,12 +32,9 @@
{% if is_granted('DELETE', availability) %}
<button type="button"
title="Zeitraum entfernen/löschen"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du den Zeitraum wirklich löschen?',
'target-url': path('app_teamer_profile_availability_delete', { 'id': availability.id })
}) }}>
hx-get="{{ path('app_teamer_profile_availability_delete', { 'id': availability.id }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete', 'w-5 h-5') }}
</button>
{% endif %}
@@ -89,11 +86,10 @@
</div>
<button type="button"
class="btn"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Zeitraum hinzufügen',
'url': path('app_teamer_profile_availability_create')
}) }}>
title="Eigenen Zeitraum hinzufügen"
hx-get="{{ path('app_teamer_profile_availability_create') }}"
hx-target="body"
hx-swap="beforeend">
Eigenen Zeitraum hinzufügen
</button>
{% endblock %}
@@ -0,0 +1,17 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Eigenen Zeitraum hinzufügen{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.dateFrom) }}
{{ form_row(form.dateTo) }}
{{ form_row(form.description) }}
</div>
<button type="submit" class="btn">
Speichern
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
@@ -0,0 +1,8 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du die Verfügbarkeit <em>{{ availability }}{% if availability.description %} ({{ availability.description }}){% endif %}</em>
wirklich löschen?
</div>
{% endblock %}
@@ -1,25 +0,0 @@
{{ form_start(form) }}
{% if not form.vars.valid %}
<div class="border border-red-500 rounded-md p-4 text-red-500 mb-4">
{% include '_partials/_form_errors.html.twig' with { 'form': form } %}
</div>
{% endif %}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.type) }}
{{ form_row(form.date) }}
<div>
<label class="block font-bold pb-2">
Nachweis hochladen (PDF)
</label>
{% include '_partials/_upload_collection_form.html.twig' with {
'endpoint_upload': path('_uploader_upload_certificate'),
'upload_session_params': form.vars.upload_session_params,
'accepted_files': 'application/pdf',
} %}
</div>
</div>
<button type="submit" class="btn">
Speichern
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
@@ -0,0 +1,31 @@
{% extends 'htmx_modal.html.twig' %}
{% block title %}Lizenz hinzufügen{% endblock %}
{% block content %}
{{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}
{% if not form.vars.valid %}
<div class="border border-red-500 rounded-md p-4 text-red-500 mb-4">
{% include '_partials/_form_errors.html.twig' with { 'form': form } %}
</div>
{% endif %}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.type) }}
{{ form_row(form.date) }}
<div>
<label class="block font-bold pb-2">
Nachweis hochladen (PDF)
</label>
{% include '_partials/_upload_collection_form.html.twig' with {
'endpoint_upload': path('_uploader_upload_certificate'),
'upload_session_params': form.vars.upload_session_params,
'accepted_files': 'application/pdf',
} %}
</div>
</div>
<button type="submit" class="btn">
Speichern
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
{% endblock %}
@@ -0,0 +1,7 @@
{% extends 'htmx_confirmation_modal.html.twig' %}
{% block content %}
<div>
Möchtest du die Lizenz <em>{{ license.type|license_label }}</em> wirklich löschen?
</div>
{% endblock %}
+7 -11
View File
@@ -42,12 +42,9 @@
<button type="button"
class="text-red-500"
title="Lizenz löschen"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du die Lizenz wirklich löschen?',
'target-url': path('app_teamer_profile_license_delete', { 'uuid': license.uuid })
}) }}>
hx-get="{{ path('app_teamer_profile_license_delete', { 'uuid': license.uuid }) }}"
hx-target="body"
hx-swap="beforeend">
{{ icon('delete') }}
</button>
{% endif %}
@@ -61,11 +58,10 @@
</ul>
<button type="button"
class="btn"
{{ stimulus_controller('modal-button', [], [], {'ajax-modal': '#ajax-modal'}) }}
{{ stimulus_action('modal-button', 'ajax', null, {
'title': 'Lizenz hinzufügen',
'url': path('app_teamer_profile_license_add')
}) }}>
title="Lizenz hinzufügen"
hx-get="{{ path('app_teamer_profile_license_add') }}"
hx-target="body"
hx-swap="beforeend">
Lizenz hinzufügen
</button>
</div>