139 lines
6.1 KiB
HTML
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" .}}
|