PM-Editor: Ablehnungsbegründung direkt auf der Bearbeiten-Seite anzeigen
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 <noreply@anthropic.com>
This commit is contained in:
parent
c040f394e3
commit
fcfbbd4918
2 changed files with 70 additions and 0 deletions
|
|
@ -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
|
|||
</div>
|
||||
</header>
|
||||
|
||||
{{-- ============== REJECTION-HINWEIS ============== --}}
|
||||
@if ($currentStatus === 'rejected' && $latestRejection)
|
||||
<article class="panel" style="border-color:var(--color-err); border-left-width:3px;">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Diese Pressemitteilung wurde abgelehnt') }}</span>
|
||||
<span class="badge err dot">{{ __('Handlung erforderlich') }}</span>
|
||||
</div>
|
||||
<div class="p-5 flex items-start gap-3">
|
||||
<div class="w-9 h-9 rounded-[5px] flex items-center justify-center flex-shrink-0
|
||||
bg-[color:var(--color-err-soft)] border border-[color:var(--color-err)]/30 text-[color:var(--color-loss)]">
|
||||
<flux:icon.exclamation-triangle class="size-[18px]" />
|
||||
</div>
|
||||
<div class="flex-1 text-[13px] text-[color:var(--color-ink-2)]">
|
||||
@if ($latestRejection->reason)
|
||||
<strong class="text-[color:var(--color-ink)] font-semibold">{{ __('Begründung') }}:</strong>
|
||||
<span class="block mt-1 whitespace-pre-line">{{ $latestRejection->reason }}</span>
|
||||
@else
|
||||
{{ __('Bitte überarbeiten Sie den Inhalt und reichen Sie die Pressemitteilung erneut ein.') }}
|
||||
@endif
|
||||
<span class="mt-2 block text-[11.5px] text-[color:var(--color-ink-3)]">
|
||||
{{ __('Abgelehnt am') }} {{ $latestRejection->created_at->format('d.m.Y H:i') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@endif
|
||||
|
||||
{{-- ============== 2-COLUMN GRID ============== --}}
|
||||
<div class="grid gap-6 pr-editor-layout">
|
||||
|
||||
|
|
|
|||
|
|
@ -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([
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue