PM-Vorschau: Firma & Pressekontakt zusammengeführt, Sprache als Badge am Portal
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
cc7b3c3379
commit
284d029b29
3 changed files with 43 additions and 33 deletions
|
|
@ -91,13 +91,11 @@ new class extends Component {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filled($this->newCopyright) && ! str_starts_with($this->newCopyright, __('Bild: KI-generiert'))) {
|
if (filled($this->newCopyright) && !str_starts_with($this->newCopyright, __('Bild: KI-generiert'))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->newCopyright = filled($this->newLicenseDetail)
|
$this->newCopyright = filled($this->newLicenseDetail) ? __('Bild: KI-generiert (:tool)', ['tool' => trim($this->newLicenseDetail)]) : __('Bild: KI-generiert');
|
||||||
? __('Bild: KI-generiert (:tool)', ['tool' => trim($this->newLicenseDetail)])
|
|
||||||
: __('Bild: KI-generiert');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function closeUploadForm(): void
|
public function closeUploadForm(): void
|
||||||
|
|
@ -148,13 +146,9 @@ new class extends Component {
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'newCopyright.required' => __('Bitte einen öffentlichen Bildnachweis angeben, z. B. Foto: Max Mustermann / Beispiel GmbH.'),
|
'newCopyright.required' => __('Bitte einen öffentlichen Bildnachweis angeben, z. B. Foto: Max Mustermann / Beispiel GmbH.'),
|
||||||
'newAuthor.required' => $isAiGenerated
|
'newAuthor.required' => $isAiGenerated ? __('Bitte angeben, wer für die Erstellung verantwortlich ist (Person oder Firma).') : __('Bitte Urheber, Fotograf oder Rechteinhaber angeben.'),
|
||||||
? __('Bitte angeben, wer für die Erstellung verantwortlich ist (Person oder Firma).')
|
|
||||||
: __('Bitte Urheber, Fotograf oder Rechteinhaber angeben.'),
|
|
||||||
'newLicenseType.required' => __('Bitte einen Lizenztyp wählen.'),
|
'newLicenseType.required' => __('Bitte einen Lizenztyp wählen.'),
|
||||||
'newLicenseDetail.required' => $isAiGenerated
|
'newLicenseDetail.required' => $isAiGenerated ? __('Bitte das verwendete KI-Tool angeben, z. B. Midjourney, Gemini, ChatGPT, DALL·E, Adobe Firefly.') : __('Bitte die Lizenz genauer angeben.'),
|
||||||
? __('Bitte das verwendete KI-Tool angeben, z. B. Midjourney v7.')
|
|
||||||
: __('Bitte die Lizenz genauer angeben.'),
|
|
||||||
'newLicenseUrl.required' => __('Für diesen Lizenztyp ist eine Nachweis-URL erforderlich.'),
|
'newLicenseUrl.required' => __('Für diesen Lizenztyp ist eine Nachweis-URL erforderlich.'),
|
||||||
'newPeopleRightsStatus.required' => __('Bitte angeben, ob erkennbare Personen abgebildet sind.'),
|
'newPeopleRightsStatus.required' => __('Bitte angeben, ob erkennbare Personen abgebildet sind.'),
|
||||||
'newPropertyRightsStatus.required' => __('Bitte angeben, ob Marken, Kunstwerke oder private Orte sichtbar sind.'),
|
'newPropertyRightsStatus.required' => __('Bitte angeben, ob Marken, Kunstwerke oder private Orte sichtbar sind.'),
|
||||||
|
|
@ -476,7 +470,8 @@ new class extends Component {
|
||||||
</div>
|
</div>
|
||||||
<div class="grid gap-3 sm:grid-cols-2">
|
<div class="grid gap-3 sm:grid-cols-2">
|
||||||
<flux:input wire:model="newTitle" :label="__('Titel / Alt-Text (optional)')" />
|
<flux:input wire:model="newTitle" :label="__('Titel / Alt-Text (optional)')" />
|
||||||
<flux:input wire:model="newCopyright" :label="__('Öffentlicher Bildnachweis')" :badge="__('Pflicht')"
|
<flux:input wire:model="newCopyright" :label="__('Öffentlicher Bildnachweis')"
|
||||||
|
:badge="__('Pflicht')"
|
||||||
:placeholder="__('Wird öffentlich angezeigt, z. B. Foto: Max Mustermann / Beispiel GmbH.')"
|
:placeholder="__('Wird öffentlich angezeigt, z. B. Foto: Max Mustermann / Beispiel GmbH.')"
|
||||||
required />
|
required />
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -492,7 +487,8 @@ new class extends Component {
|
||||||
</div>
|
</div>
|
||||||
<div class="grid gap-3 sm:grid-cols-2">
|
<div class="grid gap-3 sm:grid-cols-2">
|
||||||
<flux:input wire:model="newAuthor"
|
<flux:input wire:model="newAuthor"
|
||||||
:label="$showsAiSection ? __('Verantwortlich für die Erstellung (Person/Firma)') : __('Urheber / Fotograf / Rechteinhaber')"
|
:label="$showsAiSection ? __('Verantwortlich für die Erstellung (Person/Firma)') : __(
|
||||||
|
'Urheber / Fotograf / Rechteinhaber')"
|
||||||
:badge="__('Pflicht')" required />
|
:badge="__('Pflicht')" required />
|
||||||
<flux:select wire:model.live="newLicenseType" :label="__('Lizenztyp')" :badge="__('Pflicht')"
|
<flux:select wire:model.live="newLicenseType" :label="__('Lizenztyp')" :badge="__('Pflicht')"
|
||||||
required>
|
required>
|
||||||
|
|
@ -504,8 +500,9 @@ new class extends Component {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if ($showsAiSection)
|
@if ($showsAiSection)
|
||||||
<flux:input wire:model.live.debounce.400ms="newLicenseDetail" :label="__('Verwendetes KI-Tool')"
|
<flux:input wire:model.live.debounce.400ms="newLicenseDetail"
|
||||||
:badge="__('Pflicht')" placeholder="{{ __('z. B. Midjourney v7, DALL·E 3, Adobe Firefly') }}"
|
:label="__('Verwendetes KI-Tool')" :badge="__('Pflicht')"
|
||||||
|
placeholder="{{ __('z. B. Midjourney, Gemini, ChatGPT, DALL·E, Adobe Firefly') }}"
|
||||||
required />
|
required />
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
|
|
||||||
|
|
@ -311,17 +311,34 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends
|
||||||
<div class="grid gap-6 xl:grid-cols-2">
|
<div class="grid gap-6 xl:grid-cols-2">
|
||||||
<article class="panel">
|
<article class="panel">
|
||||||
<div class="panel-head">
|
<div class="panel-head">
|
||||||
<span class="section-eyebrow">{{ __('Zugeordnete Pressekontakte') }}</span>
|
<span class="section-eyebrow">{{ __('Firma & Pressekontakt') }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="p-5 space-y-4">
|
||||||
|
{{-- Firma der Pressemitteilung --}}
|
||||||
@if ($pr->company)
|
@if ($pr->company)
|
||||||
<flux:button size="sm" variant="filled" icon="building-office" href="{{ route('me.press-kits.show', $pr->company->id) }}" wire:navigate>
|
<div class="flex items-start gap-3 rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
||||||
{{ __('Firma') }}
|
<div class="flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[5px]
|
||||||
</flux:button>
|
bg-[color:var(--color-hub-soft)] border border-[color:var(--color-hub-soft-2)] text-[color:var(--color-hub)]">
|
||||||
|
<flux:icon.building-office class="size-5" />
|
||||||
|
</div>
|
||||||
|
<div class="min-w-0 flex-1">
|
||||||
|
<div class="text-[13px] font-semibold text-[color:var(--color-ink)]">{{ $pr->company->name }}</div>
|
||||||
|
<div class="mt-0.5 flex flex-wrap gap-x-3 gap-y-1 text-[11.5px] text-[color:var(--color-ink-3)]">
|
||||||
|
@if ($pr->company->email)
|
||||||
|
<span>{{ $pr->company->email }}</span>
|
||||||
|
@endif
|
||||||
|
@if ($pr->company->phone)
|
||||||
|
<span>{{ $pr->company->phone }}</span>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="p-5">
|
</div>
|
||||||
<p class="text-[12px] text-[color:var(--color-ink-3)] mt-0 mb-4">
|
<flux:button size="xs" variant="filled" href="{{ route('me.press-kits.show', $pr->company->id) }}" wire:navigate>
|
||||||
{{ __('Kontakte, die dieser Pressemitteilung zugeordnet sind.') }}
|
{{ __('Firma öffnen') }}
|
||||||
</p>
|
</flux:button>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{-- Pressekontakt(e) direkt darunter --}}
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
@forelse ($contacts as $contact)
|
@forelse ($contacts as $contact)
|
||||||
<div class="rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
<div class="rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
||||||
|
|
@ -407,8 +424,9 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends
|
||||||
@endif
|
@endif
|
||||||
<div class="rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
<div class="rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
||||||
<div class="text-[11px] uppercase tracking-[0.6px] text-[color:var(--color-ink-3)] font-semibold">{{ __('Portal') }}</div>
|
<div class="text-[11px] uppercase tracking-[0.6px] text-[color:var(--color-ink-3)] font-semibold">{{ __('Portal') }}</div>
|
||||||
<div class="text-[13px] font-semibold text-[color:var(--color-ink)] mt-1">
|
<div class="mt-1 flex items-center gap-2">
|
||||||
{{ $pr->portal?->label() ?? '–' }}
|
<span class="text-[13px] font-semibold text-[color:var(--color-ink)]">{{ $pr->portal?->label() ?? '–' }}</span>
|
||||||
|
<span class="badge hub">{{ strtoupper($pr->language) }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
<div class="rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
||||||
|
|
@ -417,12 +435,6 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends
|
||||||
{{ $categoryName }}
|
{{ $categoryName }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
|
||||||
<div class="text-[11px] uppercase tracking-[0.6px] text-[color:var(--color-ink-3)] font-semibold">{{ __('Sprache') }}</div>
|
|
||||||
<div class="text-[13px] font-semibold text-[color:var(--color-ink)] mt-1">
|
|
||||||
{{ strtoupper($pr->language) }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (filled($pr->keywords))
|
@if (filled($pr->keywords))
|
||||||
|
|
|
||||||
|
|
@ -290,7 +290,8 @@ test('customer press release detail shows assigned contacts and status history',
|
||||||
LivewireVolt::test('customer.press-releases.show', ['id' => $pressRelease->id])
|
LivewireVolt::test('customer.press-releases.show', ['id' => $pressRelease->id])
|
||||||
->assertSee('Alpha Detailmeldung')
|
->assertSee('Alpha Detailmeldung')
|
||||||
->assertSee('Status-Workflow')
|
->assertSee('Status-Workflow')
|
||||||
->assertSee('Zugeordnete Pressekontakte')
|
->assertSee('Firma & Pressekontakt')
|
||||||
|
->assertSee('Alpha GmbH')
|
||||||
->assertSee('Paula Presse')
|
->assertSee('Paula Presse')
|
||||||
->assertSee('paula@example.test')
|
->assertSee('paula@example.test')
|
||||||
->assertSee('Status & Verlauf')
|
->assertSee('Status & Verlauf')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue