munin/templates/workspace-edit.html
2026-10-19 10:13:56 +02:00

139 lines
6.1 KiB
HTML

{{template "header" .}}
<div class="page-header">
<div class="page-header-title">
<h1>{{.Data.Workspace.Name}}</h1>
<span class="help">Angelegt am {{.Data.Workspace.CreatedAt}} · {{.Data.Projects}} Projekt(e)</span>
</div>
<div class="page-header-actions">
<a class="button secondary" href="/admin/workspaces">Zur Übersicht</a>
</div>
</div>
<div class="card">
<form method="POST" action="/admin/workspaces/{{.Data.Workspace.ID}}/edit" class="form">
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
<div class="field medium">
<label for="name">Name</label>
<input type="text" id="name" name="name" value="{{.Data.Workspace.Name}}" required autofocus>
</div>
<div class="form-actions">
<button type="submit">Speichern</button>
<a class="button secondary" href="/admin/workspaces">Abbrechen</a>
</div>
</form>
</div>
{{/* Workspace-Admins (AUSBAUSTUFEN.md 4.8): verwalten in diesem Workspace
Projekte und Zugänge, nur über die Weboberfläche. Anlegen und zurückziehen
kann sie nur der Plattform-Admin — deshalb stehen sie hier und nicht auf
einer Seite, die der Workspace-Admin selbst erreicht. */}}
<section class="section">
<h2>Workspace-Admins {{template "helplink" "plattform-admin#workspace-admins"}}</h2>
<span class="help">Ein Workspace-Admin legt in diesem Workspace Projekte an, bearbeitet und
löscht sie und verwaltet deren Zugänge. Er meldet sich mit seinem Token in der
Weboberfläche an — für MCP taugt das Token nicht. Andere Workspaces, das
Schreibbudget und der Export bleiben beim Plattform-Admin.</span>
{{if .Data.NewToken}}
<div class="card key-display">
<strong>Token für „{{.Data.NewTokenName}}“</strong>
<code class="key-value">{{.Data.NewToken}}</code>
<span class="help">Wird nur jetzt angezeigt — gespeichert ist nur eine Prüfsumme.
Geht das Token verloren, muss ein neues erzeugt werden.</span>
</div>
{{end}}
{{if .Data.Unused}}
<div class="message error">
{{if eq .Data.Unused 1}}Ein aktiver Workspace-Admin wurde{{else}}{{.Data.Unused}} aktive Workspace-Admins wurden{{end}}
seit über 90 Tagen nicht benutzt. Jeder davon ist ein offener Zugang zum ganzen
Workspace. Ist die Person nicht mehr zuständig, am besten zurückziehen.
</div>
{{end}}
{{if .Data.Admins}}
<div class="table-wrap">
<table class="styled-table">
<thead>
<tr>
<th>Name</th>
<th>Angelegt</th>
<th>Zuletzt benutzt</th>
<th>Status</th>
<th class="narrow right"></th>
</tr>
</thead>
<tbody>
{{$csrf := .CSRFToken}}{{$id := .Data.Workspace.ID}}{{$jetzt := .Data.Now}}
{{range .Data.Admins}}
<tr {{if .Revoked}}class="muted"{{end}}>
<td>{{.Name}}</td>
<td>{{datetime .CreatedAt}}</td>
<td>{{if .LastUsedAt.IsZero}}<span class="help">nie</span>{{else}}{{datetime .LastUsedAt}}{{end}}</td>
<td>
{{if .Revoked}}zurückgezogen{{else}}aktiv{{end}}
{{if .Unused $jetzt}}<span class="badge warning" title="Seit über 90 Tagen nicht benutzt">ungenutzt</span>{{end}}
</td>
<td class="narrow right">
{{if not .Revoked}}
<form method="POST" action="/admin/workspaces/{{$id}}/admins/revoke" class="row"
data-confirm="Zugang „{{.Name}}“ zurückziehen? Eine laufende Sitzung endet sofort.">
<input type="hidden" name="csrf_token" value="{{$csrf}}">
<input type="hidden" name="id" value="{{.ID}}">
<button type="submit" class="warning">Zurückziehen</button>
</form>
{{end}}
</td>
</tr>
{{end}}
</tbody>
</table>
</div>
{{end}}
<div class="card">
<form method="POST" action="/admin/workspaces/{{.Data.Workspace.ID}}/admins/create" class="form">
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
<div class="field medium">
<label for="admin-name">Name</label>
<span class="help">Wer den Zugang bekommt — so steht es später im Protokoll.</span>
<input type="text" id="admin-name" name="name" required placeholder="z.B. Erika Muster">
</div>
<div class="form-actions">
<button type="submit">Workspace-Admin anlegen</button>
</div>
</form>
</div>
</section>
<section class="section">
<h2>Gefahrenzone</h2>
<span class="help">Das Löschen entfernt alle {{.Data.Projects}} Projekte dieses Workspace samt
ihrer Einträge, Zugänge und Workspace-Admins unwiederbringlich — die Workspace-Datei wird von der Platte
entfernt. Der Markdown-Export bleibt erhalten, sofern einer eingerichtet ist.</span>
<div class="card danger-zone">
<form method="POST" action="/admin/workspaces/delete" class="form"
data-confirm="Workspace wirklich löschen? Alle Projekte, Einträge und Zugänge gehen unwiederbringlich verloren.">
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
<input type="hidden" name="id" value="{{.Data.Workspace.ID}}">
<div class="field short">
<label for="confirm">Name zur Bestätigung</label>
<span class="help">Zum Löschen <code>{{.Data.Workspace.Name}}</code> eintippen.</span>
<input type="text" id="confirm" name="confirm" autocomplete="off">
</div>
<div class="form-actions">
<button type="submit" class="warning">Workspace löschen</button>
</div>
</form>
</div>
</section>
{{template "footer" .}}