R2.5: legal-request-Hinweistexte final (Wortlaut aus Meldeverfahren v0.1)

- Meldung/DSGVO/Persoenlichkeitsrecht auf die am 06.07. freigegebenen
  /melden-Texte gezogen: kostenlose manuelle Pruefung, unverzuegliche
  Eingangsbestaetigung mit Vorgangsnummer (sofern E-Mail), Entscheidung
  mit Begruendung; DSGVO ohne pauschale 30-Tage-Zusage, stattdessen
  Bestaetigungslink/Nachweis wie im Meldeverfahren
- ENTWURF-TODO entfernt, Querverweis auf /melden ergaenzt
- Render-Test erweitert (Vorgangsnummer, kostenlos, melden-Link)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-10 10:11:28 +00:00
parent 34f0e0f134
commit 0603fe5368
3 changed files with 45 additions and 29 deletions

View file

@ -45,7 +45,7 @@ R2.2+R2.3 erledigt: Hub-Landing komplett ueberarbeitet (datengetriebenes Tarif-G
2. **R4.3 Dedup** (optional, „nur wenn Zeit") — Release-Card vereinheitlichen, Industrie-Icon-Map → Config, Inline-SVGs → Icon-Set. Kein Blocker.
3. **R6.5 optional:** die drei `user_filter_presets`-Migrations zusammenfuehren (Hygiene vor Go-Live).
**Wartet auf Dich / extern (nicht durch mich abschliessbar):** R6.5 Branch push + merge + Release-Tag (Dein Go) · R1.2 Stripe-Live · R1.4 Preisfreigabe · R1.5 Refund-Entscheidung · R2.5 legal-request-Texte · R5.4 Favicons · R6.3 Staging-Rehearsal · R6.4 Go-Live-Kette · Postfach `info@pressekonto.com` · anwaltliche Freigabe.
**Wartet auf Dich / extern (nicht durch mich abschliessbar):** R6.5 Branch merge + Release-Tag (Dein Go; Push ist erfolgt) · R1.2 Stripe-Live · R1.4 Preisfreigabe · R1.5 Refund-Entscheidung · (~~R2.5 legal-request-Texte~~ erledigt 10.07., Wortlaut aus freigegebenem Meldeverfahren) · R5.4 Favicons · R6.3 Staging-Rehearsal · R6.4 Go-Live-Kette · Postfach `info@pressekonto.com` · anwaltliche Freigabe.
**Bewusst nachgelagert (nicht Teil dieses Release):** Sentry/APM · User-Panel-Vollflow · Newsletter-DOI · EN-Rechtstexte · T11-DSA-Queue-Ausbau.
@ -106,7 +106,7 @@ R2.2+R2.3 erledigt: Hub-Landing komplett ueberarbeitet (datengetriebenes Tarif-G
- [x] **R2.2 Hub-Pricing datengetrieben** — `pressekonto.blade.php:401/469/538`: 3 hartcodierte Pricing-`<article>`s (0 €/49 €/149 €) → `<x-web.pricing-teaser>` (iteriert `Plan::active()`, wird von beiden Spokes schon genutzt). Beseitigt Drift-Risiko zum Plan-Katalog. *(= alt Phase 6.1)*
- [x] **R2.3 Tote `href="#"`-Links in Live-Seiten fixen** — pressekonto (16×, u. a. Kundenlogos + Support-/Datenschutz-Links), release-detail (3×, Share-Aktionen), `hub/top-utility-bar` (3×), `events-week`/`highlight-card`. Echte Ziele setzen oder Elemente entfernen.
- [x] **R2.4 SEO-Basics** — Erledigt 03.07.: Host-aware `sitemap.xml` (Hub: Landing + Rechts-/Info-Seiten; Spokes: zusätzlich Kategorien, öffentliche Newsrooms, alle im Archiv sichtbaren PMs des Portals; 1h-Cache pro Host). `robots.txt` jetzt dynamische Route mit Sitemap-Verweis + Disallow (/admin, /login, /register, Suche) — die statische `public/robots.txt` wurde entfernt (**Deploy-Hinweis:** nicht wieder anlegen, sie würde die Route verschatten). karriere/partner/presse/team: Brand pro Request via `WebPortalContext` (statt hartcodiert „Business Portal 24") + Meta-Descriptions; bp24-Home auf config-getriebenes meta_title/meta_description-Muster vereinheitlicht. Sitemap listet bewusst nur die de-Edition (en-Entscheidung offen, s. Rechtstexte-Doku O3) und lässt Suche + Marketing-Platzhalterseiten (R3.2) draußen. Tests: `SitemapRobotsTest`.
- [ ] **R2.5 legal-request-Hinweistexte finalisieren** — `legal-request.blade.php:8/65`: Texte je Anfragetyp als „ENTWURF" markiert. **[EXTERN: finale Texte]**
- [x] **R2.5 legal-request-Hinweistexte finalisieren** — Erledigt 10.07.: Die drei Hinweistexte (Meldung/DSGVO/Persönlichkeitsrecht) aus dem am 06.07. inhaltlich freigegebenen Meldeverfahren v0.1 (`static.report.*`) abgeleitet und auf den echten Flow gebracht (Vorgangsnummer M-{id}, unverzügliche Eingangsbestätigung nach DSA Art. 16 Abs. 4 sofern E-Mail angegeben, kostenlose manuelle Prüfung, DSGVO ohne pauschale 30-Tage-Zusage, Querverweis auf /melden). ENTWURF-Marker entfernt; Render-Test erweitert (`LegalRequestTest`). Die ausstehende anwaltliche Freigabe des Rechtstexte-Pakets [EXTERN] deckt diese Texte mit ab.
---

View file

@ -5,18 +5,13 @@
@section('content')
{{--
TODO (Inhalt/Recht): Die untenstehenden Hinweistexte je Anfragetyp sind ein
erster ENTWURF und müssen noch fachlich/rechtlich finalisiert werden. Hier
gehört für jeden Typ konkret hinein, WIE der jeweilige Vorgang funktioniert:
- DSGVO (E): Rechtsgrundlage (Art. 17 DSGVO), welche Daten betroffen sein
können, ob/wie ein Identitätsnachweis nötig ist, Bearbeitungs-
frist (i.d.R. 30 Tage), was nach Einreichung passiert.
- Persönlichkeitsrecht (F): welche Inhalte beanstandet werden können
(unwahre Tatsachen, Bildrechte …), Nachweise, Ablauf der Prüfung,
mögliche Folgen (Anpassung/Entfernung).
- Meldung: welche Gründe sinnvoll sind (Spam, irreführend, rechtswidrig),
dass jede Meldung manuell geprüft wird, E-Mail optional.
Diese Regeln mit Recht/Legal abstimmen, bevor sie live gehen.
Hinweistexte je Anfragetyp (R2.5, final 10.07.2026): Wortlaut folgt dem am
06.07. inhaltlich freigegebenen Meldeverfahren v0.1 (/melden bzw.
lang/de/static.php static.report.*) und dem tatsächlichen Flow
(Vorgangsnummer M-{id}, unverzügliche Eingangsbestätigung nach DSA Art. 16
Abs. 4 sofern E-Mail angegeben, kostenlose manuelle Prüfung). Die noch
ausstehende anwaltliche Freigabe des Rechtstexte-Pakets [EXTERN] umfasst
auch diese Texte.
--}}
<section
x-data="{ type: @js(old('type', $type->value)), emailRequired() { return ['dsgvo', 'personal_rights'].includes(this.type); } }"
@ -62,31 +57,45 @@
@enderror
</div>
{{-- Hinweistext je Anfragetyp (ENTWURF – siehe TODO oben). --}}
{{-- Hinweistext je Anfragetyp (Wortlaut: siehe Kommentar am Seitenanfang). --}}
<div x-cloak x-show="type === 'report'"
class="px-4 py-3 border border-bg-rule bg-bg-elev text-[12.5px] text-ink-2 leading-relaxed">
<strong class="text-ink">Meldung:</strong>
Melden Sie diese Pressemitteilung, wenn Sie sie für Spam, irreführend oder
rechtswidrig halten. Bitte beschreiben Sie den Grund konkret. Jede Meldung
wird manuell geprüft. Eine E-Mail-Adresse ist optional, hilft aber bei
Rückfragen.
Melden Sie diese Pressemitteilung, wenn Sie sie für rechtswidrig halten
oder sie Ihre Rechte verletzt — z.&nbsp;B. unwahre Tatsachenbehauptungen,
Urheberrechts- oder Markenverletzungen, irreführende Inhalte oder Spam.
Bitte benennen Sie konkret, welche Inhalte betroffen sind und warum.
Jede Meldung wird von unserem Team manuell geprüft; die Meldung ist
kostenlos. Wenn Sie eine E-Mail-Adresse angeben, erhalten Sie unverzüglich
eine Eingangsbestätigung mit Vorgangsnummer und anschließend unsere
Entscheidung mit Begründung.
</div>
<div x-cloak x-show="type === 'dsgvo'"
class="px-4 py-3 border border-bg-rule bg-bg-elev text-[12.5px] text-ink-2 leading-relaxed">
<strong class="text-ink">Datenschutz / DSGVO:</strong>
Sie können die Löschung oder Anonymisierung Ihrer personenbezogenen Daten
verlangen (Art. 17 DSGVO). Bitte geben Sie an, welche Angaben Sie betreffen.
Zur Rückmeldung und ggf. Identitätsprüfung benötigen wir Ihre E-Mail-Adresse.
Die Bearbeitung erfolgt in der Regel innerhalb von 30 Tagen.
Als natürliche Person können Sie die Entfernung, Ersetzung oder
Anonymisierung Ihrer persönlichen Daten in dieser Pressemitteilung
verlangen (Art. 17 DSGVO) — zum Beispiel Name, Telefonnummer oder
E-Mail-Adresse. Bitte geben Sie an, welche Angaben Sie betreffen. Die
Prüfung und Bearbeitung ist für Sie kostenlos. Zur Prüfung Ihrer
Berechtigung benötigen wir Ihre E-Mail-Adresse; in der Regel senden wir
einen Bestätigungslink an die betroffene Adresse, andernfalls können wir
einen geeigneten Identitäts- oder Berechtigungsnachweis verlangen. Sie
erhalten unverzüglich eine Eingangsbestätigung mit Vorgangsnummer. Die
Pressemitteilung selbst bleibt nach der Entfernung Ihrer Daten
grundsätzlich bestehen.
</div>
<div x-cloak x-show="type === 'personal_rights'"
class="px-4 py-3 border border-bg-rule bg-bg-elev text-[12.5px] text-ink-2 leading-relaxed">
<strong class="text-ink">Persönlichkeitsrecht:</strong>
Wenn diese Mitteilung Ihre Persönlichkeitsrechte verletzt (z.&nbsp;B. unwahre
Tatsachenbehauptungen, Bildrechte), schildern Sie bitte konkret, welche
Inhalte betroffen sind. Für Rückfragen benötigen wir Ihre E-Mail-Adresse.
Bei berechtigten Ansprüchen wird der Inhalt geprüft und ggf. angepasst oder
entfernt.
Wenn diese Mitteilung Ihre Persönlichkeitsrechte verletzt — z.&nbsp;B.
durch unwahre Tatsachenbehauptungen oder die Verletzung von Bild- oder
Namensrechten —, schildern Sie bitte konkret, welche Inhalte betroffen
sind und warum. Für die Eingangsbestätigung mit Vorgangsnummer und
Rückfragen benötigen wir Ihre E-Mail-Adresse. Wir prüfen Ihre Anfrage
sorgfältig und zeitnah und teilen Ihnen unsere Entscheidung mit
Begründung mit; bei berechtigten Beanstandungen wird der Inhalt
angepasst, gesperrt oder entfernt. Die Prüfung ist kostenlos.
</div>
<div>
@ -139,6 +148,8 @@
Hinweis: Diese Angaben werden ausschließlich zur Bearbeitung Ihrer Anfrage
verarbeitet. Weitere Informationen in der
<a href="{{ route('datenschutz') }}" class="underline hover:text-ink">Datenschutzerklärung</a>.
Einzelheiten zum Ablauf aller Meldewege finden Sie im
<a href="{{ route('melden') }}" class="underline hover:text-ink">Meldeverfahren</a>.
</p>
</section>
@endsection

View file

@ -36,9 +36,14 @@ test('the legal request form renders with per-type hints and hidden honeypots',
$this->get(route('legal-request.create', ['slug' => $release->slug, 'type' => 'report']))
->assertOk()
->assertSee($release->title)
// Hinweistexte je Typ sind serverseitig vorhanden (Umschaltung via Alpine).
// Hinweistexte je Typ sind serverseitig vorhanden (Umschaltung via Alpine);
// finaler Wortlaut folgt dem Meldeverfahren v0.1 (R2.5, 10.07.2026).
->assertSee('Art. 17 DSGVO')
->assertSee('Persönlichkeitsrecht')
->assertSee('Eingangsbestätigung mit Vorgangsnummer')
->assertSee('kostenlos')
// Querverweis auf die Meldeverfahren-Übersicht.
->assertSee(route('melden'))
// Versteckte Honeypot-Felder im DOM.
->assertSee('name="website"', false)
->assertSee('name="homepage"', false);