diff --git a/backend/00-router.go b/backend/00-router.go index 12b4c14..1b88052 100644 --- a/backend/00-router.go +++ b/backend/00-router.go @@ -55,9 +55,9 @@ func renderShell(w http.ResponseWriter, active, readingPane string) { fmt.Fprintf(w, ` Mail-Graveyard - + - +
@@ -74,7 +74,7 @@ func renderShell(w http.ResponseWriter, active, readingPane string) { Archiv-Boxen Import/Export Konten-Verwaltung - Archiv-mbox Verwaltung + Archiv-mbox Verwaltung Mail-Transfer Einstellungen @@ -295,9 +295,9 @@ func renderAccountsPage(w http.ResponseWriter, accounts []Account, edit Account, fmt.Fprintf(w, ` Konten-Verwaltung - Mail-Graveyard - + - +
@@ -314,7 +314,7 @@ func renderAccountsPage(w http.ResponseWriter, accounts []Account, edit Account, Archiv-Boxen Import/Export Konten-Verwaltung - Archiv-mbox Verwaltung + Archiv-mbox Verwaltung Mail-Transfer Einstellungen @@ -338,9 +338,9 @@ func renderArchivesPage(w http.ResponseWriter, archives []string, accounts []Acc fmt.Fprintf(w, ` Archiv-mbox Verwaltung - Mail-Graveyard - + - +
@@ -357,7 +357,7 @@ func renderArchivesPage(w http.ResponseWriter, archives []string, accounts []Acc Archiv-Boxen Import/Export Konten-Verwaltung - Archiv-mbox Verwaltung + Archiv-mbox Verwaltung Mail-Transfer Einstellungen @@ -369,9 +369,11 @@ func renderArchivesPage(w http.ResponseWriter, archives []string, accounts []Acc if errMsg != "" { fmt.Fprintf(w, `
%s
`, html.EscapeString(errMsg)) } - fmt.Fprint(w, `
Archiv-mbox Verwaltung
`) - renderArchiveManager(w, archives, accounts) - fmt.Fprint(w, `
bereit
`) + fmt.Fprint(w, `
Archiv-mboxen
`) + renderArchiveList(w, archives, accounts) + fmt.Fprint(w, `
Archiv-mbox anlegen
`) + renderArchiveForm(w) + fmt.Fprint(w, `
bereit
`) } func renderAccountsTable(w http.ResponseWriter, accounts []Account, editName string) { @@ -401,13 +403,9 @@ func renderAccountsTable(w http.ResponseWriter, accounts []Account, editName str fmt.Fprint(w, ``) } -func renderArchiveManager(w http.ResponseWriter, archives []string, accounts []Account) { - fmt.Fprint(w, `
- - -
`) +func renderArchiveList(w http.ResponseWriter, archives []string, accounts []Account) { if len(archives) == 0 { - fmt.Fprint(w, `
Noch keine Archiv-Mailbox angelegt.
`) + fmt.Fprint(w, `
Noch keine Archiv-Mailbox angelegt.
`) return } fmt.Fprint(w, ``) @@ -420,7 +418,19 @@ func renderArchiveManager(w http.ResponseWriter, archives []string, accounts []A } fmt.Fprintf(w, ``, html.EscapeString(archive), html.EscapeString(uses), action) } - fmt.Fprint(w, `
Archiv-MailboxZuordnung
%s%s%s
`) + fmt.Fprint(w, ``) +} + +func renderArchiveForm(w http.ResponseWriter) { + fmt.Fprint(w, `
+ + +
+
+
Schutzlogik
+

Archiv-mboxen werden als lokale Ordner unter dem Backup-Root angelegt.

+

Entfernen ist nur moeglich, wenn die Mailbox keinem Konto zugeordnet und leer ist.

+
`) } func renderAccountForm(w http.ResponseWriter, a Account, archives []string) { diff --git a/frontend-js/dist/style.css b/frontend-js/dist/style.css index ef3e12c..d824577 100644 --- a/frontend-js/dist/style.css +++ b/frontend-js/dist/style.css @@ -120,10 +120,6 @@ body.ol2013 { color: var(--ol-blue); border-left-color: #fff; } -.backstage-item.sub { - padding-left: 38px; - font-size: 12px; -} .backstage-shade { position: fixed; inset: 44px 0 22px 0; @@ -356,9 +352,18 @@ a.tree-node { display: block; color: inherit; text-decoration: none; } background: #fff; } .archive-page-layout { - max-width: 900px; + display: grid; + grid-template-columns: minmax(520px, 1fr) minmax(360px, 460px); min-height: 100%; +} +.archive-list-panel, +.archive-form-panel { + min-width: 0; border-right: 1px solid var(--ol-border); + background: #fff; +} +.archive-form-panel { + border-right: 0; } .account-table { width: 100%; @@ -441,16 +446,6 @@ a.tree-node { display: block; color: inherit; text-decoration: none; } } .form-actions a { text-decoration: none; } .btn.danger { color: #8a1f11; } -.archive-manager { - padding: 12px; - border-bottom: 1px solid var(--ol-border); -} -.archive-create { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - gap: 8px; - margin: 0 0 10px; -} .archive-table { width: 100%; border-collapse: collapse; @@ -475,6 +470,27 @@ a.tree-node { display: block; color: inherit; text-decoration: none; } text-align: right; } .archive-action form { margin: 0; } +.archive-create-panel { + display: grid; + gap: 12px; + padding: 14px; + border-bottom: 1px solid var(--ol-border); +} +.archive-create-panel .btn { + justify-self: start; +} +.archive-help { + padding: 14px; + color: var(--ol-muted); + line-height: 1.45; +} +.archive-help p { + margin: 8px 0 0; +} +.archive-help-title { + color: var(--ol-blue-dark); + font-weight: 700; +} .muted { color: var(--ol-muted); } /* Statusleiste */ @@ -510,6 +526,7 @@ a.tree-node { display: block; color: inherit; text-decoration: none; } .pane-target { grid-column: auto; } .searchbar { top: 30px; } .account-layout, + .archive-page-layout, .form-columns, .form-section { grid-template-columns: 1fr;