T12: Depublikations-Checkout mit Tombstone (config-gated)

Kunden koennen eigene veroeffentlichte PMs kostenpflichtig aus der
oeffentlichen Ansicht nehmen: Panel auf der PM-Detailseite (inkl.
T1neu-Unternehmer-Checkbox und Doppelausweis netto/brutto), Stripe-
Ad-hoc-Checkout wie Credit-Topups, Erfuellung im Webhook — die PM
wechselt auf archived + depublished_at, die oeffentliche URL zeigt
dauerhaft einen Tombstone (410 Gone, ohne Inhalte, mit ehrlichem
Drittarchive-Hinweis). Doppelbuchungs-Bremse pro PM; Status-Log mit
Quelle "depublication". Gate: ohne BILLING_DEPUBLICATION_PRICE_CENTS
bleibt der Weg deaktiviert und /melden zeigt die neutrale
Preisformulierung [EXTERN: Preis festlegen, O6].

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-06 09:46:25 +00:00
parent 2a9be7a9af
commit 198be381d6
16 changed files with 522 additions and 7 deletions

View file

@ -155,11 +155,27 @@
<li>Eine vollständige Löschung der URL erfolgt nicht.</li>
<li>Nicht enthalten ist die Entfernung aus Suchmaschinen-Caches, Archiven Dritter oder Weiterveröffentlichungen auf anderen Portalen, auf die wir keinen Zugriff haben.</li>
</ul>
<p>
Der Preis wird Ihnen vor Beauftragung angezeigt.
<strong>Beauftragung:</strong> über Ihr Kundenkonto oder per E-Mail an
<a href="mailto:{{ $reportEmail }}">{{ $reportEmail }}</a>.
</p>
@php
// T12: Preis erscheint erst, wenn er konfiguriert ist (O6) —
// Doppelausweis netto/brutto, da auch Laien mitlesen (O-B).
$depublicationPriceCents = (int) config('billing.depublication_price_cents');
@endphp
@if ($depublicationPriceCents > 0)
<p>
Der Preis beträgt
<strong>{{ number_format($depublicationPriceCents / 100, 2, ',', '.') }} € zzgl. USt.</strong>
({{ number_format($depublicationPriceCents * (1 + (float) config('billing.vat_rate')) / 100, 2, ',', '.') }} € inkl. 19&nbsp;% USt.).
<strong>Beauftragung:</strong> über Ihr Kundenkonto (Detailseite der
Pressemitteilung) oder per E-Mail an
<a href="mailto:{{ $reportEmail }}">{{ $reportEmail }}</a>.
</p>
@else
<p>
Der Preis wird Ihnen vor Beauftragung angezeigt.
<strong>Beauftragung:</strong> über Ihr Kundenkonto oder per E-Mail an
<a href="mailto:{{ $reportEmail }}">{{ $reportEmail }}</a>.
</p>
@endif
<p>
Wichtig: Dieser Service ist keine Voraussetzung für Ihre gesetzlichen Rechte. Die Meldung
rechtswidriger Inhalte und die Ausübung gesetzlicher Rechte sind und bleiben kostenlos —

View file

@ -0,0 +1,33 @@
@extends('web.layouts.web-master')
@section('title', 'Pressemitteilung entfernt')
@section('meta_description', 'Diese Pressemitteilung wurde aus der öffentlichen Ansicht entfernt.')
{{--
T12-Tombstone (410 Gone): Die PM wurde auf Wunsch des Absenders
kostenpflichtig depubliziert. Bewusst ohne Titel/Inhalte — der Zweck
der Depublikation ist die Entfernung; ehrlicher Hinweis auf Grenzen
(Suchmaschinen-Caches, Drittarchive) statt stillem 404.
--}}
@section('content')
<x-web.static-page
eyebrow="Hinweis"
title="Diese Pressemitteilung wurde entfernt"
breadcrumb="Entfernt"
>
<div class="pm-body max-w-[680px]">
<p>
Die Pressemitteilung unter dieser Adresse wurde auf Wunsch des Absenders dauerhaft
aus der öffentlichen Ansicht entfernt.
</p>
<p>
Bitte beachten Sie: Kopien in Suchmaschinen-Caches oder Archiven Dritter können
unabhängig davon zeitweise weiter verfügbar sein — darauf haben wir keinen Einfluss.
</p>
<p>
Wenn Sie ein rechtliches Anliegen zu Inhalten auf diesem Portal haben, nutzen Sie
bitte unser <a href="{{ route('melden') }}">Meldeverfahren</a> — Meldungen sind kostenlos.
</p>
</div>
</x-web.static-page>
@endsection