Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbe68b16c9 |
38
CLAUDE.md
38
CLAUDE.md
@@ -1051,6 +1051,44 @@ wie die Formular-Abschnitte angehoben (600/1rem statt 500/0.9375rem) —
|
||||
für eine einheitliche Überschriften-Hierarchie statt Zufallsgrößen je
|
||||
nach UA-Stylesheet.
|
||||
|
||||
**Endgültige Korrektur — `fieldset`/`legend` durch echte Überschriften
|
||||
ersetzt (2026-09-01):** die obige "Nachbesserung" war ein Pflaster auf
|
||||
dem eigentlichen Problem, nicht die Ursache behoben — sie kam prompt
|
||||
wieder zum Vorschein, sobald eine neue `.form-section`-Seite entstand
|
||||
(Betreiber-Firmenanlage), und der Nutzer wies zu Recht darauf hin, dass
|
||||
das "immer wieder derselbe Fehler" sei. Der eigentliche Grund:
|
||||
`<legend>` positioniert sich **laut Spezifikation immer** auf der
|
||||
oberen Rahmenlinie seines `<fieldset>` — das ist seine definierte
|
||||
Funktion (die Box zu betiteln) und lässt sich durch kein Padding/keine
|
||||
Breite aufheben, nur kaschieren. `.form-section` ist deshalb jetzt ein
|
||||
`<div>` (kein `<fieldset>` mehr), die Überschrift ein normales `<h3
|
||||
class="form-section-title">` — verhält sich wie jede andere Überschrift,
|
||||
volle CSS-Kontrolle, keine Sonderregeln. Betrifft alle neun Vorlagen,
|
||||
die das Muster nutzen (`register.html`, `betreiber_account_neu.html`,
|
||||
`firmendaten.html`, `login.html`, `loeschfristen_liste.html`,
|
||||
`genehmiger_rollen_liste.html`, `freigabe_regeln_liste.html`,
|
||||
`email_vorlage_bearbeiten.html`, `betreiber_werkzeug_form.html`).
|
||||
`antrag_neu.html` (der Fragebogen) bleibt bewusst unverändert — dessen
|
||||
`fieldset`/`legend` sind einfache, nicht-kartierte Elemente ohne
|
||||
Rahmen-Konflikt, an eine bereits getestete `:has()`-Adaptivlogik
|
||||
(Folgefragen ein-/ausblenden) gekoppelt; ein Umbau hätte unnötiges
|
||||
Risiko für rein kosmetischen Gewinn bedeutet, da dort gar kein
|
||||
sichtbarer Rahmen existiert, mit dem die Legend kollidieren könnte.
|
||||
|
||||
**Restliche unstyled Formulare auf dasselbe Muster gehoben
|
||||
(2026-09-01):** `passwort_vergessen.html`, `passwort_zuruecksetzen.html`,
|
||||
`einladung.html`, `nutzer_neu.html` (Rollenauswahl jetzt `.chip-group`
|
||||
statt nacktem `fieldset`), `nutzer_import.html`, `abteilung_liste.html`
|
||||
(Anlegen-Formular), `betreiber_account_detail.html` (Umbenennen-
|
||||
Formular), sowie der komplette "Entscheiden"-Bereich in
|
||||
`fall_detail.html` (Entscheidung jetzt `.chip-group` statt nacktem
|
||||
`fieldset`) — alle jetzt `.form-card`/`.form-section`/`.form-grid`
|
||||
statt roher `<label>`+`<input>`-Ketten. Explizit **nicht** angefasst:
|
||||
`antrag_neu.html` (siehe oben), sowie reine Listen-Aktionsformulare
|
||||
(Filter, Löschen-/Aktivieren-Buttons in `.beitraege-liste`-Zeilen) —
|
||||
die haben ihr eigenes, bereits passendes CSS-Muster und keinen
|
||||
Formular-Charakter im hier gemeinten Sinn.
|
||||
|
||||
**enconf-Patterns übertragen (2026-08-31):** enconf (Schwesterprojekt)
|
||||
ist React + Ant Design (`ProTable`/`StatCard`/`PageHeader`-Komponenten)
|
||||
— nicht 1:1 übernehmbar, da Deklarix bewusst kein SPA ist, aber die
|
||||
|
||||
@@ -582,6 +582,16 @@ button.entfernen {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* form-section ist bewusst ein <div>, kein <fieldset> — <legend>
|
||||
positioniert sich per Spezifikation IMMER auf der oberen Rahmenlinie
|
||||
des <fieldset> (das ist seine ganze Funktion: die Box zu betiteln),
|
||||
das lässt sich nicht per CSS aufheben, nur mit fragilen Hacks
|
||||
kaschieren (padding/Breite anpassen ändert nichts an der
|
||||
Border-Überlappung selbst — genau das führte zu einer bereits einmal
|
||||
"reparierten" Überschrift, die nach der nächsten neuen Seite wieder
|
||||
zu klein/zu randnah aussah). Eine echte Übersicht (.form-section-title)
|
||||
verhält sich wie jede normale Überschrift: volle CSS-Kontrolle, keine
|
||||
browserseitigen Sonderregeln. */
|
||||
.form-section {
|
||||
border: none;
|
||||
margin: 0;
|
||||
@@ -593,16 +603,11 @@ button.entfernen {
|
||||
border-top: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
/* <legend> ignoriert das padding des umschließenden <fieldset> (es
|
||||
positioniert sich an dessen Border-Box, nicht an der Padding-Box) —
|
||||
ohne eigenes padding-left säße die Abschnittsüberschrift bündig am
|
||||
Kartenrand, während der restliche Inhalt eingerückt ist. */
|
||||
.form-section > legend {
|
||||
padding: 0 0 16px 0;
|
||||
.form-section-title {
|
||||
margin: 0 0 16px 0;
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 700;
|
||||
color: var(--color-heading);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form-grid {
|
||||
|
||||
@@ -25,12 +25,22 @@
|
||||
{{end}}
|
||||
</ul>
|
||||
{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/verwaltung/abteilungen">
|
||||
<label for="name">Neue Abteilung</label>
|
||||
<input type="text" id="name" name="name" required>
|
||||
<button type="submit">Anlegen</button>
|
||||
<div class="form-section">
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="name">Neue Abteilung</label>
|
||||
<input type="text" id="name" name="name" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Anlegen</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{{end}}
|
||||
|
||||
@@ -8,11 +8,21 @@
|
||||
<h1>{{.Name}}</h1>
|
||||
<p class="hinweis">Angelegt am {{.CreatedAt}}</p>
|
||||
|
||||
<div class="form-card">
|
||||
<form method="post" action="/betreiber/accounts/{{.AccountID}}/umbenennen">
|
||||
<label for="name">Firmenname</label>
|
||||
<input type="text" id="name" name="name" value="{{.Name}}" required>
|
||||
<button type="submit">Umbenennen</button>
|
||||
<div class="form-section">
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="name">Firmenname</label>
|
||||
<input type="text" id="name" name="name" value="{{.Name}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Umbenennen</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<h2>Nutzer</h2>
|
||||
<ul class="beteiligte">
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/betreiber/accounts">
|
||||
<fieldset class="form-section">
|
||||
<legend>Firma</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Firma</h3>
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label for="account_name">Firmenname</label>
|
||||
@@ -37,9 +37,9 @@
|
||||
<input type="text" id="land" name="land" value="Deutschland" required>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-section">
|
||||
<legend>Abrechnung</legend>
|
||||
</div>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Abrechnung</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="rechnungsemail">Rechnungsemail</label>
|
||||
@@ -50,9 +50,9 @@
|
||||
<input type="text" id="ust_id" name="ust_id" placeholder="z. B. DE123456789">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-section">
|
||||
<legend>Erster Nutzer (wird Admin)</legend>
|
||||
</div>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Erster Nutzer (wird Admin)</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="email">E-Mail</label>
|
||||
@@ -63,7 +63,7 @@
|
||||
<input type="password" id="password" name="password" minlength="8" required>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Firma anlegen</button>
|
||||
</div>
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="{{if .ID}}{{.ActionBase}}/{{.ID}}{{else}}{{.ActionBase}}{{end}}">
|
||||
<fieldset class="form-section">
|
||||
<legend>Grunddaten</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Grunddaten</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="name">Name</label>
|
||||
@@ -35,10 +35,10 @@
|
||||
<p class="hinweis">Tatsächliche Länder benennen, nicht "EU"/"Drittland" — die USA sind DSGVO-rechtlich bereits ein Drittland wie jedes andere.</p>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<fieldset class="form-section">
|
||||
<legend>Rechtliches & Datenschutz</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Rechtliches & Datenschutz</h3>
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label>Zusicherungen</label>
|
||||
@@ -66,10 +66,10 @@
|
||||
<input type="text" id="subprozessoren" name="subprozessoren" value="{{.Subprozessoren}}">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<fieldset class="form-section">
|
||||
<legend>Einsatzbereich</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Einsatzbereich</h3>
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label>Geeignete Zwecke</label>
|
||||
@@ -84,10 +84,10 @@
|
||||
<input type="text" id="einschraenkungen" name="einschraenkungen" value="{{.Einschraenkungen}}">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<fieldset class="form-section">
|
||||
<legend>Beleg</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Beleg</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="letzte_pruefung">Letzte Prüfung</label>
|
||||
@@ -98,7 +98,7 @@
|
||||
<input type="text" id="quelle" name="quelle" value="{{.Quelle}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<button type="submit">Speichern</button>
|
||||
|
||||
@@ -6,15 +6,25 @@
|
||||
<h1>Einladung annehmen</h1>
|
||||
<p class="hinweis">Sie treten dem Konto von <strong>{{.Firmenname}}</strong> bei.</p>
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post">
|
||||
<label for="email">E-Mail</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
|
||||
<label for="password">Passwort (mind. 8 Zeichen)</label>
|
||||
<input type="password" id="password" name="password" minlength="8" required>
|
||||
|
||||
<button type="submit">Konto anlegen</button>
|
||||
<div class="form-section">
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="email">E-Mail</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
</div>
|
||||
<div>
|
||||
<label for="password">Passwort (mind. 8 Zeichen)</label>
|
||||
<input type="password" id="password" name="password" minlength="8" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Konto anlegen</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<p><a href="/login">Schon ein Konto? Anmelden</a></p>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
{{if .Gespeichert}}<p class="hinweis">Gespeichert.</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="{{.ActionBase}}/{{.Typ}}">
|
||||
<fieldset class="form-section">
|
||||
<legend>{{.Label}}{{if .IstUebersteuert}} <span class="hinweis">(eigene Vorlage)</span>{{else if eq .ActionBase "/verwaltung/email-vorlagen"}} <span class="hinweis">(Plattform-Standard, nicht angepasst)</span>{{end}}</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">{{.Label}}{{if .IstUebersteuert}} <span class="hinweis">(eigene Vorlage)</span>{{else if eq .ActionBase "/verwaltung/email-vorlagen"}} <span class="hinweis">(Plattform-Standard, nicht angepasst)</span>{{end}}</h3>
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label for="betreff">Betreff</label>
|
||||
@@ -30,7 +30,7 @@
|
||||
<textarea id="text" name="text" rows="10" required>{{.Text}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Speichern</button>
|
||||
</div>
|
||||
|
||||
@@ -53,30 +53,39 @@
|
||||
{{else if .CanEntscheiden}}
|
||||
<h2>Entscheiden</h2>
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/faelle/{{.ID}}/entscheiden">
|
||||
<fieldset>
|
||||
<legend>Entscheidung</legend>
|
||||
<label><input type="radio" name="entscheidung" value="genehmigt" required> Genehmigt</label>
|
||||
<label><input type="radio" name="entscheidung" value="genehmigt_mit_auflagen"> Genehmigt mit Auflagen</label>
|
||||
<label><input type="radio" name="entscheidung" value="abgelehnt"> Abgelehnt</label>
|
||||
<label><input type="radio" name="entscheidung" value="rueckfrage"> Rückfrage</label>
|
||||
</fieldset>
|
||||
|
||||
{{if .WerkzeugOptionen}}
|
||||
<label>Werkzeug (bei Genehmigung erforderlich)
|
||||
<select name="werkzeug_id">
|
||||
<option value="">— auswählen —</option>
|
||||
{{range .WerkzeugOptionen}}<option value="{{.ID}}">{{.Name}}</option>{{end}}
|
||||
</select>
|
||||
</label>
|
||||
{{end}}
|
||||
|
||||
<label>Begründung (Pflicht bei Abweichung vom Vorschlag)
|
||||
<textarea name="begruendung" rows="3"></textarea>
|
||||
</label>
|
||||
|
||||
<button type="submit">Entscheidung speichern</button>
|
||||
<div class="form-section">
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label>Entscheidung</label>
|
||||
<div class="chip-group">
|
||||
<label><input type="radio" name="entscheidung" value="genehmigt" required> Genehmigt</label>
|
||||
<label><input type="radio" name="entscheidung" value="genehmigt_mit_auflagen"> Genehmigt mit Auflagen</label>
|
||||
<label><input type="radio" name="entscheidung" value="abgelehnt"> Abgelehnt</label>
|
||||
<label><input type="radio" name="entscheidung" value="rueckfrage"> Rückfrage</label>
|
||||
</div>
|
||||
</div>
|
||||
{{if .WerkzeugOptionen}}
|
||||
<div class="form-full">
|
||||
<label for="werkzeug_id">Werkzeug (bei Genehmigung erforderlich)</label>
|
||||
<select id="werkzeug_id" name="werkzeug_id">
|
||||
<option value="">— auswählen —</option>
|
||||
{{range .WerkzeugOptionen}}<option value="{{.ID}}">{{.Name}}</option>{{end}}
|
||||
</select>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="form-full">
|
||||
<label for="begruendung">Begründung (Pflicht bei Abweichung vom Vorschlag)</label>
|
||||
<textarea id="begruendung" name="begruendung" rows="3"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Entscheidung speichern</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{{else}}
|
||||
<p class="hinweis">Noch keine Entscheidung getroffen. Nur die Rolle "Verantwortlicher" kann entscheiden.</p>
|
||||
{{end}}
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
{{if .Gespeichert}}<p class="hinweis">Gespeichert.</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/verwaltung/firma">
|
||||
<fieldset class="form-section">
|
||||
<legend>Firma</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Firma</h3>
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label for="account_name">Firmenname</label>
|
||||
@@ -38,9 +38,9 @@
|
||||
<input type="text" id="land" name="land" value="{{.Land}}" required>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-section">
|
||||
<legend>Abrechnung</legend>
|
||||
</div>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Abrechnung</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="rechnungsemail">Rechnungsemail</label>
|
||||
@@ -51,7 +51,7 @@
|
||||
<input type="text" id="ust_id" name="ust_id" value="{{.UStID}}" placeholder="z. B. DE123456789">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Speichern</button>
|
||||
</div>
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
{{else}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/verwaltung/freigabe-regeln">
|
||||
<fieldset class="form-section">
|
||||
<legend>Neue Freigabe-Regel</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Neue Freigabe-Regel</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="bedingung">Bedingung</label>
|
||||
@@ -55,7 +55,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Anlegen</button>
|
||||
</div>
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
|
||||
<div class="form-card">
|
||||
<form method="post" action="/verwaltung/genehmiger-rollen">
|
||||
<fieldset class="form-section">
|
||||
<legend>Neue Genehmiger-Rolle</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Neue Genehmiger-Rolle</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="name">Name</label>
|
||||
@@ -32,7 +32,7 @@
|
||||
<input type="text" id="beschreibung" name="beschreibung" placeholder="z. B. Prüft den Antrag aus Sicherheitssicht">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Anlegen</button>
|
||||
</div>
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
{{if .Gespeichert}}<p class="hinweis">Löschfristen gespeichert.</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/verwaltung/loeschfristen">
|
||||
<fieldset class="form-section">
|
||||
<legend>Maximale Aufbewahrungsdauer (Tage)</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Maximale Aufbewahrungsdauer (Tage)</h3>
|
||||
<div class="form-grid">
|
||||
{{range .Zeilen}}
|
||||
<div>
|
||||
@@ -31,7 +31,7 @@
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Speichern</button>
|
||||
</div>
|
||||
|
||||
@@ -6,15 +6,26 @@
|
||||
<h1>Anmelden</h1>
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
{{if .Message}}<p class="hinweis">{{.Message}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/login">
|
||||
<label for="email">E-Mail</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
|
||||
<label for="password">Passwort</label>
|
||||
<input type="password" id="password" name="password" required>
|
||||
|
||||
<button type="submit">Anmelden</button>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Anmelden</h3>
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label for="email">E-Mail</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
</div>
|
||||
<div class="form-full">
|
||||
<label for="password">Passwort</label>
|
||||
<input type="password" id="password" name="password" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Anmelden</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<p><a href="/register">Noch kein Konto? Registrieren</a></p>
|
||||
<p><a href="/passwort-vergessen">Passwort vergessen?</a></p>
|
||||
</div>
|
||||
|
||||
@@ -15,13 +15,22 @@
|
||||
geschlossen wird.
|
||||
</p>
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/verwaltung/nutzer/import" enctype="multipart/form-data">
|
||||
<label for="csv">CSV-Datei</label>
|
||||
<input type="file" id="csv" name="csv" accept=".csv,text/csv" required>
|
||||
|
||||
<button type="submit">Importieren</button>
|
||||
<div class="form-section">
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label for="csv">CSV-Datei</label>
|
||||
<input type="file" id="csv" name="csv" accept=".csv,text/csv" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Importieren</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{{end}}
|
||||
|
||||
@@ -11,23 +11,34 @@
|
||||
auf einem anderen Weg an die neue Person weitergegeben werden.
|
||||
</p>
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/verwaltung/nutzer">
|
||||
<label for="email">E-Mail</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
|
||||
<label for="password">Initialpasswort (mind. 8 Zeichen)</label>
|
||||
<input type="password" id="password" name="password" minlength="8" required>
|
||||
|
||||
<fieldset>
|
||||
<legend>Rolle</legend>
|
||||
{{range .Rollen}}
|
||||
<label><input type="radio" name="role" value="{{.}}" required> {{.}}</label>
|
||||
{{end}}
|
||||
</fieldset>
|
||||
|
||||
<button type="submit">Nutzer anlegen</button>
|
||||
<div class="form-section">
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="email">E-Mail</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
</div>
|
||||
<div>
|
||||
<label for="password">Initialpasswort (mind. 8 Zeichen)</label>
|
||||
<input type="password" id="password" name="password" minlength="8" required>
|
||||
</div>
|
||||
<div class="form-full">
|
||||
<label>Rolle</label>
|
||||
<div class="chip-group">
|
||||
{{range .Rollen}}
|
||||
<label><input type="radio" name="role" value="{{.}}" required> {{.}}</label>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Nutzer anlegen</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{{end}}
|
||||
|
||||
@@ -6,11 +6,21 @@
|
||||
<h1>Passwort vergessen</h1>
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
{{if .Message}}<p class="hinweis">{{.Message}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/passwort-vergessen">
|
||||
<label for="email">E-Mail</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
<button type="submit">Link anfordern</button>
|
||||
<div class="form-section">
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label for="email">E-Mail</label>
|
||||
<input type="email" id="email" name="email" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Link anfordern</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<p><a href="/login">Zurück zur Anmeldung</a></p>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -5,12 +5,22 @@
|
||||
<div class="page">
|
||||
<h1>Neues Passwort setzen</h1>
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/passwort-zuruecksetzen/{{.Token}}">
|
||||
<label for="password">Neues Passwort</label>
|
||||
<input type="password" id="password" name="password" required minlength="8">
|
||||
<button type="submit">Passwort setzen</button>
|
||||
<div class="form-section">
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label for="password">Neues Passwort</label>
|
||||
<input type="password" id="password" name="password" required minlength="8">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Passwort setzen</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{{end}}
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
||||
<div class="form-card">
|
||||
<form method="post" action="/register">
|
||||
<fieldset class="form-section">
|
||||
<legend>Firma</legend>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Firma</h3>
|
||||
<div class="form-grid">
|
||||
<div class="form-full">
|
||||
<label for="account_name">Firmenname</label>
|
||||
@@ -35,9 +35,9 @@
|
||||
<input type="text" id="land" name="land" value="Deutschland" required>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-section">
|
||||
<legend>Abrechnung</legend>
|
||||
</div>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Abrechnung</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="rechnungsemail">Rechnungsemail</label>
|
||||
@@ -48,9 +48,9 @@
|
||||
<input type="text" id="ust_id" name="ust_id" placeholder="z. B. DE123456789">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="form-section">
|
||||
<legend>Erster Nutzer (wird Admin)</legend>
|
||||
</div>
|
||||
<div class="form-section">
|
||||
<h3 class="form-section-title">Erster Nutzer (wird Admin)</h3>
|
||||
<div class="form-grid">
|
||||
<div>
|
||||
<label for="email">E-Mail</label>
|
||||
@@ -61,7 +61,7 @@
|
||||
<input type="password" id="password" name="password" minlength="8" required>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Konto anlegen</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user