Thomas Bruederli
2014-01-29 ed7b1f01dea56ff01e9cb4cf48c38c81c75cbbe0
program/steps/mail/compose.inc
@@ -121,10 +121,13 @@
$OUTPUT->set_env('top_posting', intval($RCMAIL->config->get('reply_mode')) > 0);
$OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ',')));
$drafts_mbox     = $RCMAIL->config->get('drafts_mbox');
$config_show_sig = $RCMAIL->config->get('show_sig', 1);
// add config parameters to client script
if (!empty($CONFIG['drafts_mbox'])) {
    $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']);
    $OUTPUT->set_env('draft_autosave', $CONFIG['draft_autosave']);
if (strlen($drafts_mbox)) {
    $OUTPUT->set_env('drafts_mailbox', $drafts_mbox);
    $OUTPUT->set_env('draft_autosave', $RCMAIL->config->get('draft_autosave'));
}
// default font for HTML editor
@@ -142,7 +145,7 @@
if ($msg_uid = $COMPOSE['param']['draft_uid']) {
    $compose_mode = RCUBE_COMPOSE_DRAFT;
    $OUTPUT->set_env('draft_id', $msg_uid);
    $RCMAIL->storage->set_folder($CONFIG['drafts_mbox']);
    $RCMAIL->storage->set_folder($drafts_mbox);
}
else if ($msg_uid = $COMPOSE['param']['reply_uid']) {
    $compose_mode = RCUBE_COMPOSE_REPLY;
@@ -159,7 +162,6 @@
$COMPOSE['mode'] = $compose_mode;
$OUTPUT->set_env('compose_mode', $compose_mode);
$config_show_sig = $RCMAIL->config->get('show_sig', 1);
if ($compose_mode == RCUBE_COMPOSE_EDIT || $compose_mode == RCUBE_COMPOSE_DRAFT) {
    // don't add signature in draft/edit mode, we'll also not remove the old-one
    // but only on page display, later we should be able to change identity/sig (#1489229)
@@ -186,7 +188,9 @@
        $RCMAIL->config->set('prefer_html', $_SESSION['msg_formats'][$mbox_name.':'.$msg_uid]);
    }
    else {
        $prefer_html = $CONFIG['prefer_html'] || $CONFIG['htmleditor'] || $compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT;
        $prefer_html = $RCMAIL->config->get('prefer_html') || $RCMAIL->config->get('htmleditor')
            || $compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT;
        $RCMAIL->config->set('prefer_html', $prefer_html);
    }
@@ -267,6 +271,9 @@
    }
}
if (!empty($COMPOSE['reply_msgid']))
  $OUTPUT->set_env('reply_msgid', $COMPOSE['reply_msgid']);
$MESSAGE->compose = array();
// get user's identities
@@ -290,6 +297,7 @@
$a_recipients = array();
$parts        = array('to', 'cc', 'bcc', 'replyto', 'followupto');
$separator    = trim($RCMAIL->config->get('recipients_separator', ',')) . ' ';
$from_email   = @mb_strtolower($MESSAGE->compose['from_email']);
foreach ($parts as $header) {
    $fvalue        = '';
@@ -387,21 +395,20 @@
                continue;
            }
            $mailto = format_email(rcube_utils::idn_to_utf8($addr_part['mailto']));
            // According to RFC5321 local part of email address is case-sensitive
            // however, here it is better to compare addresses in case-insensitive manner
            $mailto    = format_email(rcube_utils::idn_to_utf8($addr_part['mailto']));
            $mailto_lc = mb_strtolower($addr_part['mailto']);
            if (!in_array($mailto, $a_recipients)
                && ($header == 'to'
                    || $compose_mode != RCUBE_COMPOSE_REPLY
                    || empty($MESSAGE->compose['from_email'])
                    || $mailto != $MESSAGE->compose['from_email'])
            if (($header == 'to' || $compose_mode != RCUBE_COMPOSE_REPLY || $mailto_lc != $from_email)
                && !in_array($mailto_lc, $a_recipients)
            ) {
                if ($addr_part['name'] && $addr_part['mailto'] != $addr_part['name'])
                    $string = format_email_recipient($mailto, $addr_part['name']);
                else
                    $string = $mailto;
                if ($addr_part['name'] && $mailto != $addr_part['name']) {
                    $mailto = format_email_recipient($mailto, $addr_part['name']);
                }
                $fvalue[]       = $string;
                $a_recipients[] = $addr_part['mailto'];
                $fvalue[]       = $mailto;
                $a_recipients[] = $mailto_lc;
            }
        }
@@ -849,7 +856,7 @@
function rcmail_compose_body($attrib)
{
    global $RCMAIL, $CONFIG, $OUTPUT, $HTML_MODE, $MESSAGE_BODY;
    global $RCMAIL, $OUTPUT, $HTML_MODE, $MESSAGE_BODY;
    list($form_start, $form_end) = get_form_tags($attrib);
    unset($attrib['form']);
@@ -901,7 +908,7 @@
    $RCMAIL->html_editor();
    // Set language list
    if (!empty($CONFIG['enable_spellcheck'])) {
    if ($RCMAIL->config->get('enable_spellcheck')) {
        $engine           = new rcube_spellchecker();
        $dictionary       = (bool) $RCMAIL->config->get('spellcheck_dictionary');
        $spellcheck_langs = $engine->languages();
@@ -1453,20 +1460,21 @@
function rcmail_compose_attachment_list($attrib)
{
    global $RCMAIL, $OUTPUT, $CONFIG, $COMPOSE;
    global $RCMAIL, $OUTPUT, $COMPOSE;
    // add ID if not given
    if (!$attrib['id'])
        $attrib['id'] = 'rcmAttachmentList';
    $out    = "\n";
    $jslist = array();
    $button = '';
    $out       = "\n";
    $jslist    = array();
    $button    = '';
    $skin_path = $RCMAIL->config->get('skin_path');
    if (is_array($COMPOSE['attachments'])) {
        if ($attrib['deleteicon']) {
            $button = html::img(array(
                'src' => $CONFIG['skin_path'] . $attrib['deleteicon'],
                'src' => $skin_path . $attrib['deleteicon'],
                'alt' => $RCMAIL->gettext('delete')
            ));
        }
@@ -1503,13 +1511,13 @@
    }
    if ($attrib['deleteicon'])
        $COMPOSE['deleteicon'] = $CONFIG['skin_path'] . $attrib['deleteicon'];
        $COMPOSE['deleteicon'] = $skin_path . $attrib['deleteicon'];
    else if (rcube_utils::get_boolean($attrib['textbuttons']))
        $COMPOSE['textbuttons'] = true;
    if ($attrib['cancelicon'])
        $OUTPUT->set_env('cancelicon', $CONFIG['skin_path'] . $attrib['cancelicon']);
        $OUTPUT->set_env('cancelicon', $skin_path . $attrib['cancelicon']);
    if ($attrib['loadingicon'])
        $OUTPUT->set_env('loadingicon', $CONFIG['skin_path'] . $attrib['loadingicon']);
        $OUTPUT->set_env('loadingicon', $skin_path . $attrib['loadingicon']);
    $OUTPUT->set_env('attachments', $jslist);
    $OUTPUT->add_gui_object('attachmentlist', $attrib['id']);