Danke für die Einordnung und das Update. Nachdem ich den Beitrag verfasst hatte, ist mir gestern Abend noch ein Aspekt eingefallen, den ich mir heute ansehen wollte. Aber du warst schneller… ![]()
Dennoch möchte ich diesen Aspekt noch kurz beleuchten: Sobald man die Authentifikation aktiviert, prüft Live nach Empfang der Daten, ob für den Admin-Account sowohl Benutzername als auch Passwort festgelegt wurden. Ist eines dieser Felder leer, wird zwar ein entsprechender Hinweis angezeigt, doch die bislang getätigten Einstellungen werden nicht gespeichert.
Das empfinde ich als ziemlich unglücklich, und es entspricht auch nicht unserer üblichen Vorgehensweise. Besser wäre es, die Prüfung schon beim Absenden des Formulars durchzuführen und zur Eingabe fehlender Daten aufzufordern, wie wir das etwa auch bei den Suchtimern machen. Der folgende Patch:
diff --git a/pages/setup.ecpp b/pages/setup.ecpp
index cb075890..b43b7d58 100644
--- a/pages/setup.ecpp
+++ b/pages/setup.ecpp
@@ -149,6 +149,8 @@ if (!cUser::CurrentUserHasRightTo(UR_EDITSETUP))
function changeduseauth(selection)
{
document.getElementById("authsection").style.display = (selection.checked ? "" : "none");
+ document.getElementById("login").disabled = !selection?.checked;
+ document.getElementById("pass").disabled = !selection?.checked;
}
function setauthchanged(selection)
{
@@ -191,11 +193,11 @@ if (!cUser::CurrentUserHasRightTo(UR_EDITSETUP))
<table border="0" cellpadding="0" cellspacing="0" class="dependent">
<tr>
<td class="label"><div class="withmargin"><$ tr("Admin login") $>:</div></td>
- <td><input type="text" name="login" value="<$ login $>" id="login" onchange="setauthchanged(this)" /></td>
+ <td><input type="text" name="login" value="<$ login $>" required disabled id="login" onchange="setauthchanged(this)" /></td>
</tr>
<tr>
<td class="label"><div class="withmargin"><$ tr("Admin password") $>:</div></td>
- <td><input type="password" name="pass" value="<$ pass $>" id="pass" onchange="setauthchanged(this)" /></td>
+ <td><input type="password" name="pass" value="<$ pass $>" required disabled id="pass" onchange="setauthchanged(this)" /></td>
</tr>
<tr>
<td colspan="2" class="label"><div class="withmargin"><a href="users.html"><$ tr("User management") $></a></div></td>
Display More
… legt fest, dass die beiden Felder nicht leer bleiben dürfen ("required"), standardmäßig aber nicht geprüft werden sollen ("disabled"). Die beiden Felder werden entsprechend der Checkbox "Authentifizierung verwenden" zusammen mit dem Auf- bzw. Einklappen des Abschnitts zur Eingabeprüfung aktiviert bzw. deaktiviert. Bleibt ein Feld leer, springt der Cursor beim Klick auf den Speichern-Button dorthin und zeigt einen entsprechenden Hinweis an.
Ist das automatische Ausfüllen von Login-Daten eingestellt und ein Passwort für diese Felder gespeichert, zeigt der Firefox ein Auswahlfeld an; die Fehlermeldung erscheint erst beim Hover mit der Maus:
Bei Chrome-basierten Browsern ist dies wohl anders:
Aber nur wegen der Zicken von Firefox wollte ich nicht die ganze Mimik in Javascript programmieren, wenn das alles auch per HTML direkt geht… ![]()
PS: Da bei mir Linux mit englischem Sprachprofil läuft, erscheinen die obige Meldungen auf Englisch statt auf Deutsch.