diff --git a/lang/de/web.php b/lang/de/web.php index 4de4287c..254f79f6 100644 --- a/lang/de/web.php +++ b/lang/de/web.php @@ -355,6 +355,13 @@ return [ 'report_content' => 'Inhalt melden', 'remove_data' => 'Eigene Daten entfernen', 'reports_free' => 'Meldungen sind kostenlos.', + 'legal_eyebrow' => 'Rechtliches Anliegen', + 'manage_eyebrow' => 'Diese Mitteilung verwalten', + 'manage_recipient' => 'Der Anmeldelink geht an die hinterlegte Adresse:', + 'manage_cta' => 'Anmeldelink anfordern', + 'manage_other_address' => 'Andere Adresse? Anmeldung per E-Mail-Link.', + 'manage_sidebar_text' => 'Sie sind als Firma oder Pressekontakt dieser Mitteilung hinterlegt? Dann können Sie sie ohne Passwort verwalten – der Anmeldelink geht an die hinterlegte E-Mail-Adresse.', + 'manage_link_short' => 'Mit hinterlegter E-Mail anmelden', 'manage_question' => 'Sie sind als Firma oder Pressekontakt dieser Mitteilung hinterlegt?', 'manage_link' => 'Mit der hinterlegten E-Mail-Adresse bei pressekonto anmelden', 'manage_hint' => 'Sie erhalten einen Anmeldelink per E-Mail – ganz ohne Passwort.', diff --git a/lang/en/web.php b/lang/en/web.php index 475e2e7c..e28d7381 100644 --- a/lang/en/web.php +++ b/lang/en/web.php @@ -350,6 +350,13 @@ return [ 'report_content' => 'Report content', 'remove_data' => 'Remove my data', 'reports_free' => 'Reports are free of charge.', + 'legal_eyebrow' => 'Legal concern', + 'manage_eyebrow' => 'Manage this release', + 'manage_recipient' => 'The sign-in link goes to the listed address:', + 'manage_cta' => 'Request sign-in link', + 'manage_other_address' => 'Different address? Sign in via e-mail link.', + 'manage_sidebar_text' => 'Listed as the company or press contact of this release? Then you can manage it without a password – the sign-in link goes to the listed e-mail address.', + 'manage_link_short' => 'Sign in with listed e-mail', 'manage_question' => 'Are you listed as the company or press contact of this release?', 'manage_link' => 'Sign in to pressekonto with the listed email address', 'manage_hint' => 'You will receive a sign-in link by email – no password required.', diff --git a/resources/views/web/release-detail.blade.php b/resources/views/web/release-detail.blade.php index 157d22f5..b55b3fad 100644 --- a/resources/views/web/release-detail.blade.php +++ b/resources/views/web/release-detail.blade.php @@ -509,32 +509,59 @@

@endif - {{-- Inhalt melden (T13): sichtbar an jeder Mitteilung, nicht nur in der Sidebar --}} -
- {{ __('web.detail.legal_question') }} - - - {{ __('web.detail.report_content') }} - - - - {{ __('web.detail.remove_data') }} - - {{ __('web.detail.reports_free') }} -
- - {{-- Magic-Link-Hinweis: hinterlegte Firmen-/Pressekontakte verwalten - ihre Mitteilung über den passwortlosen Anmeldelink im pressekonto. --}} + {{-- Zwei Handlungsfelder, klar getrennt und mit Button-Charakter: + rechtliches Anliegen (T13) und Verwaltung über die hinterlegte + Adresse (Roadmap 1b.2/1b.4). Vorher eine Textzeile in 11,5 px, + die überlesen wurde. Die Empfängeradresse steht maskiert dabei, + damit klar ist, wohin der Link geht — ohne sie preiszugeben. --}} @php $portalUrl = rtrim(config('domains.domain_portal_url', config('app.url')), '/'); + $claimRecipients = ($company && ! $company->isGone() && $company->slug) + ? app(\App\Services\Company\NewsroomClaimService::class)->maskedRecipients($company) + : collect(); @endphp -
- {{ __('web.detail.manage_question') }} - - - {{ __('web.detail.manage_link') }} - - {{ __('web.detail.manage_hint') }} +
+
+
{{ __('web.detail.legal_eyebrow') }}
+

{{ __('web.detail.legal_question') }} {{ __('web.detail.reports_free') }}

+ +
+ +
+
{{ __('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 +
@@ -646,6 +673,23 @@ + + {{-- Verwaltungszugang in der Seitenleiste (Roadmap 1b.4): derselbe + Hinweis wie in der Veröffentlichungsmail — wer nur die Leiste + liest, soll ihn nicht verpassen. --}} +
+
{{ __('web.detail.manage_eyebrow') }}
+

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

+ @if ($claimRecipients->isNotEmpty()) + + {{ __('web.detail.manage_cta') }} → + + @else + + {{ __('web.detail.manage_link_short') }} → + + @endif +
diff --git a/tests/Feature/Web/ReleaseDetailTest.php b/tests/Feature/Web/ReleaseDetailTest.php index 20544097..8e95689b 100644 --- a/tests/Feature/Web/ReleaseDetailTest.php +++ b/tests/Feature/Web/ReleaseDetailTest.php @@ -11,6 +11,7 @@ use App\Models\Company; use App\Models\Contact; use App\Models\PressRelease; use App\Models\User; +use App\Services\Company\NewsroomClaimService; use Tests\TestCase; /** @@ -77,7 +78,13 @@ test('businessportal24 release detail renders the editorial shell with real data ->assertSeeText('Wasserstoff') // Magic-Link-Hinweis: hinterlegte Kontakte verwalten die PM im pressekonto. ->assertSeeText('Sie sind als Firma oder Pressekontakt dieser Mitteilung hinterlegt?') - ->assertSee(rtrim(config('domains.domain_portal_url'), '/').'/anmeldelink', false); + ->assertSee(rtrim(config('domains.domain_portal_url'), '/').'/anmeldelink', false) + // Verwaltungsblock (1b.4): maskierte Empfängeradresse, Button zur + // Claim-Seite — im Text UND in der Seitenleiste, nie die volle Adresse. + ->assertSeeText('Anmeldelink anfordern') + ->assertSee('/de/newsroom/'.$company->slug.'/verwalten', false) + ->assertSeeText(NewsroomClaimService::mask((string) $company->email)) + ->assertDontSeeText((string) $company->email); }); test('release detail falls back to the company contact when the release has none', function () {