release: v2.0.6
Redesign the desktop workspace with task sidebars, live filters, clearer settings, and an accessible update dialog. Harden encrypted backup imports, configuration persistence, history retention, queue snapshots, shutdown recovery, and update installation ordering. Publish verified Windows artifacts and refreshed English documentation.
This commit is contained in:
+942
-131
File diff suppressed because it is too large
Load Diff
+35
-11
@@ -18,27 +18,51 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 2px dashed rgba(126, 220, 255, 0.5);
|
||||
border-radius: 10px;
|
||||
background: rgba(22, 24, 28, 0.85);
|
||||
transition: border-color 0.15s, background 0.15s;
|
||||
border: 1px dashed rgba(186, 208, 252, 0.62);
|
||||
border-radius: 8px;
|
||||
background: rgba(35, 35, 35, 0.94);
|
||||
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.025);
|
||||
transition: border-color 0.15s, background-color 0.15s, transform 0.15s;
|
||||
}
|
||||
.target.drag-over {
|
||||
border-color: rgba(126, 220, 255, 0.9);
|
||||
background: rgba(62, 167, 255, 0.15);
|
||||
border-color: #bad0fc;
|
||||
background: rgba(51, 52, 54, 0.98);
|
||||
transform: scale(0.98);
|
||||
}
|
||||
.icon {
|
||||
font-size: 64px;
|
||||
font-weight: 200;
|
||||
color: rgba(126, 220, 255, 0.7);
|
||||
line-height: 1;
|
||||
width: 54px;
|
||||
height: 54px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
border-radius: 8px;
|
||||
background: #2b2b2b;
|
||||
color: #bad0fc;
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
.icon svg {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
fill: none;
|
||||
stroke: currentColor;
|
||||
stroke-width: 1.65;
|
||||
stroke-linecap: round;
|
||||
stroke-linejoin: round;
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.target {
|
||||
transition: none;
|
||||
}
|
||||
.target.drag-over {
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="target" id="target">
|
||||
<div class="icon">+</div>
|
||||
<div class="icon" aria-hidden="true">
|
||||
<svg viewBox="0 0 24 24"><path d="M12 16V4m0 0L7.5 8.5M12 4l4.5 4.5M5 14v4.5A1.5 1.5 0 0 0 6.5 20h11a1.5 1.5 0 0 0 1.5-1.5V14"/></svg>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
const target = document.getElementById('target');
|
||||
|
||||
+267
-80
@@ -3,102 +3,225 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src 'self' 'unsafe-inline';">
|
||||
<meta name="theme-color" content="#0f0f0f">
|
||||
<title>Multi-Hoster-Upload</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<nav class="menu-bar" id="menuBar">
|
||||
<div class="menu-bar-item" data-menu="datei">
|
||||
<button class="menu-bar-trigger" data-menu-trigger="datei">Datei</button>
|
||||
<div class="menu-dropdown" data-menu-dropdown="datei" style="display:none">
|
||||
<button class="menu-dropdown-item" data-menu-action="add-files"><span>Dateien hinzufügen</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="add-folder"><span>Ordner hinzufügen</span></button>
|
||||
<div class="menu-separator"></div>
|
||||
<div class="menu-submenu" data-submenu="sicherung">
|
||||
<button class="menu-submenu-trigger">Sicherung</button>
|
||||
<div class="menu-submenu-dropdown" style="display:none">
|
||||
<button class="menu-dropdown-item" data-menu-action="backup-export"><span>Exportieren</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="backup-import"><span>Importieren</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="online-backup-create"><span>Online-Schlüssel erstellen</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="online-backup-restore"><span>Online-Schlüssel importieren</span></button>
|
||||
<svg class="icon-sprite" aria-hidden="true">
|
||||
<symbol id="icon-upload" viewBox="0 0 24 24"><path d="M12 16V4m0 0L7.5 8.5M12 4l4.5 4.5M5 14v4.5A1.5 1.5 0 0 0 6.5 20h11a1.5 1.5 0 0 0 1.5-1.5V14"/></symbol>
|
||||
<symbol id="icon-accounts" viewBox="0 0 24 24"><path d="M16.5 20v-1.5a4 4 0 0 0-4-4h-5a4 4 0 0 0-4 4V20M10 10.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Zm6-1a3 3 0 0 0 0-5.8m2.5 10.9a4 4 0 0 1 2 3.4v2"/></symbol>
|
||||
<symbol id="icon-settings" viewBox="0 0 24 24"><path d="M12 15.25A3.25 3.25 0 1 0 12 8.75a3.25 3.25 0 0 0 0 6.5Zm7.2-3.25c0-.5-.05-.98-.15-1.45l2.05-1.6-2-3.46-2.52 1a8.12 8.12 0 0 0-2.5-1.44L13.7 2.4h-4l-.38 2.65a8.12 8.12 0 0 0-2.5 1.44l-2.52-1-2 3.46 2.05 1.6a7.1 7.1 0 0 0 0 2.9l-2.05 1.6 2 3.46 2.52-1a8.12 8.12 0 0 0 2.5 1.44l.38 2.65h4l.38-2.65a8.12 8.12 0 0 0 2.5-1.44l2.52 1 2-3.46-2.05-1.6c.1-.47.15-.95.15-1.45Z"/></symbol>
|
||||
<symbol id="icon-history" viewBox="0 0 24 24"><path d="M4.25 7.75A9 9 0 1 1 3 12m1.25-4.25H8m-3.75 0V4M12 7.5V12l3 2"/></symbol>
|
||||
<symbol id="icon-menu" viewBox="0 0 24 24"><path d="M4 6h16M4 12h16M4 18h16"/></symbol>
|
||||
<symbol id="icon-sliders" viewBox="0 0 24 24"><path d="M4 7h10m4 0h2M4 17h2m4 0h10M14 4v6M10 14v6"/></symbol>
|
||||
<symbol id="icon-help" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M9.8 9a2.3 2.3 0 1 1 3.6 1.9c-.9.6-1.4 1.1-1.4 2.1m0 3.5h.01"/></symbol>
|
||||
<symbol id="icon-download" viewBox="0 0 24 24"><path d="M12 4v11m0 0 4-4m-4 4-4-4M5 19h14"/></symbol>
|
||||
<symbol id="icon-files" viewBox="0 0 24 24"><path d="M7 3h7l4 4v12a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm7 0v5h4M9 12h6m-6 4h6"/></symbol>
|
||||
<symbol id="icon-check" viewBox="0 0 24 24"><path d="m5 12 4 4L19 6"/></symbol>
|
||||
<symbol id="icon-clock" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></symbol>
|
||||
<symbol id="icon-alert" viewBox="0 0 24 24"><path d="M12 3 2.8 20h18.4L12 3Zm0 6v5m0 3h.01"/></symbol>
|
||||
<symbol id="icon-cloud" viewBox="0 0 24 24"><path d="M7.5 18H18a4 4 0 0 0 .5-7.97A6.5 6.5 0 0 0 6 8.5v.25A4.75 4.75 0 0 0 7.5 18Z"/></symbol>
|
||||
<symbol id="icon-close" viewBox="0 0 24 24"><path d="m6 6 12 12M18 6 6 18"/></symbol>
|
||||
</svg>
|
||||
|
||||
<header class="app-header">
|
||||
<div class="header-cluster header-primary">
|
||||
<div class="app-brand" aria-label="Multi-Hoster Upload">
|
||||
<img src="../assets/app_icon.png" alt="" class="app-brand-icon" width="24" height="24">
|
||||
<span class="app-brand-name">MULTI-HOSTER UPLOAD</span>
|
||||
</div>
|
||||
<span class="header-divider" aria-hidden="true"></span>
|
||||
<nav class="tab-bar" role="tablist" aria-label="Hauptbereiche">
|
||||
<button class="tab active" id="upload-tab" role="tab" aria-selected="true" aria-controls="upload-view" tabindex="0" data-view="upload" title="Upload">
|
||||
<svg class="top-nav-icon" aria-hidden="true"><use href="#icon-upload"></use></svg>
|
||||
<span class="top-nav-label">Upload</span>
|
||||
</button>
|
||||
<button class="tab" id="accounts-tab" role="tab" aria-selected="false" aria-controls="accounts-view" tabindex="-1" data-view="accounts" title="Accounts">
|
||||
<svg class="top-nav-icon" aria-hidden="true"><use href="#icon-accounts"></use></svg>
|
||||
<span class="top-nav-label">Accounts</span>
|
||||
</button>
|
||||
<button class="tab" id="settings-tab" role="tab" aria-selected="false" aria-controls="settings-view" tabindex="-1" data-view="settings" title="Einstellungen">
|
||||
<svg class="top-nav-icon" aria-hidden="true"><use href="#icon-settings"></use></svg>
|
||||
<span class="top-nav-label">Einstellungen</span>
|
||||
</button>
|
||||
<button class="tab" id="history-tab" role="tab" aria-selected="false" aria-controls="history-view" tabindex="-1" data-view="history" title="Verlauf">
|
||||
<svg class="top-nav-icon" aria-hidden="true"><use href="#icon-history"></use></svg>
|
||||
<span class="top-nav-label">Verlauf</span>
|
||||
</button>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="header-spacer" aria-hidden="true"></div>
|
||||
<div class="header-cluster header-utilities">
|
||||
<button class="header-update-button" id="headerUpdateBtn" title="Nach Aktualisierungen suchen" aria-label="Nach Aktualisierungen suchen" data-tooltip="Nach Aktualisierungen suchen">
|
||||
<svg class="header-action-icon" aria-hidden="true"><use href="#icon-download"></use></svg>
|
||||
<span class="header-update-label">Update</span>
|
||||
</button>
|
||||
<span class="header-divider" aria-hidden="true"></span>
|
||||
<nav class="menu-bar" id="menuBar" aria-label="Anwendungsmenüs">
|
||||
<div class="menu-bar-item" data-menu="datei">
|
||||
<button class="menu-bar-trigger" data-menu-trigger="datei" title="Datei" aria-label="Datei">
|
||||
<svg class="header-action-icon" aria-hidden="true"><use href="#icon-menu"></use></svg>
|
||||
<span class="menu-label">Datei</span>
|
||||
</button>
|
||||
<div class="menu-dropdown" data-menu-dropdown="datei" style="display:none">
|
||||
<button class="menu-dropdown-item" data-menu-action="add-files"><span>Dateien hinzufügen</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="add-folder"><span>Ordner hinzufügen</span></button>
|
||||
<div class="menu-separator"></div>
|
||||
<div class="menu-submenu" data-submenu="sicherung">
|
||||
<button class="menu-submenu-trigger">Sicherung</button>
|
||||
<div class="menu-submenu-dropdown" style="display:none">
|
||||
<button class="menu-dropdown-item" data-menu-action="backup-export"><span>Exportieren</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="backup-import"><span>Importieren</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="online-backup-create"><span>Online-Schlüssel erstellen</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="online-backup-restore"><span>Online-Schlüssel importieren</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-separator"></div>
|
||||
<button class="menu-dropdown-item" data-menu-action="restart"><span>Neustart</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="quit"><span>Beenden</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-separator"></div>
|
||||
<button class="menu-dropdown-item" data-menu-action="restart"><span>Neustart</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="quit"><span>Beenden</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-bar-item" data-menu="einstellungen">
|
||||
<button class="menu-bar-trigger" data-menu-trigger="einstellungen">Einstellungen</button>
|
||||
<div class="menu-dropdown" data-menu-dropdown="einstellungen" style="display:none">
|
||||
<button class="menu-dropdown-item" data-menu-action="open-settings"><span>Einstellungen öffnen</span></button>
|
||||
<div class="menu-separator"></div>
|
||||
<div class="menu-settings-grid" id="menuSettingsGrid">
|
||||
<span>Max. parallele Uploads</span>
|
||||
<span></span>
|
||||
<div class="menu-spinner">
|
||||
<input type="text" inputmode="numeric" id="menuParallelInput">
|
||||
<div class="menu-spinner-arrows">
|
||||
<button data-spin="parallel-up">▲</button>
|
||||
<button data-spin="parallel-down">▼</button>
|
||||
<div class="menu-bar-item" data-menu="einstellungen">
|
||||
<button class="menu-bar-trigger" data-menu-trigger="einstellungen" title="Schnelleinstellungen" aria-label="Schnelleinstellungen">
|
||||
<svg class="header-action-icon" aria-hidden="true"><use href="#icon-sliders"></use></svg>
|
||||
<span class="menu-label">Einstellungen</span>
|
||||
</button>
|
||||
<div class="menu-dropdown" data-menu-dropdown="einstellungen" style="display:none">
|
||||
<button class="menu-dropdown-item" data-menu-action="open-settings"><span>Einstellungen öffnen</span></button>
|
||||
<div class="menu-separator"></div>
|
||||
<div class="menu-settings-grid" id="menuSettingsGrid">
|
||||
<span>Max. parallele Uploads</span>
|
||||
<span></span>
|
||||
<div class="menu-spinner">
|
||||
<input type="text" inputmode="numeric" id="menuParallelInput" name="parallelUploads" autocomplete="off" aria-label="Maximale parallele Uploads">
|
||||
<div class="menu-spinner-arrows">
|
||||
<button data-spin="parallel-up" aria-label="Parallele Uploads erhöhen">▲</button>
|
||||
<button data-spin="parallel-down" aria-label="Parallele Uploads verringern">▼</button>
|
||||
</div>
|
||||
</div>
|
||||
<span></span>
|
||||
<span>Geschwindigkeitslimit</span>
|
||||
<input type="checkbox" id="menuSpeedLimitCheck" aria-label="Geschwindigkeitslimit aktivieren">
|
||||
<div class="menu-spinner" id="menuSpeedSpinner">
|
||||
<input type="text" inputmode="decimal" id="menuSpeedInput" name="speedLimit" autocomplete="off" aria-label="Geschwindigkeitslimit in Megabyte pro Sekunde">
|
||||
<div class="menu-spinner-arrows">
|
||||
<button data-spin="speed-up" aria-label="Geschwindigkeitslimit erhöhen">▲</button>
|
||||
<button data-spin="speed-down" aria-label="Geschwindigkeitslimit verringern">▼</button>
|
||||
</div>
|
||||
</div>
|
||||
<span class="menu-speed-unit">MB/s</span>
|
||||
</div>
|
||||
</div>
|
||||
<span></span>
|
||||
<span>Geschwindigkeitslimit</span>
|
||||
<input type="checkbox" id="menuSpeedLimitCheck">
|
||||
<div class="menu-spinner" id="menuSpeedSpinner">
|
||||
<input type="text" inputmode="decimal" id="menuSpeedInput">
|
||||
<div class="menu-spinner-arrows">
|
||||
<button data-spin="speed-up">▲</button>
|
||||
<button data-spin="speed-down">▼</button>
|
||||
</div>
|
||||
</div>
|
||||
<span class="menu-speed-unit">MB/s</span>
|
||||
</div>
|
||||
<div class="menu-bar-item" data-menu="hilfe">
|
||||
<button class="menu-bar-trigger" data-menu-trigger="hilfe" title="Hilfe und Support" aria-label="Hilfe und Support">
|
||||
<svg class="header-action-icon" aria-hidden="true"><use href="#icon-help"></use></svg>
|
||||
<span class="menu-label">Hilfe</span>
|
||||
</button>
|
||||
<div class="menu-dropdown" data-menu-dropdown="hilfe" style="display:none">
|
||||
<button class="menu-dropdown-item" data-menu-action="open-log-folder"><span>Log-Ordner öffnen</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="support-bundle"><span>Diagnose-Paket exportieren</span></button>
|
||||
<div class="menu-separator"></div>
|
||||
<button class="menu-dropdown-item" data-menu-action="check-updates"><span>Suche Aktualisierungen</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="version-badge" title="Installierte Version">
|
||||
<span class="version-monogram" aria-hidden="true">U</span>
|
||||
<span class="version-label" id="versionLabel"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-bar-item" data-menu="hilfe">
|
||||
<button class="menu-bar-trigger" data-menu-trigger="hilfe">Hilfe</button>
|
||||
<div class="menu-dropdown" data-menu-dropdown="hilfe" style="display:none">
|
||||
<button class="menu-dropdown-item" data-menu-action="open-log-folder"><span>Log-Ordner öffnen</span></button>
|
||||
<button class="menu-dropdown-item" data-menu-action="support-bundle"><span>Diagnose-Paket exportieren</span></button>
|
||||
<div class="menu-separator"></div>
|
||||
<button class="menu-dropdown-item" data-menu-action="check-updates"><span>Suche Aktualisierungen</span></button>
|
||||
</header>
|
||||
|
||||
<div id="updateBanner" class="update-overlay" style="display:none" aria-hidden="true">
|
||||
<section class="update-dialog" role="dialog" aria-modal="true" aria-labelledby="updateDialogTitle" aria-describedby="updateMessage" tabindex="-1">
|
||||
<button class="update-close-button" id="updateCloseBtn" aria-label="Schließen">
|
||||
<svg aria-hidden="true"><use href="#icon-close"></use></svg>
|
||||
</button>
|
||||
<div class="update-dialog-icon" aria-hidden="true">
|
||||
<svg><use href="#icon-download"></use></svg>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<nav class="tab-bar" role="tablist" aria-label="Hauptbereiche">
|
||||
<button class="tab active" id="upload-tab" role="tab" aria-selected="true" aria-controls="upload-view" tabindex="0" data-view="upload">Upload</button>
|
||||
<button class="tab" id="accounts-tab" role="tab" aria-selected="false" aria-controls="accounts-view" tabindex="-1" data-view="accounts">Accounts</button>
|
||||
<button class="tab" id="settings-tab" role="tab" aria-selected="false" aria-controls="settings-view" tabindex="-1" data-view="settings">Einstellungen</button>
|
||||
<button class="tab" id="history-tab" role="tab" aria-selected="false" aria-controls="history-view" tabindex="-1" data-view="history">Verlauf</button>
|
||||
<span class="version-label" id="versionLabel"></span>
|
||||
</nav>
|
||||
|
||||
<div id="updateBanner" class="update-banner" style="display:none">
|
||||
<span id="updateMessage"></span>
|
||||
<button class="btn btn-sm btn-primary" id="installUpdateBtn">Update installieren</button>
|
||||
<button class="btn btn-sm btn-secondary" id="dismissUpdateBtn">×</button>
|
||||
<div class="update-dialog-copy">
|
||||
<h2 id="updateDialogTitle">Eine neue Version ist verfügbar</h2>
|
||||
<p id="updateMessage"></p>
|
||||
</div>
|
||||
<div class="update-release-notes" id="updateReleaseNotes" hidden></div>
|
||||
<div class="update-progress" aria-live="polite">
|
||||
<div class="update-progress-track"><span id="updateProgressBar" role="progressbar" aria-label="Update-Fortschritt" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" aria-valuetext="0%"></span></div>
|
||||
<span id="updateProgressText"></span>
|
||||
</div>
|
||||
<div class="update-dialog-actions">
|
||||
<button class="btn btn-secondary" id="dismissUpdateBtn">Später erinnern</button>
|
||||
<button class="btn btn-primary" id="installUpdateBtn">Jetzt updaten</button>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div id="upload-view" class="view active" role="tabpanel" aria-labelledby="upload-tab">
|
||||
<div class="upload-toolbar">
|
||||
<aside class="view-sidebar" aria-label="Upload-Übersicht">
|
||||
<div class="view-sidebar-header">
|
||||
<span class="view-sidebar-kicker">Arbeitsbereich</span>
|
||||
<h1 class="view-sidebar-title">Uploads</h1>
|
||||
</div>
|
||||
<nav class="view-sidebar-navigation" aria-label="Upload-Status">
|
||||
<button class="view-sidebar-item active" data-upload-sidebar-target="all" aria-label="Alle Dateien anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-files"></use></svg>
|
||||
<span class="view-sidebar-copy">Alle Dateien</span>
|
||||
<span class="view-sidebar-badge" id="uploadSidebarAllCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-upload-sidebar-target="active" aria-label="Aktive Uploads anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-upload"></use></svg>
|
||||
<span class="view-sidebar-copy">Aktiv</span>
|
||||
<span class="view-sidebar-badge" id="uploadSidebarActiveCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-upload-sidebar-target="waiting" aria-label="Wartende Uploads anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-clock"></use></svg>
|
||||
<span class="view-sidebar-copy">Warteschlange</span>
|
||||
<span class="view-sidebar-badge" id="uploadSidebarWaitingCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-upload-sidebar-target="done" aria-label="Fertige Uploads anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-check"></use></svg>
|
||||
<span class="view-sidebar-copy">Fertig</span>
|
||||
<span class="view-sidebar-badge" id="uploadSidebarDoneCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-upload-sidebar-target="error" aria-label="Fehlgeschlagene Uploads anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-alert"></use></svg>
|
||||
<span class="view-sidebar-copy">Fehler</span>
|
||||
<span class="view-sidebar-badge" id="uploadSidebarErrorCount">0</span>
|
||||
</button>
|
||||
</nav>
|
||||
<div class="view-sidebar-section">
|
||||
<span class="view-sidebar-section-label">Verfügbarkeit</span>
|
||||
<div class="view-sidebar-summary">
|
||||
<span>Bereite Accounts</span>
|
||||
<strong id="uploadSidebarAccountsCount">0</strong>
|
||||
</div>
|
||||
<div class="view-sidebar-summary view-sidebar-summary-block hoster-summary" id="hosterSummary">Keine Upload-Ziele ausgewählt</div>
|
||||
</div>
|
||||
<div class="view-sidebar-footnote">Dateien ablegen, Ziele wählen und Uploads zentral steuern.</div>
|
||||
</aside>
|
||||
<main class="view-main upload-main">
|
||||
<div class="upload-toolbar">
|
||||
<div class="toolbar-left">
|
||||
<span class="hoster-summary" id="hosterSummary" style="display:none"></span>
|
||||
<div class="page-heading">
|
||||
<h2>Upload-Aufträge</h2>
|
||||
<p>Dateien hinzufügen, Ziele auswählen und Fortschritt verfolgen</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="toolbar-right">
|
||||
<button class="btn btn-xs btn-primary" id="addFilesBtn">+ Dateien</button>
|
||||
<button class="btn btn-xs btn-secondary" id="addFolderBtn">+ Ordner</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="upload-workspace">
|
||||
<div class="drop-zone" id="dropZone">
|
||||
<div class="drop-icon">📁</div>
|
||||
<p>Dateien hierher ziehen oder klicken</p>
|
||||
</div>
|
||||
|
||||
<div class="upload-workspace">
|
||||
<div class="drop-zone" id="dropZone">
|
||||
<div class="drop-icon" aria-hidden="true"><svg><use href="#icon-cloud"></use></svg></div>
|
||||
<p>Dateien hierher ziehen oder klicken</p>
|
||||
<span>Dateien und Ordner werden vor dem Upload geprüft.</span>
|
||||
</div>
|
||||
|
||||
<div class="queue-shell" id="queueShell" style="display:none">
|
||||
<div class="queue-command-bar" id="queueCommandBar">
|
||||
<button class="toolbar-btn" id="startUploadBtn" title="Alle Uploads starten" aria-label="Alle Uploads starten" disabled>
|
||||
@@ -217,12 +340,46 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div id="accounts-view" class="view" role="tabpanel" aria-labelledby="accounts-tab">
|
||||
<div class="accounts-container">
|
||||
<aside class="view-sidebar" aria-label="Account-Übersicht">
|
||||
<div class="view-sidebar-header">
|
||||
<span class="view-sidebar-kicker">Zugänge</span>
|
||||
<h1 class="view-sidebar-title">Accounts</h1>
|
||||
</div>
|
||||
<nav class="view-sidebar-navigation" aria-label="Account-Status">
|
||||
<button class="view-sidebar-item active" data-accounts-sidebar-filter="all" aria-label="Alle Accounts anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-accounts"></use></svg>
|
||||
<span class="view-sidebar-copy">Alle Accounts</span>
|
||||
<span class="view-sidebar-badge" id="accountsSidebarAllCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-accounts-sidebar-filter="ready" aria-label="Bereite Accounts anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-check"></use></svg>
|
||||
<span class="view-sidebar-copy">Bereit</span>
|
||||
<span class="view-sidebar-badge" id="accountsSidebarReadyCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-accounts-sidebar-filter="warning" aria-label="Accounts mit Handlungsbedarf anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-clock"></use></svg>
|
||||
<span class="view-sidebar-copy">Aktion nötig</span>
|
||||
<span class="view-sidebar-badge" id="accountsSidebarWarningCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-accounts-sidebar-filter="error" aria-label="Fehlerhafte Accounts anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-alert"></use></svg>
|
||||
<span class="view-sidebar-copy">Fehler</span>
|
||||
<span class="view-sidebar-badge" id="accountsSidebarErrorCount">0</span>
|
||||
</button>
|
||||
</nav>
|
||||
<div class="view-sidebar-section view-sidebar-hoster-section">
|
||||
<span class="view-sidebar-section-label">Hoster</span>
|
||||
<div class="view-sidebar-hosters" id="accountsSidebarHosters"></div>
|
||||
</div>
|
||||
<div class="view-sidebar-footnote">Zugänge prüfen, priorisieren und für Uploads bereitstellen.</div>
|
||||
</aside>
|
||||
<main class="accounts-container view-main accounts-main">
|
||||
<div class="accounts-header">
|
||||
<div>
|
||||
<h2>Accounts</h2>
|
||||
@@ -242,7 +399,7 @@
|
||||
<div class="accounts-list-footer" id="accountsListFooter" style="display:none">
|
||||
<button class="btn btn-secondary" id="toggleAllAccountsBtn">Alle ausklappen</button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div class="modal-overlay" id="accountModal" style="display:none">
|
||||
@@ -313,7 +470,6 @@
|
||||
<p class="settings-hint">Alle Optionen nach Aufgaben sortiert. Änderungen werden automatisch gespeichert.</p>
|
||||
</div>
|
||||
<div class="settings-save-row">
|
||||
<span class="save-feedback" id="saveFeedback">Automatisch gespeichert</span>
|
||||
<button class="btn btn-secondary" id="saveSettingsBtn">Jetzt speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -322,10 +478,41 @@
|
||||
</div>
|
||||
|
||||
<div id="history-view" class="view" role="tabpanel" aria-labelledby="history-tab">
|
||||
<div class="history-container">
|
||||
<aside class="view-sidebar" aria-label="Verlaufsübersicht">
|
||||
<div class="view-sidebar-header">
|
||||
<span class="view-sidebar-kicker">Archiv</span>
|
||||
<h1 class="view-sidebar-title">Verlauf</h1>
|
||||
</div>
|
||||
<nav class="view-sidebar-navigation" aria-label="Verlaufsstatus">
|
||||
<button class="view-sidebar-item active" data-history-filter="all" aria-label="Gesamten Verlauf anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-history"></use></svg>
|
||||
<span class="view-sidebar-copy">Alle Uploads</span>
|
||||
<span class="view-sidebar-badge" id="historySidebarAllCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-history-filter="success" aria-label="Erfolgreiche Uploads anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-check"></use></svg>
|
||||
<span class="view-sidebar-copy">Erfolgreich</span>
|
||||
<span class="view-sidebar-badge" id="historySidebarSuccessCount">0</span>
|
||||
</button>
|
||||
<button class="view-sidebar-item" data-history-filter="error" aria-label="Fehlgeschlagene Uploads anzeigen">
|
||||
<svg class="view-sidebar-icon" aria-hidden="true"><use href="#icon-alert"></use></svg>
|
||||
<span class="view-sidebar-copy">Fehler</span>
|
||||
<span class="view-sidebar-badge" id="historySidebarErrorCount">0</span>
|
||||
</button>
|
||||
</nav>
|
||||
<div class="view-sidebar-section">
|
||||
<span class="view-sidebar-section-label">Aufbewahrung</span>
|
||||
<div class="view-sidebar-summary">
|
||||
<span>Aktive Regel</span>
|
||||
<strong id="historySidebarRetention">Alles behalten</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="view-sidebar-footnote">Links wiederfinden, kopieren oder als Datei exportieren.</div>
|
||||
</aside>
|
||||
<main class="history-container view-main history-main">
|
||||
<div class="history-header">
|
||||
<h2>Upload-Verlauf</h2>
|
||||
<div style="display:flex; gap:8px; align-items:center">
|
||||
<div class="history-header-actions">
|
||||
<label for="historyRetentionSelect" class="history-retention-label">Aufbewahrung</label>
|
||||
<select id="historyRetentionSelect" class="key-input history-retention-select">
|
||||
<option value="all">Alles behalten</option>
|
||||
@@ -341,7 +528,7 @@
|
||||
</div>
|
||||
<div id="historyCapNotice" class="history-cap-notice" style="display:none"></div>
|
||||
<div id="historyContainer"></div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div class="context-menu" id="contextMenu" style="display:none">
|
||||
|
||||
+1628
-23
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user