WIP Impelement more stuff
This commit is contained in:
@@ -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 %}
|
||||
@@ -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>
|
||||
|
||||
@@ -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 & 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 & Feeback {{ teamer }}
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,118 @@
|
||||
{% extends 'admin/layout.html.twig' %}
|
||||
|
||||
{% block title %}Jobprofile & 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 & 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) }}
|
||||
@@ -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>
|
||||
|
||||
@@ -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,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>
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
{% block title %}Meine Jobprofile & Skills{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1 class="text-2xl font-bold pb-4">
|
||||
Meine Jobprofile & 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"
|
||||
|
||||
Reference in New Issue
Block a user