Spielerpositionen, Statistiken, Fahrgemeinschaften, Spielfeld-Visualisierung

- PlayerPosition Enum (7 Handball-Positionen) mit Label/ShortLabel
- Spielerstatistik pro Spiel (Tore, Würfe, TW-Paraden, Bemerkung)
- Position-Dropdown in Spieler-Editor und Event-Stats-Formular
- Statistik-Seite: TW zuerst, Trennlinie, Feldspieler, Position-Badges
- Spielfeld-SVG mit Ampel-Performance (grün/gelb/rot)
- Anklickbare Spieler im Spielfeld öffnen Detail-Modal
- Fahrgemeinschaften (Anbieten, Zuordnen, Zurückziehen)
- Übersetzungen in allen 6 Sprachen (de, en, pl, ru, ar, tr)
- .gitignore für Laravel hinzugefügt
- Demo-Daten mit Positionen und Statistiken

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Rhino
2026-03-02 11:47:34 +01:00
parent 2e24a40d68
commit ad60e7a9f9
46 changed files with 2041 additions and 86 deletions

View File

@@ -95,6 +95,50 @@
<p class="mt-1.5 text-xs text-gray-400">{{ __('admin.favicon_hint') }}</p>
</div>
{{-- Logo Login --}}
<div class="bg-white rounded-lg shadow p-6 mb-6">
<label class="block text-sm font-semibold text-gray-700 mb-1">{{ __('admin.logo_login_label') }}</label>
<p class="text-xs text-gray-400 mb-3">{{ __('admin.logo_login_desc') }}</p>
@php $currentLogoLogin = \App\Models\Setting::get('app_logo_login'); @endphp
@if ($currentLogoLogin)
<div class="flex items-center gap-4 mb-3 p-3 bg-gray-50 rounded-md border border-gray-200">
<img src="{{ asset('storage/' . $currentLogoLogin) }}" alt="Login-Logo" class="h-16 max-w-[200px] object-contain">
<div class="flex flex-col gap-1">
<span class="text-sm text-gray-500">{{ __('admin.logo_current') }}</span>
<label class="flex items-center gap-1.5 text-sm text-red-600 cursor-pointer">
<input type="checkbox" name="remove_logo_login" value="1" class="rounded border-gray-300">
{{ __('admin.logo_remove') }}
</label>
</div>
</div>
@endif
<input type="file" name="logo_login" accept=".png,.svg,.jpg,.jpeg,.gif,.webp"
class="w-full px-3 py-2 border border-gray-300 rounded-md text-sm file:mr-3 file:py-1 file:px-3 file:rounded-md file:border-0 file:text-sm file:bg-gray-100 file:text-gray-700 hover:file:bg-gray-200">
<p class="mt-1.5 text-xs text-gray-400">{{ __('admin.logo_hint') }}</p>
</div>
{{-- Logo App (Navbar) --}}
<div class="bg-white rounded-lg shadow p-6 mb-6">
<label class="block text-sm font-semibold text-gray-700 mb-1">{{ __('admin.logo_app_label') }}</label>
<p class="text-xs text-gray-400 mb-3">{{ __('admin.logo_app_desc') }}</p>
@php $currentLogoApp = \App\Models\Setting::get('app_logo_app'); @endphp
@if ($currentLogoApp)
<div class="flex items-center gap-4 mb-3 p-3 bg-gray-50 rounded-md border border-gray-200">
<img src="{{ asset('storage/' . $currentLogoApp) }}" alt="App-Logo" class="h-10 max-w-[200px] object-contain">
<div class="flex flex-col gap-1">
<span class="text-sm text-gray-500">{{ __('admin.logo_current') }}</span>
<label class="flex items-center gap-1.5 text-sm text-red-600 cursor-pointer">
<input type="checkbox" name="remove_logo_app" value="1" class="rounded border-gray-300">
{{ __('admin.logo_remove') }}
</label>
</div>
</div>
@endif
<input type="file" name="logo_app" accept=".png,.svg,.jpg,.jpeg,.gif,.webp"
class="w-full px-3 py-2 border border-gray-300 rounded-md text-sm file:mr-3 file:py-1 file:px-3 file:rounded-md file:border-0 file:text-sm file:bg-gray-100 file:text-gray-700 hover:file:bg-gray-200">
<p class="mt-1.5 text-xs text-gray-400">{{ __('admin.logo_hint') }}</p>
</div>
{{-- Richtext-Settings (Slogan mit Mini-Quill) --}}
@foreach ($settings as $key => $setting)
@if ($setting->type === 'richtext')