| | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Thomas Bruederli <roundcube@gmail.com> | |
| | | +-----------------------------------------------------------------------+ |
| | | |
| | | $Id$ |
| | | |
| | | */ |
| | | |
| | | // define constants for message compose mode |
| | |
| | | |
| | | if (!empty($MESSAGE->parts)) { |
| | | foreach ($MESSAGE->parts as $part) { |
| | | if ($part->type != 'content' || !$part->size) { |
| | | // skip no-content and attachment parts (#1488557) |
| | | if ($part->type != 'content' || !$part->size || $MESSAGE->is_attachment($part)) { |
| | | continue; |
| | | } |
| | | |
| | |
| | | unset($plugin); |
| | | |
| | | // add blocked.gif attachment (#1486516) |
| | | if ($isHtml && preg_match('#<img src="\./program/blocked\.gif"#', $body)) { |
| | | if ($attachment = rcmail_save_image('program/blocked.gif', 'image/gif')) { |
| | | if ($isHtml && preg_match('#<img src="\./program/resources/blocked\.gif"#', $body)) { |
| | | if ($attachment = rcmail_save_image('program/resources/blocked.gif', 'image/gif')) { |
| | | $COMPOSE['attachments'][$attachment['id']] = $attachment; |
| | | $body = preg_replace('#\./program/blocked\.gif#', |
| | | $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$COMPOSE['id'], |
| | | $body); |
| | | $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s', |
| | | $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']); |
| | | $body = preg_replace('#\./program/resources/blocked\.gif#', $url, $body); |
| | | } |
| | | } |
| | | |
| | |
| | | if ($isHtml) { |
| | | $MESSAGE_BODY = htmlentities($MESSAGE_BODY, ENT_NOQUOTES, RCMAIL_CHARSET); |
| | | $attrib['class'] = 'mce_editor'; |
| | | $attrib['is_escaped'] = true; |
| | | $textarea = new html_textarea($attrib); |
| | | $out .= $textarea->show($MESSAGE_BODY); |
| | | } |
| | |
| | | "googie.decorateTextarea('%s');\n". |
| | | "%s.set_env('spellcheck', googie);", |
| | | $RCMAIL->output->get_skin_path(), |
| | | $RCMAIL->url(array('_task' => 'utils', '_action' => 'spell')), |
| | | $RCMAIL->url(array('_task' => 'utils', '_action' => 'spell', '_remote' => 1)), |
| | | !empty($dictionary) ? 'true' : 'false', |
| | | JQ(Q(rcube_label('checkspelling'))), |
| | | JQ(Q(rcube_label('resumeediting'))), |
| | |
| | | $OUTPUT->set_env('spellcheck_langs', join(',', $editor_lang_set)); |
| | | } |
| | | |
| | | $out .= "\n".'<iframe name="savetarget" src="program/blank.gif" style="width:0;height:0;border:none;visibility:hidden;"></iframe>'; |
| | | $out .= "\n".'<iframe name="savetarget" src="program/resources/blank.gif" style="width:0;height:0;border:none;visibility:hidden;"></iframe>'; |
| | | |
| | | return $out; |
| | | } |
| | |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>", |
| | | rcube_label('subject'), Q($MESSAGE->subject), |
| | | rcube_label('date'), Q($date), |
| | | rcube_label('from'), htmlspecialchars(Q($MESSAGE->get_header('from'), 'replace'), ENT_COMPAT, $charset), |
| | | rcube_label('to'), htmlspecialchars(Q($MESSAGE->get_header('to'), 'replace'), ENT_COMPAT, $charset)); |
| | | rcube_label('from'), Q($MESSAGE->get_header('from'), 'replace'), |
| | | rcube_label('to'), Q($MESSAGE->get_header('to'), 'replace')); |
| | | |
| | | if ($MESSAGE->headers->cc) |
| | | $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>", |
| | | rcube_label('cc'), |
| | | htmlspecialchars(Q($MESSAGE->get_header('cc'), 'replace'), ENT_COMPAT, $charset)); |
| | | Q($MESSAGE->get_header('cc'), 'replace')); |
| | | |
| | | if ($MESSAGE->headers->replyto && $MESSAGE->headers->replyto != $MESSAGE->headers->from) |
| | | $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>", |
| | | rcube_label('replyto'), |
| | | htmlspecialchars(Q($MESSAGE->get_header('replyto'), 'replace'), ENT_COMPAT, $charset)); |
| | | Q($MESSAGE->get_header('replyto'), 'replace')); |
| | | |
| | | $prefix .= "</tbody></table><br>"; |
| | | } |
| | |
| | | if (!$skip && ($attachment = rcmail_save_attachment($message, $pid))) { |
| | | $COMPOSE['attachments'][$attachment['id']] = $attachment; |
| | | if ($bodyIsHtml && ($part->content_id || $part->content_location)) { |
| | | $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$COMPOSE['id']; |
| | | $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s', |
| | | $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']); |
| | | if ($part->content_id) |
| | | $cid_map['cid:'.$part->content_id] = $url; |
| | | else |
| | |
| | | if (($part->content_id || $part->content_location) && $part->filename) { |
| | | if ($attachment = rcmail_save_attachment($message, $pid)) { |
| | | $COMPOSE['attachments'][$attachment['id']] = $attachment; |
| | | $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$COMPOSE['id']; |
| | | $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s', |
| | | $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']); |
| | | if ($part->content_id) |
| | | $cid_map['cid:'.$part->content_id] = $url; |
| | | else |
| | |
| | | $hiddenfields = new html_hiddenfield(array('name' => '_task', 'value' => $RCMAIL->task)); |
| | | $hiddenfields->add(array('name' => '_action', 'value' => 'send')); |
| | | $hiddenfields->add(array('name' => '_id', 'value' => $COMPOSE['id'])); |
| | | $hiddenfields->add(array('name' => '_attachments')); |
| | | |
| | | $form_start = empty($attrib['form']) ? $RCMAIL->output->form_tag(array('name' => "form", 'method' => "post")) : ''; |
| | | $form_start .= $hiddenfields->show(); |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Register a certain container as active area to drop files onto |
| | | */ |
| | | function compose_file_drop_area($attrib) |
| | | { |
| | | global $OUTPUT; |
| | | |
| | | if ($attrib['id']) { |
| | | $OUTPUT->add_gui_object('filedrop', $attrib['id']); |
| | | $OUTPUT->set_env('filedrop', array('action' => 'upload', 'fieldname' => '_attachments')); |
| | | } |
| | | } |
| | | |
| | | |
| | | // register UI objects |
| | | $OUTPUT->add_handlers(array( |
| | |
| | | 'composeattachmentlist' => 'rcmail_compose_attachment_list', |
| | | 'composeattachmentform' => 'rcmail_compose_attachment_form', |
| | | 'composeattachment' => 'rcmail_compose_attachment_field', |
| | | 'filedroparea' => 'compose_file_drop_area', |
| | | 'priorityselector' => 'rcmail_priority_selector', |
| | | 'editorselector' => 'rcmail_editor_selector', |
| | | 'receiptcheckbox' => 'rcmail_receipt_checkbox', |