From 134af424ea38c0d67f8e52d3656d58bcd255e1bc Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Thu, 17 Sep 2026 12:23:42 +0000 Subject: [PATCH] web: Unter-Navigation Preise/Transparenz auf allen vier Seiten mit aktivem Punkt "Tarife & Preise" als erster Punkt; x-web.static-page bekommt einen Slot `aboveTitle`, die drei Transparenzseiten tragen dieselbe Leiste mit markierter aktueller Seite. Co-Authored-By: Claude Opus 5 (1M context) --- lang/de/pricing.php | 1 + lang/en/pricing.php | 1 + resources/views/components/web/static-page.blade.php | 4 ++++ .../views/components/web/transparency-nav.blade.php | 9 +++++---- resources/views/web/preise.blade.php | 2 +- ...essemitteilung-loeschen-oder-aendern-lassen.blade.php | 4 ++++ .../pressemitteilung-veroeffentlichen-ohne-abo.blade.php | 4 ++++ .../views/web/was-kostet-eine-pressemitteilung.blade.php | 4 ++++ tests/Feature/Web/TransparencyPagesTest.php | 6 +++++- 9 files changed, 29 insertions(+), 6 deletions(-) diff --git a/lang/de/pricing.php b/lang/de/pricing.php index f18cb4ae..5077911d 100644 --- a/lang/de/pricing.php +++ b/lang/de/pricing.php @@ -105,6 +105,7 @@ return [ 'vat_note' => 'Alle Preise sind Nettopreise und verstehen sich zzgl. der gesetzlichen Umsatzsteuer. Die Abrechnung erfolgt sicher über unseren Zahlungsdienstleister.', 'transparency_nav' => [ + 'pricing' => 'Tarife & Preise', 'label' => 'Transparenz', 'cost' => 'Was kostet eine Pressemitteilung?', 'no_subscription' => 'Ohne Abo veröffentlichen', diff --git a/lang/en/pricing.php b/lang/en/pricing.php index 29e2f73c..38f60626 100644 --- a/lang/en/pricing.php +++ b/lang/en/pricing.php @@ -98,6 +98,7 @@ return [ 'vat_note' => 'All prices are net and exclude statutory VAT. Billing is handled securely via our payment provider.', 'transparency_nav' => [ + 'pricing' => 'Plans & pricing', 'label' => 'Transparency', 'cost' => 'What does a press release cost?', 'no_subscription' => 'Publish without a subscription', diff --git a/resources/views/components/web/static-page.blade.php b/resources/views/components/web/static-page.blade.php index 8df4879a..0576be53 100644 --- a/resources/views/components/web/static-page.blade.php +++ b/resources/views/components/web/static-page.blade.php @@ -48,6 +48,10 @@ {{-- Masthead --}}
+ {{-- Optionale Unter-Navigation über der Headline (z. B. Transparenzseiten). --}} + @isset($aboveTitle) +
{{ $aboveTitle }}
+ @endisset @if ($eyebrow)
{{ $eyebrow }}
@endif diff --git a/resources/views/components/web/transparency-nav.blade.php b/resources/views/components/web/transparency-nav.blade.php index 5dcd24d1..fb5d5ff5 100644 --- a/resources/views/components/web/transparency-nav.blade.php +++ b/resources/views/components/web/transparency-nav.blade.php @@ -3,11 +3,12 @@ ]) @php - // Roadmap 2.4: die drei Transparenzseiten als kleine horizontale - // Navigation — auf der Preisseite über der Headline, damit die Antworten - // auf „Was kostet das?", „Geht das ohne Abo?" und „Wie werde ich es wieder - // los?" neben den Tarifen stehen. + // Roadmap 2.4: Unter-Navigation über der Headline von Preisseite und den + // drei Transparenzseiten — damit die Antworten auf „Was kostet das?", + // „Geht das ohne Abo?" und „Wie werde ich es wieder los?" neben den + // Tarifen stehen. `current` = Routenname der aktuellen Seite. $items = [ + 'preise' => __('pricing.transparency_nav.pricing'), 'was-kostet-eine-pressemitteilung' => __('pricing.transparency_nav.cost'), 'pressemitteilung-veroeffentlichen-ohne-abo' => __('pricing.transparency_nav.no_subscription'), 'pressemitteilung-loeschen-oder-aendern-lassen' => __('pricing.transparency_nav.change_delete'), diff --git a/resources/views/web/preise.blade.php b/resources/views/web/preise.blade.php index 8115254e..8e319660 100644 --- a/resources/views/web/preise.blade.php +++ b/resources/views/web/preise.blade.php @@ -43,7 +43,7 @@ MASTHEAD ============================================================ --}}
- +
{{ __('pricing.eyebrow') }}

{{ __('pricing.headline') }} diff --git a/resources/views/web/pressemitteilung-loeschen-oder-aendern-lassen.blade.php b/resources/views/web/pressemitteilung-loeschen-oder-aendern-lassen.blade.php index d9477415..e9a7993f 100644 --- a/resources/views/web/pressemitteilung-loeschen-oder-aendern-lassen.blade.php +++ b/resources/views/web/pressemitteilung-loeschen-oder-aendern-lassen.blade.php @@ -23,6 +23,10 @@ :lead="__('static.change_delete.lead')" :breadcrumb="__('static.change_delete.breadcrumb')" > + + + +

{{ __('static.change_delete.ways_heading') }}

diff --git a/resources/views/web/pressemitteilung-veroeffentlichen-ohne-abo.blade.php b/resources/views/web/pressemitteilung-veroeffentlichen-ohne-abo.blade.php index a748ea65..3b91aa55 100644 --- a/resources/views/web/pressemitteilung-veroeffentlichen-ohne-abo.blade.php +++ b/resources/views/web/pressemitteilung-veroeffentlichen-ohne-abo.blade.php @@ -23,6 +23,10 @@ :lead="__('static.no_subscription.lead')" :breadcrumb="__('static.no_subscription.breadcrumb')" > + + + +

{{ __('static.no_subscription.how_heading') }}

    diff --git a/resources/views/web/was-kostet-eine-pressemitteilung.blade.php b/resources/views/web/was-kostet-eine-pressemitteilung.blade.php index c2786b69..7c7d3c04 100644 --- a/resources/views/web/was-kostet-eine-pressemitteilung.blade.php +++ b/resources/views/web/was-kostet-eine-pressemitteilung.blade.php @@ -33,6 +33,10 @@ :lead="__('static.cost.lead')" :breadcrumb="__('static.cost.breadcrumb')" > + + + +

    {{ __('static.cost.short_heading') }}

    {!! __('static.cost.short_p1', $params) !!}

    diff --git a/tests/Feature/Web/TransparencyPagesTest.php b/tests/Feature/Web/TransparencyPagesTest.php index c019713b..1d431ecb 100644 --- a/tests/Feature/Web/TransparencyPagesTest.php +++ b/tests/Feature/Web/TransparencyPagesTest.php @@ -67,13 +67,17 @@ test('the change page names the five ways with their prices and points to the se ->assertSee('10 € netto') ->assertSee('35 € netto') ->assertSee('/de/melden/pm', false) - ->assertSee('Die Meldung steht auf einem anderen Portal?'); + ->assertSee('Die Meldung steht auf einem anderen Portal?') + // Unter-Navigation: aktuelle Seite markiert, Preisseite verlinkt. + ->assertSee('aria-current="page">Meldung löschen oder ändern', false) + ->assertSee("/de/preise\" class=", false); }); test('the pages are linked from the pricing page, the help centre and the sitemap', function () { /** @var TestCase $this */ $this->get('https://presseecho.test/de/preise')->assertSuccessful() ->assertSee('aria-label="Transparenz"', false) + ->assertSee('aria-current="page">Tarife & Preise', false) ->assertSee('/de/was-kostet-eine-pressemitteilung', false) ->assertSee('/de/pressemitteilung-veroeffentlichen-ohne-abo', false) ->assertSee('/de/pressemitteilung-loeschen-oder-aendern-lassen', false);