| | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Thomas Bruederli <roundcube@gmail.com> | |
| | | +-----------------------------------------------------------------------+ |
| | | |
| | | $Id$ |
| | | |
| | | */ |
| | | |
| | | $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)) { |
| | |
| | | $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']); |
| | |
| | | |
| | | function rcmail_message_attachments($attrib) |
| | | { |
| | | global $PRINT_MODE, $MESSAGE; |
| | | global $PRINT_MODE, $MESSAGE, $RCMAIL; |
| | | |
| | | $out = $ol = ''; |
| | | |
| | | if (sizeof($MESSAGE->attachments)) { |
| | | foreach ($MESSAGE->attachments as $attach_prop) { |
| | | if ($PRINT_MODE) { |
| | | $ol .= html::tag('li', null, sprintf("%s (%s)", Q($attach_prop->filename), Q(show_bytes($attach_prop->size)))); |
| | | } |
| | | else { |
| | | if (mb_strlen($attach_prop->filename) > 50) { |
| | | $filename = abbreviate_string($attach_prop->filename, 50); |
| | | $title = $attach_prop->filename; |
| | | } |
| | | else { |
| | | $filename = $attach_prop->filename; |
| | | $title = ''; |
| | | $filename = $attach_prop->filename; |
| | | if (empty($filename) && $attach_prop->mimetype == 'text/html') { |
| | | $filename = rcube_label('htmlmessage'); |
| | | } |
| | | |
| | | $ol .= html::tag('li', rcmail_filetype2classname($attach_prop->mimetype, $attach_prop->filename), |
| | | if ($PRINT_MODE) { |
| | | $size = $RCMAIL->message_part_size($attach_prop); |
| | | $ol .= html::tag('li', null, Q(sprintf("%s (%s)", $filename, $size))); |
| | | } |
| | | else { |
| | | if (mb_strlen($filename) > 50) { |
| | | $filename = abbreviate_string($filename, 50); |
| | | $title = $filename; |
| | | } |
| | | else { |
| | | $title = ''; |
| | | } |
| | | |
| | | $ol .= html::tag('li', rcmail_filetype2classname($attach_prop->mimetype, $filename), |
| | | html::a(array( |
| | | 'href' => $MESSAGE->get_part_url($attach_prop->mime_id, false), |
| | | 'onclick' => sprintf( |