From cd01dc027b8fb9cc4ce7237fbb8e7359c4a5d47e Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Sat, 21 Jun 2014 09:41:40 -0400 Subject: [PATCH] Add option to set default message list mode - default_list_mode (#1487312) --- CHANGELOG | 1 + program/steps/settings/edit_folder.inc | 6 ++++-- program/steps/settings/folders.inc | 7 ++++--- program/steps/mail/func.inc | 7 +++++-- program/steps/settings/save_folder.inc | 14 +++++--------- config/defaults.inc.php | 9 ++++++--- 6 files changed, 25 insertions(+), 19 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0b15aaf..43c2504 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Add option to set default message list mode - default_list_mode (#1487312) - Close "no subject" prompt with Enter key (#1489580) - Add config option to specify IMAP connection socket parameters - imap_conn_options (#1489948) - Password: Add option to force new users to change their password (#1486884) diff --git a/config/defaults.inc.php b/config/defaults.inc.php index c20a06b..71a2e42 100644 --- a/config/defaults.inc.php +++ b/config/defaults.inc.php @@ -978,9 +978,12 @@ // If true, after message delete/move, the next message will be displayed $config['display_next'] = true; -// 0 - Do not expand threads -// 1 - Expand all threads automatically -// 2 - Expand only threads with unread messages +// Default messages listing mode. One of 'threads' or 'list'. +$config['default_list_mode'] = 'list'; + +// 0 - Do not expand threads +// 1 - Expand all threads automatically +// 2 - Expand only threads with unread messages $config['autoexpand_threads'] = 0; // When replying: diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index ac343ad..e8bf5e1 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -166,6 +166,7 @@ { global $RCMAIL; + $default_threading = $RCMAIL->config->get('default_list_mode', 'list') == 'threads'; $a_threading = $RCMAIL->config->get('message_threading', array()); $message_sort_col = $RCMAIL->config->get('message_sort_col'); $message_sort_order = $RCMAIL->config->get('message_sort_order'); @@ -205,13 +206,15 @@ $RCMAIL->storage->set_page($_SESSION['page'] = 1); } - unset($a_threading[$_SESSION['mbox']]); + $a_threading[$_SESSION['mbox']] = false; } $RCMAIL->user->save_prefs(array('message_threading' => $a_threading)); } - $RCMAIL->storage->set_threading($a_threading[$_SESSION['mbox']]); + $threading = isset($a_threading[$_SESSION['mbox']]) ? $a_threading[$_SESSION['mbox']] : $default_threading; + + $RCMAIL->storage->set_threading($threading); } /** diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc index 30a187f..87a45fa 100644 --- a/program/steps/settings/edit_folder.inc +++ b/program/steps/settings/edit_folder.inc @@ -163,8 +163,10 @@ $value = (int) $_POST['_viewmode']; } else if (strlen($mbox_imap)) { - $a_threaded = $RCMAIL->config->get('message_threading', array()); - $value = (int) isset($a_threaded[$mbox_imap]); + $a_threaded = $RCMAIL->config->get('message_threading', array()); + $default_mode = $RCMAIL->config->get('default_list_mode', 'list'); + + $value = (int) (isset($a_threaded[$mbox_imap]) ? $a_threaded[$mbox_imap] : $default_mode == 'threads'); } $form['props']['fieldsets']['settings']['content']['viewmode'] = array( diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc index 1bcfb4c..8b74a59 100644 --- a/program/steps/settings/folders.inc +++ b/program/steps/settings/folders.inc @@ -406,16 +406,17 @@ $a_threaded = (array) $RCMAIL->config->get('message_threading', array()); $oldprefix = '/^' . preg_quote($oldname . $delimiter, '/') . '/'; - foreach (array_keys($a_threaded) as $key) { + foreach ($a_threaded as $key => $val) { if ($key == $oldname) { unset($a_threaded[$key]); - $a_threaded[$newname] = true; + $a_threaded[$newname] = $val; } else if (preg_match($oldprefix, $key)) { unset($a_threaded[$key]); - $a_threaded[preg_replace($oldprefix, $newname.$delimiter, $key)] = true; + $a_threaded[preg_replace($oldprefix, $newname.$delimiter, $key)] = $val; } } + $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded)); // #1488692: update session diff --git a/program/steps/settings/save_folder.inc b/program/steps/settings/save_folder.inc index d1449bb..a054224 100644 --- a/program/steps/settings/save_folder.inc +++ b/program/steps/settings/save_folder.inc @@ -115,15 +115,13 @@ if (isset($_POST['_viewmode'])) { $a_threaded = (array) $RCMAIL->config->get('message_threading', array()); - if ($_POST['_viewmode']) - $a_threaded[$folder['name']] = true; - else - unset($a_threaded[$folder['name']]); + $a_threaded[$folder['name']] = (bool) $_POST['_viewmode']; $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded)); } rcmail_update_folder_row($folder['name'], null, $folder['subscribe'], $folder['class']); + $OUTPUT->show_message('foldercreated', 'confirmation'); // reset folder preview frame $OUTPUT->command('subscription_select'); @@ -167,14 +165,12 @@ } else if (preg_match($oldprefix, $key)) { unset($a_threaded[$key]); - $a_threaded[preg_replace($oldprefix, $folder['name'].$delimiter, $key)] = true; + $a_threaded[preg_replace($oldprefix, $folder['name'].$delimiter, $key)] = $val; } } } - if ($_POST['_viewmode']) - $a_threaded[$folder['name']] = true; - else - unset($a_threaded[$folder['name']]); + + $a_threaded[$folder['name']] = (bool) $_POST['_viewmode']; $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded)); } -- Gitblit v1.9.1