From 3536577bcbc908dbfd26d8b74696ce3da30bf48b Mon Sep 17 00:00:00 2001 From: alecpl Date: Mon, 13 Jul 2009 11:22:28 +0000 Subject: - improve responsiveness by flushing template output asap, also set the \Seen flag after message page display --- program/include/rcube_template.php | 6 +++++- program/steps/mail/show.inc | 32 +++++++++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) (limited to 'program') diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index 98d8b6057..af688ee06 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -294,7 +294,11 @@ class rcube_template extends rcube_html_page $this->write(); } - if ($exit) { + // set output asap + ob_flush(); + flush(); + + if ($exit) { exit; } } diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index 423b9332c..a644a9480 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -25,10 +25,6 @@ $PRINT_MODE = $RCMAIL->action=='print' ? TRUE : FALSE; if ($_GET['_uid']) { $MESSAGE = new rcube_message(get_input_value('_uid', RCUBE_INPUT_GET)); - // set message charset as default - if (!empty($MESSAGE->headers->charset)) - $IMAP->set_charset($MESSAGE->headers->charset); - // if message not found (wrong UID)... if (empty($MESSAGE->headers)) { $OUTPUT->show_message('messageopenerror', 'error'); @@ -43,7 +39,7 @@ if ($_GET['_uid']) { return; } } - + $mbox_name = $IMAP->get_mailbox_name(); // show images? @@ -65,6 +61,10 @@ if ($_GET['_uid']) { else if (empty($CONFIG['devel_mode'])) send_modified_header($_SESSION['login_time'], $etag, !$MESSAGE->headers->seen); + // set message charset as default + if (!empty($MESSAGE->headers->charset)) + $IMAP->set_charset($MESSAGE->headers->charset); + $OUTPUT->set_pagetitle($MESSAGE->subject); // give message uid to the client @@ -143,11 +143,9 @@ if ($_GET['_uid']) { $OUTPUT->set_env('last_uid', $last); } - // mark message as read - if (!$MESSAGE->headers->seen) { - $IMAP->set_flag($MESSAGE->uid, 'SEEN'); - $RCMAIL->plugins->exec_hook('message_read', array('uid' => $MESSAGE->uid, 'mailbox' => $IMAP->mailbox, 'message' => $MESSAGE)); - } + if (!$MESSAGE->headers->seen) + $RCMAIL->plugins->exec_hook('message_read', array('uid' => $MESSAGE->uid, + 'mailbox' => $IMAP->mailbox, 'message' => $MESSAGE)); } @@ -223,9 +221,17 @@ $OUTPUT->add_handlers(array( if ($RCMAIL->action=='print' && $OUTPUT->template_exists('printmessage')) - $OUTPUT->send('printmessage'); + $OUTPUT->send('printmessage', false); else if ($RCMAIL->action=='preview' && $OUTPUT->template_exists('messagepreview')) - $OUTPUT->send('messagepreview'); + $OUTPUT->send('messagepreview', false); else - $OUTPUT->send('message'); + $OUTPUT->send('message', false); + + +// mark message as read +if ($MESSAGE && $MESSAGE->headers && !$MESSAGE->headers->seen) + $IMAP->set_flag($MESSAGE->uid, 'SEEN'); + +exit; + ?> -- cgit v1.2.3