Behoerde und Funktion optional, Pflichtfelder greifen jetzt wirklich

Behoerde oder Organisation und Funktion oder Dienststelle sind optional,
in beiden Sprachen mit Hinweis am Feld. Pflicht bleiben Name, dienstliche
E-Mail und die Einwilligung.

Dabei aufgefallen, das Formular traegt novalidate, damit die
Browsermeldungen die eigene Pruefung nicht ueberlagern. Die Pflichtfelder
wurden dadurch bisher gar nicht erzwungen, ein leerer Name waere
durchgegangen. Die Pruefung liegt jetzt im Skript, mit Meldung und Fokus
auf dem betroffenen Feld. Der Name steht ausserdem mit in der
Anfrage-Mail, da die Organisation leer bleiben kann.
Dieser Commit ist enthalten in:
AegisSight
2026-07-22 23:01:23 +02:00
Ursprung e04a659fe9
Commit d5851d8d99
3 geänderte Dateien mit 20 neuen und 12 gelöschten Zeilen

Datei anzeigen

@@ -759,14 +759,14 @@
<input type="text" id="tf-name" name="name" autocomplete="name" required>
</div>
<div class="form-group">
<label for="tf-org">Authority or organisation</label>
<input type="text" id="tf-org" name="organisation" autocomplete="organization" required>
<label for="tf-org">Authority or organisation <span class="tf-hint">optional</span></label>
<input type="text" id="tf-org" name="organisation" autocomplete="organization">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="tf-role">Role or department</label>
<input type="text" id="tf-role" name="role" autocomplete="organization-title" required>
<label for="tf-role">Role or department <span class="tf-hint">optional</span></label>
<input type="text" id="tf-role" name="role" autocomplete="organization-title">
</div>
<div class="form-group">
<label for="tf-phone">Phone <span class="tf-hint">optional</span></label>

Datei anzeigen

@@ -759,14 +759,14 @@
<input type="text" id="tf-name" name="name" autocomplete="name" required>
</div>
<div class="form-group">
<label for="tf-org">Behörde oder Organisation</label>
<input type="text" id="tf-org" name="organisation" autocomplete="organization" required>
<label for="tf-org">Behörde oder Organisation <span class="tf-hint">optional</span></label>
<input type="text" id="tf-org" name="organisation" autocomplete="organization">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="tf-role">Funktion oder Dienststelle</label>
<input type="text" id="tf-role" name="role" autocomplete="organization-title" required>
<label for="tf-role">Funktion oder Dienststelle <span class="tf-hint">optional</span></label>
<input type="text" id="tf-role" name="role" autocomplete="organization-title">
</div>
<div class="form-group">
<label for="tf-phone">Telefon <span class="tf-hint">optional</span></label>

Datei anzeigen

@@ -14,6 +14,7 @@
de: {
sending: 'Wird gesendet...',
send: 'Testzugang anfragen',
nameFehlt: 'Bitte geben Sie Ihren Namen an.',
freemail: 'Bitte geben Sie Ihre dienstliche E-Mail-Adresse an. Adressen bei Freemail-Anbietern wie Gmail, GMX oder web.de können wir für einen Testzugang nicht berücksichtigen.',
invalidMail: 'Diese E-Mail-Adresse sieht nicht vollständig aus. Bitte prüfen Sie Ihre Eingabe.',
consent: 'Bitte bestätigen Sie die Datenschutzhinweise, damit wir Ihre Anfrage bearbeiten dürfen.',
@@ -37,6 +38,7 @@
en: {
sending: 'Sending...',
send: 'Request trial access',
nameFehlt: 'Please enter your name.',
freemail: 'Please enter your official work email address. Addresses from free providers such as Gmail, GMX or web.de cannot be accepted for trial access.',
invalidMail: 'This email address looks incomplete. Please check your entry.',
consent: 'Please confirm the privacy notice so that we may process your request.',
@@ -167,12 +169,14 @@
var errorBox = document.getElementById('tf-error');
var btn = form.querySelector('button[type="submit"]');
var fail = function (msg) {
var fail = function (msg, feldId) {
if (errorBox) {
errorBox.textContent = msg;
errorBox.style.display = 'block';
errorBox.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
var feld = feldId && document.getElementById(feldId);
if (feld) { feld.focus(); }
if (btn) { btn.disabled = false; btn.textContent = T.send; }
};
@@ -184,9 +188,12 @@
/* Zeitfalle gegen Bots */
if (Date.now() - loadedAt < 4000) return fail(T.tooFast);
if (!plausibleMail(email)) return fail(T.invalidMail);
if (isBlocked(email)) return fail(T.freemail);
if (consent && !consent.checked) return fail(T.consent);
/* Das Formular traegt novalidate, damit die Browsermeldungen die
eigene Pruefung nicht ueberlagern. Pflichtfelder deshalb hier. */
if (!val('tf-name')) return fail(T.nameFehlt, 'tf-name');
if (!plausibleMail(email)) return fail(T.invalidMail, 'tf-email');
if (isBlocked(email)) return fail(T.freemail, 'tf-email');
if (consent && !consent.checked) return fail(T.consent, 'tf-consent');
if (btn) { btn.disabled = true; btn.textContent = T.sending; }
@@ -195,6 +202,7 @@
var zeilen = [
L.head,
'',
L.name + ' = ' + val('tf-name'),
L.org + ' = ' + (val('tf-org') || e_),
L.role + ' = ' + (val('tf-role') || e_),
L.mail + ' = ' + email,