From 9796cd2063770a8562d58d6492fd6904cdeb4627 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Mon, 02 May 2016 12:01:18 -0400 Subject: [PATCH] Merge branch 'dev-rfc822-preview' --- program/steps/mail/get.inc | 31 +++++++++++++++++++++++++++---- 1 files changed, 27 insertions(+), 4 deletions(-) diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc index f81bdc5..0191502 100644 --- a/program/steps/mail/get.inc +++ b/program/steps/mail/get.inc @@ -62,10 +62,22 @@ 'messagepartcontrols' => 'rcmail_message_part_controls', )); + $mimetype = $part ? rcmail_fix_mimetype($part->mimetype) : ''; + + // message/rfc822 preview (Note: handle also multipart/ parts, they can + // come from Enigma, which replaces message/rfc822 with real mimetype) + if ($part_id && ($mimetype == 'message/rfc822' || strpos($mimetype, 'multipart/') === 0)) { + $uid = preg_replace('/\.[0-9.]+/', '', $uid); + $uid .= '.' . $part_id; + + $OUTPUT->set_env('is_message', true); + } + $OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder()); $OUTPUT->set_env('uid', $uid); $OUTPUT->set_env('part', $part_id); $OUTPUT->set_env('filename', $filename); + $OUTPUT->set_env('mimetype', $mimetype); $OUTPUT->send('messagepart'); exit; @@ -449,12 +461,23 @@ */ function rcmail_message_part_frame($attrib) { - global $MESSAGE, $RCMAIL; + global $RCMAIL; - $part = $MESSAGE->mime_parts[asciiwords(rcube_utils::get_input_value('_part', rcube_utils::INPUT_GPC))]; - $ctype_primary = strtolower($part->ctype_primary); - $attrib['src'] = './?' . str_replace('_frame=', ($ctype_primary=='text' ? '_embed=' : '_preload='), $_SERVER['QUERY_STRING']); + if ($RCMAIL->output->get_env('is_message')) { + $attrib['src'] = $RCMAIL->url(array( + 'task' => 'mail', + 'action' => 'preview', + 'uid' => $RCMAIL->output->get_env('uid'), + 'mbox' => $RCMAIL->output->get_env('mailbox'), + 'framed' => 1, + )); + } + else { + $mimetype = $RCMAIL->output->get_env('mimetype'); + $frame_replace = strpos($mimetype, 'text/') === 0 ? '_embed=' : '_preload='; + $attrib['src'] = './?' . str_replace('_frame=', $frame_replace, $_SERVER['QUERY_STRING']); + } $RCMAIL->output->add_gui_object('messagepartframe', $attrib['id']); -- Gitblit v1.9.1