From b879fbf80e084ac1d43d439083a5da0a35f01419 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Mon, 9 Nov 2009 15:23:05 -0700 Subject: [PATCH] Support Mime Viewer raw render output --- imp/lib/Contents.php | 11 ++++++++++- imp/lib/Mime/Viewer/Alternative.php | 1 + imp/lib/Mime/Viewer/Appledouble.php | 3 ++- imp/lib/Mime/Viewer/Html.php | 3 ++- imp/lib/Mime/Viewer/Images.php | 3 ++- imp/lib/Mime/Viewer/Itip.php | 3 ++- imp/lib/Mime/Viewer/Mdn.php | 1 + imp/lib/Mime/Viewer/Partial.php | 1 + imp/lib/Mime/Viewer/Pdf.php | 3 ++- imp/lib/Mime/Viewer/Pgp.php | 3 ++- imp/lib/Mime/Viewer/Related.php | 1 + imp/lib/Mime/Viewer/Smime.php | 3 ++- imp/lib/Mime/Viewer/Status.php | 1 + imp/lib/Mime/Viewer/Tnef.php | 3 ++- imp/view.php | 6 ++++++ 15 files changed, 37 insertions(+), 9 deletions(-) diff --git a/imp/lib/Contents.php b/imp/lib/Contents.php index 1cda13368..e38427167 100644 --- a/imp/lib/Contents.php +++ b/imp/lib/Contents.php @@ -32,6 +32,7 @@ class IMP_Contents const RENDER_INLINE_DISP_NO = 4; const RENDER_INFO = 8; const RENDER_INLINE_AUTO = 16; + const RENDER_RAW = 32; /** * Flag to indicate whether the last call to getBodypart() returned @@ -445,6 +446,10 @@ class IMP_Contents case self::RENDER_INFO: $textmode = 'info'; break; + + case self::RENDER_RAW: + $textmode = 'raw'; + break; } $ret = $viewer->render($textmode); @@ -471,7 +476,7 @@ class IMP_Contents ) ); } - } elseif (($textmode != 'full') && + } elseif (!in_array($textmode, array('full', 'raw')) && ($mime_part->getPrimaryType() == 'text')) { /* If this is a text/* part, AND the browser does not support * UTF-8, give the user a link to open the part in a new window @@ -911,6 +916,10 @@ class IMP_Contents $mask |= self::RENDER_INLINE | self::RENDER_INFO; } + if (($mask & self::RENDER_RAW) && $viewer->canRender('raw')) { + return self::RENDER_RAW; + } + if (($mask & self::RENDER_FULL) && $viewer->canRender('full')) { return self::RENDER_FULL; } diff --git a/imp/lib/Mime/Viewer/Alternative.php b/imp/lib/Mime/Viewer/Alternative.php index e1e0090a9..c65ab7bea 100644 --- a/imp/lib/Mime/Viewer/Alternative.php +++ b/imp/lib/Mime/Viewer/Alternative.php @@ -24,6 +24,7 @@ class IMP_Horde_Mime_Viewer_Alternative extends Horde_Mime_Viewer_Driver 'full' => true, 'info' => false, 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Appledouble.php b/imp/lib/Mime/Viewer/Appledouble.php index 06dad0d6b..c81676f31 100644 --- a/imp/lib/Mime/Viewer/Appledouble.php +++ b/imp/lib/Mime/Viewer/Appledouble.php @@ -23,7 +23,8 @@ class IMP_Horde_Mime_Viewer_Appledouble extends Horde_Mime_Viewer_Driver 'forceinline' => true, 'full' => false, 'info' => true, - 'inline' => true + 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Html.php b/imp/lib/Mime/Viewer/Html.php index fed3e4788..29e9624cc 100644 --- a/imp/lib/Mime/Viewer/Html.php +++ b/imp/lib/Mime/Viewer/Html.php @@ -25,7 +25,8 @@ class IMP_Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Html 'forceinline' => false, 'full' => true, 'info' => true, - 'inline' => true + 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Images.php b/imp/lib/Mime/Viewer/Images.php index d647e79c3..5444fe706 100644 --- a/imp/lib/Mime/Viewer/Images.php +++ b/imp/lib/Mime/Viewer/Images.php @@ -23,7 +23,8 @@ class IMP_Horde_Mime_Viewer_Images extends Horde_Mime_Viewer_Images 'forceinline' => false, 'full' => true, 'info' => true, - 'inline' => true + 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Itip.php b/imp/lib/Mime/Viewer/Itip.php index 4eedbebdc..2df4ca2e2 100644 --- a/imp/lib/Mime/Viewer/Itip.php +++ b/imp/lib/Mime/Viewer/Itip.php @@ -25,7 +25,8 @@ class IMP_Horde_Mime_Viewer_Itip extends Horde_Mime_Viewer_Driver 'forceinline' => false, 'full' => true, 'info' => false, - 'inline' => true + 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Mdn.php b/imp/lib/Mime/Viewer/Mdn.php index ddd73d1aa..ef29826fc 100644 --- a/imp/lib/Mime/Viewer/Mdn.php +++ b/imp/lib/Mime/Viewer/Mdn.php @@ -24,6 +24,7 @@ class IMP_Horde_Mime_Viewer_Mdn extends Horde_Mime_Viewer_Driver 'full' => false, 'info' => true, 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Partial.php b/imp/lib/Mime/Viewer/Partial.php index 9f5b24b2f..1568798f4 100644 --- a/imp/lib/Mime/Viewer/Partial.php +++ b/imp/lib/Mime/Viewer/Partial.php @@ -24,6 +24,7 @@ class IMP_Horde_Mime_Viewer_Partial extends Horde_Mime_Viewer_Driver 'full' => false, 'info' => false, 'inline' => false, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Pdf.php b/imp/lib/Mime/Viewer/Pdf.php index c0918495c..f07c70e9d 100644 --- a/imp/lib/Mime/Viewer/Pdf.php +++ b/imp/lib/Mime/Viewer/Pdf.php @@ -23,7 +23,8 @@ class IMP_Horde_Mime_Viewer_Pdf extends Horde_Mime_Viewer_Pdf 'forceinline' => false, 'full' => true, 'info' => true, - 'inline' => false + 'inline' => false, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Pgp.php b/imp/lib/Mime/Viewer/Pgp.php index 583404f6b..4a8f6d9ad 100644 --- a/imp/lib/Mime/Viewer/Pgp.php +++ b/imp/lib/Mime/Viewer/Pgp.php @@ -32,7 +32,8 @@ class IMP_Horde_Mime_Viewer_Pgp extends Horde_Mime_Viewer_Driver 'forceinline' => true, 'full' => false, 'info' => false, - 'inline' => true + 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Related.php b/imp/lib/Mime/Viewer/Related.php index 7c073c797..ba3f44647 100644 --- a/imp/lib/Mime/Viewer/Related.php +++ b/imp/lib/Mime/Viewer/Related.php @@ -24,6 +24,7 @@ class IMP_Horde_Mime_Viewer_Related extends Horde_Mime_Viewer_Driver 'full' => true, 'info' => false, 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Smime.php b/imp/lib/Mime/Viewer/Smime.php index d60e4b791..fd4fad516 100644 --- a/imp/lib/Mime/Viewer/Smime.php +++ b/imp/lib/Mime/Viewer/Smime.php @@ -35,7 +35,8 @@ class IMP_Horde_Mime_Viewer_Smime extends Horde_Mime_Viewer_Driver 'forceinline' => true, 'full' => false, 'info' => false, - 'inline' => true + 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Status.php b/imp/lib/Mime/Viewer/Status.php index c4fe0a6d3..fb67b26fa 100644 --- a/imp/lib/Mime/Viewer/Status.php +++ b/imp/lib/Mime/Viewer/Status.php @@ -24,6 +24,7 @@ class IMP_Horde_Mime_Viewer_Status extends Horde_Mime_Viewer_Driver 'full' => false, 'info' => true, 'inline' => true, + 'raw' => false ); /** diff --git a/imp/lib/Mime/Viewer/Tnef.php b/imp/lib/Mime/Viewer/Tnef.php index 220d1ae9c..7117a044e 100644 --- a/imp/lib/Mime/Viewer/Tnef.php +++ b/imp/lib/Mime/Viewer/Tnef.php @@ -23,7 +23,8 @@ class IMP_Horde_Mime_Viewer_Tnef extends Horde_Mime_Viewer_Tnef 'forceinline' => true, 'full' => true, 'info' => true, - 'inline' => false + 'inline' => false, + 'raw' => false ); /** diff --git a/imp/view.php b/imp/view.php index 991dbf548..a53a484f9 100644 --- a/imp/view.php +++ b/imp/view.php @@ -107,6 +107,12 @@ case 'download_render': switch ($actionID) { case 'download_attach': $mime = $contents->getMIMEPart($id); + if ($contents->canDisplay($id, IMP_Contents::RENDER_RAW)) { + $render = $contents->renderMIMEPart($id, IMP_Contents::RENDER_RAW); + reset($render); + $mime->setContents($render[key($render)]['data']); + } + if (!$name = $mime->getName(true)) { $name = _("unnamed"); } -- 2.11.0