summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--config/defaults.inc.php9
-rw-r--r--program/steps/mail/func.inc7
-rw-r--r--program/steps/settings/edit_folder.inc6
-rw-r--r--program/steps/settings/folders.inc7
-rw-r--r--program/steps/settings/save_folder.inc14
6 files changed, 25 insertions, 19 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 1623fa215..8360f5345 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
+- Add option to set default message list mode - default_list_mode (#1487312)
- Enable contextmenu plugin for TinyMCE editor (#1487014)
- Fix some mime-type to extension mapping checks in Installer (#1489983)
- Fix errors when using localStorage in Safari's private browsing mode (#1489996)
diff --git a/config/defaults.inc.php b/config/defaults.inc.php
index 3a892cea3..14612e078 100644
--- a/config/defaults.inc.php
+++ b/config/defaults.inc.php
@@ -970,9 +970,12 @@ $config['check_all_folders'] = false;
// 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 10e0af6af..5cf5dfde5 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -142,6 +142,7 @@ function rcmail_init_env()
{
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');
@@ -181,13 +182,15 @@ function rcmail_init_env()
$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 6b7bd08d2..8ac51658c 100644
--- a/program/steps/settings/edit_folder.inc
+++ b/program/steps/settings/edit_folder.inc
@@ -163,8 +163,10 @@ function rcmail_folder_form($attrib)
$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 b09ea03ce..4f92298e3 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -407,16 +407,17 @@ function rcmail_rename_folder($oldname, $newname)
$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 d1449bb38..a054224f1 100644
--- a/program/steps/settings/save_folder.inc
+++ b/program/steps/settings/save_folder.inc
@@ -115,15 +115,13 @@ if (!$error && !strlen($old)) {
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 (!$error) {
}
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));
}