Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
11b9b7c4c6 | ||
|
|
ab08c73777 |
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@govoplan/files-webui",
|
"name": "@govoplan/files-webui",
|
||||||
"version": "0.1.21",
|
"version": "0.1.23",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "webui/src/index.ts",
|
"main": "webui/src/index.ts",
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "govoplan-files"
|
name = "govoplan-files"
|
||||||
version = "0.1.21"
|
version = "0.1.23"
|
||||||
description = "GovOPlaN files module with backend and WebUI integration."
|
description = "GovOPlaN files module with backend and WebUI integration."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
|
|||||||
@@ -0,0 +1,458 @@
|
|||||||
|
"""German translations for public structured documentation metadata."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
GERMAN_STRUCTURED_TRANSLATIONS: dict[str, dict[str, Any]] = {'files.assurance.process-and-release-readiness': {'outcome': 'Der Prozess oder die '
|
||||||
|
'Veröffentlichung hat eine explizite '
|
||||||
|
'Genehmigungsaufzeichnung, die an '
|
||||||
|
'abgestimmte Versionen, '
|
||||||
|
'repräsentative Nachweise, bekannte '
|
||||||
|
'Einschränkungen und eigene '
|
||||||
|
'Restrisiken gebunden ist.',
|
||||||
|
'prerequisites': ['Ein benannter '
|
||||||
|
'Prozessbesitzer hat die '
|
||||||
|
'beabsichtigten Benutzer, '
|
||||||
|
'Datenklassifizierung, '
|
||||||
|
'Aufbewahrungserwartungen und '
|
||||||
|
'Integrationen definiert.',
|
||||||
|
'Ein Kandidaten-Release wird '
|
||||||
|
'in einer sauberen Datenbank '
|
||||||
|
'und einer Upgrade-Kopie mit '
|
||||||
|
'ausgerichteten Python-, '
|
||||||
|
'Root-Paket-, WebUI-Paket- '
|
||||||
|
'und Modulmanifestversionen '
|
||||||
|
'installiert.',
|
||||||
|
'Repräsentative zugelassene '
|
||||||
|
'und verweigerte Konten, '
|
||||||
|
'begrenzte Testdateien und '
|
||||||
|
'ein koordiniertes '
|
||||||
|
'Datenbank-/Blob-/Key-Wiederherstellungsset '
|
||||||
|
'sind verfügbar.'],
|
||||||
|
'steps': ['Vergleichen Sie die '
|
||||||
|
'Prozessanforderungen mit der '
|
||||||
|
'implementierten / geplanten Grenze '
|
||||||
|
'des Handbuchs und notieren Sie jede '
|
||||||
|
'nicht unterstützte Anforderung oder '
|
||||||
|
'Kompensationskontrolle.',
|
||||||
|
'Bestätigen Sie die '
|
||||||
|
'Versionsausrichtung, wenden Sie '
|
||||||
|
'Migrationen auf bereinigte und '
|
||||||
|
'aktualisierte Datenbanken an und '
|
||||||
|
'führen Sie das Repository sowie '
|
||||||
|
'Meta-Repository-Sicherheits- und '
|
||||||
|
'Statikanalyse-Gates aus.',
|
||||||
|
'Übung erlaubt und verweigert '
|
||||||
|
'persönlichen, Gruppen und teilen Sie '
|
||||||
|
'den Zugriff mit repräsentativen '
|
||||||
|
'Konten.',
|
||||||
|
'Übung begrenzte Archivvorschau und '
|
||||||
|
'Bestätigung, jede erforderliche '
|
||||||
|
'Konfliktstrategie, Organisation, '
|
||||||
|
'Download und weiche Löschung.',
|
||||||
|
'Wenn Konnektoren konfiguriert sind, '
|
||||||
|
'überprüfen Sie die '
|
||||||
|
'Richtlinienerklärung und einen '
|
||||||
|
'angehängten HTTP-Provider; '
|
||||||
|
'überprüfen Sie die '
|
||||||
|
'Installateur-eigene Garage, wenn Sie '
|
||||||
|
'ausgewählt sind, und üben Sie dann '
|
||||||
|
'konfigurierte S3-Retries/Aliases und '
|
||||||
|
'SMB-Reconnect/Referral-Ziele unter '
|
||||||
|
'der Bereitstellungsrichtlinie für '
|
||||||
|
'das private Netzwerk aus, um zu '
|
||||||
|
'bestätigen, dass eine inkompatible '
|
||||||
|
'SDK-Transportnaht nicht geschlossen '
|
||||||
|
'ist.',
|
||||||
|
'Stellen Sie ein koordiniertes '
|
||||||
|
'Datenbank-/Blob-/Key-Backup wieder '
|
||||||
|
'her und vergleichen Sie '
|
||||||
|
'repräsentative heruntergeladene '
|
||||||
|
'Bytes mit den aufgezeichneten '
|
||||||
|
'SHA-256-Prüfsummen.',
|
||||||
|
'Notieren Sie die getesteten '
|
||||||
|
'Versionen, Ergebnisse, bekannte '
|
||||||
|
'Einschränkungen, Evidenzorte, '
|
||||||
|
'Restrisiken, Eigentümer und '
|
||||||
|
'Genehmigungsentscheidung.'],
|
||||||
|
'verification': 'Ein Überprüfer kann die '
|
||||||
|
'aufgezeichneten '
|
||||||
|
'Berechtigungs-/Verweigerungs-, '
|
||||||
|
'Integritäts-, Konnektor- und '
|
||||||
|
'Wiederherstellungsüberprüfungen '
|
||||||
|
'reproduzieren und jede nicht '
|
||||||
|
'erfüllte Anforderung auf eine '
|
||||||
|
'dokumentierte Einschränkung '
|
||||||
|
'oder akzeptierte '
|
||||||
|
'Kompensationskontrolle '
|
||||||
|
'zurückführen.'},
|
||||||
|
'files.forms-runtime.managed-evidence': {'limitations': ['Das erste Signaturprofil ist eine '
|
||||||
|
'authentifizierte Bestätigung; '
|
||||||
|
'fortgeschrittene und qualifizierte '
|
||||||
|
'elektronische Signaturen erfordern '
|
||||||
|
'einen separaten Anbieter.'],
|
||||||
|
'outcome': 'Der Entwurf verweist auf eine '
|
||||||
|
'unveränderliche verwaltete Dateiversion mit '
|
||||||
|
'genauen Prüfsummennachweisen.',
|
||||||
|
'prerequisites': ['Formulare Laufzeit und Dateien sind '
|
||||||
|
'aktiviert, und das Aufnahmeprofil hat '
|
||||||
|
'eine aktive Benutzerdepotbank für den '
|
||||||
|
'gleichen Mandant.'],
|
||||||
|
'steps': ['Fordern Sie eine Beweisbewilligung für '
|
||||||
|
'Dateien von der editierbaren Formularinstanz '
|
||||||
|
'an, laden Sie sie über die zurückgegebene '
|
||||||
|
'einmalige Trägerroute hoch und fügen Sie dann '
|
||||||
|
'die zurückgegebene Beweisreferenz zum Entwurf '
|
||||||
|
'hinzu.'],
|
||||||
|
'verification': 'Reichen Sie das Formular ein und '
|
||||||
|
'vergewissern Sie sich, dass geänderte, '
|
||||||
|
'gelöschte, unter Quarantäne gestellte, '
|
||||||
|
'mieterübergreifende und '
|
||||||
|
'gebührenübergreifende Referenzen '
|
||||||
|
'abgelehnt werden.'},
|
||||||
|
'files.governed-connectors-and-provenance': {'limitations': ['Die manuelle '
|
||||||
|
'Ordner-Synchronisierung plant keine '
|
||||||
|
'zukünftigen Runs oder mutiert, '
|
||||||
|
'löscht, umbenennt, verschiebt oder '
|
||||||
|
'ändert ACLs für entfernte Inhalte.',
|
||||||
|
'Ein erfolgreicher Teildurchlauf ist '
|
||||||
|
'keine vollständige Abdeckung, wenn '
|
||||||
|
'die Antwort verkürzt wird oder '
|
||||||
|
'Überprüfungsergebnisse enthält.'],
|
||||||
|
'outcome': 'Zulässige Konnektordateien werden zu '
|
||||||
|
'verwalteten Assets oder Versionen, '
|
||||||
|
'während jede Ausnahme explizit und '
|
||||||
|
'überprüfbar bleibt.',
|
||||||
|
'prerequisites': ['Ein sichtbarer aktiver '
|
||||||
|
'Verbindungsraum verwendet '
|
||||||
|
'manuelle Synchronisierung und '
|
||||||
|
'Links zu einem zugänglichen '
|
||||||
|
'verwalteten Benutzer- oder '
|
||||||
|
'Gruppenraum.',
|
||||||
|
'Der Betreiber hat '
|
||||||
|
'file:file:upload und die '
|
||||||
|
'effektive Konnektorrichtlinie '
|
||||||
|
'erlaubt die angeforderten Root- '
|
||||||
|
'und Source-Pfade.'],
|
||||||
|
'steps': ['Öffnen Sie den Ordner des verknüpften '
|
||||||
|
'Verbinders, wählen Sie den Ordner Sync '
|
||||||
|
'und überprüfen Sie das verwaltete Ziel.',
|
||||||
|
'Halten Sie den sicheren Sprung '
|
||||||
|
'standardmäßig oder wählen Sie explizit '
|
||||||
|
'umbenennen, ablehnen oder überschreiben '
|
||||||
|
'für nicht verwandte Zielkollisionen.',
|
||||||
|
'Legen Sie die Auswahl der begrenzten '
|
||||||
|
'Dateianzahl und des Unterordners fest, '
|
||||||
|
'führen Sie die Synchronisierung aus und '
|
||||||
|
'überprüfen Sie jedes eingegebene '
|
||||||
|
'Elementergebnis und jede '
|
||||||
|
'Abkürzungswarnung.',
|
||||||
|
'Setzen Sie einen verkürzten Lauf aus '
|
||||||
|
'einem schmaleren entfernten Ordner fort; '
|
||||||
|
'konfigurieren Sie die Planung separat, '
|
||||||
|
'wenn eine Hintergrundoperation '
|
||||||
|
'erforderlich ist.'],
|
||||||
|
'verification': 'Vergleichen Sie die '
|
||||||
|
'Antwortzusammenfassung und die '
|
||||||
|
'Ergebnisse pro Element mit dem '
|
||||||
|
'Auditereignis '
|
||||||
|
'files.connector.folder synced und '
|
||||||
|
'prüfen Sie dann die Herkunft der '
|
||||||
|
'erstellten, aktualisierten und '
|
||||||
|
'unveränderten repräsentativen '
|
||||||
|
'Assets.'},
|
||||||
|
'files.privacy.data-subject-requests': {'limitations': ['E-Mail-, Konto- oder '
|
||||||
|
'Identitätsselektoren allein können nicht '
|
||||||
|
'von Dateien aufgelöst werden, da Dateien '
|
||||||
|
'nicht im Besitz des '
|
||||||
|
'Access-Verzeichnisses sind; geben Sie '
|
||||||
|
'die bestätigte Mitgliedschaftsreferenz '
|
||||||
|
'an.',
|
||||||
|
'Der Anbieter bettet keine rohen '
|
||||||
|
'Dateiinhalte in den JSON-Export ein und '
|
||||||
|
'führt niemals eine physische '
|
||||||
|
'Blob-Löschung als DSAR-Nebenwirkung '
|
||||||
|
'durch.'],
|
||||||
|
'outcome': 'Dateieigene Betreffreferenzen werden '
|
||||||
|
'überprüft oder entfernt, ohne den '
|
||||||
|
'zurückgehaltenen Inhalt oder Nachweise '
|
||||||
|
'stillschweigend zu zerstören.',
|
||||||
|
'prerequisites': ['Die Anfrage wurde autorisiert und '
|
||||||
|
'enthält eine direkte '
|
||||||
|
'Mandantenmitgliedschaft oder eine '
|
||||||
|
'Betreffreferenz Dateien.',
|
||||||
|
'Der Datenschutzprüfer kann den '
|
||||||
|
'Zugriffsexport von der Löschbehörde '
|
||||||
|
'und der Löschbehörde für Dateien '
|
||||||
|
'unterscheiden.'],
|
||||||
|
'steps': ['Führen Sie die Anbietersuche aus und '
|
||||||
|
'bestätigen Sie die vollständige Abdeckung der '
|
||||||
|
'Dateiberichte anstelle eines ausgefallenen '
|
||||||
|
'oder abwesenden Anbieters.',
|
||||||
|
'Überprüfen Sie Datei-/Versionsmetadaten, '
|
||||||
|
'Gründe für die Aufbewahrung von Nachweisen und '
|
||||||
|
'den Quellpfad für die manuelle '
|
||||||
|
'Inhaltsüberprüfung.',
|
||||||
|
'Generieren Sie den Löschplan und führen Sie '
|
||||||
|
'nur die genehmigten reversiblen '
|
||||||
|
'Aktienrücknahme- oder Subjektreferenzaktionen '
|
||||||
|
'aus.',
|
||||||
|
'Für die genehmigte Byte-Löschung lösen Sie '
|
||||||
|
'jeden Lifecycle-Blocker auf und verwenden Sie '
|
||||||
|
'Files Purge Preview, Execution und Blob '
|
||||||
|
'Garbage Collection separat.'],
|
||||||
|
'verification': 'Bestätigen Sie, dass jeder '
|
||||||
|
'Dateidatensatz eine Aufbewahrungs-, '
|
||||||
|
'Überprüfungs-, Widerrufs- oder '
|
||||||
|
'Loslösungsdisposition hat und prüfen Sie '
|
||||||
|
'jede separate Bereinigung durch seine '
|
||||||
|
'Audit- und Wiederherstellungsnachweise.'},
|
||||||
|
'files.records.exact-version-source': {'outcome': 'Records behält eine exakt geregelte Referenz, '
|
||||||
|
'während Files Byte Authority bleibt.',
|
||||||
|
'prerequisites': ['Die genaue Dateiversion existiert und '
|
||||||
|
'übergibt das aktuelle Files Integrity '
|
||||||
|
'Gate.',
|
||||||
|
'Sie haben derzeit die Datei Lesezugriff '
|
||||||
|
'und Records Einreichung Behörde.'],
|
||||||
|
'steps': ['Wählen Sie die genaue verwaltete Dateiversion '
|
||||||
|
'aus, die zum institutionellen Datensatz gehört.',
|
||||||
|
'Wählen Sie den Zieldatensatz und geben Sie den '
|
||||||
|
'Zugangszweck und den Anmeldegrund an.',
|
||||||
|
'Bestätigen Sie die Einreichung; Dateien '
|
||||||
|
'überprüft den aktuellen Zugriff erneut und löst '
|
||||||
|
'die genaue Version auf.',
|
||||||
|
'Öffnen Sie die Datensatzchronologie und '
|
||||||
|
'überprüfen Sie die Versionsidentität und den '
|
||||||
|
'SHA-256 Digest.']},
|
||||||
|
'files.reference.integrity-recovery-and-fail-closed-transports': {'verification': 'Führen Sie '
|
||||||
|
'nach der '
|
||||||
|
'Wiederherstellung '
|
||||||
|
'einen '
|
||||||
|
'Checksummen-fähigen '
|
||||||
|
'Integritätsscan '
|
||||||
|
'aus, lösen Sie '
|
||||||
|
'jedes fehlende '
|
||||||
|
'/ korrupte '
|
||||||
|
'Finden, '
|
||||||
|
'genehmigen '
|
||||||
|
'oder behalten '
|
||||||
|
'Sie jedes '
|
||||||
|
'gemeldete '
|
||||||
|
'Waisenkind, '
|
||||||
|
'inspizieren '
|
||||||
|
'Sie die '
|
||||||
|
'Wiederherstellungsvorgänge '
|
||||||
|
'von Dateien in '
|
||||||
|
'Ops, '
|
||||||
|
'überprüfen Sie '
|
||||||
|
'den '
|
||||||
|
'autorisierten '
|
||||||
|
'und '
|
||||||
|
'verweigerten '
|
||||||
|
'Zugriff und '
|
||||||
|
'testen Sie '
|
||||||
|
'konfigurierte '
|
||||||
|
'HTTP-, S3- und '
|
||||||
|
'SMB-Verbindungen '
|
||||||
|
'mit ihrer '
|
||||||
|
'aufgezeichneten '
|
||||||
|
'Zieltopologie.'},
|
||||||
|
'files.reference.shared-storage-profile': {'limitations': ['Installer-verwaltete Garage ist '
|
||||||
|
'Single-Node, es sei denn, ein '
|
||||||
|
'externer Multi-Node-Cluster wird '
|
||||||
|
'separat betrieben.',
|
||||||
|
'Die Anwendung erstellt oder '
|
||||||
|
'verifiziert keine '
|
||||||
|
'PostgreSQL/Objekt/Schlüssel-Backups.'],
|
||||||
|
'verification': 'Führen Sie die '
|
||||||
|
'Dateispeicher-Round-Trip-Prüfung und '
|
||||||
|
'eine koordinierte '
|
||||||
|
'Wiederherstellungsübung gegen die '
|
||||||
|
'genaue Bereitstellungstopologie aus.'},
|
||||||
|
'files.tabular-content': {'consequence_classes': {'fail_closed': 'Nicht verfügbare, '
|
||||||
|
'überdimensionierte, unter '
|
||||||
|
'Quarantäne gestellte oder nicht '
|
||||||
|
'autorisierte Inhalte werden '
|
||||||
|
'nicht analysiert oder in der '
|
||||||
|
'Vorschau angezeigt.',
|
||||||
|
'pin_exact_version': 'Eine Quelle behält ihre '
|
||||||
|
'überprüfte '
|
||||||
|
'unveränderliche '
|
||||||
|
'Dateiversion, bis sie '
|
||||||
|
'explizit aktualisiert '
|
||||||
|
'wird.',
|
||||||
|
'preserve_file_controls': 'Zugriff auf Dateien, '
|
||||||
|
'Integrität, '
|
||||||
|
'Verschlüsselung, '
|
||||||
|
'Aufbewahrung und '
|
||||||
|
'rechtliche Kontrolle '
|
||||||
|
'bleiben '
|
||||||
|
'autoritativ.'}},
|
||||||
|
'files.workflow.delete-managed-files': {'limitations': ['Löschung ist eine weiche Löschung, keine '
|
||||||
|
'harte Säuberung.',
|
||||||
|
'Die Wiederherstellung schlägt fehl, wenn '
|
||||||
|
'eine aktive Datei, ein Ordner oder ein '
|
||||||
|
'Verbindungsraum bereits den Pfad oder '
|
||||||
|
'das Label verwendet.'],
|
||||||
|
'outcome': 'Der ausgewählte Inhalt wird aus aktiven '
|
||||||
|
'Dateiansichten unter dem aktuellen '
|
||||||
|
'Soft-Löschmodell ausgeblendet.',
|
||||||
|
'prerequisites': ['Sie können die ausgewählten '
|
||||||
|
'verwalteten Inhalte anzeigen und '
|
||||||
|
'löschen und haben Schreib- oder '
|
||||||
|
'Eigentümerzugriff auf jedes betroffene '
|
||||||
|
'Asset oder jeden Ordner.',
|
||||||
|
'Sie haben den gesamten Ordnerbaum beim '
|
||||||
|
'rekursiven Löschen überprüft.'],
|
||||||
|
'steps': ['Öffnen Sie Dateien und wählen Sie die Dateien '
|
||||||
|
'oder den Ordner zum Löschen aus.',
|
||||||
|
'Überprüfen Sie die Auswahl und, für einen '
|
||||||
|
'Ordner, alle Inhalte darunter.',
|
||||||
|
'Bestätigen Sie die Löschaktion.',
|
||||||
|
'Erfrischen oder öffnen Sie den Raum und '
|
||||||
|
'überprüfen Sie, ob die ausgewählten Pfade '
|
||||||
|
'nicht mehr aktiv sind.'],
|
||||||
|
'verification': 'Bestätigen Sie, dass die gelöschten '
|
||||||
|
'Pfade nicht mehr im aktiven Raum '
|
||||||
|
'erscheinen; behandeln Sie die Aktion '
|
||||||
|
'nicht als physisches Löschen.'},
|
||||||
|
'files.workflow.find-and-download-files': {'outcome': 'Die autorisierten aktuellen Dateibytes '
|
||||||
|
'oder das generierte Archiv werden auf das '
|
||||||
|
'lokale Gerät heruntergeladen.',
|
||||||
|
'prerequisites': ['Sie können verwaltete Dateien im '
|
||||||
|
'entsprechenden Bereich anzeigen und '
|
||||||
|
'herunterladen.'],
|
||||||
|
'steps': ['Öffnen Sie Dateien und wählen Sie den '
|
||||||
|
'entsprechenden Personen- oder Gruppenraum '
|
||||||
|
'aus.',
|
||||||
|
'Navigieren Sie in Ordnern, sortieren Sie '
|
||||||
|
'die Liste oder verwenden Sie ein Pfad- / '
|
||||||
|
'Namensmuster, um den beabsichtigten Inhalt '
|
||||||
|
'zu finden.',
|
||||||
|
'Überprüfen Sie den angezeigten Besitzer, '
|
||||||
|
'Pfad, Größe, Prüfsumme und Versionsdetails.',
|
||||||
|
'Laden Sie eine aktuelle Dateiversion '
|
||||||
|
'herunter oder wählen Sie mehrere Dateien '
|
||||||
|
'aus und wählen Sie ZIP herunterladen.'],
|
||||||
|
'verification': 'Bestätigen Sie die heruntergeladenen '
|
||||||
|
'Namen und vergleichen Sie, wo '
|
||||||
|
'Integrität wichtig ist, die '
|
||||||
|
'Dateibytes mit der angezeigten '
|
||||||
|
'Prüfsumme.'},
|
||||||
|
'files.workflow.organize-managed-files': {'outcome': 'Der ausgewählte Inhalt hat den '
|
||||||
|
'beabsichtigten verwalteten Eigentümer und '
|
||||||
|
'logischen Pfad.',
|
||||||
|
'prerequisites': ['Sie können verwaltete Dateien '
|
||||||
|
'anzeigen und organisieren.',
|
||||||
|
'Sie haben Schreib- oder '
|
||||||
|
'Eigentümerzugriff auf alle von der '
|
||||||
|
'Operation verwendeten Quellelemente '
|
||||||
|
'und Zielbereiche; die globale '
|
||||||
|
'Organisationsberechtigung allein '
|
||||||
|
'gewährt keinen Ressourcenzugriff.'],
|
||||||
|
'steps': ['Öffnen Sie Dateien und wählen Sie den '
|
||||||
|
'persönlichen oder Gruppenraum zum '
|
||||||
|
'Organisieren aus.',
|
||||||
|
'Erstellen Sie die erforderlichen Zielordner '
|
||||||
|
'oder wählen Sie die Dateien und Ordner aus, '
|
||||||
|
'um sie umzubenennen, zu verschieben oder zu '
|
||||||
|
'kopieren.',
|
||||||
|
'Wählen Sie das Ziel aus und lösen Sie jeden '
|
||||||
|
'Zielkonflikt explizit.',
|
||||||
|
'Wenden Sie die Operation an und öffnen Sie '
|
||||||
|
'den Zielordner erneut.'],
|
||||||
|
'verification': 'Bestätigen Sie jeden resultierenden '
|
||||||
|
'Pfad und Besitzer; für eine Bewegung '
|
||||||
|
'bestätigen Sie auch, dass der alte '
|
||||||
|
'Pfad verschwunden ist, und für eine '
|
||||||
|
'Kopie bestätigen Sie, dass die Quelle '
|
||||||
|
'verbleibt.'},
|
||||||
|
'files.workflow.restore-retain-and-purge': {'limitations': ['Automatische zeitbasierte '
|
||||||
|
'Bereinigungsplanung ist nicht '
|
||||||
|
'enthalten; ein autorisierter '
|
||||||
|
'handelnde Person startet Vorschau, '
|
||||||
|
'Ausführung und Blob-Sammlung.',
|
||||||
|
'Der Verschlüsselungsumschlag eines '
|
||||||
|
'geschützten Blobs folgt der eigenen '
|
||||||
|
'Aufbewahrungs- und '
|
||||||
|
'Schlüssel-Verwahrungsrichtlinie des '
|
||||||
|
'Verschlüsselungsmoduls.'],
|
||||||
|
'outcome': 'Berechtigte Metadaten und nicht '
|
||||||
|
'referenzierte Bytes werden mit separat '
|
||||||
|
'überprüfbaren Richtlinien-, Audit- und '
|
||||||
|
'Wiederherstellungsnachweisen gelöscht.',
|
||||||
|
'prerequisites': ['Die handelnde Person hat die '
|
||||||
|
'eindeutige Wiederherstellungs-, '
|
||||||
|
'Aufbewahrungs- oder '
|
||||||
|
'Bereinigungsberechtigung, die für '
|
||||||
|
'die beabsichtigte Aktion '
|
||||||
|
'erforderlich ist.',
|
||||||
|
'Ein Bereinigungsziel ist bereits '
|
||||||
|
'sanft gelöscht und alle abhängigen '
|
||||||
|
'Nachweise oder Aktien wurden '
|
||||||
|
'rechtmäßig gelöst.'],
|
||||||
|
'steps': ['Festlegen oder Überprüfen von '
|
||||||
|
'Aufbewahrungs- und Haltezustand unter '
|
||||||
|
'Verwendung der angezeigten '
|
||||||
|
'Lifecycle-Revision.',
|
||||||
|
'Überprüfen Sie zum Wiederherstellen, ob '
|
||||||
|
'der ursprüngliche Pfad oder das '
|
||||||
|
'ursprüngliche Label frei ist, und stellen '
|
||||||
|
'Sie die gleiche Ressource wieder her.',
|
||||||
|
'Erstellen Sie zum Löschen eine begrenzte '
|
||||||
|
'Purge-Vorschau und lösen Sie jeden '
|
||||||
|
'benannten Blocker auf.',
|
||||||
|
'Führen Sie die passende Vorschau mit einem '
|
||||||
|
'idempotency-Schlüssel, PURGE-Bestätigung '
|
||||||
|
'und Genehmigungsreferenz aus.',
|
||||||
|
'Führen Sie eine begrenzte '
|
||||||
|
'Blob-Garbage-Sammlung aus und prüfen Sie '
|
||||||
|
'alle Wiederherstellungs- oder '
|
||||||
|
'Ergebnis-unbekannten Operationen in Ops.'],
|
||||||
|
'verification': 'Überprüfen Sie, ob die '
|
||||||
|
'Asset-/Versionszeilen fehlen, der '
|
||||||
|
'Blob bleibt referenziert, nicht '
|
||||||
|
'referenzierte Bytes fehlen nach GC '
|
||||||
|
'und jede Operation hat eine gültige '
|
||||||
|
'Wiederherstellungsnachweiskette.'},
|
||||||
|
'files.workflow.share-managed-files': {'limitations': ['Kampagnenziel-Zuschüsse werden '
|
||||||
|
'normalerweise durch die '
|
||||||
|
'Kampagnenintegration erstellt und nicht '
|
||||||
|
'manuell im Dateidialog ausgewählt.',
|
||||||
|
'Ein Benutzer kann den Zugriff über einen '
|
||||||
|
'anderen aktiven direkten Zuschuss oder '
|
||||||
|
'Besitzpfad behalten, nachdem eine Aktie '
|
||||||
|
'widerrufen wurde.',
|
||||||
|
'Ausgewählte benutzererklärungen erfordern '
|
||||||
|
'die richtlinienberechtigung und sind nur '
|
||||||
|
'diagnosen; sie geben sich nicht als '
|
||||||
|
'benutzer aus oder gewähren dateizugriff.'],
|
||||||
|
'outcome': 'Direkter Zugriff hat die angeforderte '
|
||||||
|
'Berechtigung und Lebensdauer, während das '
|
||||||
|
'verwaltete Asset seinen Eigentümer behält.',
|
||||||
|
'prerequisites': ['Sie haben die Freigabeberechtigung für '
|
||||||
|
'Dateien und besitzen die Datei oder '
|
||||||
|
'verwalten Dateiräume für den aktiven '
|
||||||
|
'Mandanten.',
|
||||||
|
'Das beabsichtigte Benutzer-, Gruppen-, '
|
||||||
|
'Mandant- oder Kampagnenziel existiert '
|
||||||
|
'und ist aktiv.'],
|
||||||
|
'steps': ['Wählen Sie eine verwaltete Datei aus, wählen '
|
||||||
|
'Sie Shares verwalten und überprüfen Sie die '
|
||||||
|
'effektiven und historischen direkten Zuschüsse.',
|
||||||
|
'Wählen Sie den beabsichtigten Benutzer, die '
|
||||||
|
'Gruppe oder den Mandanten aus und wählen Sie '
|
||||||
|
'den Zugriff lesen, schreiben oder verwalten '
|
||||||
|
'sowie einen optionalen Ablauf.',
|
||||||
|
'Geben oder aktualisieren Sie die Freigabe, ohne '
|
||||||
|
'den Dateibesitz zu ändern.',
|
||||||
|
'Widerrufen Sie einen Zuschuss, wenn er nicht '
|
||||||
|
'mehr benötigt wird; wiederholter Widerruf ist '
|
||||||
|
'ein No-Op.'],
|
||||||
|
'verification': 'Testen Sie einen beabsichtigten und einen '
|
||||||
|
'verweigerten Pfad, verfallen oder '
|
||||||
|
'widerrufen Sie die Gewährung und stellen '
|
||||||
|
'Sie sicher, dass nur noch unabhängige '
|
||||||
|
'Zugangspfade verbleiben.'}}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from govoplan_core.core.modules import with_documentation_structured_translations
|
||||||
|
from govoplan_files.backend.german_structured_documentation import GERMAN_STRUCTURED_TRANSLATIONS
|
||||||
|
|
||||||
from dataclasses import replace
|
from dataclasses import replace
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -455,7 +458,7 @@ def _dsar_provider(context: ModuleContext) -> object:
|
|||||||
manifest = ModuleManifest(
|
manifest = ModuleManifest(
|
||||||
id="files",
|
id="files",
|
||||||
name="Files",
|
name="Files",
|
||||||
version="0.1.21",
|
version="0.1.23",
|
||||||
required_capabilities=(
|
required_capabilities=(
|
||||||
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
|
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
|
||||||
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
|
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
|
||||||
@@ -1879,5 +1882,10 @@ manifest = ModuleManifest(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
manifest = with_documentation_structured_translations(
|
||||||
|
manifest, locale="de", translations=GERMAN_STRUCTURED_TRANSLATIONS
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_manifest() -> ModuleManifest:
|
def get_manifest() -> ModuleManifest:
|
||||||
return manifest
|
return manifest
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@govoplan/files-webui",
|
"name": "@govoplan/files-webui",
|
||||||
"version": "0.1.21",
|
"version": "0.1.23",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1061,7 +1061,7 @@ export default function FileConnectorSettingsPanel({
|
|||||||
)}
|
)}
|
||||||
<div className="file-connector-settings-section file-connector-policy-locks">
|
<div className="file-connector-settings-section file-connector-policy-locks">
|
||||||
<ToggleSwitch label="i18n:govoplan-files.lower_connection_limits.4f9838bc" checked={policyDraft.allowLowerConnectionLimits} disabled={saving || !canWrite} onChange={(allowLowerConnectionLimits) => patchPolicyDraft({ allowLowerConnectionLimits })} />
|
<ToggleSwitch label="i18n:govoplan-files.lower_connection_limits.4f9838bc" checked={policyDraft.allowLowerConnectionLimits} disabled={saving || !canWrite} onChange={(allowLowerConnectionLimits) => patchPolicyDraft({ allowLowerConnectionLimits })} />
|
||||||
<ToggleSwitch label="i18n:govoplan-files.lower_credential_limits.ec2b72bc" checked={policyDraft.allowLowerCredentialLimits} disabled={saving || !canWrite} onChange={(allowLowerCredentialLimits) => patchPolicyDraft({ allowLowerCredentialLimits })} />
|
<ToggleSwitch label="i18n:govoplan-files.lower_credential_limits.ec2b72bc" helpContextId="files.connector.policy" helpModuleId="files" checked={policyDraft.allowLowerCredentialLimits} disabled={saving || !canWrite} onChange={(allowLowerCredentialLimits) => patchPolicyDraft({ allowLowerCredentialLimits })} />
|
||||||
<ToggleSwitch label="i18n:govoplan-files.lower_provider_limits.5816270a" checked={policyDraft.allowLowerProviderLimits} disabled={saving || !canWrite} onChange={(allowLowerProviderLimits) => patchPolicyDraft({ allowLowerProviderLimits })} />
|
<ToggleSwitch label="i18n:govoplan-files.lower_provider_limits.5816270a" checked={policyDraft.allowLowerProviderLimits} disabled={saving || !canWrite} onChange={(allowLowerProviderLimits) => patchPolicyDraft({ allowLowerProviderLimits })} />
|
||||||
<ToggleSwitch label="i18n:govoplan-files.lower_path_limits.1abcccb1" checked={policyDraft.allowLowerPathLimits} disabled={saving || !canWrite} onChange={(allowLowerPathLimits) => patchPolicyDraft({ allowLowerPathLimits })} />
|
<ToggleSwitch label="i18n:govoplan-files.lower_path_limits.1abcccb1" checked={policyDraft.allowLowerPathLimits} disabled={saving || !canWrite} onChange={(allowLowerPathLimits) => patchPolicyDraft({ allowLowerPathLimits })} />
|
||||||
<ToggleSwitch label="i18n:govoplan-files.lower_endpoint_limits.3fd781d5" checked={policyDraft.allowLowerUrlLimits} disabled={saving || !canWrite} onChange={(allowLowerUrlLimits) => patchPolicyDraft({ allowLowerUrlLimits })} />
|
<ToggleSwitch label="i18n:govoplan-files.lower_endpoint_limits.3fd781d5" checked={policyDraft.allowLowerUrlLimits} disabled={saving || !canWrite} onChange={(allowLowerUrlLimits) => patchPolicyDraft({ allowLowerUrlLimits })} />
|
||||||
@@ -1101,14 +1101,14 @@ export default function FileConnectorSettingsPanel({
|
|||||||
<p>Choose where this credential can be used and how it signs in.</p>
|
<p>Choose where this credential can be used and how it signs in.</p>
|
||||||
</header>
|
</header>
|
||||||
<FormGrid columns={2} collapseAt="standard" className="">
|
<FormGrid columns={2} collapseAt="standard" className="">
|
||||||
<FormField label="i18n:govoplan-files.credential_id.9432a6e1">
|
<FormField label="i18n:govoplan-files.credential_id.9432a6e1" helpContextId="files.connector.credentials" helpModuleId="files">
|
||||||
<input className={!editingCredentialId && !credentialDraft.id.trim() ? "field-input-missing" : undefined} aria-invalid={!editingCredentialId && !credentialDraft.id.trim() || undefined} value={credentialDraft.id} disabled={Boolean(editingCredentialId) || saving} onChange={(event) => patchCredentialDraft({ id: event.target.value })} placeholder={`${scopeType}-webdav-credentials`} />
|
<input className={!editingCredentialId && !credentialDraft.id.trim() ? "field-input-missing" : undefined} aria-invalid={!editingCredentialId && !credentialDraft.id.trim() || undefined} value={credentialDraft.id} disabled={Boolean(editingCredentialId) || saving} onChange={(event) => patchCredentialDraft({ id: event.target.value })} placeholder={`${scopeType}-webdav-credentials`} />
|
||||||
</FormField>
|
</FormField>
|
||||||
<FormField label="i18n:govoplan-files.label.74341e3c">
|
<FormField label="i18n:govoplan-files.label.74341e3c">
|
||||||
<input className={!credentialDraft.label.trim() ? "field-input-missing" : undefined} aria-invalid={!credentialDraft.label.trim() || undefined} value={credentialDraft.label} disabled={saving} onChange={(event) => patchCredentialDraft({ label: event.target.value })} placeholder="i18n:govoplan-files.govoplan_webdav_credentials.bc696d69" />
|
<input className={!credentialDraft.label.trim() ? "field-input-missing" : undefined} aria-invalid={!credentialDraft.label.trim() || undefined} value={credentialDraft.label} disabled={saving} onChange={(event) => patchCredentialDraft({ label: event.target.value })} placeholder="i18n:govoplan-files.govoplan_webdav_credentials.bc696d69" />
|
||||||
</FormField>
|
</FormField>
|
||||||
{credentialAttachProfileId &&
|
{credentialAttachProfileId &&
|
||||||
<FormField label="i18n:govoplan-files.connection_credential.178babe0">
|
<FormField label="i18n:govoplan-files.connection_credential.178babe0" helpContextId="files.connector.credentials" helpModuleId="files">
|
||||||
<input value={credentialAttachedProfile ? `${credentialAttachedProfile.label} (${credentialAttachedProfile.id})` : credentialAttachProfileId} disabled readOnly />
|
<input value={credentialAttachedProfile ? `${credentialAttachedProfile.label} (${credentialAttachedProfile.id})` : credentialAttachProfileId} disabled readOnly />
|
||||||
</FormField>
|
</FormField>
|
||||||
}
|
}
|
||||||
@@ -1130,8 +1130,8 @@ export default function FileConnectorSettingsPanel({
|
|||||||
/>
|
/>
|
||||||
</FormField>
|
</FormField>
|
||||||
</div>
|
</div>
|
||||||
<FormField label="i18n:govoplan-files.credential_mode.23fdd899" documentation={CONNECTOR_DOCUMENTATION}>
|
<FormField label="i18n:govoplan-files.credential_mode.23fdd899" documentation={CONNECTOR_DOCUMENTATION} helpContextId="files.connector.credentials" helpModuleId="files">
|
||||||
<select value={credentialDraft.credentialMode} disabled={saving} onChange={(event) => patchCredentialDraft({ credentialMode: event.target.value as CredentialMode })}>
|
<select data-help-context-id="files.connector.credentials" data-help-module-id="files" value={credentialDraft.credentialMode} disabled={saving} onChange={(event) => patchCredentialDraft({ credentialMode: event.target.value as CredentialMode })}>
|
||||||
<option value="none">i18n:govoplan-files.none.6eef6648</option>
|
<option value="none">i18n:govoplan-files.none.6eef6648</option>
|
||||||
<option value="anonymous">i18n:govoplan-files.anonymous.9bed5104</option>
|
<option value="anonymous">i18n:govoplan-files.anonymous.9bed5104</option>
|
||||||
<option value="basic">i18n:govoplan-files.username_password.e8ba8896</option>
|
<option value="basic">i18n:govoplan-files.username_password.e8ba8896</option>
|
||||||
@@ -1142,8 +1142,8 @@ export default function FileConnectorSettingsPanel({
|
|||||||
</FormGrid>
|
</FormGrid>
|
||||||
<div className="file-connector-settings-section">
|
<div className="file-connector-settings-section">
|
||||||
<ToggleSwitch label="i18n:govoplan-files.enabled.df174a3f" checked={credentialDraft.enabled} disabled={saving} onChange={(enabled) => patchCredentialDraft({ enabled })} />
|
<ToggleSwitch label="i18n:govoplan-files.enabled.df174a3f" checked={credentialDraft.enabled} disabled={saving} onChange={(enabled) => patchCredentialDraft({ enabled })} />
|
||||||
{editingCredentialId && <ToggleSwitch label="i18n:govoplan-files.clear_saved_password.7442260d" checked={credentialDraft.clearPassword} disabled={saving} onChange={(clearPassword) => patchCredentialDraft({ clearPassword })} />}
|
{editingCredentialId && <ToggleSwitch label="i18n:govoplan-files.clear_saved_password.7442260d" helpContextId="files.connector.credentials" helpModuleId="files" checked={credentialDraft.clearPassword} disabled={saving} onChange={(clearPassword) => patchCredentialDraft({ clearPassword })} />}
|
||||||
{editingCredentialId && <ToggleSwitch label="i18n:govoplan-files.clear_saved_token.a9c670aa" checked={credentialDraft.clearToken} disabled={saving} onChange={(clearToken) => patchCredentialDraft({ clearToken })} />}
|
{editingCredentialId && <ToggleSwitch label="i18n:govoplan-files.clear_saved_token.a9c670aa" helpContextId="files.connector.credentials" helpModuleId="files" checked={credentialDraft.clearToken} disabled={saving} onChange={(clearToken) => patchCredentialDraft({ clearToken })} />}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -1179,8 +1179,8 @@ export default function FileConnectorSettingsPanel({
|
|||||||
disabled={saving}
|
disabled={saving}
|
||||||
showPassword={false} />
|
showPassword={false} />
|
||||||
<FormGrid columns={2} collapseAt="standard" className="">
|
<FormGrid columns={2} collapseAt="standard" className="">
|
||||||
<FormField label="i18n:govoplan-files.secret_reference.04ed2221">
|
<FormField label="i18n:govoplan-files.secret_reference.04ed2221" helpContextId="files.connector.credentials" helpModuleId="files">
|
||||||
<input value={credentialDraft.secretRef} disabled={saving} onChange={(event) => patchCredentialDraft({ secretRef: event.target.value })} />
|
<input data-help-context-id="files.connector.credentials" data-help-module-id="files" value={credentialDraft.secretRef} disabled={saving} onChange={(event) => patchCredentialDraft({ secretRef: event.target.value })} />
|
||||||
</FormField>
|
</FormField>
|
||||||
</FormGrid>
|
</FormGrid>
|
||||||
</>
|
</>
|
||||||
@@ -1304,8 +1304,8 @@ export default function FileConnectorSettingsPanel({
|
|||||||
<FormField label="i18n:govoplan-files.base_path.6a4867ca">
|
<FormField label="i18n:govoplan-files.base_path.6a4867ca">
|
||||||
<input value={draft.basePath} disabled={saving} onChange={(event) => patchDraft({ basePath: event.target.value })} placeholder="GovOPlaN" />
|
<input value={draft.basePath} disabled={saving} onChange={(event) => patchDraft({ basePath: event.target.value })} placeholder="GovOPlaN" />
|
||||||
</FormField>
|
</FormField>
|
||||||
<FormField label="i18n:govoplan-files.credential_mode.23fdd899" documentation={CONNECTOR_DOCUMENTATION}>
|
<FormField label="i18n:govoplan-files.credential_mode.23fdd899" documentation={CONNECTOR_DOCUMENTATION} helpContextId="files.connector.credentials" helpModuleId="files">
|
||||||
<select value={draft.credentialMode} disabled={saving} onChange={(event) => patchDraft({ credentialMode: event.target.value as CredentialMode })}>
|
<select data-help-context-id="files.connector.credentials" data-help-module-id="files" value={draft.credentialMode} disabled={saving} onChange={(event) => patchDraft({ credentialMode: event.target.value as CredentialMode })}>
|
||||||
<option value="none">i18n:govoplan-files.none.6eef6648</option>
|
<option value="none">i18n:govoplan-files.none.6eef6648</option>
|
||||||
<option value="anonymous">i18n:govoplan-files.anonymous.9bed5104</option>
|
<option value="anonymous">i18n:govoplan-files.anonymous.9bed5104</option>
|
||||||
<option value="basic">i18n:govoplan-files.username_password.e8ba8896</option>
|
<option value="basic">i18n:govoplan-files.username_password.e8ba8896</option>
|
||||||
@@ -1313,8 +1313,8 @@ export default function FileConnectorSettingsPanel({
|
|||||||
<option value="secret_ref">i18n:govoplan-files.secret_reference.04ed2221</option>
|
<option value="secret_ref">i18n:govoplan-files.secret_reference.04ed2221</option>
|
||||||
</select>
|
</select>
|
||||||
</FormField>
|
</FormField>
|
||||||
<FormField label="i18n:govoplan-files.credential.8bede3ea">
|
<FormField label="i18n:govoplan-files.credential.8bede3ea" helpContextId="files.connector.credentials" helpModuleId="files">
|
||||||
<select value={profileCredentialSelectValue} disabled={saving || profileCredentialOptions.length === 0} onChange={(event) => patchDraft({ credentialProfileId: event.target.value })}>
|
<select data-help-context-id="files.connector.credentials" data-help-module-id="files" value={profileCredentialSelectValue} disabled={saving || profileCredentialOptions.length === 0} onChange={(event) => patchDraft({ credentialProfileId: event.target.value })}>
|
||||||
{profileCredentialOptions.length === 0 && <option value="">i18n:govoplan-files.no_saved_credential.30a5a951</option>}
|
{profileCredentialOptions.length === 0 && <option value="">i18n:govoplan-files.no_saved_credential.30a5a951</option>}
|
||||||
{profileCredentialOptions.map((credential) => <option key={credential.id} value={credential.id}>{credential.label}</option>)}
|
{profileCredentialOptions.map((credential) => <option key={credential.id} value={credential.id}>{credential.label}</option>)}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -2293,7 +2293,7 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
|
|||||||
<Button onClick={() => openTransferDialog("copy")} disabled={Boolean(organizeBlocker || selectionBlocker)} disabledReason={organizeBlocker || selectionBlocker}><Copy size={16} aria-hidden="true" /> i18n:govoplan-files.copy.af74f7c5</Button>
|
<Button onClick={() => openTransferDialog("copy")} disabled={Boolean(organizeBlocker || selectionBlocker)} disabledReason={organizeBlocker || selectionBlocker}><Copy size={16} aria-hidden="true" /> i18n:govoplan-files.copy.af74f7c5</Button>
|
||||||
{hasSelection && <Button onClick={openRenameDialog} disabled={Boolean(organizeBlocker)} disabledReason={organizeBlocker}>{selectedEntryCount === 1 ? "i18n:govoplan-files.rename.d3f4cb89" : "i18n:govoplan-files.bulk_rename.7dcaa624"}</Button>}
|
{hasSelection && <Button onClick={openRenameDialog} disabled={Boolean(organizeBlocker)} disabledReason={organizeBlocker}>{selectedEntryCount === 1 ? "i18n:govoplan-files.rename.d3f4cb89" : "i18n:govoplan-files.bulk_rename.7dcaa624"}</Button>}
|
||||||
<Button onClick={() => accessExplainableTarget && void openAccessExplanation(accessExplainableTarget)} disabled={Boolean(accessExplanationBlocker)} disabledReason={accessExplanationBlocker}><KeyRound size={16} aria-hidden="true" /> i18n:govoplan-files.explain_access.4d5fac37</Button>
|
<Button onClick={() => accessExplainableTarget && void openAccessExplanation(accessExplainableTarget)} disabled={Boolean(accessExplanationBlocker)} disabledReason={accessExplanationBlocker}><KeyRound size={16} aria-hidden="true" /> i18n:govoplan-files.explain_access.4d5fac37</Button>
|
||||||
<Button variant="danger" onClick={() => void deleteSelected()} disabled={Boolean(deleteBlocker)} disabledReason={deleteBlocker}><Trash2 size={16} aria-hidden="true" /> i18n:govoplan-files.delete.f6fdbe48</Button>
|
<Button variant="danger" helpContextId="files.list" helpModuleId="files" onClick={() => void deleteSelected()} disabled={Boolean(deleteBlocker)} disabledReason={deleteBlocker}><Trash2 size={16} aria-hidden="true" /> i18n:govoplan-files.delete.f6fdbe48</Button>
|
||||||
{activeSpaceIsConnector &&
|
{activeSpaceIsConnector &&
|
||||||
<Button
|
<Button
|
||||||
variant="danger"
|
variant="danger"
|
||||||
@@ -2793,8 +2793,12 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
|
|||||||
{archivePreview.requires_password &&
|
{archivePreview.requires_password &&
|
||||||
<FormField
|
<FormField
|
||||||
label="Archive password"
|
label="Archive password"
|
||||||
|
helpContextId="files.list"
|
||||||
|
helpModuleId="files"
|
||||||
help="The password stays in this dialog and is sent only while inspecting or importing this archive.">
|
help="The password stays in this dialog and is sent only while inspecting or importing this archive.">
|
||||||
<PasswordField
|
<PasswordField
|
||||||
|
helpContextId="files.list"
|
||||||
|
helpModuleId="files"
|
||||||
value={archivePassword}
|
value={archivePassword}
|
||||||
onValueChange={setArchivePassword}
|
onValueChange={setArchivePassword}
|
||||||
disabled={busy}
|
disabled={busy}
|
||||||
@@ -2857,6 +2861,8 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
|
|||||||
</Button>
|
</Button>
|
||||||
{archivePreview.requires_password &&
|
{archivePreview.requires_password &&
|
||||||
<Button
|
<Button
|
||||||
|
helpContextId="files.list"
|
||||||
|
helpModuleId="files"
|
||||||
onClick={() => activeDialogTarget && void loadArchivePreview(archiveFile, activeDialogTarget, { preserveSelection: true })}
|
onClick={() => activeDialogTarget && void loadArchivePreview(archiveFile, activeDialogTarget, { preserveSelection: true })}
|
||||||
disabled={busy || !archivePassword}>
|
disabled={busy || !archivePassword}>
|
||||||
<RefreshCw size={15} aria-hidden="true" /> Verify password
|
<RefreshCw size={15} aria-hidden="true" /> Verify password
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ export function FileContextMenu({
|
|||||||
<button type="button" role="menuitem" onClick={onMove} disabled={!hasSelection || !canOrganize}><MoveRight size={15} aria-hidden="true" /> i18n:govoplan-files.move.8a74a26e</button>
|
<button type="button" role="menuitem" onClick={onMove} disabled={!hasSelection || !canOrganize}><MoveRight size={15} aria-hidden="true" /> i18n:govoplan-files.move.8a74a26e</button>
|
||||||
<button type="button" role="menuitem" onClick={onCopy} disabled={!hasSelection || !canOrganize}><Copy size={15} aria-hidden="true" /> i18n:govoplan-files.copy.92556c6d</button>
|
<button type="button" role="menuitem" onClick={onCopy} disabled={!hasSelection || !canOrganize}><Copy size={15} aria-hidden="true" /> i18n:govoplan-files.copy.92556c6d</button>
|
||||||
<button type="button" role="menuitem" onClick={onExplainAccess} disabled={!canExplainAccess}><KeyRound size={15} aria-hidden="true" /> i18n:govoplan-files.explain_access.4d5fac37</button>
|
<button type="button" role="menuitem" onClick={onExplainAccess} disabled={!canExplainAccess}><KeyRound size={15} aria-hidden="true" /> i18n:govoplan-files.explain_access.4d5fac37</button>
|
||||||
{showDelete && <button type="button" role="menuitem" className="danger" onClick={onDelete} disabled={!canDelete}><Trash2 size={15} aria-hidden="true" /> i18n:govoplan-files.delete.f6fdbe48</button>}
|
{showDelete && <button type="button" role="menuitem" className="danger" data-help-context-id="files.list" data-help-module-id="files" onClick={onDelete} disabled={!canDelete}><Trash2 size={15} aria-hidden="true" /> i18n:govoplan-files.delete.f6fdbe48</button>}
|
||||||
</div>);
|
</div>);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user