From 567e45ba565b1d03d8dc981dc0dfbc49eec4a355 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Wed, 13 Mar 2013 11:03:21 +0100 Subject: Fix HTML part detection for some specific message structures (#1488992) --- program/lib/Roundcube/rcube_message.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'program') diff --git a/program/lib/Roundcube/rcube_message.php b/program/lib/Roundcube/rcube_message.php index 60161a419..3f14266d4 100644 --- a/program/lib/Roundcube/rcube_message.php +++ b/program/lib/Roundcube/rcube_message.php @@ -210,18 +210,20 @@ class rcube_message if (!$recursive) { $level = explode('.', $part->mime_id); - // Skip if level too deep or part has a file name - if (count($level) > 2 || $part->filename) { + // Skip if part is an attachment + if ($this->is_attachment($part)) { continue; } - // HTML part can be on the lower level, if not... - if (count($level) > 1) { - array_pop($level); + // Check if the part belongs to higher-level's alternative/related + while (array_pop($level) !== null) { + if (!count($level)) { + return true; + } + $parent = $this->mime_parts[join('.', $level)]; - // ... parent isn't multipart/alternative or related if ($parent->mimetype != 'multipart/alternative' && $parent->mimetype != 'multipart/related') { - continue; + continue 2; } } } -- cgit v1.2.3 From f41edfb91f377d2bcede8d28662fb1aedf87ce37 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Wed, 13 Mar 2013 12:02:04 +0100 Subject: Fix draglayer list building, so the element used as the text source can contain any element, not only A tag or text node, but also e.g. span --- program/js/list.js | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) (limited to 'program') diff --git a/program/js/list.js b/program/js/list.js index 4eb96b417..9a531eaea 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -1143,7 +1143,7 @@ drag_mouse_move: function(e) this.draglayer.html(''); // get subjects of selected messages - var c, i, n, subject, obj; + var i, n, obj; for (n=0; n12) { @@ -1152,37 +1152,26 @@ drag_mouse_move: function(e) } if (obj = this.rows[this.selection[n]].obj) { - subject = ''; - - for (c=0, i=0; i= 0 && this.subject_col == c)) { - var entry, node, tmp_node, nodes = obj.childNodes[i].childNodes; - // find text node - for (m=0; m= 0 && this.subject_col == i)) { + var subject = $(obj.childNodes[i]).text(); + + if (!subject) break; - subject = $(node).text(); // remove leading spaces subject = $.trim(subject); // truncate line to 50 characters subject = (subject.length > 50 ? subject.substring(0, 50) + '...' : subject); - entry = $('
').text(subject); + var entry = $('
').text(subject); this.draglayer.append(entry); break; } - c++; } } } -- cgit v1.2.3