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