From cead5c727147faac362e742aa7bcecf07f68cd99 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Thu, 18 May 2006 17:24:42 -0400 Subject: [PATCH] Updated CHANGELOG --- program/steps/mail/compose.inc | 89 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 69 insertions(+), 20 deletions(-) diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 6aca28d..1f9618d 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -33,7 +33,7 @@ // add some labels to client -rcube_add_label('nosubject', 'norecipientwarning', 'nosubjectwarning', 'nobodywarning', 'sendingmessage'); +rcube_add_label('nosubject', 'norecipientwarning', 'nosubjectwarning', 'nobodywarning', 'sendingmessage', 'notsentwarning'); if ($_GET['_reply_uid'] || $_GET['_forward_uid']) @@ -59,6 +59,9 @@ $REPLY_MESSAGE = &$MESSAGE; $_SESSION['compose']['reply_uid'] = $_GET['_reply_uid']; $_SESSION['compose']['reply_msgid'] = $REPLY_MESSAGE['headers']->messageID; + $_SESSION['compose']['references'] = $REPLY_MESSAGE['headers']->reference; + $_SESSION['compose']['references'] .= !empty($REPLY_MESSAGE['headers']->reference) ? ' ' : ''; + $_SESSION['compose']['references'] .= $REPLY_MESSAGE['headers']->messageID; if ($_GET['_all']) $REPLY_MESSAGE['reply_all'] = 1; @@ -95,7 +98,7 @@ $header = 'to'; // we have contact id's as get parameters - if (!empty($_GET['_to']) && preg_match('/^([0-9]+,?)+$/', $_GET['_to'])) + if (!empty($_GET['_to']) && preg_match('/^[0-9]+(,[0-9]+)*$/', $_GET['_to'])) { $a_recipients = array(); $sql_result = $DB->query("SELECT name, email @@ -139,14 +142,16 @@ if ($fname && !empty($_POST[$fname])) - $fvalue = $_POST[$fname]; + $fvalue = get_input_value($fname, RCUBE_INPUT_POST, TRUE); else if ($header && is_object($REPLY_MESSAGE['headers'])) { // get recipent address(es) out of the message headers if ($header=='to' && $REPLY_MESSAGE['headers']->replyto) $fvalue = $IMAP->decode_header($REPLY_MESSAGE['headers']->replyto); + else if ($header=='to' && $REPLY_MESSAGE['headers']->from) $fvalue = $IMAP->decode_header($REPLY_MESSAGE['headers']->from); + // add recipent of original message if reply to all else if ($header=='cc' && $REPLY_MESSAGE['reply_all']) { @@ -169,7 +174,7 @@ $fvalue = ''; foreach ($to_addresses as $addr_part) { - if (!in_array($addr_part['mailto'], $sa_recipients)) + if (!in_array($addr_part['mailto'], $sa_recipients) && (!$REPLY_MESSAGE['FROM'] || !in_array($addr_part['mailto'], $REPLY_MESSAGE['FROM']))) { $fvalue .= (strlen($fvalue) ? ', ':'').$addr_part['string']; $sa_recipients[] = $addr_part['mailto']; @@ -214,6 +219,8 @@ $a_recipients = array(); if ($REPLY_MESSAGE && is_object($REPLY_MESSAGE['headers'])) { + $REPLY_MESSAGE['FROM'] = array(); + $a_to = $IMAP->decode_address_list($REPLY_MESSAGE['headers']->to); foreach ($a_to as $addr) { @@ -259,6 +266,9 @@ // set identity if it's one of the reply-message recipients if (in_array($sql_arr['email'], $a_recipients)) $from_id = $sql_arr['identity_id']; + + if ($REPLY_MESSAGE && is_array($REPLY_MESSAGE['FROM'])) + $REPLY_MESSAGE['FROM'][] = $sql_arr['email']; } // overwrite identity selection with post parameter @@ -287,10 +297,13 @@ function rcmail_compose_body($attrib) { - global $CONFIG, $REPLY_MESSAGE, $FORWARD_MESSAGE; + global $CONFIG, $OUTPUT, $REPLY_MESSAGE, $FORWARD_MESSAGE; list($form_start, $form_end) = get_form_tags($attrib); unset($attrib['form']); + + if (empty($attrib['id'])) + $attrib['id'] = 'rcmComposeMessage'; $attrib['name'] = '_message'; $textarea = new textarea($attrib); @@ -299,7 +312,7 @@ // use posted message body if (!empty($_POST['_message'])) - $body = stripslashes($_POST['_message']); + $body = get_input_value('_message', RCUBE_INPUT_POST, TRUE); // compose reply-body else if (is_array($REPLY_MESSAGE['parts'])) @@ -320,7 +333,15 @@ $out = $form_start ? "$form_start\n" : ''; $out .= $textarea->show($body); $out .= $form_end ? "\n$form_end" : ''; - + + // include GoogieSpell + $OUTPUT->include_script('googiespell.js'); + + $OUTPUT->add_script(sprintf("var googie1 = new GoogieSpell('\$__skin_path/images/googiespell/','%s&_action=spell&lang=');\n". + "googie1.decorateTextarea('%s');", + $GLOBALS['COMM_PATH'], + $attrib['id']), 'foot'); + return $out; } @@ -386,19 +407,31 @@ foreach ($FORWARD_MESSAGE['parts'] as $part) { - if ($part->disposition != 'attachment') - continue; + if ($part->disposition=='attachment' || $part->disposition=='inline' || $part->headers['content-id'] || + (empty($part->disposition) && ($part->d_parameters['filename'] || $part->ctype_parameters['name']))) + { + $tmp_path = tempnam($temp_dir, 'rcmAttmnt'); + if ($fp = fopen($tmp_path, 'w')) + { + fwrite($fp, $IMAP->mime_decode($part->body, $part->headers['content-transfer-encoding'])); + fclose($fp); - $tmp_path = tempnam($temp_dir, 'rcmAttmnt'); - if ($fp = fopen($tmp_path, 'w')) - { - fwrite($fp, $IMAP->mime_decode($part->body, $part->headers['content-transfer-encoding'])); - fclose($fp); - - $_SESSION['compose']['attachments'][] = array('name' => $part->d_parameters['filename'], - 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, - 'path' => $tmp_path); - } + if ($part->d_parameters['filename']) + $_SESSION['compose']['attachments'][] = array('name' => $part->d_parameters['filename'], + 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, + 'path' => $tmp_path); + + else if ($part->ctype_parameters['name']) + $_SESSION['compose']['attachments'][] = array('name' => $part->ctype_parameters['name'], + 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, + 'path' => $tmp_path); + + else if ($part->headers['content-description']) + $_SESSION['compose']['attachments'][] = array('name' => $part->headers['content-description'], + 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, + 'path' => $tmp_path); + } + } } $_SESSION['compose']['forward_attachments'] = TRUE; @@ -423,7 +456,7 @@ // use subject from post if (isset($_POST['_subject'])) - $subject = stripslashes($_POST['_subject']); + $subject = get_input_value('_subject', RCUBE_INPUT_POST, TRUE); // create a reply-subject else if (isset($REPLY_MESSAGE['subject'])) @@ -545,6 +578,22 @@ } +function rcmail_receipt_checkbox($attrib) + { + list($form_start, $form_end) = get_form_tags($attrib); + unset($attrib['form']); + + $attrib['name'] = '_receipt'; + $checkbox = new checkbox(array('name' => '_receipt', 'id' => 'receipt', 'value' => 1)); + + $out = $form_start ? "$form_start\n" : ''; + $out .= $checkbox->show(0); + $out .= $form_end ? "\n$form_end" : ''; + + return $out; + } + + function get_form_tags($attrib) { global $CONFIG, $OUTPUT, $JS_OBJECT_NAME, $MESSAGE_FORM, $SESS_HIDDEN_FIELD; -- Gitblit v1.9.1