From 1abb97fe1b51f4188658c86754212b44c06fdb9a Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Tue, 03 May 2011 04:27:15 -0400 Subject: [PATCH] - Add 'uploadingmany' message translation --- program/steps/mail/compose.inc | 49 +++++++++++++++++++++++++++++-------------------- 1 files changed, 29 insertions(+), 20 deletions(-) diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 41f7b14..531e698 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -28,18 +28,15 @@ $MESSAGE_FORM = NULL; $MESSAGE = NULL; +$COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GET); +$_SESSION['compose'] = $_SESSION['compose_data'][$COMPOSE_ID]; + // Nothing below is called during message composition, only at "new/forward/reply/draft" initialization or // if a compose-ID is given (i.e. when the compose step is opened in a new window/tab). -// Since there are many ways to leave the compose page improperly, it seems necessary to clean-up an old -// compose when a "new/forward/reply/draft" is called - otherwise the old session attachments will appear - -$MESSAGE_ID = get_input_value('_id', RCUBE_INPUT_GET); -if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != $MESSAGE_ID) +if (!is_array($_SESSION['compose'])) { - rcmail_compose_cleanup(); - // Infinite redirect prevention in case of broken session (#1487028) - if ($MESSAGE_ID) + if ($COMPOSE_ID) raise_error(array('code' => 500, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__, 'message' => "Invalid session"), true, true); @@ -81,9 +78,10 @@ else { $filename = basename($attach); $attachment = array( + 'group' => $COMPOSE_ID, 'name' => $filename, 'mimetype' => rc_mime_content_type($attach, $filename), - 'path' => $attach + 'path' => $attach, ); } @@ -112,8 +110,10 @@ // add some labels to client $OUTPUT->add_label('nosubject', 'nosenderwarning', 'norecipientwarning', 'nosubjectwarning', 'cancel', 'nobodywarning', 'notsentwarning', 'notuploadedwarning', 'savingmessage', 'sendingmessage', - 'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'fileuploaderror', - 'autocompletechars'); + 'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'uploadingmany', + 'fileuploaderror', 'autocompletechars'); + +$OUTPUT->set_env('compose_id', $COMPOSE_ID); // add config parameters to client script if (!empty($CONFIG['drafts_mbox'])) { @@ -127,16 +127,16 @@ $OUTPUT->set_env('autocomplete_min_length', $CONFIG['autocomplete_min_length']); // get reference message and set compose mode -if ($msg_uid = $_SESSION['compose']['param']['reply_uid']) +if ($msg_uid = $_SESSION['compose']['param']['draft_uid']) { + $RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']); + $compose_mode = RCUBE_COMPOSE_DRAFT; +} +else if ($msg_uid = $_SESSION['compose']['param']['reply_uid']) $compose_mode = RCUBE_COMPOSE_REPLY; else if ($msg_uid = $_SESSION['compose']['param']['forward_uid']) $compose_mode = RCUBE_COMPOSE_FORWARD; else if ($msg_uid = $_SESSION['compose']['param']['uid']) $compose_mode = RCUBE_COMPOSE_EDIT; -else if ($msg_uid = $_SESSION['compose']['param']['draft_uid']) { - $RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']); - $compose_mode = RCUBE_COMPOSE_DRAFT; -} $config_show_sig = $RCMAIL->config->get('show_sig', 1); if ($config_show_sig == 1) @@ -312,12 +312,14 @@ foreach ($parts as $header) { $fvalue = ''; + $decode_header = true; // we have a set of recipients stored is session if ($header == 'to' && ($mailto_id = $_SESSION['compose']['param']['mailto']) && $_SESSION['mailto'][$mailto_id] ) { $fvalue = urldecode($_SESSION['mailto'][$mailto_id]); + $decode_header = false; } else if (!empty($_POST['_'.$header])) { $fvalue = get_input_value('_'.$header, RCUBE_INPUT_POST, TRUE); @@ -371,7 +373,7 @@ // split recipients and put them back together in a unique way if (!empty($fvalue) && in_array($header, array('to', 'cc', 'bcc'))) { - $to_addresses = $IMAP->decode_address_list($fvalue); + $to_addresses = $IMAP->decode_address_list($fvalue, null, $decode_header); $fvalue = array(); foreach ($to_addresses as $addr_part) { @@ -620,7 +622,7 @@ if ($attachment = rcmail_save_image('program/blocked.gif', 'image/gif')) { $_SESSION['compose']['attachments'][$attachment['id']] = $attachment; $body = preg_replace('#\./program/blocked\.gif#', - $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'], + $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$_SESSION['compose']['id'], $body); } } @@ -921,7 +923,7 @@ if (!$skip && ($attachment = rcmail_save_attachment($message, $pid))) { $_SESSION['compose']['attachments'][$attachment['id']] = $attachment; if ($bodyIsHtml && ($part->content_id || $part->content_location)) { - $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id']; + $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$_SESSION['compose']['id']; if ($part->content_id) $cid_map['cid:'.$part->content_id] = $url; else @@ -946,7 +948,7 @@ if (($part->content_id || $part->content_location) && $part->filename) { if ($attachment = rcmail_save_attachment($message, $pid)) { $_SESSION['compose']['attachments'][$attachment['id']] = $attachment; - $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id']; + $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$_SESSION['compose']['id']; if ($part->content_id) $cid_map['cid:'.$part->content_id] = $url; else @@ -980,6 +982,7 @@ } $attachment = array( + 'group' => $_SESSION['compose']['id'], 'name' => $part->filename ? $part->filename : 'Part_'.$pid.'.'.$part->ctype_secondary, 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, 'content_id' => $part->content_id, @@ -1006,6 +1009,7 @@ $data = file_get_contents($path); $attachment = array( + 'group' => $_SESSION['compose']['id'], 'name' => rcmail_basename($path), 'mimetype' => $mimetype ? $mimetype : rc_mime_content_type($path, $name), 'data' => $data, @@ -1144,6 +1148,8 @@ $max_postsize = parse_bytes(ini_get('post_max_size')); if ($max_postsize && $max_postsize < $max_filesize) $max_filesize = $max_postsize; + + $OUTPUT->set_env('max_filesize', $max_filesize); $max_filesize = show_bytes($max_filesize); $button = new html_inputfield(array('type' => 'button')); @@ -1168,6 +1174,8 @@ { $attrib['type'] = 'file'; $attrib['name'] = '_attachments[]'; + $attrib['multiple'] = 'multiple'; + $field = new html_inputfield($attrib); return $field->show(); } @@ -1323,6 +1331,7 @@ { $hiddenfields = new html_hiddenfield(array('name' => '_task', 'value' => $RCMAIL->task)); $hiddenfields->add(array('name' => '_action', 'value' => 'send')); + $hiddenfields->add(array('name' => '_id', 'value' => $_SESSION['compose']['id'])); $form_start = empty($attrib['form']) ? $RCMAIL->output->form_tag(array('name' => "form", 'method' => "post")) : ''; $form_start .= $hiddenfields->show(); -- Gitblit v1.9.1