T08a: Frontend DMS + Tags + Permissions UI — 33 tests, tsc clean, vite build pass

- DMS file browser: folder tree + file grid + upload dropzone + search + preview modal
- DMS share dialog: user/group share + public share links with password+expiry
- DMS bulk actions: bulk move + bulk delete with confirm dialogs
- DMS trash view: deleted files list with restore button
- Tags: TagPicker on company/contact detail pages (new tabs tab)
- Tags: TagCloud + BulkTagDialog for bulk tag assignment
- Permissions: share link creation, permission display, copy-link button
- API clients: dms.ts, tags.ts, permissions.ts
- Routes: /dms, /dms/trash added to router
- Sidebar: DMS nav link updated
- i18n: de.json + en.json translations for DMS/Tags/Permissions
- 33 new tests (5 test files), full regression 276/276 pass
- tsc --noEmit: 0 errors, vite build: 252 modules
This commit is contained in:
leocrm-bot
2026-07-01 16:54:32 +02:00
parent f646c597dc
commit 0962f3a961
31 changed files with 3368 additions and 41 deletions
+168 -5
View File
@@ -159,7 +159,6 @@
"security": "Sicherheit",
"roles": "Rollen",
"users": "Benutzer",
"system": "System",
"name": "Name",
"firstName": "Vorname",
"lastName": "Nachname",
@@ -273,10 +272,28 @@
"nextMonth": "Nächster Monat",
"monthView": "Monatsansicht",
"kanbanView": "Kanban",
"weekdays": ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],
"weekdays": [
"Mo",
"Di",
"Mi",
"Do",
"Fr",
"Sa",
"So"
],
"months": [
"Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember"
"Januar",
"Februar",
"März",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember"
],
"newAppointment": "Neuer Termin",
"editAppointment": "Termin bearbeiten",
@@ -369,5 +386,151 @@
"follow_up": "Wiedervorlage",
"private": "Privat"
}
},
"dms": {
"title": "Dokumentenverwaltung",
"trash": "Papierkorb",
"folders": "Ordner",
"files": "Dateien",
"allFiles": "Alle Dateien",
"sharedWithMe": "Mit mir geteilt",
"upload": "Hochladen",
"uploadDropHere": "Dateien hierher ziehen oder klicken zum Auswaehlen",
"uploading": "Wird hochgeladen",
"uploadSuccess": "Datei erfolgreich hochgeladen",
"uploadError": "Fehler beim Hochladen",
"newFolder": "Neuer Ordner",
"folderName": "Ordnername",
"createFolder": "Ordner erstellen",
"search": "Dateien durchsuchen",
"searchPlaceholder": "Dateinamen eingeben",
"noFiles": "Keine Dateien vorhanden",
"noFolders": "Keine Ordner vorhanden",
"loading": "Wird geladen",
"error": "Fehler beim Laden",
"fileSize": "Groesse",
"fileType": "Typ",
"fileModified": "Geaendert",
"fileCreatedBy": "Erstellt von",
"preview": "Vorschau",
"download": "Herunterladen",
"rename": "Umbenennen",
"move": "Verschieben",
"delete": "Loeschen",
"restore": "Wiederherstellen",
"share": "Teilen",
"shareWith": "Teilen mit",
"shareLink": "Oeffentlicher Link",
"createShareLink": "Link erstellen",
"copyLink": "Link kopieren",
"linkCopied": "Link in Zwischenablage kopiert",
"password": "Passwort (optional)",
"expiryDate": "Ablaufdatum (optional)",
"permissionLevel": "Berechtigungsstufe",
"userOrGroup": "Benutzer oder Gruppe",
"userId": "Benutzer-ID",
"groupId": "Gruppen-ID",
"addShare": "Freigabe hinzufuegen",
"removeShare": "Freigabe entfernen",
"permissions": "Berechtigungen",
"bulkSelect": "Auswaehlen",
"bulkMove": "Verschieben",
"bulkDelete": "Loeschen",
"bulkMoveTitle": "Dateien verschieben",
"bulkDeleteTitle": "Dateien loeschen",
"selectTargetFolder": "Zielordner waehlen",
"confirmBulkDelete": "Moechten Sie die ausgewaehlten Dateien wirklich loeschen?",
"confirmDelete": "Moechten Sie diese Datei wirklich loeschen?",
"confirmDeleteFolder": "Moechten Sie diesen Ordner wirklich loeschen?",
"deleted": "Datei geloescht",
"restored": "Datei wiederhergestellt",
"shared": "Freigabe erstellt",
"trashEmpty": "Papierkorb ist leer",
"noResults": "Keine Suchergebnisse",
"sharedFiles": "Geteilte Dateien",
"name": "Name",
"actions": "Aktionen",
"selected": "ausgewaehlt",
"cancel": "Abbrechen",
"confirm": "Bestaetigen",
"save": "Speichern",
"editSession": "Bearbeitungssitzung",
"openEditor": "Im Editor oeffnen",
"icon": {
"folder": "Ordner",
"pdf": "PDF",
"image": "Bild",
"document": "Dokument",
"spreadsheet": "Tabelle",
"presentation": "Praesentation",
"archive": "Archiv",
"other": "Datei"
}
},
"tags": {
"title": "Tags",
"assign": "Tag zuweisen",
"unassign": "Tag entfernen",
"create": "Neues Tag",
"tagName": "Tag-Name",
"tagColor": "Farbe",
"tagDescription": "Beschreibung",
"save": "Speichern",
"cancel": "Abbrechen",
"delete": "Loeschen",
"edit": "Bearbeiten",
"search": "Tag suchen",
"noTags": "Keine Tags vorhanden",
"noTagsAssigned": "Keine Tags zugewiesen",
"assignedTags": "Zugewiesene Tags",
"availableTags": "Verfuegbare Tags",
"tagCloud": "Tag-Cloud",
"bulkAssign": "Tags zuweisen",
"bulkAssignTitle": "Tags mehreren Eintraegen zuweisen",
"selectTags": "Tags auswaehlen",
"selectedEntities": "ausgewaehlte Eintraege",
"assignSuccess": "Tags zugewiesen",
"unassignSuccess": "Tag entfernt",
"createSuccess": "Tag erstellt",
"deleteSuccess": "Tag geloescht",
"confirmDelete": "Moechten Sie dieses Tag wirklich loeschen?",
"usageCount": "Verwendungen",
"loading": "Tags werden geladen",
"addTag": "Tag hinzufuegen",
"removeTag": "Tag entfernen",
"manageTags": "Tags verwalten",
"color": {
"red": "Rot",
"blue": "Blau",
"green": "Gruen",
"yellow": "Gelb",
"purple": "Lila",
"orange": "Orange",
"pink": "Rosa",
"gray": "Grau"
}
},
"permissions": {
"title": "Berechtigungen",
"filePermissions": "Dateiberechtigungen",
"shareLinks": "Freigabelinks",
"grant": "Berechtigung erteilen",
"revoke": "Berechtigung entziehen",
"permissionRead": "Lesen",
"permissionWrite": "Schreiben",
"permissionAdmin": "Admin",
"noPermissions": "Keine Berechtigungen vergeben",
"noShareLinks": "Keine Freigabelinks vorhanden",
"user": "Benutzer",
"group": "Gruppe",
"level": "Stufe",
"granted": "Berechtigung erteilt",
"revoked": "Berechtigung entzogen",
"linkCreated": "Freigabelink erstellt",
"linkRevoked": "Freigabelink widerrufen",
"passwordProtected": "Passwortgeschuetzt",
"expiresAt": "Laeuft ab am",
"neverExpires": "Laeuft nie ab",
"linkUrl": "Link-URL"
}
}
}