From acd241b3f27a65221c7fe08c43e86a0917c9b82c Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Tue, 7 Jul 2026 14:09:42 +0000 Subject: [PATCH] =?UTF-8?q?PM-Editor:=20Ablehnungsbegr=C3=BCndung=20direkt?= =?UTF-8?q?=20auf=20der=20Bearbeiten-Seite=20anzeigen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bei abgelehnten Pressemitteilungen stand die Begründung bisher nur auf der Detailseite. Der Editor zeigt jetzt dasselbe Hinweis-Panel (Begründung + Ablehnungsdatum) über der Schreibfläche, damit der Kunde beim Überarbeiten sieht, was zu ändern ist. Co-Authored-By: Claude Fable 5 --- .../customer/press-releases/edit.blade.php | 36 +++++++++++++++++++ .../CustomerPressReleaseEditPhase7Test.php | 34 ++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/resources/views/livewire/customer/press-releases/edit.blade.php b/resources/views/livewire/customer/press-releases/edit.blade.php index efb58e8a..eff129d2 100644 --- a/resources/views/livewire/customer/press-releases/edit.blade.php +++ b/resources/views/livewire/customer/press-releases/edit.blade.php @@ -370,7 +370,16 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung bearbeiten')] cl $pressRelease = $this->getMyPR()->load('images'); $cover = app(PressReleaseCoverImage::class); + // Bei abgelehnten PMs die Begründung direkt im Editor zeigen + // (QA-Befund 07.07.), analog zur Detailseite. + $latestRejection = null; + if ($pressRelease->status->value === 'rejected') { + $latestRejection = $pressRelease->statusLogs + ->firstWhere(fn ($log) => $log->to_status?->value === 'rejected'); + } + return [ + 'latestRejection' => $latestRejection, 'companyOptions' => $companyOptions, 'categories' => $categories, 'selectedCompany' => $selectedCompany, @@ -444,6 +453,33 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung bearbeiten')] cl + {{-- ============== REJECTION-HINWEIS ============== --}} + @if ($currentStatus === 'rejected' && $latestRejection) +
+
+ {{ __('Diese Pressemitteilung wurde abgelehnt') }} + {{ __('Handlung erforderlich') }} +
+
+
+ +
+
+ @if ($latestRejection->reason) + {{ __('Begründung') }}: + {{ $latestRejection->reason }} + @else + {{ __('Bitte überarbeiten Sie den Inhalt und reichen Sie die Pressemitteilung erneut ein.') }} + @endif + + {{ __('Abgelehnt am') }} {{ $latestRejection->created_at->format('d.m.Y H:i') }} + +
+
+
+ @endif + {{-- ============== 2-COLUMN GRID ============== --}}
diff --git a/tests/Feature/CustomerPressReleaseEditPhase7Test.php b/tests/Feature/CustomerPressReleaseEditPhase7Test.php index eed84a19..600484a4 100644 --- a/tests/Feature/CustomerPressReleaseEditPhase7Test.php +++ b/tests/Feature/CustomerPressReleaseEditPhase7Test.php @@ -6,6 +6,7 @@ use App\Models\Category; use App\Models\Company; use App\Models\Contact; use App\Models\PressRelease; +use App\Models\PressReleaseStatusLog; use App\Models\User; use Database\Seeders\RolesAndPermissionsSeeder; use Illuminate\Database\Eloquent\Factories\Sequence; @@ -274,6 +275,39 @@ test('foreign press release returns 403 on mount', function () { ->assertNotFound(); }); +test('editor shows the rejection reason for a rejected press release', function () { + /** @var TestCase $this */ + ['customer' => $customer, 'pr' => $pr] = makeCustomerWithPressRelease([ + 'status' => 'rejected', + ]); + + PressReleaseStatusLog::query()->create([ + 'press_release_id' => $pr->id, + 'from_status' => 'review', + 'to_status' => 'rejected', + 'reason' => 'Werbliche Sprache, bitte überarbeiten.', + 'source' => 'admin', + 'created_at' => now(), + ]); + + $this->actingAs($customer); + + LivewireVolt::test('customer.press-releases.edit', ['id' => $pr->id]) + ->assertSee('Diese Pressemitteilung wurde abgelehnt') + ->assertSee('Werbliche Sprache, bitte überarbeiten.') + ->assertSee('Abgelehnt am'); +}); + +test('editor shows no rejection panel for drafts', function () { + /** @var TestCase $this */ + ['customer' => $customer, 'pr' => $pr] = makeCustomerWithPressRelease(); + + $this->actingAs($customer); + + LivewireVolt::test('customer.press-releases.edit', ['id' => $pr->id]) + ->assertDontSee('Diese Pressemitteilung wurde abgelehnt'); +}); + test('addTag and removeTag work in edit form', function () { /** @var TestCase $this */ ['customer' => $customer, 'pr' => $pr] = makeCustomerWithPressRelease([