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('
', $output_mod->html_safe(implode(' ', $vals[2])), $subject, $img, $output_mod->html_safe($vals[1]), $hl_subject);
+ return sprintf('', $output_mod->html_safe(implode(' ', $vals[2])), $subject, $img, $output_mod->html_safe($vals[1]), $hl_subject, $preview_msg);
}
- return sprintf(' | ', $output_mod->html_safe(implode(' ', $vals[2])), $subject, $output_mod->html_safe($vals[1]), $hl_subject);
+ return sprintf(' | ', $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; });