vmail: Fix HTML validator warnings/ errors, add autocomplete
Hanno Böck

Hanno Böck commited on 2024-02-02 12:52:03
Zeige 2 geänderte Dateien mit 28 Einfügungen und 28 Löschungen.

... ...
@@ -76,37 +76,37 @@ if (!$accountlogin) {
76 76
             $domain = (int) $_GET['domain'];
77 77
         }
78 78
         $form .= "
79
-    <p><strong>E-Mail-Adresse:</strong>&#160;<input type=\"text\" name=\"local\" id=\"local\" size=\"10\" value=\"" . filter_output_html($account['local']) . "\" /><strong style=\"font-size: 1.5em;\">&#160;@&#160;</strong>" . domainselect($domain) . "</p>";
79
+    <p><strong>E-Mail-Adresse:</strong>&#160;<input type=\"text\" name=\"local\" id=\"local\" size=\"10\" value=\"" . filter_output_html($account['local']) . "\"><strong style=\"font-size: 1.5em;\">&#160;@&#160;</strong>" . domainselect($domain) . "</p>";
80 80
     }
81
-    $form .= '<p><input type="checkbox" id="enableextensions" name="enableextensions" value="yes" ' . ($has_extensions ? 'checked="checked" ' : '') . '/><label for=enableextensions">&#160;Ermögliche die Nutzung von Erweiterungsadressen (<a href="https://wiki.schokokeks.org/E-Mail/Erweiterungsadressen">Hilfe</a>)';
81
+    $form .= '<p><input type="checkbox" id="enableextensions" name="enableextensions" value="yes" ' . ($has_extensions ? 'checked="checked" ' : '') . '><label for="enableextensions">&#160;Ermögliche die Nutzung von Erweiterungsadressen (<a href="https://wiki.schokokeks.org/E-Mail/Erweiterungsadressen">Hilfe</a>)</label>';
82 82
     $password_message = '';
83 83
     $password_value = '';
84 84
     if ($is_mailbox and ($account['password'] != '')) {
85
-        $password_message = '<span style="font-size: 80%"><br /><em>Sie haben bereits ein Passwort gesetzt. Wenn Sie dieses Feld nicht ändern, wird das bisherige Passwort beibehalten.</em></span>';
85
+        $password_message = '<span style="font-size: 80%"><br><em>Sie haben bereits ein Passwort gesetzt. Wenn Sie dieses Feld nicht ändern, wird das bisherige Passwort beibehalten.</em></span>';
86 86
         $password_value = '**********';
87 87
     }
88 88
 
89 89
     $form .= "
90
-    <p><input class=\"option_group\" type=\"checkbox\" id=\"mailbox\" name=\"mailbox\" value=\"yes\" " . ($is_mailbox ? 'checked="checked" ' : '') . " /><label for=\"mailbox\">&#160;<strong>In Mailbox speichern</strong></label></p>
90
+    <p><input class=\"option_group\" type=\"checkbox\" id=\"mailbox\" name=\"mailbox\" value=\"yes\" " . ($is_mailbox ? 'checked="checked" ' : '') . "><label for=\"mailbox\">&#160;<strong>In Mailbox speichern</strong></label></p>
91 91
     <div style=\"margin-left: 2em;\" id=\"mailbox_config\" class=\"option_group\">
92
-    <p>Passwort für Abruf:&#160;<input style=\"color: #aaa;\" type=\"password\" id=\"password\" name=\"password\" value=\"{$password_value}\" />{$password_message}</p>";
92
+    <p>Passwort für Abruf:&#160;<input style=\"color: #aaa;\" type=\"password\" id=\"password\" name=\"password\" value=\"{$password_value}\" autocomplete=\"new-password\">{$password_message}</p>";
93 93
 
94 94
     $quota = config('vmail_basequota');
95 95
     if ($is_mailbox and $account['quota']) {
96 96
         $quota = $account['quota'];
97 97
     }
