fix: ZIP-Download, Share-Status live aktualisieren, Ordner-ZIP bei Share-Links

ZIP-Download fix:
- window.location.href statt a.download fuer API-Downloads
  (a.download funktioniert nicht mit authentifizierten API-Routen)

Share-Status live:
- Dateiliste wird nach jeder Share-Aenderung automatisch neu geladen
  (Link erstellen, Link loeschen, Benutzer-Freigabe setzen/entfernen)
- Gruenes Share-Icon aktualisiert sich sofort ohne F5

Ordner-ZIP bei Share-Links:
- "Ganzen Ordner als ZIP herunterladen" Button bei read/write Ordner-Shares
- Backend: GET /share/<token>/download-zip mit Passwort + Ablauf-Check
- Benachrichtigung an Ersteller bei ZIP-Download

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan Hacker
2026-04-11 20:35:30 +02:00
parent 1a831bfb04
commit 4b487974c6
3 changed files with 52 additions and 6 deletions
+13 -1
View File
@@ -36,7 +36,11 @@
<Button label="Herunterladen" icon="pi pi-download" size="large" @click="downloadFile" />
</div>
<!-- Folder: file listing (read + write) -->
<!-- Folder: ZIP download + file listing (read + write) -->
<div v-if="fileInfo.is_folder && fileInfo.download_allowed" class="action-block">
<Button label="Ganzen Ordner als ZIP herunterladen" icon="pi pi-file-zip" outlined @click="downloadFolderZip" />
</div>
<div v-if="fileInfo.is_folder && fileInfo.permission !== 'upload_only'" class="folder-content">
<div class="folder-breadcrumb">
<a class="crumb" @click="navigateToRoot">{{ fileInfo.name }}</a>
@@ -223,6 +227,14 @@ function downloadFile() {
window.location.href = url
}
function downloadFolderZip() {
let url = `/api/share/${token}/download-zip`
if (fileInfo.value?.has_password && password.value) {
url += `?password=${encodeURIComponent(password.value)}`
}
window.location.href = url
}
function downloadFolderFile(file) {
let url = `/api/share/${token}/files/${file.id}/download`
if (fileInfo.value?.has_password && password.value) {