From 3c81b19daf29f585c5ebaf76110e8b0491702f2f Mon Sep 17 00:00:00 2001 From: christer kahasha <62720246+christer77@users.noreply.github.com> Date: Fri, 13 Sep 2024 12:02:37 +0200 Subject: [PATCH] [ENH]message list: Preview of message when viewing message list --- modules/core/message_list_functions.php | 5 +++-- modules/imap/functions.php | 9 +++++++-- modules/imap/handler_modules.php | 9 +++++++++ modules/imap/site.js | 2 +- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/core/message_list_functions.php b/modules/core/message_list_functions.php index eac7e95a2f..d8b193922e 100644 --- a/modules/core/message_list_functions.php +++ b/modules/core/message_list_functions.php @@ -299,11 +299,12 @@ function subject_callback($vals, $style, $output_mod) { $img = ''; } $subject = $output_mod->html_safe($vals[0]); + $preview_msg = isset($vals[3]) ? $output_mod->html_safe($vals[3]) : ''; $hl_subject = preg_replace("/^(\[[^\]]+\])/", '$1', $subject); if ($style == 'news') { - return sprintf('
%s %s
', $output_mod->html_safe(implode(' ', $vals[2])), $subject, $img, $output_mod->html_safe($vals[1]), $hl_subject); + return sprintf('
%s %s

%s

', $output_mod->html_safe(implode(' ', $vals[2])), $subject, $img, $output_mod->html_safe($vals[1]), $hl_subject, $preview_msg); } - return sprintf('
%s
', $output_mod->html_safe(implode(' ', $vals[2])), $subject, $output_mod->html_safe($vals[1]), $hl_subject); + return sprintf('
%s

%s

', $output_mod->html_safe(implode(' ', $vals[2])), $subject, $output_mod->html_safe($vals[1]), $hl_subject, $preview_msg); }} /** diff --git a/modules/imap/functions.php b/modules/imap/functions.php index 107f95daec..73d61734cc 100644 --- a/modules/imap/functions.php +++ b/modules/imap/functions.php @@ -216,6 +216,11 @@ function format_imap_message_list($msg_list, $output_module, $parent_list=false, $msg['subject'] = '[No Subject]'; } $subject = $msg['subject']; + $preview_msg = ""; + if (isset($msg['preview_msg'])) { + $preview_msg = $msg['preview_msg']; + } + if ($parent_list == 'sent') { $icon = 'sent'; $from = $msg['to']; @@ -291,7 +296,7 @@ function format_imap_message_list($msg_list, $output_module, $parent_list=false, $res[$id] = message_list_row(array( array('checkbox_callback', $id), array('icon_callback', $flags), - array('subject_callback', $subject, $url, $flags, $icon), + array('subject_callback', $subject, $url, $flags, $icon, $preview_msg), array('safe_output_callback', 'source', $source), array('safe_output_callback', 'from'.$nofrom, $from, null, str_replace(array($from, '<', '>'), '', $msg['from'])), array('date_callback', $date, $timestamp), @@ -307,7 +312,7 @@ function format_imap_message_list($msg_list, $output_module, $parent_list=false, array('checkbox_callback', $id), array('safe_output_callback', 'source', $source, $icon), array('safe_output_callback', 'from'.$nofrom, $from, null, str_replace(array($from, '<', '>'), '', $msg['from'])), - array('subject_callback', $subject, $url, $flags), + array('subject_callback', $subject, $url, $flags, $preview_msg), array('date_callback', $date, $timestamp, $is_snoozed), array('icon_callback', $flags) ), diff --git a/modules/imap/handler_modules.php b/modules/imap/handler_modules.php index 9008f4e99a..96a48ffd8a 100644 --- a/modules/imap/handler_modules.php +++ b/modules/imap/handler_modules.php @@ -852,6 +852,14 @@ public function process() { $msg['server_id'] = $form['imap_server_id']; $msg['server_name'] = $details['name']; $msg['folder'] = $form['folder']; + $uid = $msg['uid']; + $part = true; + $max = 87; + $msg_struct = $imap->get_message_structure($uid); + $struct = $imap->search_bodystructure($msg_struct, array('imap_part_number' => $part)); + $msg_struct_current = array_shift($struct); + $msg_text = $imap->get_message_content($uid, $part, $max, $msg_struct_current); + $msg['preview_msg'] = $msg_text; $msgs[] = $msg; } if ($imap->selected_mailbox) { @@ -2191,3 +2199,4 @@ function process_move_messages_in_screen_email_enabled_callback($val) { return $ process_site_setting('move_messages_in_screen_email', $this, 'process_move_messages_in_screen_email_enabled_callback', true, true); } } + diff --git a/modules/imap/site.js b/modules/imap/site.js index 5017f139dc..0723c1e1a7 100644 --- a/modules/imap/site.js +++ b/modules/imap/site.js @@ -1378,7 +1378,7 @@ var add_email_in_contact_trusted = function(list_email) { } ); } - }; +}; $('.screen-email-unlike').on("click", function() { imap_screen_email(); return false; });