From ce3105c58f921f33654c738fa7460d3d107813ce Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 24 Mar 2016 12:07:31 -0400
Subject: [PATCH] Reply/Reply-All/Forward/Change-format buttons for message/rfc822 preview
---
program/lib/Roundcube/rcube_message.php | 64 ++++++++++++++++++++++++-------
1 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/program/lib/Roundcube/rcube_message.php b/program/lib/Roundcube/rcube_message.php
index c5c436f..9e4e1d2 100644
--- a/program/lib/Roundcube/rcube_message.php
+++ b/program/lib/Roundcube/rcube_message.php
@@ -339,13 +339,17 @@
{
// check all message parts
foreach ($this->mime_parts as $part) {
- if (!$this->check_context($part)) {
- continue;
- }
-
if ($part->mimetype == 'text/html' || ($enriched && $part->mimetype == 'text/enriched')) {
// Skip if part is an attachment, don't use is_attachment() here
if ($part->filename) {
+ continue;
+ }
+
+ if (!$part->size) {
+ continue;
+ }
+
+ if (!$this->check_context($part)) {
continue;
}
@@ -361,19 +365,22 @@
return true;
}
- $parent = $this->mime_parts[join('.', $level)];
- $max_delta = $depth - (1 + ($last == 'multipart/alternative' ? 1 : 0));
- $last = $parent->mimetype;
+ $parent = $this->mime_parts[join('.', $level)];
- if (!preg_match('/^multipart\/(alternative|related|signed|encrypted|mixed)$/', $parent->mimetype)
- || ($parent->mimetype == 'multipart/mixed' && $parent_depth < $max_delta)) {
+ if (!$this->check_context($parent)) {
+ return true;
+ }
+
+ $max_delta = $depth - (1 + ($last == 'multipart/alternative' ? 1 : 0));
+ $last = $parent->real_mimetype ?: $parent->mimetype;
+
+ if (!preg_match('/^multipart\/(alternative|related|signed|encrypted|mixed)$/', $last)
+ || ($last == 'multipart/mixed' && $parent_depth < $max_delta)) {
continue 2;
}
}
- if ($part->size) {
- return true;
- }
+ return true;
}
}
@@ -400,6 +407,10 @@
continue;
}
+ if (!$part->size) {
+ continue;
+ }
+
if (!$this->check_context($part)) {
continue;
}
@@ -413,14 +424,17 @@
}
$parent = $this->mime_parts[join('.', $level)];
+
+ if (!$this->check_context($parent)) {
+ return true;
+ }
+
if ($parent->mimetype != 'multipart/alternative' && $parent->mimetype != 'multipart/related') {
continue 2;
}
}
- if ($part->size) {
- return true;
- }
+ return true;
}
}
@@ -479,6 +493,26 @@
}
/**
+ * Return message parts in current context
+ */
+ public function mime_parts()
+ {
+ if ($this->context === null) {
+ return $this->mime_parts;
+ }
+
+ $parts = array();
+
+ foreach ($this->mime_parts as $part_id => $part) {
+ if ($this->check_context($part)) {
+ $parts[$part_id] = $part;
+ }
+ }
+
+ return $parts;
+ }
+
+ /**
* Checks if part of the message is an attachment (or part of it)
*
* @param rcube_message_part $part Message part
--
Gitblit v1.9.1