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)
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Don't display PDF and TIFF attachments inline without browser support (#1488452, #1487929) |
| | | - Fix html2text conversion of strong|b|a|th|h tags when used in upper case |
| | | - Add listcontrols template container in Larry skin (#1488498) |
| | | - Fix host autoselection when default_host is an array (#1488495) |
| | |
| | | } |
| | | } |
| | | |
| | | // Skip TIFF images if browser doesn't support this format |
| | | // @TODO: we could convert TIFF to JPEG and display it |
| | | $tiff_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['tif']); |
| | | $mime_regex = $tiff_support ? '/^image\//i' : '/^image\/(?!tif)/i'; |
| | | $ext_regex = '/\.(jpg|jpeg|png|gif|bmp' . ($tiff_support ? '|tif|tiff' : '') .')$/i'; |
| | | |
| | | // list images after mail body |
| | | if ($CONFIG['inline_images'] && !empty($MESSAGE->attachments)) { |
| | | foreach ($MESSAGE->attachments as $attach_prop) { |
| | |
| | | } |
| | | |
| | | // Content-Type: image/*... |
| | | if (preg_match('/^image\//i', $attach_prop->mimetype) || |
| | | if (preg_match($mime_regex, $attach_prop->mimetype) || |
| | | // ...or known file extension: many clients are using application/octet-stream |
| | | ($attach_prop->filename && |
| | | preg_match('/^application\/octet-stream$/i', $attach_prop->mimetype) && |
| | | preg_match('/\.(jpg|jpeg|png|gif|bmp)$/i', $attach_prop->filename)) |
| | | preg_match($ext_regex, $attach_prop->filename)) |
| | | ) { |
| | | $out .= html::tag('hr') . html::p(array('align' => "center"), |
| | | html::img(array( |
| | |
| | | $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']); |