From bb85623f8ab1eb263cb0bfac6e1758438eaa5bd2 Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Sun, 07 Jan 2007 21:26:47 -0500
Subject: [PATCH] fixed display of HTML attachments

---
 CHANGELOG                      |    6 ++++++
 program/steps/mail/func.inc    |    5 ++---
 program/steps/mail/get.inc     |   18 +++++++++++-------
 program/include/rcube_imap.inc |    2 +-
 4 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 21205e7..a4fe069 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 d057e0e..5445526 100644
--- a/program/include/rcube_imap.inc
+++ b/program/include/rcube_imap.inc
@@ -1121,7 +1121,7 @@
     
   
   /**
-   * 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 522a1c2..a44d81a 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -973,7 +973,7 @@
       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;
 
@@ -994,7 +994,6 @@
           }
         }
       }
-
 
     // if this was a related part try to resolve references
     if ($message_ctype_secondary=='related' && sizeof($sa_inline_objects))
@@ -1501,4 +1500,4 @@
   }
   
   
-?>
+?>
\ No newline at end of file
diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc
index e1ae281..995a485 100644
--- a/program/steps/mail/get.inc
+++ b/program/steps/mail/get.inc
@@ -88,15 +88,20 @@
     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
       {
       // turn off output buffering and print part content
-      //@ob_end_clean();
       $IMAP->get_message_part($MESSAGE['UID'], $part->mime_id, $part->encoding, true);
       }
 

--
Gitblit v1.9.1