diff --git a/app/Models/Company.php b/app/Models/Company.php index 1dcd1af4..194c9f60 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -161,6 +161,54 @@ class Company extends Model return $this->gone_at !== null; } + /** + * Öffentliche Newsroom-Seiten dieser Firma, je Portal — nur dort, wo sie + * schon erscheint: Der Newsroom ist öffentlich ab der ersten sichtbaren + * Meldung in dieser Sprache (Roadmap 1b.1). Deutsch hat Vorrang, sonst + * Englisch. Für die Verknüpfung „Firma ↔ Newsroom“ im Kunden- und + * Adminbereich. + * + * @return list + */ + public function publicNewsroomLinks(): array + { + if (! $this->slug || ! $this->is_active || $this->isGone()) { + return []; + } + + $portals = $this->portal === Portal::Both ? [Portal::Presseecho, Portal::Businessportal24] : [$this->portal]; + $links = []; + + foreach ($portals as $portal) { + $languages = PressRelease::query() + ->withoutGlobalScope(PortalScope::class) + ->where('company_id', $this->getKey()) + ->whereIn('portal', [$portal->value, Portal::Both->value]) + ->visibleInArchive() + ->whereIn('language', ['de', 'en']) + ->distinct() + ->pluck('language') + ->all(); + + if ($languages === []) { + continue; + } + + $links[] = [ + 'portal' => $portal, + 'label' => $portal->label(), + 'url' => sprintf( + '%s/%s/newsroom/%s', + rtrim((string) ($portal === Portal::Presseecho ? config('domains.domain_presseecho_url') : config('domains.domain_businessportal_url')), '/'), + in_array('de', $languages, true) ? 'de' : 'en', + $this->slug, + ), + ]; + } + + return $links; + } + /** * Trägt eine fremde, lebende Firma auf einem ANDEREN Portal diesen Slug? * Dann darf diese Firma nicht `both` werden: Die öffentliche Auflösung diff --git a/lang/de/web.php b/lang/de/web.php index 6a813c43..d8573a04 100644 --- a/lang/de/web.php +++ b/lang/de/web.php @@ -288,12 +288,9 @@ return [ 'total_hits_sub' => 'über alle Meldungen', 'latest' => 'Aktuellste Meldung', 'empty' => 'Aktuell keine weiteren Meldungen in diesem Newsroom.', - 'manage_hint' => 'Sie vertreten :company? Profil, Logo und Pressekontakte lassen sich kostenlos pflegen.', - 'manage_link' => 'Diesen Newsroom verwalten', + 'manage_eyebrow' => 'Diesen Newsroom verwalten', + 'manage_question' => 'Sie vertreten :company? Beschreibung, Logo und Pressekontakte pflegen Sie kostenlos – und Sie sehen die Aufrufe Ihrer Meldungen.', 'feed_link' => 'RSS-Feed', - 'own_title' => 'Eigenen Newsroom starten', - 'own_text' => 'Bündeln Sie alle Ihre Pressemitteilungen unter einer eigenen Marken-URL – mit Logo, Branchen-Zuordnung und SEO-Vorteil.', - 'own_cta' => 'Newsroom anlegen', ], 'category' => [ diff --git a/lang/en/web.php b/lang/en/web.php index 49c0b156..ebf871a6 100644 --- a/lang/en/web.php +++ b/lang/en/web.php @@ -283,12 +283,9 @@ return [ 'total_hits_sub' => 'across all releases', 'latest' => 'Latest release', 'empty' => 'No further releases in this newsroom at the moment.', - 'manage_hint' => 'You represent :company? Profile, logo and press contacts can be maintained free of charge.', - 'manage_link' => 'Manage this newsroom', + 'manage_eyebrow' => 'Manage this newsroom', + 'manage_question' => 'You represent :company? Maintain the description, logo and press contacts free of charge – and see how often your releases are read.', 'feed_link' => 'RSS feed', - 'own_title' => 'Start your own newsroom', - 'own_text' => 'Bundle all your press releases under your own branded URL – with logo, industry mapping and SEO benefit.', - 'own_cta' => 'Create newsroom', ], 'category' => [ diff --git a/resources/views/components/web/manage-newsroom-box.blade.php b/resources/views/components/web/manage-newsroom-box.blade.php new file mode 100644 index 00000000..3f0bba89 --- /dev/null +++ b/resources/views/components/web/manage-newsroom-box.blade.php @@ -0,0 +1,45 @@ +@props([ + 'company' => null, + // Kopfzeile und Frage je Ort: unter einer Meldung „Diese Mitteilung + // verwalten“, auf der Newsroom-Seite „Diesen Newsroom verwalten“. + 'eyebrow' => null, + 'question' => null, +]) + +{{-- Verwaltungszugang (Roadmap 1b.2/1b.4, 6.17): ein Kasten mit Knopf statt + einer Textzeile, die überlesen wurde. Die Empfängeradresse steht maskiert + dabei, damit klar ist, wohin der Link geht — ohne sie preiszugeben. Ohne + hinterlegte Adresse führt der Knopf zur Anmeldung per E-Mail-Link. --}} +@php + $portalUrl = rtrim((string) config('domains.domain_portal_url', config('app.url')), '/'); + $recipients = ($company && ! $company->isGone() && $company->slug) + ? app(\App\Services\Company\NewsroomClaimService::class)->maskedRecipients($company) + : collect(); +@endphp + +
class(['border border-bg-rule-strong bg-bg-elev p-5']) }} data-manage-newsroom> +
{{ $eyebrow ?? __('web.detail.manage_eyebrow') }}
+

{{ $question ?? __('web.detail.manage_question') }}

+ @if ($recipients->isNotEmpty()) +

{{ __('web.detail.manage_recipient') }}

+ + + + {{ __('web.detail.manage_cta') }} + +

+ {{ __('web.detail.manage_hint') }} + {{ __('web.detail.manage_other_address') }} +

+ @else + + + {{ __('web.detail.manage_link') }} + +

{{ __('web.detail.manage_hint') }}

+ @endif +
diff --git a/resources/views/web/newsroom.blade.php b/resources/views/web/newsroom.blade.php index 917aaa2a..f0bf5ea4 100644 --- a/resources/views/web/newsroom.blade.php +++ b/resources/views/web/newsroom.blade.php @@ -136,13 +136,6 @@

{{ Str::limit($boilerplate, 360) }}

@endif - {{-- Verwaltungszugang (Roadmap 1b.4): ein Hinweis, kein Angebot. - Der Zugang ist kostenlos und führt zur Firmen-E-Mail. --}} -

- {{ __('web.newsroom_page.manage_hint', ['company' => $company->name]) }} - {{ __('web.newsroom_page.manage_link') }} -

- @if ($categories->isNotEmpty())
{{ __('web.newsroom_page.industries') }} @@ -155,6 +148,13 @@
@endif + + {{-- Verwaltungszugang (Roadmap 1b.4, 6.17): auf Mobil direkt unter + dem Profil, am Desktop oben in der rechten Spalte. Ein Hinweis, + kein Angebot — der Zugang ist kostenlos. --}} + {{-- Stat strip --}} @@ -251,22 +251,11 @@ diff --git a/resources/views/web/release-detail.blade.php b/resources/views/web/release-detail.blade.php index 1f4fd914..1156facb 100644 --- a/resources/views/web/release-detail.blade.php +++ b/resources/views/web/release-detail.blade.php @@ -610,32 +610,7 @@ -
-
{{ __('web.detail.manage_eyebrow') }}
-

{{ __('web.detail.manage_question') }}

- @if ($claimRecipients->isNotEmpty()) -

{{ __('web.detail.manage_recipient') }}

-
    - @foreach ($claimRecipients as $recipient) -
  • {{ $recipient }}
  • - @endforeach -
- - - {{ __('web.detail.manage_cta') }} - -

- {{ __('web.detail.manage_hint') }} - {{ __('web.detail.manage_other_address') }} -

- @else - - - {{ __('web.detail.manage_link') }} - -

{{ __('web.detail.manage_hint') }}

- @endif -
+