Separate online backup creation, import and management sections
CI / verify (push) Waiting to run

This commit is contained in:
Sucukdeluxe
2026-09-22 05:58:33 +02:00
parent ed76e7ea43
commit c86605d67b
5 changed files with 50 additions and 19 deletions
+21 -15
View File
@@ -6609,21 +6609,8 @@ function renderSettings() {
<h3 id="onlineBackupHeading">Verschlüsseltes Online-Backup</h3>
<p>Die Verschlüsselung findet ausschließlich auf diesem Gerät statt. Der Server speichert nur verschlüsselte Daten.</p>
</div>
<div class="online-backup-key-row" data-settings-search-entry data-settings-search-section="Online-Backup">
<label for="onlineBackupKeyInput">Schlüssel importieren</label>
<input type="password" class="key-input" id="onlineBackupKeyInput" maxlength="75" pattern="MHU2-[A-Za-z0-9_-]{70}" spellcheck="false" autocomplete="off" placeholder="MHU2-…">
<button class="btn btn-secondary" id="restoreOnlineBackupBtn" disabled>Importieren</button>
</div>
<p class="online-backup-warning">Behandle den Schlüssel wie ein Passwort. Wer ihn besitzt, kann die verschlüsselten Einstellungen entschlüsseln.</p>
<section class="online-backup-managed" aria-labelledby="managedOnlineBackupHeading" data-settings-search-entry data-settings-search-section="Online-Backup" data-settings-search-label="Online-Backups verwalten" data-settings-search-control="managedOnlineBackupHeading">
<h4 id="managedOnlineBackupHeading" tabindex="-1">Auf diesem Gerät erstellt</h4>
<div class="online-backup-managed-list" id="managedOnlineBackupList"></div>
<div class="online-backup-refresh-status" id="managedOnlineBackupRefreshStatus" role="status" hidden>
<span id="managedOnlineBackupRefreshMessage"></span>
<button class="btn btn-secondary" id="reloadManagedOnlineBackupsBtn" type="button">Erneut laden</button>
</div>
</section>
<div class="online-backup-status" id="onlineBackupStatus" role="status" aria-live="polite"></div>
<section class="online-backup-module" aria-labelledby="onlineBackupCreateHeading">
<h4 id="onlineBackupCreateHeading">Schlüssel erstellen</h4>
<footer class="online-backup-footer" data-settings-search-entry data-settings-search-section="Online-Backup" data-settings-search-label="Neuen Schlüssel erzeugen">
<div class="online-backup-retention-field">
<label for="onlineBackupRetentionSelect">Gültigkeitsdauer</label>
@@ -6639,6 +6626,25 @@ function renderSettings() {
</div>
<button class="btn btn-primary" id="createOnlineBackupBtn">Neuen Schlüssel erzeugen</button>
</footer>
</section>
<section class="online-backup-module" aria-labelledby="onlineBackupImportHeading">
<h4 id="onlineBackupImportHeading">Schlüssel importieren</h4>
<div class="online-backup-key-row" data-settings-search-entry data-settings-search-section="Online-Backup" data-settings-search-label="Schlüssel importieren">
<label for="onlineBackupKeyInput">Online-Schlüssel</label>
<input type="password" class="key-input" id="onlineBackupKeyInput" maxlength="75" pattern="MHU2-[A-Za-z0-9_-]{70}" spellcheck="false" autocomplete="off" placeholder="MHU2-…">
<button class="btn btn-secondary" id="restoreOnlineBackupBtn" disabled>Importieren</button>
</div>
</section>
<p class="online-backup-warning">Behandle den Schlüssel wie ein Passwort. Wer ihn besitzt, kann die verschlüsselten Einstellungen entschlüsseln.</p>
<div class="online-backup-status" id="onlineBackupStatus" role="status" aria-live="polite"></div>
<section class="online-backup-module online-backup-managed" aria-labelledby="managedOnlineBackupHeading" data-settings-search-entry data-settings-search-section="Online-Backup" data-settings-search-label="Online-Backups verwalten" data-settings-search-control="managedOnlineBackupHeading">
<h4 id="managedOnlineBackupHeading" tabindex="-1">Auf diesem Gerät erstellt</h4>
<div class="online-backup-managed-list" id="managedOnlineBackupList"></div>
<div class="online-backup-refresh-status" id="managedOnlineBackupRefreshStatus" role="status" hidden>
<span id="managedOnlineBackupRefreshMessage"></span>
<button class="btn btn-secondary" id="reloadManagedOnlineBackupsBtn" type="button">Erneut laden</button>
</div>
</section>
</section>
<div class="settings-section-label">Lokales Datei-Backup</div>
<div class="settings-row local-backup-password-row">
+2
View File
@@ -380,6 +380,8 @@
['Verschlüsseltes Online-Backup', 'Encrypted online backup'],
['Die Verschlüsselung findet ausschließlich auf diesem Gerät statt. Der Server speichert nur verschlüsselte Daten.', 'Encryption takes place only on this device. The server stores encrypted data only.'],
['Neuen Schlüssel erzeugen', 'Generate new key'],
['Schlüssel erstellen', 'Create key'],
['Online-Schlüssel', 'Online key'],
['Gültigkeitsdauer', 'Validity period'],
['24 Stunden', '24 hours'],
['3 Tage', '3 days'],
+16
View File
@@ -2250,6 +2250,22 @@ select.hs-input { max-width: none; width: auto; min-width: 140px; }
min-width: 0;
}
.online-backup-module {
display: grid;
gap: 16px;
min-width: 0;
padding: 16px;
border: 1px solid var(--border);
border-radius: 8px;
background: var(--bg-card);
}
.online-backup-module h4 {
margin: 0;
font-size: 14px;
font-weight: 600;
}
.online-backup-retention-field {
display: grid;
grid-template-columns: 150px minmax(210px, 300px);