53 lines
3.9 KiB
HTML
53 lines
3.9 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}{{ folder.name }} · {{ workspace.name }}{% endblock %}
|
|
{% block content %}
|
|
{% set wbase = '/workspaces/' ~ workspace.id %}
|
|
<div class="stack stack-sm">
|
|
<h1>{{ folder.name }}</h1>
|
|
<p class="text-sm text-muted"><span class="badge {{ 'badge-default' if folder.scope == 'private' else 'badge-info' }}">{{ scopes[folder.scope] }}</span> · {{ summary.files }} Datei{{ 'en' if summary.files != 1 }} · {{ summary.size|filesizeformat }} Text · {% if folder.synced %}abgeglichen {{ folder.synced.astimezone().strftime('%d.%m.%Y %H:%M') }}{% else %}noch nicht abgeglichen{% endif %}</p>
|
|
</div>
|
|
{% include "_flash.html" %}
|
|
{% if not extractor %}<div class="alert alert-warning" role="status"><div class="alert-content"><p class="text-sm">Für Office, PDF und Bilder ist keine Dokumenten-Auslese eingerichtet; diese Dateien bleiben unlesbar, bis ein Plattform-Admin einen MCP-Server mit der Art „Dokumenten-Auslese“ einrichtet. Textdateien (Markdown, TXT, CSV …) gehen sofort.</p></div></div>{% endif %}
|
|
|
|
{% if owner %}
|
|
<section class="card">
|
|
<div class="card-header"><h2 class="text-lg">Abgleichen</h2></div>
|
|
<div class="card-body stack stack-sm" data-doc-folder="{{ folder.id }}" data-csrf="{{ p.csrf }}" data-suffixes="{{ suffixes }}" data-max-mb="{{ max_mb }}" data-max-files="{{ max_files }}">
|
|
<p class="text-sm">Wähle den Ordner auf deinem Rechner. Hochgeladen wird nur, was neu ist oder sich geändert hat; was im Ordner fehlt, wird hier entfernt. Unterordner zählen mit, versteckte Dateien und Office-Sperrdateien (<code>~$…</code>) nicht.</p>
|
|
<div class="cluster">
|
|
<button class="btn btn-primary btn-sm" type="button" data-doc-sync hidden>Jetzt abgleichen</button>
|
|
<button class="btn btn-secondary btn-sm" type="button" data-doc-pick>Ordner wählen …</button>
|
|
<input type="file" webkitdirectory multiple hidden data-doc-input aria-label="Ordner">
|
|
</div>
|
|
<p class="text-sm" data-doc-status role="status" aria-live="polite"></p>
|
|
<p class="text-xs text-muted">Chrome und Edge merken sich den Ordner: <em>Jetzt abgleichen</em> gleicht ihn direkt ab (beim ersten Mal nach einem Neustart des Browsers fragt er einmal nach der Erlaubnis), und ist der Zugriff noch erlaubt, gleicht die Seite beim Laden selbst ab. Firefox und Safari erlauben das nicht; dort öffnet <em>Jetzt abgleichen</em> den Ordnerdialog, und du wählst denselben Ordner noch einmal. Bis {{ max_mb }} MB je Datei, höchstens {{ max_files }} Dateien. Gespeichert wird nur der ausgelesene Text; er zählt aufs Speicherkontingent des Workspace.</p>
|
|
</div>
|
|
</section>
|
|
{% endif %}
|
|
|
|
<section class="card">
|
|
<div class="card-header"><h2 class="text-lg">Dateien</h2></div>
|
|
<div class="card-body stack stack-sm">
|
|
{% if files %}
|
|
<div class="table-wrap"><table>
|
|
<thead><tr><th>Pfad</th><th>Größe</th><th>Stand</th></tr></thead>
|
|
<tbody>
|
|
{% for f in files %}
|
|
<tr>
|
|
<td class="aiw-break"><code>{{ f.path }}</code></td>
|
|
<td class="text-sm">{{ f.size|filesizeformat }}</td>
|
|
<td class="text-sm">{% if f.status == 'ok' %}<span class="badge badge-success">lesbar</span>{% elif f.status == 'pending' %}<span class="badge badge-default">wird ausgelesen</span>{% else %}<span class="badge badge-warning">nicht lesbar</span> <span class="text-xs text-muted">{{ f.error }}</span>{% endif %}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table></div>
|
|
{% else %}<p class="text-sm text-muted">Noch keine Dateien.</p>{% endif %}
|
|
{% if owner or (folder.scope == 'workspace' and membership.is_admin) %}
|
|
<form method="post" action="/folders/{{ folder.id }}/delete" data-confirm="Ordner {{ folder.name }} mit allen Dateien in Bifröst löschen? Auf deinem Rechner bleibt alles erhalten.">
|
|
<input type="hidden" name="_csrf" value="{{ p.csrf }}">
|
|
<button class="btn btn-ghost btn-sm" type="submit">Ordner in Bifröst löschen</button>
|
|
</form>
|
|
{% endif %}
|
|
</div>
|
|
</section>
|
|
{% endblock %}
|