98
-    $form .= "<p class=\"quota_options\">Größe des Postfachs: <input type=\"text\" id=\"quota\" name=\"quota\" value=\"{$quota}\" /> MB<br /><span style=\"font-size: 80%\"><em>Hinweis: Die Differenz zwischen dem hier gesetzten Wert und dem Sockelbetrag von " . config('vmail_basequota') . " MB wird vom Speicherplatz Ihres Benutzer-Kontos abgezogen.</em></span></p>";
98
+    $form .= "<p class=\"quota_options\">Größe des Postfachs: <input type=\"text\" id=\"quota\" name=\"quota\" value=\"{$quota}\"> MB<br><span style=\"font-size: 80%\"><em>Hinweis: Die Differenz zwischen dem hier gesetzten Wert und dem Sockelbetrag von " . config('vmail_basequota') . " MB wird vom Speicherplatz Ihres Benutzer-Kontos abgezogen.</em></span></p>";
99 99
 
100 100
     $quota_notify = ($account['quota_threshold'] >= 0) ? ' checked="checked" ' : '';
101 101
     $quota_threshold = ($account['quota_threshold'] >= 0) ? $account['quota_threshold'] : '';
102
-    $form .= "<p class=\"quota_options\"><input type=\"checkbox\" id=\"quota_notify\" name=\"quota_notify\" value=\"1\" {$quota_notify} /><label for=\"quota_notify\">Benachrichtigung wenn weniger als</label> <input type=\"text\" name=\"quota_threshold\" id=\"quota_threshold\" value=\"{$quota_threshold}\" /> MB Speicherplatz zur Verfügung stehen.</p>";
102
+    $form .= "<p class=\"quota_options\"><input type=\"checkbox\" id=\"quota_notify\" name=\"quota_notify\" value=\"1\" {$quota_notify}><label for=\"quota_notify\">Benachrichtigung wenn weniger als</label> <input type=\"text\" name=\"quota_threshold\" id=\"quota_threshold\" value=\"{$quota_threshold}\"> MB Speicherplatz zur Verfügung stehen.</p>";
103 103
 
104 104
     $form .= "</div>";
105 105
 }
106 106
 
107 107
 
108 108
 
109
-$form .= "<p><input class=\"option_group\" type=\"checkbox\" id=\"autoresponder\" name=\"autoresponder\" value=\"yes\" " . ($is_autoresponder ? 'checked="checked" ' : '') . " /><label for=\"autoresponder\">&#160;<strong>Automatische Antwort versenden</strong></label></p>";
109
+$form .= "<p><input class=\"option_group\" type=\"checkbox\" id=\"autoresponder\" name=\"autoresponder\" value=\"yes\" " . ($is_autoresponder ? 'checked="checked" ' : '') . "><label for=\"autoresponder\">&#160;<strong>Automatische Antwort versenden</strong></label></p>";
110 110
 
111 111
 $form .= "<div style=\"margin-left: 2em;\" id=\"autoresponder_config\" class=\"option_group\">";
112 112
 
... ...
@@ -126,9 +126,9 @@ $startdate = $ar['valid_from'];
126 126
 if (!$startdate || $startdate <= date('Y-m-d')) {
127 127
     $startdate = date('Y-m-d', time() + 1 * 24 * 60 * 60);
128 128
 }
129
-$form .= "<p><input type=\"radio\" name=\"ar_valid_from\" value=\"now\" id=\"ar_valid_from_now\"{$valid_from_now_checked} /> <label for=\"ar_valid_from_now\">Ab sofort</label><br />" .
130
-  "<input type=\"radio\" name=\"ar_valid_from\" value=\"date\" id=\"ar_valid_from_date\"{$valid_from_future_checked} /> <label for=\"ar_valid_from_date\">Erst ab dem </label>" .
131
-  "<input type=\"date\" value=\"$startdate\" id=\"ar_startdate\" name=\"ar_startdate\" min=\"" . date('Y-m-d') . "\" max=\"" . date('Y-m-d', time() + 60 * 24 * 60 * 60) . "\" /></p>";
129
+$form .= "<p><input type=\"radio\" name=\"ar_valid_from\" value=\"now\" id=\"ar_valid_from_now\"{$valid_from_now_checked}> <label for=\"ar_valid_from_now\">Ab sofort</label><br>" .
130
+  "<input type=\"radio\" name=\"ar_valid_from\" value=\"date\" id=\"ar_valid_from_date\"{$valid_from_future_checked}> <label for=\"ar_valid_from_date\">Erst ab dem </label>" .
131
+  "<input type=\"date\" value=\"$startdate\" id=\"ar_startdate\" name=\"ar_startdate\" min=\"" . date('Y-m-d') . "\" max=\"" . date('Y-m-d', time() + 60 * 24 * 60 * 60) . "\"></p>";
132 132
 
