summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2009-07-13 11:22:28 +0000
committeralecpl <alec@alec.pl>2009-07-13 11:22:28 +0000
commit3536577bcbc908dbfd26d8b74696ce3da30bf48b (patch)
tree811df6d0e0b29140b2e09ab58d51b32ea1995502
parent99a4539170b87fbf665e4b6d8884f79d28903007 (diff)
- improve responsiveness by flushing template output asap, also set the \Seen flag after message page display
-rwxr-xr-xprogram/include/rcube_template.php6
-rw-r--r--program/steps/mail/show.inc32
2 files changed, 24 insertions, 14 deletions
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;
+
?>