munin/templates/entries.html

123 lines
5.8 KiB
HTML

{{template "kopf" .}}
<div class="seitenkopf">
<div class="seitenkopf-titel">
<h1>Einträge {{template "hilfelink" "weboberflaeche#finden"}}</h1>
<span class="hilfe">
{{if .Project.Description}}{{.Project.Description}}{{else}}Wissen dieses Projekts — von Menschen und Agenten.{{end}}
</span>
</div>
{{if or .Session.CanWrite .Session.CanDownloadProject}}
<div class="seitenkopf-aktionen reihe">
{{/* Derselbe Platz wie "Alle als ZIP herunterladen" unter Projekte.
download: Der Browser speichert das ZIP, statt die Seite zu wechseln.
Wer das darf, steht in Session.CanDownloadProject. */}}
{{if .Session.CanDownloadProject}}
<a class="knopf zweitrangig" href="/p/{{.Project.Slug}}/export.zip" download>Als ZIP herunterladen</a>
{{end}}
{{if .Session.CanWrite}}
<a class="knopf" href="/p/{{.Project.Slug}}/new"
data-kuerzel="n" aria-keyshortcuts="n" title="Neuer Eintrag (Taste n)">Neuer Eintrag</a>
{{end}}
</div>
{{end}}
</div>
<form method="GET" action="/p/{{.Project.Slug}}/" class="werkzeugleiste" role="search">
<input type="search" name="q" value="{{.Data.Query}}" placeholder="Im Projekt suchen… ( / )" autocomplete="off"
aria-keyshortcuts="/">
<button type="submit" class="zweitrangig">Suchen</button>
{{/* Filter "veraltet": nur sichtbar, wenn es welche gibt — ein Link auf
eine leere Liste wäre nur Rauschen. */}}
{{if and .Data.VeraltetAnzahl (not .Data.Veraltet)}}
<a class="filter-link" href="/p/{{.Project.Slug}}/?veraltet=1"
title="Seit über einem Jahr unverändert. Prüfen, ob das noch stimmt.">{{.Data.VeraltetAnzahl}} veraltet</a>
{{end}}
</form>
{{if .Data.Query}}
<p class="hilfe">{{len .Data.Entries}} Treffer für „{{.Data.Query}}“ ·
<a href="/p/{{.Project.Slug}}/">Suche zurücksetzen</a></p>
{{else if .Data.Tag}}
<p class="hilfe">{{len .Data.Entries}} Einträge mit „{{.Data.Tag}}“ ·
<a href="/p/{{.Project.Slug}}/">Filter aufheben</a></p>
{{else if .Data.Veraltet}}
<p class="hilfe">{{len .Data.Entries}} Einträge seit über einem Jahr unverändert, älteste zuletzt.
Jeweils prüfen: stimmt das noch? Dann einmal speichern (oder kuratieren), sonst
korrigieren oder löschen. ·
<a href="/p/{{.Project.Slug}}/">Filter aufheben</a></p>
{{end}}
{{if .Data.Entries}}
{{$sammelbearbeitung := .Session.CanWrite}}
{{if $sammelbearbeitung}}
<form method="POST" action="/p/{{.Project.Slug}}/entries/bulk-tags" id="sammelform">
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
{{if .Data.Tag}}<input type="hidden" name="tag" value="{{.Data.Tag}}">{{end}}
{{if .Data.Query}}<input type="hidden" name="q" value="{{.Data.Query}}">{{end}}
{{end}}
<ul class="eintraege">
{{$slug := .Project.Slug}}
{{range .Data.Entries}}
<li>
{{if $sammelbearbeitung}}
<label class="eintrag-auswahl">
<input type="checkbox" name="ids" value="{{.Entry.ID}}" aria-label="{{.Entry.Title}} auswählen">
</label>
{{end}}
<div class="eintrag-inhalt">
<a class="eintrag-titel" href="/p/{{$slug}}/e/{{.Entry.Slug}}">{{.Entry.Title}}</a>
<div class="meta">
{{if .Entry.Curated}}<span class="marke betont">kuratiert</span>{{end}}
{{if .Stale}}<span class="marke warnung" title="Seit über einem Jahr unverändert. Vor Verwendung prüfen, ob das noch stimmt.">veraltet</span>{{end}}
<span class="marke">{{if eq .Entry.Source "agent"}}Agent{{else}}Mensch{{end}}</span>
{{range .Entry.Tags}}<a class="marke" href="/p/{{$slug}}/?tag={{.}}">{{.}}</a>{{end}}
<span>{{datum .Entry.UpdatedAt}}</span>
{{if .Entry.Author}}<span>· {{.Entry.Author}}</span>{{end}}
</div>
{{if .Snippet}}<p class="eintrag-ausschnitt">{{.Snippet}}</p>{{end}}
</div>
</li>
{{end}}
</ul>
{{if $sammelbearbeitung}}
<div class="sammelleiste">
<span class="hilfe">Ausgewählte Einträge:</span>
<input type="text" name="add_tags" placeholder="Schlagworte hinzufügen, kommagetrennt" autocomplete="off">
<input type="text" name="remove_tags" placeholder="Schlagworte entfernen, kommagetrennt" autocomplete="off">
<button type="submit" class="zweitrangig">Anwenden</button>
{{/* formaction schickt dasselbe Formular an eine andere Adresse. Der
Knopf steht bewusst hinter "Anwenden": Enter in einem Textfeld
löst immer den ersten Knopf aus, und das soll nie das Löschen
sein. Die Rückfrage liest static/confirm.js am Knopf. */}}
<button type="submit" class="warnung" formaction="/p/{{.Project.Slug}}/entries/bulk-delete"
data-confirm="Die ausgewählten Einträge in den Papierkorb legen? Sie lassen sich dort {{.Data.RetentionDays}} Tage lang wiederherstellen.">In den Papierkorb</button>
</div>
</form>
{{end}}
{{else}}
<div class="leer">
{{if .Data.Query}}
<p>Nichts gefunden für „{{.Data.Query}}“.</p>
<p class="hilfe">Es wird auch nach Wortanfängen gesucht — vielleicht hilft ein anderer Begriff.</p>
{{else if .Data.Tag}}
<p>Keine Einträge mit dem Schlagwort „{{.Data.Tag}}“.</p>
<p><a href="/p/{{.Project.Slug}}/">Alle Einträge anzeigen</a></p>
{{else if .Data.Veraltet}}
<p>Keine veralteten Einträge.</p>
<p><a href="/p/{{.Project.Slug}}/">Alle Einträge anzeigen</a></p>
{{else}}
<p>Noch keine Einträge.</p>
<p class="hilfe">Agenten legen sie über MCP an, Menschen über „Neuer Eintrag“.</p>
<p><a href="/hilfe/mcp-einrichten">Einen Agenten anbinden</a> ·
<a href="/hilfe/mit-agenten-arbeiten">So nutzen Agenten das Gedächtnis wirklich</a></p>
{{end}}
</div>
{{end}}
{{template "fuss" .}}