118 lines
4.4 KiB
HTML
118 lines
4.4 KiB
HTML
{{/*
|
||
Gemeinsame Bausteine aller Seiten.
|
||
|
||
Statt eines verschachtelten Layout-Templates gibt es hier Blöcke, die jede
|
||
Seite einbindet. Das ist etwas mehr Tipparbeit je Seite, dafür braucht es
|
||
keine Template-Vererbung — und man sieht jeder Seitendatei an, wie sie
|
||
aufgebaut ist.
|
||
|
||
html-anfang / html-ende Dokumentrahmen (auch von der Anmeldeseite genutzt)
|
||
kopf / fuss Rahmen, Kopfleiste und Seitenleiste
|
||
*/}}
|
||
|
||
{{define "html-anfang"}}<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>{{.Title}} – Munin</title>
|
||
<link rel="stylesheet" href="/static/style.css">
|
||
</head>
|
||
<body>
|
||
{{end}}
|
||
|
||
{{define "html-ende"}}
|
||
<script src="/static/confirm.js"></script>
|
||
</body>
|
||
</html>
|
||
{{end}}
|
||
|
||
{{define "kopf"}}{{template "html-anfang" .}}
|
||
|
||
{{/* Schmale Kopfleiste über die ganze Breite: Marke und Abmelden. Alles
|
||
Weitere steht in der Seitenleiste. */}}
|
||
<header class="kopfleiste">
|
||
<div class="kopfleiste-innen">
|
||
<a class="marke-wort" href="/">Munin</a>
|
||
<form method="POST" action="/logout" class="reihe">
|
||
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
||
<button type="submit" class="wie-link">Abmelden</button>
|
||
</form>
|
||
</div>
|
||
</header>
|
||
|
||
<div class="gerüst">
|
||
{{/* ── Seitenleiste ──────────────────────────────────────────────────────
|
||
Enthält drei Gruppen: die Projekte, die Bereiche des aktuellen Projekts
|
||
und dessen Schlagworte. Die Schlagworte stehen hier statt als Filterzeile
|
||
über der Liste — sie sind Navigation, und die Liste bekommt so mehr Platz. */}}
|
||
<aside class="seitenleiste">
|
||
|
||
{{if .Session.IsPlatformAdmin}}
|
||
<nav class="nav-gruppe">
|
||
<h2 class="nav-titel">Projekte</h2>
|
||
<ul class="nav-liste">
|
||
{{$aktuell := .Project.Slug}}
|
||
{{range .Nav.Projects}}
|
||
<li><a href="/p/{{.Slug}}/" {{if eq $aktuell .Slug}}class="aktiv"{{end}}>{{.Name}}</a></li>
|
||
{{end}}
|
||
</ul>
|
||
<ul class="nav-liste leise">
|
||
<li><a href="/admin/projects" {{if eq .Bereich "projekte"}}class="aktiv"{{end}}>Verwalten…</a></li>
|
||
</ul>
|
||
</nav>
|
||
{{end}}
|
||
|
||
{{/* Die Bereiche des aktuellen Projekts. Die Überschrift ist der
|
||
Projektname — für einen Projekt-Key ist das zugleich die einzige
|
||
Ortsangabe, denn eine Projektliste bekommt er nicht zu sehen. */}}
|
||
{{if .Project.Slug}}
|
||
<nav class="nav-gruppe">
|
||
<h2 class="nav-titel">{{.Project.Name}}</h2>
|
||
<ul class="nav-liste">
|
||
<li><a href="/p/{{.Project.Slug}}/" {{if eq .Bereich "eintraege"}}class="aktiv"{{end}}>Einträge</a></li>
|
||
{{if .Session.CanManageKeys}}
|
||
<li><a href="/p/{{.Project.Slug}}/keys" {{if eq .Bereich "zugaenge"}}class="aktiv"{{end}}>Zugänge</a></li>
|
||
{{end}}
|
||
<li><a href="/p/{{.Project.Slug}}/audit" {{if eq .Bereich "protokoll"}}class="aktiv"{{end}}>Protokoll</a></li>
|
||
</ul>
|
||
</nav>
|
||
|
||
{{if .Nav.Tags}}
|
||
<nav class="nav-gruppe schlagworte">
|
||
<h2 class="nav-titel">Schlagworte</h2>
|
||
<ul class="nav-liste">
|
||
{{$slug := .Project.Slug}}{{$tag := .AktivesTag}}
|
||
{{range .Nav.Tags}}
|
||
<li>
|
||
<a href="/p/{{$slug}}/?tag={{.Tag}}" {{if eq $tag .Tag}}class="aktiv"{{end}}>
|
||
<span class="nav-text">{{.Tag}}</span>
|
||
<span class="nav-zahl">{{.Count}}</span>
|
||
</a>
|
||
</li>
|
||
{{end}}
|
||
</ul>
|
||
</nav>
|
||
{{end}}
|
||
{{end}}
|
||
|
||
{{if .Session.IsPlatformAdmin}}
|
||
<nav class="nav-gruppe">
|
||
<h2 class="nav-titel">Plattform</h2>
|
||
<ul class="nav-liste">
|
||
<li><a href="/admin/audit">Protokoll (alle)</a></li>
|
||
</ul>
|
||
</nav>
|
||
{{end}}
|
||
</aside>
|
||
|
||
<main class="inhalt">
|
||
{{if .Error}}<div class="meldung fehler">{{.Error}}</div>{{end}}
|
||
{{if .Flash}}<div class="meldung hinweis">{{.Flash}}</div>{{end}}
|
||
{{end}}
|
||
|
||
{{define "fuss"}}
|
||
</main>
|
||
</div>
|
||
{{template "html-ende" .}}
|
||
{{end}}
|