133 133
 $enddate = $ar['valid_until'];
134 134
 if (!$enddate) {
... ...
@@ -141,8 +141,8 @@ if ($ar['valid_from'] > date('Y-m-d')) {
141 141
     $max_end = $max_end->format('Y-m-d');
142 142
 }
143 143
 $form .= "<h4>Deaktivierung</h4>";
144
-$form .= "<p><label for=\"ar_valid_until_date\">Keine Antworten mehr versenden ab dem </label>" .
145
-  "<input type=\"date\" value=\"$enddate\" id=\"ar_enddate\" name=\"ar_enddate\" min=\"" . date('Y-m-d') . "\" max=\"" . $max_end . "\" /><br/>";
144
+$form .= "<p><label for=\"ar_enddate\">Keine Antworten mehr versenden ab dem </label>" .
145
+  "<input type=\"date\" value=\"$enddate\" id=\"ar_enddate\" name=\"ar_enddate\" min=\"" . date('Y-m-d') . "\" max=\"" . $max_end . "\"><br>";
146 146
 if (!$accountlogin && ($id != 0)) {
147 147
     $form .= "<small>(Automatische Antworten sind nur befristet erlaubt. Wenn Sie diese Adresse dauerhaft stilllegen möchten, können Sie dies am Ende dieser Seite tun.)</small></p>";
148 148
 }
... ...
@@ -151,10 +151,10 @@ $subject = filter_output_html($ar['subject']);
151 151
 $ar_subject_default_checked = ($subject == null) ? ' checked="checked"' : '';
152 152
 $ar_subject_custom_checked = ($subject) ? ' checked="checked"' : '';
153 153
 $form .= "<h4>Betreffzeile der automatischen Antwort</h4>" .
154
-  "<p><input type=\"radio\" name=\"ar_subject\" value=\"default\" id=\"ar_subject_default\"{$ar_subject_default_checked} /> " .
155
-  "<label for=\"ar_subject_default\">Automatisch (Re: <em>&lt;Betreff der Originalnachricht&gt;</em>)</label><br />" .
156
-  "<input type=\"radio\" name=\"ar_subject\" value=\"custom\" id=\"ar_subject_custom\"{$ar_subject_custom_checked} /> " .
157
-  "<label for=\"ar_subject_custom\">Anderer Betreff:</label> <input type=\"text\" name=\"ar_subject_value\" id=\"ar_subject_value\" value=\"{$subject}\"/></p>";
154
+  "<p><input type=\"radio\" name=\"ar_subject\" value=\"default\" id=\"ar_subject_default\"{$ar_subject_default_checked}> " .
155
+  "<label for=\"ar_subject_default\">Automatisch (Re: <em>&lt;Betreff der Originalnachricht&gt;</em>)</label><br>" .
156
+  "<input type=\"radio\" name=\"ar_subject\" value=\"custom\" id=\"ar_subject_custom\"{$ar_subject_custom_checked}> " .
157
+  "<label for=\"ar_subject_custom\">Anderer Betreff:</label> <input type=\"text\" name=\"ar_subject_value\" id=\"ar_subject_value\" value=\"{$subject}\"></p>";
158 158
 
159 159
 $message = filter_output_html($ar['message']);
160 160
 $form .= "<h4>Inhalt der automatischen Antwort</h4>" .
... ...
@@ -174,9 +174,9 @@ $ar_from_default_checked = ($ar['fromname'] == null) ? ' checked="checked"' : ''
174 174
 $ar_from_custom_checked = ($ar['fromname'] != null) ? ' checked="checked"' : '';
175 175
 $fromname = filter_output_html($ar['fromname']);
176 176
 $form .= "<h4>Absender der automatischen Antwort</h4>" .
177
-  "<p><input type=\"radio\" name=\"ar_from\" value=\"default\" id=\"ar_from_default\"{$ar_from_default_checked} /> <label for=\"ar_from_default\">Nur E-Mail-Adresse</label><br />" .
178
-  "<input type=\"radio\" name=\"ar_from\" value=\"custom\" id=\"ar_from_custom\"{$ar_from_custom_checked} /> <label for=\"ar_from_custom\">Mit Name: </label> " .
179
-  "<input type=\"text\" name=\"ar_fromname\" id=\"ar_fromname\" value=\"{$fromname}\"/></p>";
177
+  "<p><input type=\"radio\" name=\"ar_from\" value=\"default\" id=\"ar_from_default\"{$ar_from_default_checked}> <label for=\"ar_from_default\">Nur E-Mail-Adresse</label><br>" .
178
+  "<input type=\"radio\" name=\"ar_from\" value=\"custom\" id=\"ar_from_custom\"{$ar_from_custom_checked}> <label for=\"ar_from_custom\">Mit Name: </label> " .
179
+  "<input type=\"text\" name=\"ar_fromname\" id=\"ar_fromname\" value=\"{$fromname}\"></p>";
180 180
 
181 181
 
182 182
 
... ...
@@ -187,7 +187,7 @@ $form .= '</div>';
187 187
 
188 188
 
189 189
 
190
-$form .= "<p><input class=\"option_group\" type=\"checkbox\" id=\"forward\" name=\"forward\" value=\"yes\" " . ($is_forward ? 'checked="checked" ' : '') . " /><label for=\"forward\">&#160;<strong>Weiterleitung an andere E-Mail-Adressen</strong></label></p>";
190
+$form .= "<p><input class=\"option_group\" type=\"checkbox\" id=\"forward\" name=\"forward\" value=\"yes\" " . ($is_forward ? 'checked="checked" ' : '') . "><label for=\"forward\">&#160;<strong>Weiterleitung an andere E-Mail-Adressen</strong></label></p>";
191 191
 
192 192
 
193 193
 $form .= "<div style=\"margin-left: 2em;\" id=\"forward_config\" class=\"option_group\">";
... ...
@@ -205,7 +205,7 @@ for ($i = 0 ; $i < max($numforwards, 10) ; $i++) {
205 205
     $num = $i + 1;
206 206
     $form .= "<div class=\"vmail-forward\" id=\"vmail_forward_{$num}\">
207 207
   <div style=\"float: right;\" class=\"delete_forward\">" . icon_delete("Diese Weiterleitung entfernen") . "</div>
208
-  <p>Weiterleiten an <input type=\"text\" id=\"forward_to_{$num}\" name=\"forward_to_{$num}\" value=\"" . filter_output_html($account['forwards'][$i]['destination']) . "\" /></p>
208
+  <p>Weiterleiten an <input type=\"text\" id=\"forward_to_{$num}\" name=\"forward_to_{$num}\" value=\"" . filter_output_html($account['forwards'][$i]['destination']) . "\"></p>
209 209
   </div>\n";
210 210
 }
211 211
 $form .= '</div>';
... ...
@@ -217,7 +217,7 @@ $target = 'vmail';
217 217
 if ($accountlogin) {
218 218
     $target = '../index/index';
219 219
 }
220
-$form .= '<p><input id="submit" type="submit" value="Speichern" />&#160;&#160;&#160;&#160;' . internal_link($target, 'Abbrechen') . '</p>';
220
+$form .= '<p><input id="submit" type="submit" value="Speichern">&#160;&#160;&#160;&#160;' . internal_link($target, 'Abbrechen') . '</p>';
221 221
 
222 222
 output(html_form('vmail_edit_mailbox', 'save', 'action=edit' . ($id != 0 ? '&id=' . $id : ''), $form));
223 223
 
... ...
@@ -111,7 +111,7 @@ Subdomains können grundsätzlich nur durch Administratoren eingerichtet und ver
111 111
                         $color = ($percent > 95 ? 'red' : ($percent > 75 ? "yellow" : "green"));
112 112
                         $width = 2 * min($percent, 100);
113 113
                         $quotachart = "<div style=\"margin: 2px 0; padding: 0; width: 200px; border: 1px solid black;\"><div style=\"font-size: 1px; background-color: {$color}; height: 10px; width: {$width}px; margin: 0; padding: 0;\">&#160;</div></div> {$acc['quota_used']} MB von {$acc['quota']} MB belegt";
114
-                        array_push($actions, "Ablegen in Mailbox<br />" . $quotachart);
114
+                        array_push($actions, "Ablegen in Mailbox<br>" . $quotachart);
115 115
                     }
