summaryrefslogtreecommitdiff
path: root/program/steps/mail/show.inc
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2012-05-28 15:01:13 +0200
committerAleksander Machniak <alec@alec.pl>2012-05-28 15:01:13 +0200
commit7c1231a94b2a3dddd74b17c7c66bc9d41bb55f47 (patch)
tree83923a527076ba291a7b3b27763b2bfc67474763 /program/steps/mail/show.inc
parente349a8c9ae4adfc1aab48a5461902242930da7bf (diff)
Use browser capabilities to decide if PDF/TIFF attachments should be displayed
in an overlay page/inline or to provide only direct download for them (#1488452, #1487929)
Diffstat (limited to 'program/steps/mail/show.inc')
-rw-r--r--program/steps/mail/show.inc16
1 files changed, 14 insertions, 2 deletions
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index a104880ca..bf1757699 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -61,8 +61,20 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_GET)) {
$OUTPUT->set_env('mailbox', $mbox_name);
// mimetypes supported by the browser (default settings)
- $mimetypes = $RCMAIL->config->get('client_mimetypes', 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/x-javascript,application/pdf,application/x-shockwave-flash');
- $OUTPUT->set_env('mimetypes', is_string($mimetypes) ? explode(',', $mimetypes) : (array)$mimetypes);
+ $mimetypes = $RCMAIL->config->get('client_mimetypes', 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,image/tiff,application/x-javascript,application/pdf,application/x-shockwave-flash');
+ $mimetypes = is_string($mimetypes) ? explode(',', $mimetypes) : (array)$mimetypes;
+
+ // Remove unsupported types, which makes that attachment which cannot be
+ // displayed in a browser will be downloaded directly without displaying an overlay page
+ if (empty($_SESSION['browser_caps']['pdf']) && ($key = array_search('application/pdf', $mimetypes)) !== false) {
+ unset($mimetypes[$key]);
+ }
+ // @TODO: we could convert TIFF to JPEG and display it
+ if (empty($_SESSION['browser_caps']['tif']) && ($key = array_search('image/tiff', $mimetypes)) !== false) {
+ unset($mimetypes[$key]);
+ }
+
+ $OUTPUT->set_env('mimetypes', $mimetypes);
if ($CONFIG['drafts_mbox'])
$OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']);