Bisher gab es nur Prüfen -> Archivieren, keine Möglichkeit, bereits
geprüfte Beiträge wieder anzusehen oder die Verantwortungsmatrix
(Beteiligte: wer hat vorgegeben, wer freigegeben) tatsächlich zu
pflegen — nur der Store-Layer dafür existierte schon.
Neu:
- GET /beitraege: Liste aller Beiträge des angemeldeten Mandanten
(Plattform, Status, höchste Finding-Schwere) via
ListSubmissionsForAccount.
- GET /beitraege/{id}: Detailseite mit Fakten, Findings, Archivieren-
Aktion und Verantwortungsmatrix.
- POST .../beteiligte, .../beteiligte/{pid}/aktualisieren,
.../beteiligte/{pid}/loeschen: echtes CRUD statt nur Ansicht, per
htmx ohne Seiten-Reload.
Mandantentrennung wie beim bestehenden Archiv-Download: fremde
Beiträge und fremde Beteiligte (auch über eine erratene participant_id)
liefern 404, nicht 403 — sonst würde eine 403 die Existenz der Ressource
bei einem anderen Mandanten bestätigen.
Web-Store-Interface um die bereits fertigen Store-Methoden erweitert,
fakeStore in server_test.go entsprechend nachgezogen. Volle Testsuite
inkl. echter Postgres-Tests (./scripts/test.sh) grün.
64 lines
2.0 KiB
HTML
64 lines
2.0 KiB
HTML
{{define "beitrag"}}<!doctype html>
|
|
<html lang="de">
|
|
<head>{{template "head" .}}</head>
|
|
<body>
|
|
{{template "nav" .}}
|
|
<div class="page">
|
|
<p><a href="/beitraege">← Alle Beiträge</a></p>
|
|
<h1>{{.Platform}} · {{.PostType}}</h1>
|
|
<p class="hinweis">Angelegt am {{.CreatedAt}} — Status: <span class="status status-{{.Status}}">{{.Status}}</span></p>
|
|
<p>{{.Caption}}</p>
|
|
|
|
<h2>Findings</h2>
|
|
{{if .Findings}}
|
|
<ul class="findings">
|
|
{{range .Findings}}
|
|
<li class="finding finding-{{.Severity}}">
|
|
<strong>{{.RuleID}} v{{.Version}}</strong> ({{.Severity}}) — {{.Title}}
|
|
<p>Korrektur: {{.Fix}}</p>
|
|
{{if .Sources}}
|
|
<p>Fundstellen: {{range $i, $s := .Sources}}{{if $i}}; {{end}}{{$s}}{{end}}</p>
|
|
{{end}}
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
{{else}}
|
|
<p class="keine-findings">Keine Kennzeichnungsrisiken nach aktuellem Regelwerk gefunden.</p>
|
|
{{end}}
|
|
|
|
{{if .CanArchive}}
|
|
<form hx-post="/veroeffentlichen" hx-target="#archiv-ergebnis" hx-swap="innerHTML">
|
|
<input type="hidden" name="submission_id" value="{{.SubmissionID}}">
|
|
<button type="submit">Als veröffentlicht markieren & archivieren</button>
|
|
</form>
|
|
<div id="archiv-ergebnis"></div>
|
|
{{end}}
|
|
{{if .IsPublished}}
|
|
<p><a href="{{.DossierURL}}">Nachweis-Dossier (PDF) herunterladen</a></p>
|
|
{{end}}
|
|
|
|
<h2>Verantwortungsmatrix</h2>
|
|
{{template "beteiligte-liste" .}}
|
|
|
|
<form hx-post="/beitraege/{{.SubmissionID}}/beteiligte" hx-target="#beteiligte" hx-swap="outerHTML">
|
|
<label for="role">Rolle</label>
|
|
<select id="role" name="role" required>
|
|
<option value="creator">Creator</option>
|
|
<option value="agentur">Agentur</option>
|
|
<option value="marke">Marke</option>
|
|
<option value="kanzlei">Kanzlei</option>
|
|
</select>
|
|
<label for="name">Name</label>
|
|
<input type="text" id="name" name="name" required>
|
|
<button type="submit">Beteiligten hinzufügen</button>
|
|
</form>
|
|
|
|
<p class="disclaimer">
|
|
Diese Prüfung ist keine Rechtsberatung und ersetzt keine anwaltliche
|
|
Prüfung im Einzelfall.
|
|
</p>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
{{end}}
|