WIP Impelement more stuff

This commit is contained in:
Björn Fromme
2023-10-04 15:10:16 +02:00
parent dec8feedf2
commit cc1ab396af
35 changed files with 928 additions and 177 deletions
+7 -7
View File
@@ -3,13 +3,13 @@
{% block list %}
{% if item.hasChildren and options.depth is not same as(0) and item.displayChildren %}
{% if item.level == 0 %}
<div class="min-h-full flex grow flex-col gap-y-5 overflow-y-scroll lg:border-r border-gray-200 bg-white md:pr-6">
<nav class="flex flex-1 flex-col">
<ul role="list" class="space-y-1">
{{ block('children') }}
</ul>
</nav>
</div>
<div class="min-h-full flex grow flex-col gap-y-5 overflow-y-scroll lg:border-r border-gray-200 bg-white md:pr-6">
<nav class="flex flex-1 flex-col">
<ul role="list" class="space-y-1">
{{ block('children') }}
</ul>
</nav>
</div>
{% else %}
<ul class="{{ html_classes('mt-1 px-2', { 'hidden': not matcher.isCurrent(item) }) }}" {{ stimulus_target('sidebar-menu', 'submenu') }}>
{{ block('children') }}
@@ -0,0 +1,16 @@
{% extends 'admin/layout.html.twig' %}
{% block title %}Verfügbarkeit {{ teamer }}{% endblock %}
{% block content %}
<div class="grid lg:grid-cols-3 gap-y-8 lg:gap-y-0 lg:gap-x-8">
<div>
{{ knp_menu_render(knp_menu_get('admin_teamer')) }}
</div>
<div class="lg:col-span-2">
<h1 class="text-2xl font-bold pb-8">
Verfügbarkeit {{ teamer }}
</h1>
</div>
</div>
{% endblock %}
@@ -0,0 +1,16 @@
{% extends 'admin/layout.html.twig' %}
{% block title %}Selektionsmerkmale {{ teamer }}{% endblock %}
{% block content %}
<div class="grid lg:grid-cols-3 gap-y-8 lg:gap-y-0 lg:gap-x-8">
<div>
{{ knp_menu_render(knp_menu_get('admin_teamer')) }}
</div>
<div class="lg:col-span-2">
<h1 class="text-2xl font-bold pb-8">
Selektionsmerkmale {{ teamer }}
</h1>
</div>
</div>
{% endblock %}
+4 -1
View File
@@ -43,7 +43,7 @@
</a>
</td>
<td>
{{ teamer.status }}
{{ teamer.status|teamer_status_label }}
</td>
<td>
{{ teamer.communication.email }}
@@ -57,6 +57,9 @@
</td>
<td>
<div class="flex items-center space-x-1 justify-end">
<a href="{{ path('app_admin_teamer_profile', { 'uuid': teamer.uuid }) }}" title="Teamerprofil {{ teamer }}">
{{ icon('user') }}
</a>
</div>
</td>
</tr>
+230
View File
@@ -0,0 +1,230 @@
{% extends 'admin/layout.html.twig' %}
{% block title %}Stammdaten und Foto {{ teamer }}{% endblock %}
{% block content %}
<div class="grid lg:grid-cols-3 gap-y-8 lg:gap-y-0 lg:gap-x-8">
<div>
{{ knp_menu_render(knp_menu_get('admin_teamer')) }}
</div>
<div class="lg:col-span-2">
<h1 class="text-2xl font-bold pb-8">
Stammdaten und Foto {{ teamer }}
</h1>
<div class="grid grid-cols-2 gap-4">
<div>
<h2 class="text-lg font-bold pb-2">
Persönliche Daten
</h2>
<div class="flex flex-col space-y-3">
<div>
<div class="font-bold">
Gender:
</div>
<div>
{{ teamer.gender }}
</div>
</div>
<div>
<div class="font-bold">
Titel:
</div>
<div>
{{ teamer.academicTitle|default('-') }}
</div>
</div>
<div>
<div class="font-bold">
Vorname:
</div>
<div>
{{ teamer.firstName }}
</div>
</div>
<div>
<div class="font-bold">
Nachname:
</div>
<div>
{{ teamer.lastName }}
</div>
</div>
<div>
<div class="font-bold">
Geburtsdatum:
</div>
<div>
{{ teamer.dateOfBirth|date('d.m.Y') }}
</div>
</div>
<div>
<div class="font-bold">
Staatsangehörigkeit:
</div>
<div>
{{ teamer.nationality|bpn_country_label('nationality') }}
</div>
</div>
</div>
</div>
<div>
{% if teamer.photo %}
<div class="pb-8">
<img src="{{ asset(teamer.photo.filename | imagine_filter('profile')) }}"
class="w-48 h-auto border-2 border-primary"
alt="{{ teamer.firstName }}">
</div>
{% endif %}
</div>
<div>
<h2 class="text-lg font-bold pb-2">
Adressdaten
</h2>
<div class="flex flex-col space-y-3">
<div>
<div class="font-bold">
Straße, Hausnummer:
</div>
<div>
{{ teamer.address.street }}
</div>
</div>
<div>
<div class="font-bold">
PLZ:
</div>
<div>
{{ teamer.address.postCode }}
</div>
</div>
<div>
<div class="font-bold">
Ort:
</div>
<div>
{{ teamer.address.city }}
</div>
</div>
<div>
<div class="font-bold">
Land:
</div>
<div>
{{ teamer.address.country|bpn_country_label }}
</div>
</div>
<div>
<div class="font-bold">
E-Mail:
</div>
<div>
{{ teamer.communication.email|default('-') }}
</div>
</div>
<div>
<div class="font-bold">
Mobilnummer:
</div>
<div>
{{ teamer.communication.mobile|default('-') }}
</div>
</div>
</div>
</div>
<div>
<h2 class="text-lg font-bold pb-2">
Buszustiege
</h2>
<ul class="list-disc pl-4">
{% for pickup in teamer.pickups %}
<li>
{{ pickup|bpn_pickup_label }}
</li>
{% else %}
<li>
<span class="text-sm">Keine Daten</span>
</li>
{% endfor %}
</ul>
</div>
<div>
<h2 class="text-lg font-bold pb-2">
Honorardaten
</h2>
<div class="flex flex-col space-y-3">
<div>
<div class="font-bold">
Steuer-ID:
</div>
<div>
{{ teamer.taxId|default('-') }}
</div>
</div>
<div>
<div class="font-bold">
IBAN:
</div>
<div>
{{ teamer.bankAccount.iban|default('-') }}
</div>
</div>
<div>
<div class="font-bold">
BIC:
</div>
<div>
{{ teamer.bankAccount.bic|default('-') }}
</div>
</div>
<div>
<div class="font-bold">
Bank/Kreditinstitut:
</div>
<div>
{{ teamer.bankAccount.bank|default('-') }}
</div>
</div>
<div>
<div class="font-bold">
Krankenversicherung:
</div>
<div>
{{ teamer.healthInsuranceCompany|default('-') }}
</div>
</div>
</div>
</div>
<div>
<h2 class="text-lg font-bold pb-2">
Sonstiges
</h2>
<div class="flex flex-col space-y-3">
<div>
<div class="font-bold">
Sprache(n):
</div>
<div>
{{ teamer.language|default('-') }}
</div>
</div>
<div>
<div class="font-bold">
Klamottengröße:
</div>
<div>
{{ teamer.size|default('-') }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
@@ -0,0 +1,16 @@
{% extends 'admin/layout.html.twig' %}
{% block title %}Vergangene Einsätze &amp; Feeback {{ teamer }}{% endblock %}
{% block content %}
<div class="grid lg:grid-cols-3 gap-y-8 lg:gap-y-0 lg:gap-x-8">
<div>
{{ knp_menu_render(knp_menu_get('admin_teamer')) }}
</div>
<div class="lg:col-span-2">
<h1 class="text-2xl font-bold pb-8">
Vergangene Einsätze &amp; Feeback {{ teamer }}
</h1>
</div>
</div>
{% endblock %}
+118
View File
@@ -0,0 +1,118 @@
{% extends 'admin/layout.html.twig' %}
{% block title %}Jobprofile &amp; Skills {{ teamer }}{% endblock %}
{% block content %}
<div class="grid lg:grid-cols-3 gap-y-8 lg:gap-y-0 lg:gap-x-8">
<div>
{{ knp_menu_render(knp_menu_get('admin_teamer')) }}
</div>
<div class="lg:col-span-2">
<h1 class="text-2xl font-bold pb-8">
Jobprofile &amp; Skills {{ teamer }}
</h1>
<h2 class="text-xl font-bold pb-2">
Ausbildung
</h2>
<ul class="pb-2 divide-y divide-gray-200">
{% for training in trainings %}
<li class="py-2">
<div class="flex items-center justify-between">
<span class="flex-1">{{ training.name }}</span>
{% set attendance = teamer.trainingAttendance(training) %}
{% if attendance %}
<div class="flex items-center space-x-2">
<span>{{ attendance.date|date('m/Y') }}</span>
<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 })
}) }}>
{{ 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 })
}) }}>
{{ icon('calendar', 'w-4 h-4') }}
</button>
{% endif %}
</div>
</li>
{% endfor %}
</ul>
<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 = 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 }) }}"
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 class="grid grid-cols-2 gap-4">
<div>
<h2 class="text-lg font-bold pb-2">
Mögliche Jobprofile
</h2>
<ul class="list-disc pl-4">
{% for profile in teamer.jobProfiles %}
<li>
{{ profile.name }}
</li>
{% endfor %}
</ul>
</div>
<div>
<h2 class="text-lg font-bold pb-2">
Sonstiges
</h2>
<div class="flex flex-col space-y-3">
<div>
<div class="font-bold">
Status:
</div>
<div>
{{ teamer.status|teamer_status_label }}
</div>
</div>
<div>
<div class="font-bold">
Wünsche:
</div>
<div>
{{ teamer.remarks|nl2br|default('-') }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
@@ -0,0 +1,9 @@
{{ 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) }}
+1 -1
View File
@@ -14,7 +14,7 @@
{{ encore_entry_script_tags('app') }}
{% endblock %}
</head>
<body class="bg-white text-gray-700 font-sans antialiased">
<body class="bg-white text-gray-700 font-sans antialiased text-sm">
{% block body %}{% endblock %}
{% include '_partials/_flashes.html.twig' %}
</body>
+11
View File
@@ -3,4 +3,15 @@
{% block title %}Mein Dashboard{% endblock %}
{% block content %}
{% if errors|length %}
<div class="border border-red-500 rounded-md p-4 text-red-500 mb-8">
<ul>
{% for error in errors %}
<li>
{{ error.message }}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endblock %}
+20 -21
View File
@@ -20,9 +20,6 @@
<div {{ stimulus_controller('tabs', {}, { 'buttonActive': 'bg-gray-50' }) }}>
<div class="grid lg:grid-cols-3 gap-y-8 lg:gap-y-0 lg:gap-x-16">
<div>
<h1 class="text-2xl font-bold pb-8">
Mein Profil
</h1>
<ul role="list" class="space-y-1">
<li>
<button type="button" class="hover:bg-gray-50 block rounded-md py-2 pr-2 pl-10 w-full text-left text-sm leading-6 font-semibold text-gray-700" {{ stimulus_target('tabs', 'button') }} {{ stimulus_action('tabs', 'select', null, { 'tab': 0 }) }}>
@@ -52,6 +49,9 @@
</ul>
</div>
<div class="lg:col-span-2">
<h1 class="text-2xl font-bold pb-8">
Mein Profil
</h1>
{% if not form.vars.valid %}
<div class="border border-red-500 rounded-md p-4 text-red-500 mb-8">
{% include '_partials/_form_errors.html.twig' with { 'form': form } %}
@@ -59,7 +59,7 @@
{% include '_partials/_form_errors.html.twig' with { 'form': form.communication } %}
{% include '_partials/_form_errors.html.twig' with { 'form': form.bankAccount } %}
</div>
{% elseif errors|length > 0 %}
{% elseif errors|length %}
<div class="border border-red-500 rounded-md p-4 text-red-500 mb-8">
<ul>
{% for error in errors %}
@@ -121,27 +121,26 @@
<h2 class="text-xl font-bold pb-2">
Sonstiges
</h2>
<div class="flex flex-col space-y-4 pb-8">
<div class="flex flex-col space-y-4">
{{ form_row(form.taxId) }}
{{ form_row(form.healthInsuranceCompany) }}
{{ form_row(form.language) }}
{{ form_row(form.size) }}
</div>
<div {{ stimulus_controller('form-collection', { 'prototype': _self.collectionRow(form.pickups.vars.prototype)|json_encode }) }}>
<h4 class="font-bold">
Buszustiege
</h4>
<div {{ stimulus_target('form-collection', 'fields')}} class="flex flex-col space-y-4 mb-4">
{% do form.pickups.setRendered %}
{%- for pickup in form.pickups -%}{{- _self.collectionRow(pickup) -}}{%- endfor -%}
</div>
<div class="flex justify-end">
<button type="button"
{{ stimulus_action('form-collection', 'addItem') }}
title="Zustieg hinzufügen">
{{ icon('plus', 'w-4 h-4 pointer-events-none') }}
</button>
<div {{ stimulus_controller('form-collection', { 'prototype': _self.collectionRow(form.pickups.vars.prototype)|json_encode }) }}>
<h4 class="font-bold pb-2">
Buszustiege
</h4>
<div {{ stimulus_target('form-collection', 'fields')}} class="flex flex-col space-y-4 mb-4">
{% do form.pickups.setRendered %}
{%- for pickup in form.pickups -%}{{- _self.collectionRow(pickup) -}}{%- endfor -%}
</div>
<div class="flex justify-end">
<button type="button"
{{ stimulus_action('form-collection', 'addItem') }}
title="Zustieg hinzufügen">
{{ icon('plus', 'w-4 h-4 pointer-events-none') }}
</button>
</div>
</div>
</div>
</div>
+10 -4
View File
@@ -3,6 +3,9 @@
{% block title %}Meine Jobprofile & Skills{% endblock %}
{% block content %}
<h1 class="text-2xl font-bold pb-4">
Meine Jobprofile &amp; Skills
</h1>
<h2 class="text-xl font-bold pb-2">
Ausbildung
</h2>
@@ -26,16 +29,19 @@
{% for license in teamer.licenses %}
<li>
<div class="flex items-center space-x-4">
{{ icon(license.type, 'w-5 h-5') }}
<span>{{ license.type|license_label }}</span>
<span>{{ license.date|date('m/Y') }}</span>
{% if is_granted('DOWNLOAD', license.certificate) %}
<a href="{{ path('app_common_download', { 'uuid': license.certificate.uuid }) }}" target="_blank">
<a href="{{ path('app_common_download', { 'uuid': license.certificate.uuid }) }}"
target="_blank"
title="Download Nachweis">
{{ icon('download', 'w-4 h-4') }}
</a>
{% endif %}
{% if is_granted('DELETE', license) %}
<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?',
@@ -48,9 +54,9 @@
</div>
</li>
{% else %}
<div class="text-sm">
<li class="text-sm">
Du hast bisher keine Lizenzen hinterlegt
</div>
</li>
{% endfor %}
</ul>
<button type="button"