diff --git a/CHANGELOG b/CHANGELOG index 21205e780..a4fe069d6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,11 +1,17 @@ CHANGELOG RoundCube Webmail --------------------------- +2007/01/07 (estadtherr) +---------- +- Fixed display of HTML message attachments (closes #1484178) + + 2007/01/07 (thomasb) ---------- - Applied patch for preview caching (closes #1484186) - Added Thai and Vietnamese localization files + 2006/12/29 (thomasb) ---------- - Added error handling for attachment uploads diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index d057e0ec1..544552696 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -1121,7 +1121,7 @@ class rcube_imap /** - * Return a flat array with references to all parts, indexed by part numbmers + * Return a flat array with references to all parts, indexed by part numbers * * @param object Message body structure * @return Array with part number -> object pairs diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 522a1c2bb..a44d81a1d 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -973,7 +973,7 @@ function rcmail_parse_message(&$structure, $arg=array(), $recursive=FALSE) else if ($mail_part->disposition=='attachment' || $mail_part->disposition=='inline' || $mail_part->headers['content-id'] || (empty($mail_part->disposition) && ($mail_part->d_parameters['filename'] || $mail_part->ctype_parameters['name']))) { - // skip apple ressource files + // skip apple resource forks if ($message_ctype_secondary=='appledouble' && $secondary_type=='applefile') continue; @@ -995,7 +995,6 @@ function rcmail_parse_message(&$structure, $arg=array(), $recursive=FALSE) } } - // if this was a related part try to resolve references if ($message_ctype_secondary=='related' && sizeof($sa_inline_objects)) { @@ -1501,4 +1500,4 @@ function rcmail_compose_cleanup() } -?> +?> \ No newline at end of file diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc index e1ae281e4..995a4857f 100644 --- a/program/steps/mail/get.inc +++ b/program/steps/mail/get.inc @@ -88,15 +88,20 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) if ($ctype_primary=='text' && $ctype_secondary=='html') { // we have to analyze the whole structure again to find inline objects - list($MESSAGE['parts']) = rcmail_parse_message($MESSAGE['structure'], - array('safe' => (bool)$_GET['_safe'], - 'prefer_html' => TRUE, - 'get_url' => $GET_URL.'&_part=%s')); - $part = &$MESSAGE['parts'][0]; + list($new_parts, $new_attachments) = + rcmail_parse_message($MESSAGE['structure'], + array('safe' => (bool)$_GET['_safe'], + 'prefer_html' => TRUE, + 'get_url' => $GET_URL.'&_part=%s')); + + $all_parts = array_merge($new_parts, $new_attachments); + for ($partix = 0; $partix < sizeof($all_parts); $partix++) + if ($all_parts[$partix]->mime_id == $pid) + $part = &$all_parts[$partix]; // get part body if not available if (!$part->body) - $part->body = $IMAP->get_message_part($MESSAGE['UID'], $part->mime_id, $part); + $part->body = $IMAP->get_message_part($MESSAGE['UID'], $part->mime_id, $part); $OUTPUT = new rcube_html_page(); $OUTPUT->write(rcmail_print_body($part, (bool)$_GET['_safe'])); @@ -104,7 +109,6 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) else { // turn off output buffering and print part content - //@ob_end_clean(); $IMAP->get_message_part($MESSAGE['UID'], $part->mime_id, $part->encoding, true); }