Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/roundcube/roundcubemail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2018-07-03 15:41:01 +0300
committerAleksander Machniak <alec@alec.pl>2018-07-03 15:41:01 +0300
commit70ffc252bf2641808d0e8bfa3d073387d3f317d6 (patch)
tree60118a535fd93b684fcf87c61f451877b34f0703 /program
parent7e8299cd53b6827c3146134f03e21fc0fbc3edd9 (diff)
parent8cf9b02d4240e763fa0d3aca603243468be3d929 (diff)
Merge branch 'dev/elastic'
Diffstat (limited to 'program')
-rw-r--r--program/include/rcmail_output_html.php20
-rw-r--r--program/js/list.js85
-rw-r--r--program/localization/de_CH/labels.inc1
-rw-r--r--program/localization/de_CH/messages.inc1
-rw-r--r--program/localization/de_DE/labels.inc50
-rw-r--r--program/localization/de_DE/messages.inc9
-rw-r--r--program/localization/en_US/labels.inc4
-rw-r--r--program/steps/settings/func.inc2
8 files changed, 115 insertions, 57 deletions
diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
index 62370891b..ffec00c2e 100644
--- a/program/include/rcmail_output_html.php
+++ b/program/include/rcmail_output_html.php
@@ -94,6 +94,14 @@ class rcmail_output_html extends rcmail_output
$this->set_env('cookie_path', ini_get('session.cookie_path'));
$this->set_env('cookie_secure', filter_var(ini_get('session.cookie_secure'), FILTER_VALIDATE_BOOLEAN));
+ // Easy way to change skin via GET argument, for developers
+ if ($this->devel_mode && !empty($_GET['skin']) && preg_match('/^[a-z0-9-_]+$/i', $_GET['skin'])) {
+ if ($this->check_skin($_GET['skin'])) {
+ $this->set_skin($_GET['skin']);
+ $this->app->user->save_prefs(array('skin' => $_GET['skin']));
+ }
+ }
+
// load and setup the skin
$this->set_skin($this->config->get('skin'));
$this->set_assets_path($this->config->get('assets_path'), $this->config->get('assets_dir'));
@@ -514,7 +522,7 @@ EOF;
/**
* Send the request output to the client.
- * This will either parse a skin tempalte or send an AJAX response
+ * This will either parse a skin template.
*
* @param string $templ Template name
* @param boolean $exit True if script should terminate (default)
@@ -2177,7 +2185,7 @@ EOF;
'title' => 'options',
'tabindex' => '0',
'innerclass' => 'inner',
- 'data-popup' => $attrib['options']
+ 'data-target' => $attrib['options']
));
}
@@ -2202,10 +2210,10 @@ EOF;
));
$out = html::div(array(
- 'role' => 'search',
- 'aria-labelledby' => $attrib['label'] ? 'aria-label-' . $attrib['label'] : null,
- 'class' => $attrib['wrapper'],
- ), "$header$out\n$options_button\n$reset_button\n$search_button");
+ 'role' => 'search',
+ 'aria-labelledby' => $attrib['label'] ? 'aria-label-' . $attrib['label'] : null,
+ 'class' => $attrib['wrapper'],
+ ), "$header$out\n$reset_button\n$options_button\n$search_button");
}
return $out;
diff --git a/program/js/list.js b/program/js/list.js
index edfb19065..a4b800131 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -407,34 +407,7 @@ insert_row: function(row, before)
}
if (this.checkbox_selection) {
- var key, cell = document.createElement(this.col_tagname()),
- chbox = document.createElement('input');
-
- chbox.type = 'checkbox';
- chbox.tabIndex = -1;
- chbox.onchange = function(e) {
- self.select_row(row.uid, key || CONTROL_KEY, true);
- e.stopPropagation();
- key = null;
- };
- chbox.onmousedown = function(e) {
- key = rcube_event.get_modifier(e);
- };
-
- cell.className = 'selection';
- // make the whole cell "touchable" for touch devices
- cell.onclick = function(e) {
- if (!$(e.target).is('input')) {
- key = rcube_event.get_modifier(e);
- $(chbox).prop('checked', !chbox.checked).change();
- }
-
- e.stopPropagation();
- };
-
- cell.appendChild(chbox);
-
- row.insertBefore(cell, row.firstChild);
+ this.insert_checkbox(row);
}
if (before && tbody.childNodes.length)
@@ -451,7 +424,7 @@ insert_row: function(row, before)
},
/**
- *
+ * Update existing record
*/
update_row: function(id, cols, newid, select)
{
@@ -477,6 +450,60 @@ update_row: function(id, cols, newid, select)
}
},
+/**
+ * Add selection checkbox to the list record
+ */
+insert_checkbox: function(row)
+{
+ var key, self = this,
+ cell = document.createElement(this.col_tagname()),
+ chbox = document.createElement('input');
+
+ chbox.type = 'checkbox';
+ chbox.tabIndex = -1;
+ chbox.onchange = function(e) {
+ self.select_row(row.uid, key || CONTROL_KEY, true);
+ e.stopPropagation();
+ key = null;
+ };
+ chbox.onmousedown = function(e) {
+ key = rcube_event.get_modifier(e);
+ };
+
+ cell.className = 'selection';
+ // make the whole cell "touchable" for touch devices
+ cell.onclick = function(e) {
+ if (!$(e.target).is('input')) {
+ key = rcube_event.get_modifier(e);
+ $(chbox).prop('checked', !chbox.checked).change();
+ }
+ e.stopPropagation();
+ };
+
+ cell.appendChild(chbox);
+
+ row.insertBefore(cell, row.firstChild);
+},
+
+/**
+ * Enable checkbox selection
+ */
+enable_checkbox_selection: function()
+{
+ this.checkbox_selection = true;
+
+ // Add checkbox to existing records if any
+ var r, len, cell, row_tag = this.row_tagname().toUpperCase(),
+ rows = this.tbody.childNodes;
+
+ for (r=0, len=rows.length; r<len; r++) {
+ if (rows[r].nodeName == row_tag && (cell = rows[r].firstChild)) {
+ if (cell.className == 'selection')
+ break;
+ this.insert_checkbox(rows[r]);
+ }
+ }
+},
/**
* Set focus to the list
diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc
index b11ecc496..1bbe923b6 100644
--- a/program/localization/de_CH/labels.inc
+++ b/program/localization/de_CH/labels.inc
@@ -425,7 +425,6 @@ $labels['importreplace'] = 'Bestehendes Adressbuch komplett ersetzen';
$labels['importgroups'] = 'Gruppenzuweisungen importieren';
$labels['importgroupsall'] = 'Alle (nicht vorhandene Gruppen erstellen)';
$labels['importgroupsexisting'] = 'Für existierende Gruppen';
-$labels['importdesc'] = 'Sie können Kontakte aus einem bestehenden Adressbuch hochladen.rnEs können Adressbücher im <a href="http://de.wikipedia.org/wiki/VCard">vCard</a>- oder CSV-Format importiert werden.';
$labels['done'] = 'Fertig';
$labels['settingsfor'] = 'Einstellungen für';
$labels['about'] = 'Über';
diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc
index f7d8ab2dd..a5761ba37 100644
--- a/program/localization/de_CH/messages.inc
+++ b/program/localization/de_CH/messages.inc
@@ -34,7 +34,6 @@ $messages['erroroverquotadelete'] = 'Kein freier Speicherplatz. Drücken Sie SHI
$messages['invalidrequest'] = 'Ungültige Anfrage! Es wurden keine Daten gespeichert.';
$messages['invalidhost'] = 'Ungültiger Servername';
$messages['nomessagesfound'] = 'Keine Nachrichten in diesem Ordner';
-$messages['loggedout'] = 'Sie haben Ihre Session erfolgreich beendet. Auf Wiedersehen!';
$messages['mailboxempty'] = 'Ordner ist leer';
$messages['nomessages'] = 'Keine Nachrichten';
$messages['refreshing'] = 'Aktualisiere...';
diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc
index 82f7c9152..33b7ed6a1 100644
--- a/program/localization/de_DE/labels.inc
+++ b/program/localization/de_DE/labels.inc
@@ -107,14 +107,14 @@ $labels['compose'] = 'Schreiben';
$labels['writenewmessage'] = 'Neue Nachricht schreiben';
$labels['reply'] = 'Antworten';
$labels['replytomessage'] = 'Antwort verfassen';
-$labels['replytoallmessage'] = 'Antwort an Mailingliste oder an Absender und alle Empfänger verfassen';
+$labels['replytoallmessage'] = 'Antwort an Liste oder an Absender und alle Empfänger verfassen';
$labels['replyall'] = 'Allen antworten';
$labels['replylist'] = 'Liste antworten';
$labels['forward'] = 'Weiterleiten';
$labels['forwardinline'] = 'innerhalb der Nachricht';
$labels['forwardattachment'] = 'Als Anhang weiterleiten';
$labels['forwardmessage'] = 'Nachricht weiterleiten';
-$labels['bouncemsg'] = 'Resend (bounce)';
+$labels['bouncemsg'] = 'Erneut senden (falls unzustellbar)';
$labels['bounce'] = 'Erneut senden';
$labels['deletemessage'] = 'Nachricht löschen';
$labels['movemessagetotrash'] = 'Nachricht in den Papierkorb verschieben';
@@ -129,8 +129,8 @@ $labels['mark'] = 'Markieren';
$labels['markmessages'] = 'Nachrichten markieren';
$labels['markread'] = 'Als gelesen';
$labels['markunread'] = 'Als ungelesen';
-$labels['markflagged'] = 'Markierung hinzufügen';
-$labels['markunflagged'] = 'Markierung entfernen';
+$labels['markflagged'] = 'Als wichtig';
+$labels['markunflagged'] = 'Als unwichtig';
$labels['moreactions'] = 'Mehr …';
$labels['markallread'] = 'Alle als gelesen markieren';
$labels['folders-cur'] = 'Nur ausgewählten Ordner';
@@ -152,8 +152,8 @@ $labels['none'] = 'Keine';
$labels['currpage'] = 'Aktuelle Seite';
$labels['isread'] = 'Gelesen';
$labels['unread'] = 'Ungelesene';
-$labels['flagged'] = 'Markierte';
-$labels['unflagged'] = 'Nicht gekennzeichnet';
+$labels['flagged'] = 'Als wichtig markiert';
+$labels['unflagged'] = 'Als unwichtig markiert';
$labels['unanswered'] = 'Unbeantwortete';
$labels['withattachment'] = 'Mit Anhang';
$labels['deleted'] = 'Gelöschte';
@@ -180,21 +180,22 @@ $labels['arrival'] = 'Empfangsdatum';
$labels['asc'] = 'aufsteigend';
$labels['desc'] = 'absteigend';
$labels['listcolumns'] = 'Spalten';
-$labels['listsorting'] = 'Sortierung';
-$labels['listorder'] = 'Ordnung';
+$labels['listsorting'] = 'Sortieren nach';
+$labels['listorder'] = 'Sortierung';
$labels['listmode'] = 'Anzeigemodus';
-$labels['lmode'] = 'Listen-Modus';
+$labels['lmode'] = 'Listenmodus';
$labels['layout'] = 'Layout';
$labels['layoutwidescreen'] = 'Breitbildschirm';
-$labels['layoutdesktop'] = 'Desktop';
+$labels['layoutdesktop'] = 'Schreibtisch';
$labels['layoutlist'] = 'Liste';
$labels['layoutwidescreendesc'] = 'Breitbild (3-Spalten-Ansicht)';
-$labels['layoutdesktopdesc'] = 'Desktop (breite Liste und Mail-Vorschau unten)';
-$labels['layoutlistdesc'] = 'Liste (keine Mail-Vorschau)';
+$labels['layoutdesktopdesc'] = 'Schreibtisch (breite Liste und Nachrichtenvorschau unten)';
+$labels['layoutlistdesc'] = 'Liste (keine Nachrichtenvorschau)';
$labels['folderactions'] = 'Ordneraktionen …';
$labels['compact'] = 'Packen';
$labels['empty'] = 'Leeren';
$labels['importmessages'] = 'Nachrichten importieren';
+$labels['mailimportzip'] = 'Mehrere Dateien können zu ZIP-Archiven komprimiert werden.';
$labels['quota'] = 'Speicherplatz';
$labels['unknown'] = 'unbekannt';
$labels['unlimited'] = 'unbegrenzt';
@@ -204,8 +205,8 @@ $labels['quotaused'] = 'Verwendet';
$labels['quotastorage'] = 'Festplattenspeicher';
$labels['quotamessage'] = 'Nachrichtenanzahl';
$labels['shortheaderdate'] = 'Am $date';
-$labels['shortheaderto'] = 'An $to vom $date';
-$labels['shortheaderfrom'] = 'Von $from vom $date';
+$labels['shortheaderto'] = 'An $to am $date';
+$labels['shortheaderfrom'] = 'Von $from am $date';
$labels['quicksearch'] = 'Schnellsuche';
$labels['searchplaceholder'] = 'Suchen …';
$labels['resetsearch'] = 'Suche zurücksetzen';
@@ -248,6 +249,7 @@ $labels['encryptmessage'] = 'Nachrichten verschlüsseln';
$labels['encryptmessagemailvelope'] = 'Nachricht mit Mailvelope verschlüsseln';
$labels['importpubkeys'] = 'Öffentliche Schlüssel importieren';
$labels['encryptedsendialog'] = 'Verschlüsselte Nachricht wird gesendet';
+$labels['encryptandsign'] = 'Verschlüsseln und unterschreiben';
$labels['keyid'] = 'Schlüsselkennung';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Abgelaufen';
@@ -255,6 +257,7 @@ $labels['keyrevoked'] = 'Widerrufen';
$labels['bccinstead'] = 'Blindkopie verwenden';
$labels['addheader'] = 'Empfänger hinzufügen (Kopfzeile)';
$labels['recipient'] = 'Empfänger';
+$labels['recipientedit'] = 'Empfänger bearbeiten';
$labels['editidents'] = 'Identitäten bearbeiten';
$labels['spellcheck'] = 'Rechtschreibung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
@@ -272,7 +275,7 @@ $labels['editresponse'] = 'Schnellantwort bearbeiten';
$labels['editresponses'] = 'Schnellantworten bearbeiten';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Text der Antwort';
-$labels['attach'] = 'Anhängen';
+$labels['attach'] = 'Anhang';
$labels['attachments'] = 'Anhänge';
$labels['upload'] = 'Hochladen';
$labels['uploadprogress'] = '$percent ($current von $total)';
@@ -309,6 +312,14 @@ $labels['mdnrequest'] = 'Der Sender dieser Nachricht möchte gerne eine Lesebest
$labels['receiptread'] = 'Empfangsbestätigung (gelesen)';
$labels['yourmessage'] = 'Dies ist eine Empfangsbestätigung für Ihre Nachricht';
$labels['receiptnote'] = 'Hinweis: Der Empfänger hat den Empfang der Nachricht bestätigt. Dies ist keine Garantie, dass die Nachricht gelesen und verstanden wurde.';
+$labels['zoomin'] = 'Vergrößern';
+$labels['zoomout'] = 'Verkleinern';
+$labels['rotate'] = 'Drehen';
+$labels['increaseimage'] = 'Bild vergrößern';
+$labels['decreaseimage'] = 'Bild verkleinern';
+$labels['rotateimage'] = 'Bild drehen';
+$labels['showtools'] = 'Bild-Tools anzeigen';
+$labels['hidetools'] = 'Bild-Tools ausblenden';
$labels['name'] = 'Angezeigter Name';
$labels['firstname'] = 'Vorname';
$labels['surname'] = 'Nachname';
@@ -393,7 +404,7 @@ $labels['newgroup'] = 'Neue Gruppe erstellen';
$labels['addgroup'] = 'Gruppe hinzufügen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
-$labels['groupassign'] = 'Zur Gruppe hinzufügen...';
+$labels['groupassign'] = 'Zu Gruppe hinzufügen...';
$labels['groupremove'] = 'Aus Gruppe entfernen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
$labels['uponelevel'] = 'Eine Ebene nach oben';
@@ -415,7 +426,6 @@ $labels['importreplace'] = 'Bestehendes Adressbuch komplett ersetzen';
$labels['importgroups'] = 'Gruppenzuordnungen importieren';
$labels['importgroupsall'] = 'Alle (Gruppen erstellen wenn nötig)';
$labels['importgroupsexisting'] = 'Nur für existierende Gruppen';
-$labels['importdesc'] = 'Sie können Kontakte von einem vorhandenen Adressbuch hochladen.<br/>Zur Zeit wird der Import von Adressen im <a href="http://de.wikipedia.org/wiki/VCard">vCard</a> oder <a href="http://de.wikipedia.org/wiki/CSV_(Dateiformat)">CSV</a>Format unterstützt.';
$labels['done'] = 'Fertig';
$labels['settingsfor'] = 'Einstellungen für';
$labels['about'] = 'Über';
@@ -562,7 +572,11 @@ $labels['namespace.shared'] = 'Geteilt';
$labels['dualuselabel'] = 'Kann nur enthalten';
$labels['dualusemail'] = 'Nachrichten';
$labels['dualusefolder'] = 'Ordner';
+$labels['generate'] = 'Generieren';
$labels['encryptioncreatekey'] = 'Neues Schlüsselpaar erstellen';
+$labels['openmailvelopesettings'] = 'Mailvelope-Einstellungen öffnen';
+$labels['encryptionprivkeysinmailvelope'] = 'Sie haben $nr passende private Schlüssel in Ihrem Mailvelope-Schlüsselverzeichnis:';
+$labels['encryptionnoprivkeysinmailvelope'] = 'Für diese Absender-Identität ist bis jetzt kein privater PGP-Schlüssel in Ihrer Mailvelope gespeichert. Wollen Sie einen Schlüssel erstellen, damit eine verschlüsselte Kommunikation möglich ist?';
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'Aufsteigend sortieren';
$labels['sortdesc'] = 'Absteigend sortieren';
@@ -630,6 +644,7 @@ $labels['arialabelmessageheaders'] = 'Nachrichtenkopfzeilen';
$labels['arialabelforwardingoptions'] = 'Weiterleitungsoptionen';
$labels['arialabelreplyalloptions'] = 'Allen antworten-Optionen';
$labels['arialabelmoremessageactions'] = 'Weitere Nachrichtenaktionen';
+$labels['arialabelmorecontactactions'] = 'Weitere Kontakt-Aktionen';
$labels['arialabelmarkmessagesas'] = 'Ausgewählte Nachricht markieren als …';
$labels['arialabelcomposeoptions'] = 'Erstellungsoptionen';
$labels['arialabelresponsesmenu'] = 'Schnellantworten Menü';
@@ -646,6 +661,7 @@ $labels['arialabelresonseeditfrom'] = 'Antwortbearbeitungsformular';
$labels['arialabelsearchterms'] = 'Suchbegriffe';
$labels['arialabeldropactionmenu'] = 'Aktionsmenü für das Ziehen und Loslassen';
$labels['arialabelheadersmenu'] = 'Menü zum Hinzufügen der Empfänger (Kopfzeile) ';
+$labels['arialabelimagetools'] = 'Bild-Tools';
$labels['helplistnavigation'] = 'Tastaturnavigation auflisten';
$labels['helplistkeyboardnavigation'] = "Pfeil hoch/runter: Zeilenfokus/Zeilenselektion verschieben
Leerzeichen: Selektiere ausgewählte Zeile
diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc
index 273219291..686b9d8c4 100644
--- a/program/localization/de_DE/messages.inc
+++ b/program/localization/de_DE/messages.inc
@@ -83,6 +83,7 @@ $messages['deletecontactconfirm'] = 'Wollen Sie die ausgewählten Kontakte wirk
$messages['deletegroupconfirm'] = 'Wollen Sie die gewählte Gruppe wirklich löschen?';
$messages['deletemessagesconfirm'] = 'Wollen Sie die ausgewählten Nachrichten wirklich löschen?';
$messages['deletefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich löschen?';
+$messages['movefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich verschieben?';
$messages['purgefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich leeren?';
$messages['contactdeleting'] = 'Kontakt(e) werden gelöscht …';
$messages['groupdeleting'] = 'Gruppe wird gelöscht …';
@@ -164,7 +165,8 @@ $messages['smtpconnerror'] = 'SMTP Fehler ($code): Die Verbindung ist fehlgeschl
$messages['smtpautherror'] = 'SMTP Fehler ($code): Die Authentisierung ist fehlgeschlagen.';
$messages['smtpfromerror'] = 'SMTP Fehler ($code): Der Absender "$from" konnte nicht gesetzt werden ($msg).';
$messages['smtptoerror'] = 'SMTP Fehler ($code): Der Empfänger "$to" konnte nicht gesetzt werden ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Fehler: Die Empfängerliste konnte nicht verarbeitet werden.';
+$messages['smtprecipientserror'] = 'SMTP-Fehler: die Empfängerliste konnte nicht verarbeitet werden.';
+$messages['smtputf8error'] = 'SMTP-Fehler: Der Server unterstützt Unicode in der E-Mail-Adresse nicht.';
$messages['smtpsizeerror'] = 'SMTP-Fehler: Nachrichtengröße übersteigt die Servergrenze ($limit)';
$messages['smtperror'] = 'SMTP Fehler: $msg';
$messages['emailformaterror'] = 'Ungültige E-Mail-Adresse: $email';
@@ -214,3 +216,8 @@ $messages['errcomposesession'] = 'Verfasssitzungsfehler';
$messages['errcomposesessionexplain'] = 'Angeforderte Verfasssitzung nicht gefunden.';
$messages['clicktocompose'] = 'Klicken Sie hier, um eine neue Nachricht zu verfassen';
$messages['nosupporterror'] = 'Diese Funktion wird von Ihrem Webbrowser nicht unterstützt.';
+$messages['siginserted'] = 'Signatur erfolgreich eingefügt.';
+$messages['responseinserted'] = 'Antwort erfolgreich eingefügt.';
+$messages['listempty'] = 'Die Liste ist leer.';
+$messages['listusebutton'] = 'Um einen neuen Datensatz hinzufügen, verwenden Sie bitte die Schaltfläche \'Erstellen\'.';
+$messages['keypaircreatesuccess'] = 'En neues Schlüsselpaar wurde erfolgreich für $identity erstellt.';
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index 7238b7dcf..d4ce1cce2 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -173,6 +173,7 @@ $labels['last'] = 'Last';
$labels['previous'] = 'Previous';
$labels['next'] = 'Next';
$labels['select'] = 'Select';
+$labels['selection'] = 'Selection';
$labels['all'] = 'All';
$labels['none'] = 'None';
$labels['currpage'] = 'Current page';
@@ -335,8 +336,9 @@ $labels['alwaysshow'] = 'Always show images from $sender';
$labels['alwaysallow'] = 'Always allow from $sender';
$labels['isdraft'] = 'This is a draft message.';
$labels['andnmore'] = '$nr more...';
+$labels['details'] = 'Details';
$labels['headers'] = 'Headers';
-$labels['envelope'] = 'Envelope';
+$labels['allheaders'] = 'All headers...';
$labels['togglemoreheaders'] = 'Show more message headers';
$labels['togglefullheaders'] = 'Toggle raw message headers';
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 1b28d1a7a..00c9f71d1 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -157,7 +157,7 @@ function rcmail_user_prefs($current = null)
$no_override = array_flip((array)$RCMAIL->config->get('dont_override'));
foreach ($sections as $idx => $sect) {
- $sections[$idx]['class'] = $idx;
+ $sections[$idx]['class'] = $sect['class'] ?: $idx;
if ($current && $sect['id'] != $current) {
continue;