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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
$this->newCopyright = filled($this->newLicenseDetail)
|
||||
? __('Bild: KI-generiert (:tool)', ['tool' => trim($this->newLicenseDetail)])
|
||||
: __('Bild: KI-generiert');
|
||||
$this->newCopyright = filled($this->newLicenseDetail) ? __('Bild: KI-generiert (:tool)', ['tool' => trim($this->newLicenseDetail)]) : __('Bild: KI-generiert');
|
||||
}
|
||||
|
||||
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.'),
|
||||
'newAuthor.required' => $isAiGenerated
|
||||
? __('Bitte angeben, wer für die Erstellung verantwortlich ist (Person oder Firma).')
|
||||
: __('Bitte Urheber, Fotograf oder Rechteinhaber angeben.'),
|
||||
'newAuthor.required' => $isAiGenerated ? __('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.'),
|
||||
'newLicenseDetail.required' => $isAiGenerated
|
||||
? __('Bitte das verwendete KI-Tool angeben, z. B. Midjourney v7.')
|
||||
: __('Bitte die Lizenz genauer angeben.'),
|
||||
'newLicenseDetail.required' => $isAiGenerated ? __('Bitte das verwendete KI-Tool angeben, z. B. Midjourney, Gemini, ChatGPT, DALL·E, Adobe Firefly.') : __('Bitte die Lizenz genauer angeben.'),
|
||||
'newLicenseUrl.required' => __('Für diesen Lizenztyp ist eine Nachweis-URL erforderlich.'),
|
||||
'newPeopleRightsStatus.required' => __('Bitte angeben, ob erkennbare Personen abgebildet sind.'),
|
||||
'newPropertyRightsStatus.required' => __('Bitte angeben, ob Marken, Kunstwerke oder private Orte sichtbar sind.'),
|
||||
|
|
@ -476,7 +470,8 @@ new class extends Component {
|
|||
</div>
|
||||
<div class="grid gap-3 sm:grid-cols-2">
|
||||
<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.')"
|
||||
required />
|
||||
</div>
|
||||
|
|
@ -492,7 +487,8 @@ new class extends Component {
|
|||
</div>
|
||||
<div class="grid gap-3 sm:grid-cols-2">
|
||||
<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 />
|
||||
<flux:select wire:model.live="newLicenseType" :label="__('Lizenztyp')" :badge="__('Pflicht')"
|
||||
required>
|
||||
|
|
@ -504,8 +500,9 @@ new class extends Component {
|
|||
</div>
|
||||
|
||||
@if ($showsAiSection)
|
||||
<flux:input wire:model.live.debounce.400ms="newLicenseDetail" :label="__('Verwendetes KI-Tool')"
|
||||
:badge="__('Pflicht')" placeholder="{{ __('z. B. Midjourney v7, DALL·E 3, Adobe Firefly') }}"
|
||||
<flux:input wire:model.live.debounce.400ms="newLicenseDetail"
|
||||
:label="__('Verwendetes KI-Tool')" :badge="__('Pflicht')"
|
||||
placeholder="{{ __('z. B. Midjourney, Gemini, ChatGPT, DALL·E, Adobe Firefly') }}"
|
||||
required />
|
||||
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -311,17 +311,34 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends
|
|||
<div class="grid gap-6 xl:grid-cols-2">
|
||||
<article class="panel">
|
||||
<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)
|
||||
<flux:button size="sm" variant="filled" icon="building-office" href="{{ route('me.press-kits.show', $pr->company->id) }}" wire:navigate>
|
||||
{{ __('Firma') }}
|
||||
</flux:button>
|
||||
<div class="flex items-start gap-3 rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3">
|
||||
<div class="flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[5px]
|
||||
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
|
||||
</div>
|
||||
<div class="p-5">
|
||||
<p class="text-[12px] text-[color:var(--color-ink-3)] mt-0 mb-4">
|
||||
{{ __('Kontakte, die dieser Pressemitteilung zugeordnet sind.') }}
|
||||
</p>
|
||||
</div>
|
||||
<flux:button size="xs" variant="filled" href="{{ route('me.press-kits.show', $pr->company->id) }}" wire:navigate>
|
||||
{{ __('Firma öffnen') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- Pressekontakt(e) direkt darunter --}}
|
||||
<div class="space-y-2">
|
||||
@forelse ($contacts as $contact)
|
||||
<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
|
||||
<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-[13px] font-semibold text-[color:var(--color-ink)] mt-1">
|
||||
{{ $pr->portal?->label() ?? '–' }}
|
||||
<div class="mt-1 flex items-center gap-2">
|
||||
<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 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 }}
|
||||
</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>
|
||||
|
||||
@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])
|
||||
->assertSee('Alpha Detailmeldung')
|
||||
->assertSee('Status-Workflow')
|
||||
->assertSee('Zugeordnete Pressekontakte')
|
||||
->assertSee('Firma & Pressekontakt')
|
||||
->assertSee('Alpha GmbH')
|
||||
->assertSee('Paula Presse')
|
||||
->assertSee('paula@example.test')
|
||||
->assertSee('Status & Verlauf')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue