Event-Liste: Termine nach Monaten gruppiert mit Überschriften
Termine werden jetzt unter Monats-Headern (z.B. "März 2026", "April 2026") gruppiert dargestellt. Die Event-Karten bleiben unverändert, werden aber innerhalb der Monatsblöcke organisiert. Monatsnamen sind lokalisiert. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -37,50 +37,59 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{{-- Event-Liste --}}
|
{{-- Event-Liste nach Monaten gruppiert --}}
|
||||||
@if ($events->isEmpty())
|
@if ($events->isEmpty())
|
||||||
<div class="bg-white rounded-lg shadow p-6 text-center text-gray-500">
|
<div class="bg-white rounded-lg shadow p-6 text-center text-gray-500">
|
||||||
{{ __('events.no_events') }}
|
{{ __('events.no_events') }}
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="space-y-3">
|
@php $currentMonth = null; @endphp
|
||||||
@foreach ($events as $event)
|
@foreach ($events as $event)
|
||||||
@php
|
@php
|
||||||
$minStatus = $event->minimumsStatus();
|
$eventMonth = $event->start_at->translatedFormat('F Y');
|
||||||
$bgClass = match($minStatus) { true => 'bg-green-100', false => 'bg-red-100', default => 'bg-white' };
|
$minStatus = $event->minimumsStatus();
|
||||||
@endphp
|
$bgClass = match($minStatus) { true => 'bg-green-100', false => 'bg-red-100', default => 'bg-white' };
|
||||||
<a href="{{ route('events.show', $event) }}" class="block {{ $bgClass }} rounded-lg shadow p-4 hover:shadow-md transition-shadow">
|
@endphp
|
||||||
<div class="flex flex-col sm:flex-row sm:items-center gap-3">
|
|
||||||
<div class="flex-1 min-w-0">
|
{{-- Monats-Header --}}
|
||||||
<div class="flex items-center gap-2 mb-1 flex-wrap">
|
@if ($eventMonth !== $currentMonth)
|
||||||
<x-event-type-badge :type="$event->type" />
|
@php $currentMonth = $eventMonth; @endphp
|
||||||
<span class="text-xs text-gray-500">{{ $event->team->name }}</span>
|
<div class="{{ !$loop->first ? 'mt-6' : '' }} mb-3">
|
||||||
@if ($event->status === \App\Enums\EventStatus::Cancelled)
|
<h2 class="text-lg font-bold text-gray-800 border-b-2 border-gray-200 pb-1">{{ $eventMonth }}</h2>
|
||||||
<span class="inline-block px-2 py-0.5 rounded text-xs font-medium bg-red-100 text-red-800">{{ __('events.cancelled_label') }}</span>
|
</div>
|
||||||
@elseif ($event->status === \App\Enums\EventStatus::Draft)
|
@endif
|
||||||
<span class="inline-block px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800">{{ __('events.draft_label') }}</span>
|
|
||||||
@endif
|
<a href="{{ route('events.show', $event) }}" class="block {{ $bgClass }} rounded-lg shadow p-4 mb-3 hover:shadow-md transition-shadow">
|
||||||
</div>
|
<div class="flex flex-col sm:flex-row sm:items-center gap-3">
|
||||||
<h3 class="font-semibold {{ $event->status === \App\Enums\EventStatus::Cancelled ? 'line-through text-gray-400' : 'text-gray-900' }}">
|
<div class="flex-1 min-w-0">
|
||||||
{{ $event->title }}
|
<div class="flex items-center gap-2 mb-1 flex-wrap">
|
||||||
</h3>
|
<x-event-type-badge :type="$event->type" />
|
||||||
<p class="text-sm text-gray-600">
|
<span class="text-xs text-gray-500">{{ $event->team->name }}</span>
|
||||||
{{ $event->start_at->translatedFormat(__('ui.date_format')) }} {{ __('ui.clock') }}
|
@if ($event->status === \App\Enums\EventStatus::Cancelled)
|
||||||
@if ($event->end_at)
|
<span class="inline-block px-2 py-0.5 rounded text-xs font-medium bg-red-100 text-red-800">{{ __('events.cancelled_label') }}</span>
|
||||||
– {{ $event->end_at->format('H:i') }} {{ __('ui.clock') }}
|
@elseif ($event->status === \App\Enums\EventStatus::Draft)
|
||||||
@endif
|
<span class="inline-block px-2 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800">{{ __('events.draft_label') }}</span>
|
||||||
</p>
|
|
||||||
@if ($event->location_name)
|
|
||||||
<p class="text-sm text-gray-500 mt-1">{{ $event->location_name }}</p>
|
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="shrink-0">
|
<h3 class="font-semibold {{ $event->status === \App\Enums\EventStatus::Cancelled ? 'line-through text-gray-400' : 'text-gray-900' }}">
|
||||||
<x-event-status-boxes :event="$event" />
|
{{ $event->title }}
|
||||||
</div>
|
</h3>
|
||||||
|
<p class="text-sm text-gray-600">
|
||||||
|
{{ $event->start_at->translatedFormat(__('ui.date_format')) }} {{ __('ui.clock') }}
|
||||||
|
@if ($event->end_at)
|
||||||
|
– {{ $event->end_at->format('H:i') }} {{ __('ui.clock') }}
|
||||||
|
@endif
|
||||||
|
</p>
|
||||||
|
@if ($event->location_name)
|
||||||
|
<p class="text-sm text-gray-500 mt-1">{{ $event->location_name }}</p>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</a>
|
<div class="shrink-0">
|
||||||
@endforeach
|
<x-event-status-boxes :event="$event" />
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
<div class="mt-6">
|
<div class="mt-6">
|
||||||
{{ $events->links() }}
|
{{ $events->links() }}
|
||||||
|
|||||||
Reference in New Issue
Block a user