diff options
author | Thomas Bruederli <thomas@roundcube.net> | 2012-05-31 10:42:46 +0200 |
---|---|---|
committer | Thomas Bruederli <thomas@roundcube.net> | 2012-05-31 10:42:46 +0200 |
commit | de6876597453e42690070af12e82e1fac0ad1b04 (patch) | |
tree | a8dc21c669be4364608e86007bd0a19191bcb189 /program/steps/mail/show.inc | |
parent | 8c16ea9632610f1104c1e54f97391e2b2a2776de (diff) | |
parent | a71039df755e980f8ff1b32ea367250a0e74521a (diff) |
Merged CHANGELOG
Diffstat (limited to 'program/steps/mail/show.inc')
-rw-r--r-- | program/steps/mail/show.inc | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index 2d4d8e5a5..158ba31c8 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -21,6 +21,16 @@ $PRINT_MODE = $RCMAIL->action=='print' ? TRUE : FALSE; +// Read browser capabilities and store them in session +if ($caps = get_input_value('_caps', RCUBE_INPUT_GET)) { + $browser_caps = array(); + foreach (explode(',', $caps) as $cap) { + $cap = explode('=', $cap); + $browser_caps[$cap[0]] = $cap[1]; + } + $_SESSION['browser_caps'] = $browser_caps; +} + // similar code as in program/steps/mail/get.inc if ($uid = get_input_value('_uid', RCUBE_INPUT_GET)) { $MESSAGE = new rcube_message($uid); @@ -51,8 +61,25 @@ 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/bmp,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]); + } + if (empty($_SESSION['browser_caps']['flash']) && ($key = array_search('application/x-shockwave-flash', $mimetypes)) !== false) { + unset($mimetypes[$key]); + } + if (empty($_SESSION['browser_caps']['tif']) && ($key = array_search('image/tiff', $mimetypes)) !== false) { + // we can convert tiff to jpeg + if (!$RCMAIL->config->get('im_convert_path')) { + unset($mimetypes[$key]); + } + } + + $OUTPUT->set_env('mimetypes', $mimetypes); if ($CONFIG['drafts_mbox']) $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']); |