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"
}
}
}
+168 -5
View File
@@ -159,7 +159,6 @@
"security": "Security",
"roles": "Roles",
"users": "Users",
"system": "System",
"name": "Name",
"firstName": "First Name",
"lastName": "Last Name",
@@ -273,10 +272,28 @@
"nextMonth": "Next month",
"monthView": "Month view",
"kanbanView": "Kanban",
"weekdays": ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
"weekdays": [
"Mo",
"Tu",
"We",
"Th",
"Fr",
"Sa",
"Su"
],
"months": [
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"newAppointment": "New appointment",
"editAppointment": "Edit appointment",
@@ -369,5 +386,151 @@
"follow_up": "Follow up",
"private": "Private"
}
},
"dms": {
"title": "Document Management",
"trash": "Trash",
"folders": "Folders",
"files": "Files",
"allFiles": "All Files",
"sharedWithMe": "Shared with me",
"upload": "Upload",
"uploadDropHere": "Drag files here or click to select",
"uploading": "Uploading",
"uploadSuccess": "File uploaded successfully",
"uploadError": "Upload failed",
"newFolder": "New Folder",
"folderName": "Folder name",
"createFolder": "Create folder",
"search": "Search files",
"searchPlaceholder": "Enter file name",
"noFiles": "No files available",
"noFolders": "No folders available",
"loading": "Loading",
"error": "Error loading data",
"fileSize": "Size",
"fileType": "Type",
"fileModified": "Modified",
"fileCreatedBy": "Created by",
"preview": "Preview",
"download": "Download",
"rename": "Rename",
"move": "Move",
"delete": "Delete",
"restore": "Restore",
"share": "Share",
"shareWith": "Share with",
"shareLink": "Public link",
"createShareLink": "Create link",
"copyLink": "Copy link",
"linkCopied": "Link copied to clipboard",
"password": "Password (optional)",
"expiryDate": "Expiry date (optional)",
"permissionLevel": "Permission level",
"userOrGroup": "User or group",
"userId": "User ID",
"groupId": "Group ID",
"addShare": "Add share",
"removeShare": "Remove share",
"permissions": "Permissions",
"bulkSelect": "Select",
"bulkMove": "Move",
"bulkDelete": "Delete",
"bulkMoveTitle": "Move files",
"bulkDeleteTitle": "Delete files",
"selectTargetFolder": "Select target folder",
"confirmBulkDelete": "Are you sure you want to delete the selected files?",
"confirmDelete": "Are you sure you want to delete this file?",
"confirmDeleteFolder": "Are you sure you want to delete this folder?",
"deleted": "File deleted",
"restored": "File restored",
"shared": "Share created",
"trashEmpty": "Trash is empty",
"noResults": "No search results",
"sharedFiles": "Shared files",
"name": "Name",
"actions": "Actions",
"selected": "selected",
"cancel": "Cancel",
"confirm": "Confirm",
"save": "Save",
"editSession": "Edit session",
"openEditor": "Open in editor",
"icon": {
"folder": "Folder",
"pdf": "PDF",
"image": "Image",
"document": "Document",
"spreadsheet": "Spreadsheet",
"presentation": "Presentation",
"archive": "Archive",
"other": "File"
}
},
"tags": {
"title": "Tags",
"assign": "Assign tag",
"unassign": "Remove tag",
"create": "New tag",
"tagName": "Tag name",
"tagColor": "Color",
"tagDescription": "Description",
"save": "Save",
"cancel": "Cancel",
"delete": "Delete",
"edit": "Edit",
"search": "Search tags",
"noTags": "No tags available",
"noTagsAssigned": "No tags assigned",
"assignedTags": "Assigned tags",
"availableTags": "Available tags",
"tagCloud": "Tag cloud",
"bulkAssign": "Assign tags",
"bulkAssignTitle": "Assign tags to multiple entities",
"selectTags": "Select tags",
"selectedEntities": "selected entities",
"assignSuccess": "Tags assigned",
"unassignSuccess": "Tag removed",
"createSuccess": "Tag created",
"deleteSuccess": "Tag deleted",
"confirmDelete": "Are you sure you want to delete this tag?",
"usageCount": "Usages",
"loading": "Loading tags",
"addTag": "Add tag",
"removeTag": "Remove tag",
"manageTags": "Manage tags",
"color": {
"red": "Red",
"blue": "Blue",
"green": "Green",
"yellow": "Yellow",
"purple": "Purple",
"orange": "Orange",
"pink": "Pink",
"gray": "Gray"
}
},
"permissions": {
"title": "Permissions",
"filePermissions": "File permissions",
"shareLinks": "Share links",
"grant": "Grant permission",
"revoke": "Revoke permission",
"permissionRead": "Read",
"permissionWrite": "Write",
"permissionAdmin": "Admin",
"noPermissions": "No permissions granted",
"noShareLinks": "No share links available",
"user": "User",
"group": "Group",
"level": "Level",
"granted": "Permission granted",
"revoked": "Permission revoked",
"linkCreated": "Share link created",
"linkRevoked": "Share link revoked",
"passwordProtected": "Password protected",
"expiresAt": "Expires at",
"neverExpires": "Never expires",
"linkUrl": "Link URL"
}
}
}