{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import field, empty_state, alert, pill, modal %} {% block page_title %}Dateifreigaben{% endblock %} {% block page_sub %}{{ mounts | length }} eingebundene Freigabe(n){% endblock %} {% block topbar_extra %} {% if current_user.has('fileshare.edit') %} {{ icon('settings', size=15) }} Zuordnungen {% endif %} {% endblock %} {% block content %} {% if not mounts %} {{ empty_state('Keine Freigaben eingebunden', 'Einbindungen entstehen nach einer Anmeldung gegen den Verzeichnisdienst und richten sich nach Ihrer Gruppenmitgliedschaft.', 'folder') }} {% else %} {% if error %}{{ alert(error, 'danger') }}{% endif %}
{% for mount in mounts %} {{ mount.label }} {% endfor %}
{% if listing %} {% set current = (mounts | selectattr('token', 'equalto', token) | list | first) %}
{{ current.unc }}
Einbindung endet {{ current.expires_at | dt }} {% if current_user.has('fileshare.create') %} {% endif %}
{% if current_user.has('fileshare.delete') %}{% endif %} {% if listing.breadcrumb %} {% if current_user.has('fileshare.delete') %}{% endif %} {% endif %} {% for entry in listing.directories %} {% if current_user.has('fileshare.delete') %} {% endif %} {# Symbol und Name in einer Zeile: der Zeilenumbruch dazwischen liess den Ordner aussehen wie zwei halbe Zeilen. #} {# An der Stelle der Dateigrösse: wie viel liegt darin. #} {% endfor %} {% for entry in listing.files %} {% if current_user.has('fileshare.delete') %} {% endif %} {# Der Name ist die grösste Fläche der Zeile -- er soll auch das Naheliegende tun. Was sich anzeigen lässt, öffnet die Vorschau; alles andere lädt herunter. #} {% endfor %}
Name Grösse Geändert Aktion
{{ icon('chevron-right', size=14) }} eine Ebene höher
{{ icon('folder', size=15) }} {{ entry.name }} {%- if entry.entries is not defined or entry.entries < 0 -%} – {%- elif entry.entries >= 500 -%} 500+ Einträge {%- elif entry.entries == 1 -%} 1 Eintrag {%- else -%} {{ entry.entries }} Einträge {%- endif -%} {{ entry.modified | dt }}
{% if entry.previewable %} {% else %} {% if current_user.has('fileshare.export') %} {{ icon('file-text', size=15) }} {{ entry.name }} {% else %} {# Ohne Exportrecht bleibt der Name Text: es gibt hier nichts zu holen, und ein toter Link waere Spott. #} {{ icon('file-text', size=15) }} {{ entry.name }} {% endif %} {% endif %} {{ entry.size | bytes }} {{ entry.modified | dt }} {% if entry.previewable %} {% endif %} {% if current_user.has('fileshare.edit') %} {% endif %} {% if current_user.has('fileshare.export') %} {{ icon('download', size=15) }} {% endif %}
{% if not listing.directories and not listing.files %} {{ empty_state('Leeres Verzeichnis', '', 'folder') }} {% endif %} {% if current_user.has('fileshare.delete') %} {% endif %}
{% if current_user.has('fileshare.create') %}
{{ icon('upload', size=17) }} Dateien hochladen
nach {{ listing.relative or 'Wurzelverzeichnis' }} · max. {{ max_upload_mb }} MB je Datei
{% endif %} {% endif %} {% endif %} {% endblock %} {% block dialogs %} {% if listing and current_user.has('fileshare.create') %} {% call modal('folder-new', 'Ordner anlegen', listing.relative or 'Wurzelverzeichnis', 'narrow') %}
{% endcall %} {% endif %} {% if listing %} {# Vorschau im Rahmen statt in einem neuen Tab: der Zusammenhang bleibt erhalten, und man ist mit Escape wieder in der Dateiliste. Titel, Quelle und Download-Ziel werden beim Öffnen aus dem Auslöser gefüllt -- ein Dialog für alle Dateien statt einer je Zeile. #} {% call modal('file-preview', 'Vorschau', '', 'wide') %} {# Drei Anzeigen, eine je Art. Ein Rahmen für alles zeigte ein Foto vom iPad in Originalgrösse (also einen Ausschnitt) und ein PDF auf iPadOS nur als Standbild -- Formularfelder liessen sich nicht anfassen. #} {% endcall %} {% endif %} {% if listing and current_user.has('fileshare.edit') %} {% call modal('file-rename', 'Umbenennen', '', 'narrow') %}
{% endcall %} {% endif %} {% endblock %}