116 lines
5.3 KiB
HTML
116 lines
5.3 KiB
HTML
{{template "header" .}}
|
|
|
|
<div class="page-header">
|
|
<div class="page-header-title">
|
|
<h1>Papierkorb {{template "helplink" "weboberflaeche#papierkorb"}}</h1>
|
|
<span class="help">Gelöschte Einträge liegen hier {{.Data.RetentionDays}} Tage mitsamt ihrem Verlauf
|
|
und werden danach endgültig entfernt. Für Agenten und die Suche sind sie
|
|
schon jetzt unsichtbar.</span>
|
|
</div>
|
|
</div>
|
|
|
|
{{$slug := .Project.Slug}}
|
|
{{$von := .Data.From}}
|
|
{{$csrf := .CSRFToken}}
|
|
|
|
{{if $von}}
|
|
<p class="help">Nur, was „{{$von}}“ gelöscht hat ·
|
|
<a href="/p/{{$slug}}/trash">Filter aufheben</a></p>
|
|
{{end}}
|
|
|
|
{{if .Data.Entries}}
|
|
<div class="table-wrap">
|
|
<table class="styled-table">
|
|
<thead>
|
|
<tr>
|
|
<th class="narrow"><span class="invisible">Auswahl</span></th>
|
|
<th>Eintrag</th>
|
|
<th>Gelöscht von</th>
|
|
<th>Gelöscht am</th>
|
|
<th class="narrow right">Aktionen</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{range .Data.Entries}}
|
|
<tr>
|
|
{{/* Das Kästchen steht in der Tabelle, gehört aber zum
|
|
Sammelformular unter der Tabelle: Das Attribut form="…"
|
|
verbindet ein Feld mit einem Formular, das woanders auf der
|
|
Seite steht. So kann jede Zeile zusätzlich ihre eigenen
|
|
kleinen Formulare haben — Formulare ineinander zu
|
|
schachteln erlaubt HTML nämlich nicht. */}}
|
|
<td class="narrow">
|
|
<input type="checkbox" name="slugs" value="{{.Slug}}" form="papierkorb-auswahl"
|
|
aria-label="{{.Title}} auswählen">
|
|
</td>
|
|
<td>
|
|
{{.Title}}<br>
|
|
<code class="help">{{.Slug}}</code>
|
|
<span class="help">· Fassung {{.Version}}</span>
|
|
</td>
|
|
<td>
|
|
{{if .DeletedBy}}
|
|
<a href="/p/{{$slug}}/trash?von={{.DeletedBy}}" title="Nur zeigen, was dieser Zugang gelöscht hat">{{.DeletedBy}}</a>
|
|
{{else}}<span class="help">unbekannt</span>{{end}}
|
|
</td>
|
|
<td class="help">{{datetime .DeletedAt}}</td>
|
|
<td class="narrow right">
|
|
<div class="row">
|
|
<form method="POST" action="/p/{{$slug}}/trash/restore" class="row">
|
|
<input type="hidden" name="csrf_token" value="{{$csrf}}">
|
|
<input type="hidden" name="von" value="{{$von}}">
|
|
<input type="hidden" name="slugs" value="{{.Slug}}">
|
|
<button type="submit" class="secondary">Wiederherstellen</button>
|
|
</form>
|
|
<form method="POST" action="/p/{{$slug}}/trash/purge" class="row"
|
|
data-confirm="„{{.Title}}“ endgültig löschen? Das lässt sich nicht rückgängig machen — auch der Verlauf ist dann weg.">
|
|
<input type="hidden" name="csrf_token" value="{{$csrf}}">
|
|
<input type="hidden" name="von" value="{{$von}}">
|
|
<input type="hidden" name="slugs" value="{{.Slug}}">
|
|
<button type="submit" class="warning">Endgültig löschen</button>
|
|
</form>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
{{/* Sammelformular für die angehakten Kästchen. Zwei Knöpfe, zwei Ziele:
|
|
formaction am Knopf überschreibt das action des Formulars. Die Rückfrage
|
|
steht nur am gefährlichen Knopf (static/confirm.js liest sie dort). */}}
|
|
<form method="POST" action="/p/{{$slug}}/trash/restore" id="papierkorb-auswahl" class="bulk-bar">
|
|
<input type="hidden" name="csrf_token" value="{{$csrf}}">
|
|
<input type="hidden" name="von" value="{{$von}}">
|
|
<span class="help">Ausgewählte Einträge:</span>
|
|
<button type="submit" class="secondary">Wiederherstellen</button>
|
|
<button type="submit" class="warning" formaction="/p/{{$slug}}/trash/purge"
|
|
data-confirm="Die ausgewählten Einträge endgültig löschen? Das lässt sich nicht rückgängig machen.">Endgültig löschen</button>
|
|
</form>
|
|
|
|
{{/* Ist nach einem Zugang gefiltert, lässt sich alles, was er gelöscht hat, in
|
|
einem Zug zurückholen — der typische Fall, wenn ein Agent zu gründlich
|
|
aufgeräumt hat. Ohne JavaScript: Das Formular trägt jeden angezeigten
|
|
Bezeichner als verstecktes Feld. */}}
|
|
{{if $von}}
|
|
<form method="POST" action="/p/{{$slug}}/trash/restore" class="row trash-all"
|
|
data-confirm="Alle {{len .Data.Entries}} Einträge wiederherstellen, die „{{$von}}“ gelöscht hat?">
|
|
<input type="hidden" name="csrf_token" value="{{$csrf}}">
|
|
<input type="hidden" name="von" value="{{$von}}">
|
|
{{range .Data.Entries}}<input type="hidden" name="slugs" value="{{.Slug}}">{{end}}
|
|
<button type="submit">Alle {{len .Data.Entries}} von „{{$von}}“ wiederherstellen</button>
|
|
</form>
|
|
{{end}}
|
|
|
|
{{else}}
|
|
<div class="empty">
|
|
{{if $von}}
|
|
<p>„{{$von}}“ hat nichts gelöscht, das noch im Papierkorb liegt.</p>
|
|
{{else}}
|
|
<p>Der Papierkorb ist leer.</p>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{template "footer" .}}
|