- 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>
82 lines
5.1 KiB
PHP
Executable File
82 lines
5.1 KiB
PHP
Executable File
<x-layouts.admin :title="__('admin.new_player')">
|
|
<h1 class="text-2xl font-bold mb-6">{{ __('admin.new_player') }}</h1>
|
|
|
|
<div class="bg-white rounded-lg shadow p-6 max-w-lg">
|
|
<form method="POST" action="{{ route('admin.players.store') }}">
|
|
@csrf
|
|
|
|
<div class="grid grid-cols-2 gap-4 mb-4">
|
|
<div>
|
|
<label for="first_name" class="block text-sm font-medium text-gray-700 mb-1">{{ __('admin.first_name') }} *</label>
|
|
<input type="text" name="first_name" id="first_name" value="{{ old('first_name') }}" required
|
|
class="w-full px-3 py-2 border border-gray-300 rounded-md @error('first_name') border-red-500 @enderror">
|
|
@error('first_name')<p class="mt-1 text-sm text-red-600">{{ $message }}</p>@enderror
|
|
</div>
|
|
<div>
|
|
<label for="last_name" class="block text-sm font-medium text-gray-700 mb-1">{{ __('admin.last_name') }} *</label>
|
|
<input type="text" name="last_name" id="last_name" value="{{ old('last_name') }}" required
|
|
class="w-full px-3 py-2 border border-gray-300 rounded-md @error('last_name') border-red-500 @enderror">
|
|
@error('last_name')<p class="mt-1 text-sm text-red-600">{{ $message }}</p>@enderror
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mb-4">
|
|
<label for="team_id" class="block text-sm font-medium text-gray-700 mb-1">Team *</label>
|
|
<select name="team_id" id="team_id" required class="w-full px-3 py-2 border border-gray-300 rounded-md">
|
|
<option value="">{{ __('admin.please_select') }}</option>
|
|
@foreach ($teams as $team)
|
|
<option value="{{ $team->id }}" {{ old('team_id') == $team->id ? 'selected' : '' }}>{{ $team->name }}</option>
|
|
@endforeach
|
|
</select>
|
|
@error('team_id')<p class="mt-1 text-sm text-red-600">{{ $message }}</p>@enderror
|
|
</div>
|
|
|
|
<div class="grid grid-cols-2 gap-4 mb-4">
|
|
<div>
|
|
<label for="birth_year" class="block text-sm font-medium text-gray-700 mb-1">{{ __('admin.birth_year') }}</label>
|
|
<input type="number" name="birth_year" id="birth_year" value="{{ old('birth_year') }}" min="2000" max="2030"
|
|
class="w-full px-3 py-2 border border-gray-300 rounded-md">
|
|
</div>
|
|
<div>
|
|
<label for="jersey_number" class="block text-sm font-medium text-gray-700 mb-1">{{ __('admin.jersey_number') }}</label>
|
|
<input type="number" name="jersey_number" id="jersey_number" value="{{ old('jersey_number') }}" min="1" max="99"
|
|
class="w-full px-3 py-2 border border-gray-300 rounded-md">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mb-4">
|
|
<label for="position" class="block text-sm font-medium text-gray-700 mb-1">{{ __('admin.position') }}</label>
|
|
<select name="position" id="position" class="w-full px-3 py-2 border border-gray-300 rounded-md">
|
|
<option value="">{{ __('admin.please_select') }}</option>
|
|
@foreach (\App\Enums\PlayerPosition::cases() as $pos)
|
|
<option value="{{ $pos->value }}" {{ old('position') === $pos->value ? 'selected' : '' }}>{{ $pos->label() }}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
|
|
<div class="mb-4 space-y-2">
|
|
<label class="flex items-center">
|
|
<input type="hidden" name="is_active" value="0">
|
|
<input type="checkbox" name="is_active" value="1" {{ old('is_active', '1') == '1' ? 'checked' : '' }} class="rounded border-gray-300 mr-2">
|
|
<span class="text-sm text-gray-700">{{ __('admin.active') }}</span>
|
|
</label>
|
|
<label class="flex items-center">
|
|
<input type="hidden" name="photo_permission" value="0">
|
|
<input type="checkbox" name="photo_permission" value="1" {{ old('photo_permission') ? 'checked' : '' }} class="rounded border-gray-300 mr-2">
|
|
<span class="text-sm text-gray-700">{{ __('admin.photo_permission') }}</span>
|
|
</label>
|
|
</div>
|
|
|
|
<div class="mb-4">
|
|
<label for="notes" class="block text-sm font-medium text-gray-700 mb-1">{{ __('admin.notes') }}</label>
|
|
<textarea name="notes" id="notes" rows="2" class="w-full px-3 py-2 border border-gray-300 rounded-md">{{ old('notes') }}</textarea>
|
|
</div>
|
|
|
|
<div class="flex items-center gap-3">
|
|
<button type="submit" class="bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 text-sm font-medium">{{ __('ui.create') }}</button>
|
|
<a href="{{ route('admin.players.index') }}" class="text-sm text-gray-600 hover:underline">{{ __('ui.cancel') }}</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</x-layouts.admin>
|