From 3536577bcbc908dbfd26d8b74696ce3da30bf48b Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 13 Jul 2009 07:22:28 -0400
Subject: [PATCH] - improve responsiveness by flushing template output asap, also set the \Seen flag after message page display
---
program/steps/mail/show.inc | 32 +++++++++++++++++++-------------
program/include/rcube_template.php | 6 +++++-
2 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index 98d8b60..af688ee 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -294,7 +294,11 @@
$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 423b933..a644a94 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -25,10 +25,6 @@
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 @@
return;
}
}
-
+
$mbox_name = $IMAP->get_mailbox_name();
// show images?
@@ -64,6 +60,10 @@
send_nocacheing_headers();
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);
@@ -143,11 +143,9 @@
$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 @@
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;
+
?>
--
Gitblit v1.9.1