feat: add WebDAV file browser with auth improvements
Add a new Files section powered by WebDAV for browsing, uploading, downloading, renaming, and deleting files and folders. New features: - WebDAV file browser with grid/list views and breadcrumb navigation - File upload (drag-and-drop and button), folder creation, rename, delete - File preview modals for images and other file types - WebDAV proxy API route to handle authentication - Navigation rail entry for Files (auto-hidden when WebDAV is unsupported) Auth improvements: - Fix premature redirects on calendar, contacts, and settings pages by adding explicit auth check on mount before redirecting to login - Persist active settings tab in localStorage Other: - Expose getAuthHeader() and getServerUrl() on JMAPClient - Add WebDAV store with connection testing and capability detection - Add i18n translations for file browser in all 8 locales (de, en, es, fr, it, ja, nl, pt)
This commit is contained in:
@@ -61,6 +61,7 @@
|
||||
"contacts": "Contacts",
|
||||
"calendar": "Calendrier",
|
||||
"settings": "Paramètres",
|
||||
"files": "Fichiers",
|
||||
"loading_mailboxes": "Chargement des boîtes mail...",
|
||||
"push_connected": "Mises à jour en temps réel actives",
|
||||
"push_disconnected": "Mises à jour en temps réel inactives",
|
||||
@@ -1692,5 +1693,83 @@
|
||||
"got_it": "Compris",
|
||||
"settings": "Paramètres",
|
||||
"dismiss": "Fermer"
|
||||
},
|
||||
"files": {
|
||||
"title": "Fichiers",
|
||||
"search_placeholder": "Rechercher des fichiers...",
|
||||
"empty_state_title": "Aucun fichier pour le moment",
|
||||
"empty_state_description": "Téléversez des fichiers ou créez des dossiers pour commencer",
|
||||
"upload": "Téléverser",
|
||||
"upload_files": "Téléverser des fichiers",
|
||||
"new_folder": "Nouveau dossier",
|
||||
"new_folder_name": "Nom du dossier",
|
||||
"rename": "Renommer",
|
||||
"rename_title": "Renommer",
|
||||
"new_name": "Nouveau nom",
|
||||
"delete": "Supprimer",
|
||||
"delete_confirm_title": "Supprimer la ressource",
|
||||
"delete_confirm_message": "Êtes-vous sûr de vouloir supprimer \"{name}\" ? Cette action est irréversible.",
|
||||
"download": "Télécharger",
|
||||
"name": "Nom",
|
||||
"size": "Taille",
|
||||
"modified": "Modifié",
|
||||
"type": "Type",
|
||||
"folder": "Dossier",
|
||||
"file": "Fichier",
|
||||
"parent_directory": "Répertoire parent",
|
||||
"breadcrumb_root": "Accueil",
|
||||
"drop_files_here": "Déposez les fichiers ici pour les téléverser",
|
||||
"uploading": "Téléversement en cours...",
|
||||
"upload_success": "{count, plural, one {1 fichier téléversé} other {# fichiers téléversés}}",
|
||||
"upload_error": "Échec du téléversement du fichier",
|
||||
"create_folder_success": "Dossier créé",
|
||||
"create_folder_error": "Échec de la création du dossier",
|
||||
"delete_success": "Supprimé avec succès",
|
||||
"delete_error": "Échec de la suppression",
|
||||
"rename_success": "Renommé avec succès",
|
||||
"rename_error": "Échec du renommage",
|
||||
"download_error": "Échec du téléchargement",
|
||||
"not_available": "Le stockage de fichiers WebDAV n'est pas disponible sur ce serveur",
|
||||
"cancel": "Annuler",
|
||||
"create": "Créer",
|
||||
"save": "Enregistrer",
|
||||
"no_results": "Aucun fichier ne correspond à votre recherche",
|
||||
"batch_delete_confirm_message": "Êtes-vous sûr de vouloir supprimer {count, plural, one {1 élément} other {# éléments}} ? Cette action est irréversible.",
|
||||
"batch_delete_success": "{count, plural, one {1 élément supprimé} other {# éléments supprimés}}",
|
||||
"grid_view": "Vue en grille",
|
||||
"list_view": "Vue en liste",
|
||||
"details": "Détails",
|
||||
"path": "Chemin",
|
||||
"preview": "Aperçu",
|
||||
"preview_error": "Échec du chargement de l'aperçu",
|
||||
"cut": "Couper",
|
||||
"copy": "Copier",
|
||||
"paste": "Coller",
|
||||
"move_success": "{count, plural, one {1 élément déplacé} other {# éléments déplacés}}",
|
||||
"move_error": "Échec du déplacement",
|
||||
"paste_success": "Collé avec succès",
|
||||
"paste_error": "Échec du collage",
|
||||
"new_text_file": "Nouveau fichier texte",
|
||||
"file_name": "Nom du fichier",
|
||||
"retry": "Réessayer",
|
||||
"refresh": "Actualiser",
|
||||
"toggle_favorite": "Basculer le favori",
|
||||
"duplicate": "Dupliquer",
|
||||
"duplicate_success": "Dupliqué avec succès",
|
||||
"duplicate_error": "Échec de la duplication",
|
||||
"create_file_success": "Fichier créé",
|
||||
"create_file_error": "Échec de la création du fichier",
|
||||
"favorites": "Favoris",
|
||||
"recent": "Récents",
|
||||
"properties": "Propriétés",
|
||||
"open_folder": "Ouvrir le dossier",
|
||||
"upload_folder": "Téléverser un dossier",
|
||||
"file_too_large": "\"{name}\" dépasse la taille maximale du fichier ({max})",
|
||||
"undo": "Annuler",
|
||||
"undo_success": "Action annulée",
|
||||
"undo_error": "Échec de l'annulation",
|
||||
"toolbar": "Actions sur les fichiers",
|
||||
"file_list": "Fichiers et dossiers",
|
||||
"context_menu": "Actions"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user