diff options
Diffstat (limited to 'program/steps')
-rw-r--r-- | program/steps/mail/func.inc | 69 | ||||
-rw-r--r-- | program/steps/mail/list.inc | 9 | ||||
-rw-r--r-- | program/steps/mail/mark.inc | 2 | ||||
-rw-r--r-- | program/steps/mail/show.inc | 32 | ||||
-rw-r--r-- | program/steps/settings/func.inc | 33 | ||||
-rw-r--r-- | program/steps/settings/save_prefs.inc | 3 | ||||
-rw-r--r-- | program/steps/utils/save_pref.inc | 1 |
7 files changed, 83 insertions, 66 deletions
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 28d9e4a09..a20b5c8e4 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -83,7 +83,7 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') { $OUTPUT->set_env('threading', $threading); $OUTPUT->set_env('threads', $threading || $RCMAIL->storage->get_capability('THREAD')); $OUTPUT->set_env('reply_all_mode', (int) $RCMAIL->config->get('reply_all_mode')); - $OUTPUT->set_env('preview_pane_mark_read', (int) $RCMAIL->config->get('preview_pane_mark_read')); + $OUTPUT->set_env('layout', $RCMAIL->config->get('layout') ?: 'widescreen'); if ($RCMAIL->storage->get_capability('QUOTA')) { $OUTPUT->set_env('quota', true); @@ -120,6 +120,7 @@ $OUTPUT->add_handlers(array( 'quotadisplay' => array($RCMAIL, 'quota_display'), 'messages' => 'rcmail_message_list', 'messagecountdisplay' => 'rcmail_messagecount_display', + 'listmenulink' => 'rcmail_options_menu_link', 'mailboxname' => 'rcmail_mailbox_name_display', 'messageheaders' => 'rcmail_message_headers', 'messagefullheaders' => 'rcmail_message_full_headers', @@ -358,13 +359,22 @@ function rcmail_message_list($attrib) if (!in_array('threads', $a_show_cols)) array_unshift($a_show_cols, 'threads'); + $listcols = $a_show_cols; + + // Widescreen layout uses hardcoded list of columns + if ($RCMAIL->config->get('layout', 'widescreen') == 'widescreen') { + $a_show_cols = array('threads', 'subject', 'fromto', 'date', 'flag', 'attachment'); + $listcols = $a_show_cols; + array_shift($listcols); + } + // set client env $OUTPUT->add_gui_object('messagelist', $attrib['id']); $OUTPUT->set_env('autoexpand_threads', intval($RCMAIL->config->get('autoexpand_threads'))); $OUTPUT->set_env('sort_col', $_SESSION['sort_col']); $OUTPUT->set_env('sort_order', $_SESSION['sort_order']); $OUTPUT->set_env('messages', array()); - $OUTPUT->set_env('listcols', $a_show_cols); + $OUTPUT->set_env('listcols', $listcols); $OUTPUT->include_script('list.js'); @@ -426,6 +436,11 @@ function rcmail_js_message_list($a_headers, $insert_top=false, $a_show_cols=null $a_show_cols = array_unique($a_show_cols); $_SESSION['list_attrib']['columns'] = $a_show_cols; + // Widescreen layout uses hardcoded list of columns + if ($RCMAIL->config->get('layout', 'widescreen') == 'widescreen') { + $a_show_cols = array('threads', 'subject', 'fromto', 'date', 'flag', 'attachment'); + } + // Plugins may set header's list_cols/list_flags and other rcube_message_header variables // and list columns $plugin = $RCMAIL->plugins->exec_hook('messages_list', @@ -434,6 +449,14 @@ function rcmail_js_message_list($a_headers, $insert_top=false, $a_show_cols=null $a_show_cols = $plugin['cols']; $a_headers = $plugin['messages']; + if ($RCMAIL->config->get('layout', 'widescreen') == 'widescreen') { + if (!$OUTPUT->get_env('threading')) { + if (($idx = array_search('threads', $a_show_cols)) !== false) { + unset($a_show_cols[$idx]); + } + } + } + $thead = $head_replace ? rcmail_message_list_head($_SESSION['list_attrib'], $a_show_cols) : NULL; // get name of smart From/To column in folder context @@ -441,7 +464,7 @@ function rcmail_js_message_list($a_headers, $insert_top=false, $a_show_cols=null $smart_col = rcmail_message_list_smart_column_name(); } - $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead, $smart_col); + $OUTPUT->command('set_message_coltypes', array_values($a_show_cols), $thead, $smart_col); if ($multifolder && $_SESSION['search_scope'] == 'all') { $OUTPUT->command('select_folder', ''); @@ -569,22 +592,7 @@ function rcmail_message_list_head($attrib, $a_show_cols) $a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc'); if (!empty($attrib['optionsmenuicon'])) { - $onclick = 'return ' . rcmail_output::JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu', this, event)"; - $inner = $RCMAIL->gettext('listoptions'); - if (is_string($attrib['optionsmenuicon']) && $attrib['optionsmenuicon'] != 'true') { - $inner = html::img(array('src' => $RCMAIL->output->abs_url($attrib['optionsmenuicon'], true), 'alt' => $RCMAIL->gettext('listoptions'))); - } - $list_menu = html::a(array( - 'href' => '#list-options', - 'onclick' => $onclick, - 'class' => 'listmenu', - 'id' => 'listmenulink', - 'title' => $RCMAIL->gettext('listoptions'), - 'tabindex' => '0', - ), $inner); - } - else { - $list_menu = ''; + $list_menu = rcmail_options_menu_link($attrib); } $cells = $coltypes = array(); @@ -612,7 +620,7 @@ function rcmail_message_list_head($attrib, $a_show_cols) $col_name = html::span($col, $RCMAIL->gettext('readstatus')); break; case 'threads': - $col_name = $list_menu; + $col_name = (string) $list_menu; break; case 'fromto': $label = $RCMAIL->gettext($smart_col); @@ -649,6 +657,27 @@ function rcmail_message_list_head($attrib, $a_show_cols) return $cells; } +function rcmail_options_menu_link($attrib) +{ + global $RCMAIL; + + $onclick = 'return ' . rcmail_output::JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu', this, event)"; + $inner = $title = $RCMAIL->gettext('listoptions'); + + if (is_string($attrib['optionsmenuicon']) && $attrib['optionsmenuicon'] != 'true') { + $inner = html::img(array('src' => $RCMAIL->output->abs_url($attrib['optionsmenuicon'], true), 'alt' => $title)); + } + + return html::a(array( + 'href' => '#list-options', + 'onclick' => $onclick, + 'class' => 'listmenu', + 'id' => 'listmenulink', + 'title' => $title, + 'tabindex' => '0', + ), $inner); +} + /** * return an HTML iframe for loading mail content */ diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc index a317a83b6..215d09e73 100644 --- a/program/steps/mail/list.inc +++ b/program/steps/mail/list.inc @@ -40,8 +40,15 @@ if ($sort = rcube_utils::get_input_value('_sort', rcube_utils::INPUT_GET)) { } } +// register layout change +if ($layout = rcube_utils::get_input_value('_layout', rcube_utils::INPUT_GET)) { + $OUTPUT->set_env('layout', $layout); + $save_arr['layout'] = $layout; + // force header replace on layout change + $cols = $_SESSION['list_attrib']['columns']; +} // is there a set of columns for this request? -if ($cols = rcube_utils::get_input_value('_cols', rcube_utils::INPUT_GET)) { +else if ($cols = rcube_utils::get_input_value('_cols', rcube_utils::INPUT_GET)) { $_SESSION['list_attrib']['columns'] = explode(',', $cols); if (!in_array('list_cols', $dont_override)) { $save_arr['list_cols'] = explode(',', $cols); diff --git a/program/steps/mail/mark.inc b/program/steps/mail/mark.inc index c38403a75..50665e14e 100644 --- a/program/steps/mail/mark.inc +++ b/program/steps/mail/mark.inc @@ -102,6 +102,8 @@ if ($_uids && $flag) { foreach ($input as $mbox => $uids) { rcmail_send_unread_count($mbox); } + + $OUTPUT->set_env('last_flag', $flag); } else if ($flag == 'DELETED' && $skip_deleted) { if ($_POST['_from'] == 'show') { diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index e1909a4d9..3d52e1c74 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -129,18 +129,21 @@ if ($uid) { } } - if (empty($MESSAGE->headers->flags['SEEN']) - && $MESSAGE->context === null - && ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($RCMAIL->config->get('preview_pane_mark_read')) == 0)) - ) { - $RCMAIL->output->command('set_unread_message', $MESSAGE->uid, $mbox_name); - $RCMAIL->plugins->exec_hook('message_read', array( - 'uid' => $MESSAGE->uid, - 'mailbox' => $mbox_name, - 'message' => $MESSAGE, - )); - - $set_seen_flag = true; + if (empty($MESSAGE->headers->flags['SEEN']) && $MESSAGE->context === null) { + $v = intval($RCMAIL->config->get('mail_read_time')); + if ($v > 0) { + $OUTPUT->set_env('mail_read_time', $v); + } + else if ($v == 0) { + $RCMAIL->output->command('set_unread_message', $MESSAGE->uid, $mbox_name); + $RCMAIL->plugins->exec_hook('message_read', array( + 'uid' => $MESSAGE->uid, + 'mailbox' => $mbox_name, + 'message' => $MESSAGE, + )); + + $set_seen_flag = true; + } } } @@ -170,11 +173,6 @@ if (!empty($set_seen_flag)) { } } -// Save preview_pane preference, if not set yet (#1490362) -if ($RCMAIL->action == 'preview' && !$RCMAIL->config->get('preview_pane')) { - $RCMAIL->user->save_prefs(array('preview_pane' => true)); -} - exit; diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index b712e61b0..6216a1c9d 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -408,36 +408,19 @@ function rcmail_user_prefs($current = null) 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))), ); - // show config parameter for preview pane - if (!isset($no_override['preview_pane'])) { - if (!$current) { - continue 2; - } - - $field_id = 'rcmfd_preview'; - $input = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1, - 'onchange' => "$('#rcmfd_preview_pane_mark_read').prop('disabled', !this.checked)")); - - $blocks['main']['options']['preview_pane'] = array( - 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('previewpane'))), - 'content' => $input->show($config['preview_pane']?1:0), - ); - } - - // show config parameter for preview pane auto mark as read delay - if (!isset($no_override['preview_pane_mark_read'])) { + // show config parameter for auto marking the previewed message as read + if (!isset($no_override['mail_read_time'])) { if (!$current) { continue 2; } // apply default if config option is not set at all - $config['preview_pane_mark_read'] = $RCMAIL->config->get('preview_pane_mark_read', 0); + $config['mail_read_time'] = intval($RCMAIL->config->get('mail_read_time')); - $field_id = 'rcmfd_preview_pane_mark_read'; - $select = new html_select(array('name' => '_preview_pane_mark_read', 'id' => $field_id, - 'disabled' => $config['preview_pane']?0:1)); + $field_id = 'rcmfd_mail_read_time'; + $select = new html_select(array('name' => '_mail_read_time', 'id' => $field_id)); - $select->add($RCMAIL->gettext('never'), '-1'); + $select->add($RCMAIL->gettext('never'), -1); $select->add($RCMAIL->gettext('immediately'), 0); foreach (array(5, 10, 20, 30) as $sec) { @@ -445,9 +428,9 @@ function rcmail_user_prefs($current = null) $select->add($label, $sec); } - $blocks['main']['options']['preview_pane_mark_read'] = array( + $blocks['main']['options']['mail_read_time'] = array( 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('previewpanemarkread'))), - 'content' => $select->show(intval($config['preview_pane_mark_read'])), + 'content' => $select->show($config['mail_read_time']), ); } diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc index a314aaf2b..ec5504fce 100644 --- a/program/steps/settings/save_prefs.inc +++ b/program/steps/settings/save_prefs.inc @@ -47,8 +47,7 @@ case 'general': case 'mailbox': $a_user_prefs = array( - 'preview_pane' => isset($_POST['_preview_pane']), - 'preview_pane_mark_read' => isset($_POST['_preview_pane_mark_read']) ? intval($_POST['_preview_pane_mark_read']) : $CONFIG['preview_pane_mark_read'], + 'mail_read_time' => isset($_POST['_mail_read_time']) ? intval($_POST['_mail_read_time']) : $CONFIG['mail_read_time'], 'autoexpand_threads' => isset($_POST['_autoexpand_threads']) ? intval($_POST['_autoexpand_threads']) : 0, 'mdn_requests' => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0, 'check_all_folders' => isset($_POST['_check_all_folders']), diff --git a/program/steps/utils/save_pref.inc b/program/steps/utils/save_pref.inc index 35ece103c..165d86c58 100644 --- a/program/steps/utils/save_pref.inc +++ b/program/steps/utils/save_pref.inc @@ -26,7 +26,6 @@ $sessname = rcube_utils::get_input_value('_session', rcube_utils::INPUT_POST); // Whitelisted preferences and session variables, others // can be added by plugins $whitelist = array( - 'preview_pane', 'list_cols', 'collapsed_folders', 'collapsed_abooks', |