116 116
                     if ($acc['autoresponder']) {
117 117
                         $now = date('Y-m-d');
... ...
@@ -145,11 +145,11 @@ Subdomains können grundsätzlich nur durch Administratoren eingerichtet und ver
145 145
                         $dest .= '</ul>';
146 146
                     }
147 147
                     if ($acc['smtpreply']) {
148
-                        output('<p><strike>' . filter_output_html($acc['local'] . '@' . $this_account['domainname']) . '</strike> ' . internal_link("save", '<img src="' . $prefix . 'images/delete.png" alt="löschen" title="Dieses Konto löschen"/>', "action=delete&id=" . $acc['id']) . '</p>');
148
+                        output('<p><strike>' . filter_output_html($acc['local'] . '@' . $this_account['domainname']) . '</strike> ' . internal_link("save", '<img src="' . $prefix . 'images/delete.png" alt="löschen" title="Dieses Konto löschen">', "action=delete&id=" . $acc['id']) . "</p>\n");
149 149
                         output("<ul><li>" . icon_disabled() . " Diese Adresse ist stillgelegt. <strong>" . internal_link('suspend', 'Stilllegung ändern/aufheben', 'account=' . $acc['id']) . '</strong></li></ul>');
150 150
                     } else {
151
-                        output('<p>' . internal_link('edit', filter_output_html($acc['local'] . '@' . $this_account['domainname']), 'id=' . $acc['id']) . ' ' . internal_link("save", '<img src="' . $prefix . 'images/delete.png" alt="löschen" title="Dieses Konto löschen"/>', "action=delete&id=" . $acc['id']) . '</p>');
152
-                        output('<p>' . $dest . '</p>');
151
+                        output('<p>' . internal_link('edit', filter_output_html($acc['local'] . '@' . $this_account['domainname']), 'id=' . $acc['id']) . ' ' . internal_link("save", '<img src="' . $prefix . 'images/delete.png" alt="löschen" title="Dieses Konto löschen">', "action=delete&id=" . $acc['id']) . "</p>\n");
152
+                        output($dest);
153 153
                     }
154 154
                 }
155 155
             } else {
... ...
@@ -164,5 +164,5 @@ Subdomains können grundsätzlich nur durch Administratoren eingerichtet und ver
164 164
 
165 165
 
166 166
     /* FIXME: Das sollte nur kommen, wenn der IMAP/POP3-Menü-Eintrag nicht da ist */
167
-    output('<p style="font-size: 90%;padding-top: 0.5em; border-top: 1px solid black;">Hinweis: ' . filter_output_html(config('company_name')) . ' bietet für fortgeschrittene Nutzer die manuelle Einrichtung von POP3/IMAP-Accounts.<br/>' . internal_link("imap", "Neuen POP3/IMAP-Account anlegen", "action=create") . '</p>');
167
+    output('<p style="font-size: 90%;padding-top: 0.5em; border-top: 1px solid black;">Hinweis: ' . filter_output_html(config('company_name')) . ' bietet für fortgeschrittene Nutzer die manuelle Einrichtung von POP3/IMAP-Accounts.<br>' . internal_link("imap", "Neuen POP3/IMAP-Account anlegen", "action=create") . '</p>');
168 168
 }
169 169