Add Auto/Manual mode select for IMAP delimiter
This commit is contained in:
@@ -43,9 +43,14 @@ $(function() {
|
||||
});
|
||||
});
|
||||
|
||||
// Delimiter blur handler
|
||||
$("INPUT[name='_ident_switch.form.imap.delimiter']").on('blur', function() {
|
||||
plugin_switchIdent_clearIfDefault($(this));
|
||||
// Delimiter mode handler
|
||||
$("SELECT[name='_ident_switch.form.imap.delimiter_mode']").on('change', function() {
|
||||
if ($(this).val() === 'manual') {
|
||||
$('#ident-switch-delimiter-input').show();
|
||||
} else {
|
||||
$('#ident-switch-delimiter-input').hide();
|
||||
$("INPUT[name='_ident_switch.form.imap.delimiter']").val('');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -113,6 +118,9 @@ function plugin_switchIdent_processPreconfig() {
|
||||
$("SELECT[name='_ident_switch.form.smtp.security']").prop("disabled", true);
|
||||
$("INPUT[name='_ident_switch.form.smtp.port']").prop("disabled", true);
|
||||
|
||||
$("SELECT[name='_ident_switch.form.imap.delimiter_mode']").prop("disabled", true);
|
||||
$("INPUT[name='_ident_switch.form.imap.delimiter']").prop("disabled", true);
|
||||
|
||||
$("INPUT[name='_ident_switch.form.sieve.host']").prop("disabled", true);
|
||||
$("SELECT[name='_ident_switch.form.sieve.security']").prop("disabled", true);
|
||||
$("INPUT[name='_ident_switch.form.sieve.port']").prop("disabled", true);
|
||||
|
||||
@@ -54,7 +54,7 @@ class IdentSwitchForm
|
||||
$prefix . 'port' => ['type' => 'text', 'size' => 5, 'placeholder' => 993],
|
||||
$prefix . 'username' => ['type' => 'text', 'size' => 64, 'placeholder' => $record['email'] ?? ''],
|
||||
$prefix . 'password' => ['type' => 'password', 'size' => 64],
|
||||
$prefix . 'delimiter' => ['type' => 'text', 'size' => 1, 'placeholder' => 'Auto'],
|
||||
$prefix . 'delimiter' => ['value' => $this->build_delimiter_field($prefix, $record)],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -169,6 +169,31 @@ class IdentSwitchForm
|
||||
return $select->show($current) . $warning;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the delimiter field with Auto/Manual mode select.
|
||||
*
|
||||
* @param string $prefix Form field prefix (e.g. 'ident_switch.form.imap.').
|
||||
* @param array $record Identity record data.
|
||||
* @return string Rendered HTML select + text input.
|
||||
*/
|
||||
private function build_delimiter_field(string $prefix, array &$record): string
|
||||
{
|
||||
$delimValue = $record[$prefix . 'delimiter'] ?? '';
|
||||
$mode = ($delimValue !== '' && $delimValue !== null) ? 'manual' : 'auto';
|
||||
|
||||
$select = new html_select(['name' => "_{$prefix}delimiter_mode"]);
|
||||
$select->add($this->plugin->gettext('form.imap.delimiter.auto'), 'auto');
|
||||
$select->add($this->plugin->gettext('form.imap.delimiter.manual'), 'manual');
|
||||
|
||||
$hidden = $mode === 'auto' ? ' style="display:none"' : '';
|
||||
$input = new html_inputfield(['name' => "_{$prefix}delimiter", 'size' => 1]);
|
||||
|
||||
return $select->show($mode)
|
||||
. ' <span id="ident-switch-delimiter-input"' . $hidden . '>'
|
||||
. $input->show($delimValue)
|
||||
. '</span>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse scheme prefix from a host string.
|
||||
*
|
||||
@@ -531,11 +556,16 @@ class IdentSwitchForm
|
||||
return $retVal;
|
||||
}
|
||||
|
||||
$delimMode = self::get_field_value('imap', 'delimiter_mode');
|
||||
if ($delimMode === 'manual') {
|
||||
$retVal['imap.delimiter'] = self::get_field_value('imap', 'delimiter');
|
||||
if (strlen($retVal['imap.delimiter'] ?? '') > 1) {
|
||||
$retVal['err'] = 'delim.long';
|
||||
return $retVal;
|
||||
}
|
||||
} else {
|
||||
$retVal['imap.delimiter'] = null;
|
||||
}
|
||||
|
||||
$retVal['imap.user'] = self::get_field_value('imap', 'username');
|
||||
if (strlen($retVal['imap.user'] ?? '') > 64) {
|
||||
|
||||
@@ -37,6 +37,8 @@ $labels['form.imap.password'] = 'Passwort';
|
||||
|
||||
// Folder hierarchy delimiter
|
||||
$labels['form.imap.delimiter'] = 'Ordnerhierarchie-Trennzeichen';
|
||||
$labels['form.imap.delimiter.auto'] = 'Automatisch erkennen';
|
||||
$labels['form.imap.delimiter.manual'] = 'Manuell';
|
||||
|
||||
// Value in \'Username\' field is too long (64 chars max).
|
||||
$labels['err.user.long'] = 'Der Wert in Feld \'Benutzername\' ist zu lang (max. 64 Zeichen).';
|
||||
|
||||
@@ -31,6 +31,8 @@ $labels['form.imap.port'] = 'Port';
|
||||
|
||||
// Folder hierarchy delimiter
|
||||
$labels['form.imap.delimiter'] = 'Folder hierarchy delimiter';
|
||||
$labels['form.imap.delimiter.auto'] = 'Auto-detect';
|
||||
$labels['form.imap.delimiter.manual'] = 'Manual';
|
||||
|
||||
// Username
|
||||
$labels['form.imap.username'] = 'Username';
|
||||
|
||||
@@ -37,6 +37,8 @@ $labels['form.imap.password'] = 'Mot de passe';
|
||||
|
||||
// Folder hierarchy delimiter
|
||||
$labels['form.imap.delimiter'] = 'Délimiteur de hiérarchie des dossiers';
|
||||
$labels['form.imap.delimiter.auto'] = 'Auto-détection';
|
||||
$labels['form.imap.delimiter.manual'] = 'Manuel';
|
||||
|
||||
// Value in \'Username\' field of IMAP section is too long (64 chars max).
|
||||
$labels['err.user.long'] = 'La valeur du champ \'Nom d\'utilisateur\' de la section IMAP est trop longue (64 caractères max).';
|
||||
|
||||
@@ -31,6 +31,8 @@ $labels['form.imap.port'] = 'Porta';
|
||||
|
||||
// Folder hierarchy delimiter
|
||||
$labels['form.imap.delimiter'] = 'Delimitatore gerarchico delle cartelle';
|
||||
$labels['form.imap.delimiter.auto'] = 'Rilevamento automatico';
|
||||
$labels['form.imap.delimiter.manual'] = 'Manuale';
|
||||
|
||||
// Username
|
||||
$labels['form.imap.username'] = 'Username';
|
||||
|
||||
@@ -31,6 +31,8 @@ $labels['form.imap.port'] = 'Poortnummer';
|
||||
|
||||
// Folder hierarchy delimiter
|
||||
$labels['form.imap.delimiter'] = 'Map hiërarchie scheidingsteken';
|
||||
$labels['form.imap.delimiter.auto'] = 'Automatisch detecteren';
|
||||
$labels['form.imap.delimiter.manual'] = 'Handmatig';
|
||||
|
||||
// Username
|
||||
$labels['form.imap.username'] = 'Gebruikersnaam';
|
||||
|
||||
@@ -31,6 +31,8 @@ $labels['form.imap.port'] = 'Порт';
|
||||
|
||||
// Folder hierarchy delimiter
|
||||
$labels['form.imap.delimiter'] = 'Разделитель в иерархии папок';
|
||||
$labels['form.imap.delimiter.auto'] = 'Автоопределение';
|
||||
$labels['form.imap.delimiter.manual'] = 'Вручную';
|
||||
|
||||
// Username
|
||||
$labels['form.imap.username'] = 'Имя пользователя';
|
||||
|
||||
@@ -31,6 +31,8 @@ $labels['form.imap.port'] = 'Vrata';
|
||||
|
||||
// Folder hierarchy delimiter
|
||||
$labels['form.imap.delimiter'] = 'Ločilo hierarhije map';
|
||||
$labels['form.imap.delimiter.auto'] = 'Samodejno zaznavanje';
|
||||
$labels['form.imap.delimiter.manual'] = 'Ročno';
|
||||
|
||||
// Username
|
||||
$labels['form.imap.username'] = 'Uporabniško ime';
|
||||
|
||||
Reference in New Issue
Block a user