diff --git a/CHANGELOG b/CHANGELOG index 94529ffc0..d4c0a9328 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -17,6 +17,7 @@ CHANGELOG Roundcube Webmail - Change folders sorting so shared/other users namespaces are listed last (#5012) - Display a warning and do not try to open empty attachments (#7332) - Elastic: Dark mode (#6709) +- Elastic: Minimize forms/colors blink on page load - Elastic: Improve mail header "detailed mode" (#7224) - Elastic: Moving single recipients between recipient inputs with drag-n-drop (#5069) - Elastic: Display a special icon for other users and shared namespace roots (#5012) diff --git a/plugins/acl/acl.php b/plugins/acl/acl.php index a7e43369d..6b42f025c 100644 --- a/plugins/acl/acl.php +++ b/plugins/acl/acl.php @@ -312,9 +312,9 @@ class acl extends rcube_plugin function templ_user($attrib) { // Create username input - $attrib['name'] = 'acluser'; $class = $attrib['class']; - unset($attrib['class']); + $attrib['name'] = 'acluser'; + $attrib['class'] = 'form-control'; $textfield = new html_inputfield($attrib); diff --git a/plugins/archive/archive.php b/plugins/archive/archive.php index 661ab5427..bb081b24e 100644 --- a/plugins/archive/archive.php +++ b/plugins/archive/archive.php @@ -403,6 +403,7 @@ class archive extends rcube_plugin 'folder_filter' => 'mail', 'folder_rights' => 'w', 'onchange' => "if ($(this).val() == 'INBOX') $(this).val('')", + 'class' => 'custom-select', )); } else { @@ -418,7 +419,7 @@ class archive extends rcube_plugin // we do not allow archive splitting, for simplicity (#5057) if ($rcmail->get_storage()->get_capability(rcube_storage::DUAL_USE_FOLDERS)) { // add option for structuring the archive folder - $archive_type = new html_select(array('name' => '_archive_type', 'id' => 'ff_archive_type')); + $archive_type = new html_select(array('name' => '_archive_type', 'id' => 'ff_archive_type', 'class' => 'custom-select')); $archive_type->add($this->gettext('none'), ''); $archive_type->add($this->gettext('archivetypeyear'), 'year'); $archive_type->add($this->gettext('archivetypemonth'), 'month'); diff --git a/plugins/enigma/enigma.php b/plugins/enigma/enigma.php index 0ccdc50f4..853bb0aae 100644 --- a/plugins/enigma/enigma.php +++ b/plugins/enigma/enigma.php @@ -371,7 +371,7 @@ class enigma extends rcube_plugin } $field_id = 'rcmfd_enigma_password_time'; - $select = new html_select(array('name' => '_enigma_password_time', 'id' => $field_id)); + $select = new html_select(array('name' => '_enigma_password_time', 'id' => $field_id, 'class' => 'custom-select')); foreach (array(1, 5, 10, 15, 30) as $m) { $label = $this->gettext(array('name' => 'nminutes', 'vars' => array('m' => $m))); diff --git a/plugins/enigma/lib/enigma_ui.php b/plugins/enigma/lib/enigma_ui.php index d7095c420..0d896c225 100644 --- a/plugins/enigma/lib/enigma_ui.php +++ b/plugins/enigma/lib/enigma_ui.php @@ -609,8 +609,13 @@ class enigma_ui if (empty($attrib['part']) || $attrib['part'] == 'import') { $title = $this->enigma->gettext('keyimportlabel'); - $upload = new html_inputfield(array('type' => 'file', 'name' => '_file', - 'id' => 'rcmimportfile', 'size' => 30)); + $upload = new html_inputfield(array( + 'type' => 'file', + 'name' => '_file', + 'id' => 'rcmimportfile', + 'size' => 30, + 'class' => 'form-control' + )); $max_filesize = $this->rc->upload_init(); $upload_button = new html_button(array( @@ -635,7 +640,7 @@ class enigma_ui if (empty($attrib['part']) || $attrib['part'] == 'search') { $title = $this->enigma->gettext('keyimportsearchlabel'); $search = new html_inputfield(array('type' => 'text', 'name' => '_search', - 'id' => 'rcmimportsearch', 'size' => 30)); + 'id' => 'rcmimportsearch', 'size' => 30, 'class' => 'form-control')); $search_button = new html_button(array( 'class' => 'button search', @@ -760,7 +765,7 @@ class enigma_ui $table->add(null, html::tag('ul', 'proplist', implode("\n", $identities))); // Key size - $select = new html_select(array('name' => 'size', 'id' => 'key-size')); + $select = new html_select(array('name' => 'size', 'id' => 'key-size', 'class' => 'custom-select')); $select->add($this->enigma->gettext('key2048'), '2048'); $select->add($this->enigma->gettext('key4096'), '4096'); diff --git a/plugins/hide_blockquote/hide_blockquote.php b/plugins/hide_blockquote/hide_blockquote.php index c29047115..43add71dd 100644 --- a/plugins/hide_blockquote/hide_blockquote.php +++ b/plugins/hide_blockquote/hide_blockquote.php @@ -55,7 +55,12 @@ class hide_blockquote extends rcube_plugin $rcmail = rcmail::get_instance(); $limit = (int) $rcmail->config->get('hide_blockquote_limit'); $field_id = 'hide_blockquote_limit'; - $input = new html_inputfield(array('name' => '_'.$field_id, 'id' => $field_id, 'size' => 5)); + $input = new html_inputfield(array( + 'name' => '_' . $field_id, + 'id' => $field_id, + 'size' => 5, + 'class' => 'form-control' + )); $args['blocks']['main']['options']['hide_blockquote_limit'] = array( 'title' => html::label($field_id, $this->gettext('quotelimit')), @@ -73,5 +78,4 @@ class hide_blockquote extends rcube_plugin return $args; } - } diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php index e64b74189..321e753e1 100644 --- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php +++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php @@ -1344,8 +1344,12 @@ class rcube_sieve_engine $this->rc->output->include_script('list.js'); } else { - $select = new html_select(array('name' => '_set', 'id' => $attrib['id'], - 'onchange' => $this->rc->task != 'mail' ? 'rcmail.managesieve_set()' : '')); + $select = new html_select(array( + 'name' => '_set', + 'id' => $attrib['id'], + 'class' => 'custom-select', + 'onchange' => $this->rc->task != 'mail' ? 'rcmail.managesieve_set()' : '' + )); if ($list) { foreach ($list as $set) @@ -1427,7 +1431,7 @@ class rcube_sieve_engine // filter set name input $input_name = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30, - 'class' => ($this->errors['name'] ? 'error' : ''))); + 'class' => ($this->errors['name'] ? 'error form-control' : 'form-control'))); $table->add('title', html::label('_name', rcube::Q($this->plugin->gettext('filtersetname')))); $table->add(null, $input_name->show($name)); @@ -1443,7 +1447,7 @@ class rcube_sieve_engine // filters set list $list = $this->list_scripts(); - $select = new html_select(array('name' => '_copy', 'id' => '_copy')); + $select = new html_select(array('name' => '_copy', 'id' => '_copy', 'class' => 'custom-select')); if (is_array($list)) { asort($list, SORT_LOCALE_STRING); @@ -1466,7 +1470,7 @@ class rcube_sieve_engine // script upload box $upload = new html_inputfield(array('name' => '_file', 'id' => '_file', 'size' => 30, - 'type' => 'file', 'class' => ($this->errors['file'] ? 'error' : ''))); + 'type' => 'file', 'class' => ($this->errors['file'] ? 'error form-control' : 'form-control'))); $filters .= '
| ';
// action select
- $select_action = new html_select(array('name' => "_action_type[$id]", 'id' => 'action_type'.$id,
- 'onchange' => 'action_type_select(' .$id .')'));
+ $select_action = new html_select(array(
+ 'name' => "_action_type[$id]",
+ 'id' => 'action_type' . $id,
+ 'class' => 'custom-select',
+ 'onchange' => 'action_type_select(' . $id . ')'
+ ));
if (in_array('fileinto', $this->exts))
$select_action->add($this->plugin->gettext('messagemoveto'), 'fileinto');
if (in_array('fileinto', $this->exts) && in_array('copy', $this->exts))
@@ -2160,7 +2200,11 @@ class rcube_sieve_engine
if (!empty($domains)) {
sort($domains);
- $domain_select = new html_select(array('name' => "_action_target_domain[$id]", 'id' => 'action_target_domain'.$id));
+ $domain_select = new html_select(array(
+ 'name' => "_action_target_domain[$id]",
+ 'id' => 'action_target_domain' . $id,
+ 'class' => 'custom-select',
+ ));
$domain_select->add(array_combine($domains, $domains));
if ($action['type'] == 'redirect') {
@@ -2263,7 +2307,10 @@ class rcube_sieve_engine
'class' => $this->error_class($id, 'action', 'interval', 'action_interval'),
));
if ($vsec) {
- $interval_select = new html_select(array('name' => '_action_interval_type[' . $id . ']', 'class' => 'input-group-append'));
+ $interval_select = new html_select(array(
+ 'name' => '_action_interval_type[' . $id . ']',
+ 'class' => 'input-group-append custom-select'
+ ));
$interval_select->add($this->plugin->gettext('days'), 'days');
$interval_select->add($this->plugin->gettext('seconds'), 'seconds');
$out .= $interval_select->show(isset($action['seconds']) ? 'seconds' : 'days');
@@ -2370,7 +2417,7 @@ class rcube_sieve_engine
$select_method = new html_select(array(
'name' => "_action_notifymethod[$id]",
'id' => "_action_notifymethod$id",
- 'class' => 'input-group-prepend ' . $this->error_class($id, 'action', 'method', 'action_notifymethod'),
+ 'class' => 'input-group-prepend custom-select ' . $this->error_class($id, 'action', 'method', 'action_notifymethod'),
));
foreach ($notify_methods as $m_n) {
$select_method->add(rcube::Q($this->rc->text_exists('managesieve.notifymethod'.$m_n) ? $this->plugin->gettext('managesieve.notifymethod'.$m_n) : $m_n), $m_n);
@@ -2379,7 +2426,7 @@ class rcube_sieve_engine
$select_importance = new html_select(array(
'name' => "_action_notifyimportance[$id]",
'id' => "_action_notifyimportance$id",
- 'class' => $this->error_class($id, 'action', 'importance', 'action_notifyimportance')
+ 'class' => 'custom-select ' . $this->error_class($id, 'action', 'importance', 'action_notifyimportance')
));
foreach ($importance_options as $io_v => $io_n) {
$select_importance->add(rcube::Q($this->plugin->gettext($io_n)), $io_v);
@@ -2432,14 +2479,14 @@ class rcube_sieve_engine
$pos1_selector = new html_select(array(
'name' => "_action_addheader_pos[$id]",
'id' => "action_addheader_pos$id",
- 'class' => $this->error_class($id, 'action', 'pos', 'action_addheader_pos')
+ 'class' => 'custom-select ' . $this->error_class($id, 'action', 'pos', 'action_addheader_pos')
));
$pos1_selector->add($this->plugin->gettext('headeratstart'), '');
$pos1_selector->add($this->plugin->gettext('headeratend'), 'last');
$pos2_selector = new html_select(array(
'name' => "_action_delheader_pos[$id]",
'id' => "action_delheader_pos$id",
- 'class' => $this->error_class($id, 'action', 'pos', 'action_delheader_pos')
+ 'class' => 'custom-select ' . $this->error_class($id, 'action', 'pos', 'action_delheader_pos')
));
$pos2_selector->add($this->plugin->gettext('headerfromstart'), '');
$pos2_selector->add($this->plugin->gettext('headerfromend'), 'last');
@@ -3062,7 +3109,7 @@ class rcube_sieve_engine
'name' => "_{$name}[$id]",
'id' => "{$name}{$id}",
'style' => 'display:' .(!in_array($rule, array('size', 'duplicate')) ? 'inline' : 'none'),
- 'class' => 'operator_selector col-6',
+ 'class' => 'operator_selector col-6 custom-select',
'onchange' => "{$name}_select(this, '{$id}')",
));
@@ -3100,7 +3147,11 @@ class rcube_sieve_engine
protected function comparator_selector($comparator, $name, $id)
{
- $select_comp = new html_select(array('name' => "_{$name}[$id]", 'id' => "{$name}_op{$id}"));
+ $select_comp = new html_select(array(
+ 'name' => "_{$name}[$id]",
+ 'id' => "{$name}_op{$id}",
+ 'class' => 'custom-select'
+ ));
$select_comp->add(rcube::Q($this->plugin->gettext('default')), '');
$select_comp->add(rcube::Q($this->plugin->gettext('octet')), 'i;octet');
$select_comp->add(rcube::Q($this->plugin->gettext('asciicasemap')), 'i;ascii-casemap');
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_forward.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_forward.php
index a42c5bcc9..6a1966c1c 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_forward.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_forward.php
@@ -256,8 +256,8 @@ class rcube_sieve_forward extends rcube_sieve_engine
// form elements
- $status = new html_select(array('name' => 'forward_status', 'id' => 'forward_status'));
- $action = new html_select(array('name' => 'forward_action', 'id' => 'forward_action'));
+ $status = new html_select(array('name' => 'forward_status', 'id' => 'forward_status', 'class' => 'custom-select'));
+ $action = new html_select(array('name' => 'forward_action', 'id' => 'forward_action', 'class' => 'custom-select'));
$status->add($this->plugin->gettext('forward.on'), 'on');
$status->add($this->plugin->gettext('forward.off'), 'off');
@@ -274,7 +274,7 @@ class rcube_sieve_forward extends rcube_sieve_engine
if (!empty($domains)) {
sort($domains);
- $domain_select = new html_select(array('name' => 'action_domain', 'id' => 'action_domain'));
+ $domain_select = new html_select(array('name' => 'action_domain', 'id' => 'action_domain', 'class' => 'custom-select'));
$domain_select->add(array_combine($domains, $domains));
if ($redirect && $this->forward['target']) {
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
index 8716f4eb4..3e6b9bcf1 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
@@ -383,14 +383,14 @@ class rcube_sieve_vacation extends rcube_sieve_engine
}
// form elements
- $from = new html_inputfield(array('name' => 'vacation_from', 'id' => 'vacation_from', 'size' => 50));
- $subject = new html_inputfield(array('name' => 'vacation_subject', 'id' => 'vacation_subject', 'size' => 50));
+ $from = new html_inputfield(array('name' => 'vacation_from', 'id' => 'vacation_from', 'size' => 50, 'class' => 'form-control'));
+ $subject = new html_inputfield(array('name' => 'vacation_subject', 'id' => 'vacation_subject', 'size' => 50, 'class' => 'form-control'));
$reason = new html_textarea(array('name' => 'vacation_reason', 'id' => 'vacation_reason', 'cols' => 60, 'rows' => 8));
- $interval = new html_inputfield(array('name' => 'vacation_interval', 'id' => 'vacation_interval', 'size' => 5));
+ $interval = new html_inputfield(array('name' => 'vacation_interval', 'id' => 'vacation_interval', 'size' => 5, 'class' => 'form-control'));
$addresses = '';
- $status = new html_select(array('name' => 'vacation_status', 'id' => 'vacation_status'));
- $action = new html_select(array('name' => 'vacation_action', 'id' => 'vacation_action', 'onchange' => 'vacation_action_select()'));
+ $status = new html_select(array('name' => 'vacation_status', 'id' => 'vacation_status', 'class' => 'custom-select'));
+ $action = new html_select(array('name' => 'vacation_action', 'id' => 'vacation_action', 'class' => 'custom-select', 'onchange' => 'vacation_action_select()'));
$addresses_link = new html_inputfield(array(
'type' => 'button',
'href' => '#',
@@ -413,7 +413,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine
&& !empty($this->vacation['list'])
&& in_array($this->script_name, $this->active)
) {
- $after = new html_select(array('name' => 'vacation_after', 'id' => 'vacation_after'));
+ $after = new html_select(array('name' => 'vacation_after', 'id' => 'vacation_after', 'class' => 'custom-select'));
$after->add('---', '');
foreach ($this->vacation['list'] as $idx => $rule) {
@@ -423,7 +423,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine
$interval_txt = $interval->show(self::vacation_interval($this->vacation, $this->exts));
if ($seconds_extension) {
- $interval_select = new html_select(array('name' => 'vacation_interval_type'));
+ $interval_select = new html_select(array('name' => 'vacation_interval_type', 'class' => 'custom-select'));
$interval_select->add($this->plugin->gettext('days'), 'days');
$interval_select->add($this->plugin->gettext('seconds'), 'seconds');
$interval_txt .= $interval_select->show(isset($this->vacation['seconds']) ? 'seconds' : 'days');
@@ -434,14 +434,14 @@ class rcube_sieve_vacation extends rcube_sieve_engine
}
if ($date_extension || $regex_extension) {
- $date_from = new html_inputfield(array('name' => 'vacation_datefrom', 'id' => 'vacation_datefrom', 'class' => 'datepicker', 'size' => 12));
- $date_to = new html_inputfield(array('name' => 'vacation_dateto', 'id' => 'vacation_dateto', 'class' => 'datepicker', 'size' => 12));
+ $date_from = new html_inputfield(array('name' => 'vacation_datefrom', 'id' => 'vacation_datefrom', 'class' => 'datepicker form-control', 'size' => 12));
+ $date_to = new html_inputfield(array('name' => 'vacation_dateto', 'id' => 'vacation_dateto', 'class' => 'datepicker form-control', 'size' => 12));
$date_format = $this->rc->config->get('date_format', 'Y-m-d');
}
if ($date_extension) {
- $time_from = new html_inputfield(array('name' => 'vacation_timefrom', 'id' => 'vacation_timefrom', 'size' => 7));
- $time_to = new html_inputfield(array('name' => 'vacation_timeto', 'id' => 'vacation_timeto', 'size' => 7));
+ $time_from = new html_inputfield(array('name' => 'vacation_timefrom', 'id' => 'vacation_timefrom', 'size' => 7, 'class' => 'form-control'));
+ $time_to = new html_inputfield(array('name' => 'vacation_timeto', 'id' => 'vacation_timeto', 'size' => 7, 'class' => 'form-control'));
$time_format = $this->rc->config->get('time_format', 'H:i');
$date_value = array();
@@ -482,7 +482,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine
if (!empty($domains)) {
sort($domains);
- $domain_select = new html_select(array('name' => 'action_domain', 'id' => 'action_domain'));
+ $domain_select = new html_select(array('name' => 'action_domain', 'id' => 'action_domain', 'class' => 'custom-select'));
$domain_select->add(array_combine($domains, $domains));
if ($redirect && $this->vacation['target']) {
diff --git a/plugins/newmail_notifier/newmail_notifier.php b/plugins/newmail_notifier/newmail_notifier.php
index 80aaebf3d..5feb2b9c0 100644
--- a/plugins/newmail_notifier/newmail_notifier.php
+++ b/plugins/newmail_notifier/newmail_notifier.php
@@ -124,7 +124,7 @@ class newmail_notifier extends rcube_plugin
$key = 'newmail_notifier_' . $type;
if (!in_array($key, $dont_override)) {
$field_id = '_' . $key;
- $select = new html_select(array('name' => $field_id, 'id' => $field_id));
+ $select = new html_select(array('name' => $field_id, 'id' => $field_id, 'class' => 'custom-select'));
foreach (array(5, 10, 15, 30, 45, 60) as $sec) {
$label = $this->rc->gettext(array('name' => 'afternseconds', 'vars' => array('n' => $sec)));
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index f80c55491..2d5ee594e 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -2262,6 +2262,7 @@ class rcmail extends rcube
'id' => $attrib['id'] . 'Input',
'type' => 'file',
'name' => '_attachments[]',
+ 'class' => 'form-control',
);
$form_attr = array(
diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
index 8d40e3771..5a7b2c21e 100644
--- a/program/include/rcmail_output_html.php
+++ b/program/include/rcmail_output_html.php
@@ -2186,7 +2186,7 @@ EOF;
$hide_host = false;
if (is_array($default_host) && count($default_host) > 1) {
- $input_host = new html_select(array('name' => '_host', 'id' => 'rcmloginhost'));
+ $input_host = new html_select(array('name' => '_host', 'id' => 'rcmloginhost', 'class' => 'custom-select'));
foreach ($default_host as $key => $value) {
if (!is_array($value)) {
@@ -2204,7 +2204,7 @@ EOF;
'name' => '_host', 'id' => 'rcmloginhost', 'value' => is_numeric($host) ? $default_host[$host] : $host) + $attrib);
}
else if (empty($default_host)) {
- $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost')
+ $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost', 'class' => 'form-control')
+ $attrib + $host_attrib);
}
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index 8cbf8af43..70c2192d1 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -572,7 +572,11 @@ function rcmail_contact_form($form, $record, $attrib = null)
continue;
}
- $select_add = new html_select(array('class' => 'addfieldmenu', 'rel' => $section, 'data-compact' => $compact ? "true" : null));
+ $select_add = new html_select(array(
+ 'class' => 'addfieldmenu custom-select',
+ 'rel' => $section,
+ 'data-compact' => $compact ? "true" : null
+ ));
$select_add->add($RCMAIL->gettext('addfield'), '');
// render head section with name fields (not a regular list of rows)
diff --git a/program/steps/addressbook/import.inc b/program/steps/addressbook/import.inc
index 347cf7f69..830817b38 100644
--- a/program/steps/addressbook/import.inc
+++ b/program/steps/addressbook/import.inc
@@ -225,7 +225,7 @@ function rcmail_import_form($attrib)
// addressbook selector
if (count($writable_books) > 1) {
- $select = new html_select(array('name' => '_target', 'id' => 'rcmimporttarget', 'is_escaped' => true));
+ $select = new html_select(array('name' => '_target', 'id' => 'rcmimporttarget', 'is_escaped' => true, 'class' => 'custom-select'));
foreach ($writable_books as $book) {
$select->add($book['name'], $book['id']);
diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc
index 52e7b626f..bfcf8aca5 100644
--- a/program/steps/settings/edit_folder.inc
+++ b/program/steps/settings/edit_folder.inc
@@ -95,7 +95,7 @@ function rcmail_folder_form($attrib)
$folder = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true));
}
- $foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30));
+ $foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30, 'class' => 'form-control'));
$foldername = '' . $foldername->show($folder);
if ($options['special'] && ($sname = $RCMAIL->localize_foldername($mbox, false, true)) != $folder) {
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index eb82d3c85..05312ada1 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -184,7 +184,7 @@ function rcmail_user_prefs($current = null)
asort($a_lang);
$field_id = 'rcmfd_lang';
- $select = new html_select(array('name' => '_language', 'id' => $field_id));
+ $select = new html_select(array('name' => '_language', 'id' => $field_id, 'class' => 'custom-select'));
$select->add(array_values($a_lang), array_keys($a_lang));
$blocks['main']['options']['language'] = array(
@@ -200,7 +200,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_timezone';
- $select = new html_select(array('name' => '_timezone', 'id' => $field_id));
+ $select = new html_select(array('name' => '_timezone', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('autodetect'), 'auto');
$zones = array();
@@ -233,7 +233,7 @@ function rcmail_user_prefs($current = null)
$defaults = array('G:i', 'H:i', 'g:i a', 'h:i A');
$formats = (array)$RCMAIL->config->get('time_formats', $defaults);
$field_id = 'rcmfd_time_format';
- $select = new html_select(array('name' => '_time_format', 'id' => $field_id));
+ $select = new html_select(array('name' => '_time_format', 'id' => $field_id, 'class' => 'custom-select'));
foreach ($formats as $choice) {
$select->add(date($choice, $reftime), $choice);
@@ -254,7 +254,7 @@ function rcmail_user_prefs($current = null)
$defaults = array('Y-m-d','d-m-Y','Y/m/d','m/d/Y','d/m/Y','d.m.Y','j.n.Y');
$formats = (array)$RCMAIL->config->get('date_formats', $defaults);
$field_id = 'rcmfd_date_format';
- $select = new html_select(array('name' => '_date_format', 'id' => $field_id));
+ $select = new html_select(array('name' => '_date_format', 'id' => $field_id, 'class' => 'custom-select'));
foreach ($formats as $choice) {
$select->add(date($choice, $refdate), $choice);
@@ -302,7 +302,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_refresh_interval';
- $select = new html_select(array('name' => '_refresh_interval', 'id' => $field_id));
+ $select = new html_select(array('name' => '_refresh_interval', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('never'), 0);
foreach (array(1, 3, 5, 10, 15, 30, 60) as $min) {
@@ -410,7 +410,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_layout';
- $select = new html_select(array('name' => '_layout', 'id' => $field_id));
+ $select = new html_select(array('name' => '_layout', 'id' => $field_id, 'class' => 'custom-select'));
$layouts = array(
'widescreen' => 'layoutwidescreendesc',
@@ -439,7 +439,7 @@ function rcmail_user_prefs($current = null)
$config['mail_read_time'] = intval($RCMAIL->config->get('mail_read_time'));
$field_id = 'rcmfd_mail_read_time';
- $select = new html_select(array('name' => '_mail_read_time', 'id' => $field_id));
+ $select = new html_select(array('name' => '_mail_read_time', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('never'), -1);
$select->add($RCMAIL->gettext('immediately'), 0);
@@ -461,7 +461,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_mdn_requests';
- $select = new html_select(array('name' => '_mdn_requests', 'id' => $field_id));
+ $select = new html_select(array('name' => '_mdn_requests', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('askuser'), 0);
$select->add($RCMAIL->gettext('autosend'), 1);
$select->add($RCMAIL->gettext('autosendknown'), 3);
@@ -484,7 +484,7 @@ function rcmail_user_prefs($current = null)
if ($supported) {
$field_id = 'rcmfd_autoexpand_threads';
- $select = new html_select(array('name' => '_autoexpand_threads', 'id' => $field_id));
+ $select = new html_select(array('name' => '_autoexpand_threads', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('never'), 0);
$select->add($RCMAIL->gettext('do_expand'), 1);
$select->add($RCMAIL->gettext('expand_only_unread'), 2);
@@ -503,7 +503,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_mail_pagesize';
- $input = new html_inputfield(array('name' => '_mail_pagesize', 'id' => $field_id, 'size' => 5));
+ $input = new html_inputfield(array('name' => '_mail_pagesize', 'id' => $field_id, 'size' => 5, 'class' => 'form-control'));
$size = intval($config['mail_pagesize'] ?: $config['pagesize']);
$blocks['main']['options']['pagesize'] = array(
@@ -590,8 +590,12 @@ function rcmail_user_prefs($current = null)
$blocks['advanced']['options']['default_charset'] = array(
'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('defaultcharset'))),
'content' => $RCMAIL->output->charset_selector(array(
- 'id' => $field_id, 'name' => '_default_charset', 'selected' => $config['default_charset']
- )));
+ 'id' => $field_id,
+ 'name' => '_default_charset',
+ 'selected' => $config['default_charset'],
+ 'class' => 'custom-select',
+ ))
+ );
}
if (!isset($no_override['show_images'])) {
@@ -600,8 +604,12 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_show_images';
- $input = new html_select(array('name' => '_show_images', 'id' => $field_id,
- 'disabled' => !$config['prefer_html']));
+ $input = new html_select(array(
+ 'name' => '_show_images',
+ 'id' => $field_id,
+ 'class' => 'custom-select',
+ 'disabled' => !$config['prefer_html']
+ ));
$input->add($RCMAIL->gettext('never'), 0);
$input->add($RCMAIL->gettext('fromknownsenders'), 1);
@@ -658,7 +666,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_htmleditor';
- $select = new html_select(array('name' => '_htmleditor', 'id' => $field_id));
+ $select = new html_select(array('name' => '_htmleditor', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('never'), 0);
$select->add($RCMAIL->gettext('htmlonreply'), 2);
@@ -678,7 +686,12 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_autosave';
- $select = new html_select(array('name' => '_draft_autosave', 'id' => $field_id, 'disabled' => empty($config['drafts_mbox'])));
+ $select = new html_select(array(
+ 'name' => '_draft_autosave',
+ 'id' => $field_id,
+ 'class' => 'custom-select',
+ 'disabled' => empty($config['drafts_mbox'])
+ ));
$select->add($RCMAIL->gettext('never'), 0);
foreach (array(1, 3, 5, 10) as $i => $min) {
@@ -698,7 +711,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_param_folding';
- $select = new html_select(array('name' => '_mime_param_folding', 'id' => $field_id));
+ $select = new html_select(array('name' => '_mime_param_folding', 'id' => $field_id, 'class' => 'custom-select',));
$select->add($RCMAIL->gettext('2231folding'), 0);
$select->add($RCMAIL->gettext('miscfolding'), 1);
@@ -772,7 +785,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_reply_mode';
- $select = new html_select(array('name' => '_reply_mode', 'id' => $field_id));
+ $select = new html_select(array('name' => '_reply_mode', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('replyempty'), -1);
$select->add($RCMAIL->gettext('replybottomposting'), 0);
@@ -823,7 +836,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_show_sig';
- $select = new html_select(array('name' => '_show_sig', 'id' => $field_id));
+ $select = new html_select(array('name' => '_show_sig', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('never'), 0);
$select->add($RCMAIL->gettext('always'), 1);
@@ -884,7 +897,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_forward_attachment';
- $select = new html_select(array('name' => '_forward_attachment', 'id' => $field_id));
+ $select = new html_select(array('name' => '_forward_attachment', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('inline'), 0);
$select->add($RCMAIL->gettext('asattachment'), 1);
@@ -902,27 +915,29 @@ function rcmail_user_prefs($current = null)
// Default font size
$field_id = 'rcmfd_default_font_size';
- $select_default_font_size = new html_select(array('name' => '_default_font_size', 'id' => $field_id));
+ $select_size = new html_select(array('name' => '_default_font_size', 'id' => $field_id, 'class' => 'custom-select'));
$fontsizes = array('', '8pt', '9pt', '10pt', '11pt', '12pt', '14pt', '18pt', '24pt', '36pt');
foreach ($fontsizes as $size) {
- $select_default_font_size->add($size, $size);
+ $select_size->add($size, $size);
}
// Default font
$field_id = 'rcmfd_default_font';
- $select_default_font = new html_select(array('name' => '_default_font', 'id' => $field_id));
- $select_default_font->add('', '');
+ $select_font = new html_select(array('name' => '_default_font', 'id' => $field_id, 'class' => 'custom-select'));
+ $select_font->add('', '');
$fonts = rcmail::font_defs();
foreach (array_keys($fonts) as $fname) {
- $select_default_font->add($fname, $fname);
+ $select_font->add($fname, $fname);
}
$blocks['main']['options']['default_font'] = array(
'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('defaultfont'))),
- 'content' => html::div('input-group', $select_default_font->show($RCMAIL->config->get('default_font', 1)) .
- $select_default_font_size->show($RCMAIL->config->get('default_font_size', 1)))
+ 'content' => html::div('input-group',
+ $select_font->show($RCMAIL->config->get('default_font', 1)) .
+ $select_size->show($RCMAIL->config->get('default_font_size', 1))
+ )
);
}
@@ -932,7 +947,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_reply_all_mode';
- $select = new html_select(array('name' => '_reply_all_mode', 'id' => $field_id));
+ $select = new html_select(array('name' => '_reply_all_mode', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('replyalldefault'), 0);
$select->add($RCMAIL->gettext('replyalllist'), 1);
@@ -974,7 +989,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_default_addressbook';
- $select = new html_select(array('name' => '_default_addressbook', 'id' => $field_id));
+ $select = new html_select(array('name' => '_default_addressbook', 'id' => $field_id, 'class' => 'custom-select'));
foreach ($books as $book) {
$select->add(html_entity_decode($book['name'], ENT_COMPAT, 'UTF-8'), $book['id']);
@@ -993,7 +1008,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_addressbook_name_listing';
- $select = new html_select(array('name' => '_addressbook_name_listing', 'id' => $field_id));
+ $select = new html_select(array('name' => '_addressbook_name_listing', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('name'), 0);
$select->add($RCMAIL->gettext('firstname') . ' ' . $RCMAIL->gettext('surname'), 1);
@@ -1013,7 +1028,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_addressbook_sort_col';
- $select = new html_select(array('name' => '_addressbook_sort_col', 'id' => $field_id));
+ $select = new html_select(array('name' => '_addressbook_sort_col', 'id' => $field_id, 'class' => 'custom-select'));
$select->add($RCMAIL->gettext('name'), 'name');
$select->add($RCMAIL->gettext('firstname'), 'firstname');
@@ -1032,7 +1047,7 @@ function rcmail_user_prefs($current = null)
}
$field_id = 'rcmfd_addressbook_pagesize';
- $input = new html_inputfield(array('name' => '_addressbook_pagesize', 'id' => $field_id, 'size' => 5));
+ $input = new html_inputfield(array('name' => '_addressbook_pagesize', 'id' => $field_id, 'size' => 5, 'class' => 'form-control'));
$size = intval($config['addressbook_pagesize'] ?: $config['pagesize']);
$blocks['main']['options']['pagesize'] = array(
@@ -1086,6 +1101,7 @@ function rcmail_user_prefs($current = null)
'maxlength' => 30,
'folder_filter' => 'mail',
'folder_rights' => 'w',
+ 'class' => 'custom-select',
));
// #1486114, #1488279, #1489219
diff --git a/skins/elastic/templates/compose.html b/skins/elastic/templates/compose.html
index f8fb2f7ee..de7a54836 100644
--- a/skins/elastic/templates/compose.html
+++ b/skins/elastic/templates/compose.html
@@ -49,14 +49,14 @@
-
-
|