From 9fa8368b01b9cee5fcc97d9c267e2308296501e2 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 30 Jun 2014 07:56:06 -0400
Subject: [PATCH] Support images drag-n-drop into image browser dialog in html signature editor

---
 program/js/editor.js                     |   16 +++++++++++++---
 program/steps/settings/upload.inc        |   14 +++++++-------
 program/js/app.js                        |    2 +-
 program/steps/settings/edit_identity.inc |    2 +-
 4 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index 3b5ff04..db9a2ff 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -7629,7 +7629,7 @@
       $.ajax({
         type: 'POST',
         dataType: 'json',
-        url: ref.url(ref.env.filedrop.action||'upload', { _id:ref.env.compose_id||ref.env.cid||'', _uploadid:ts, _remote:1 }),
+        url: ref.url(ref.env.filedrop.action || 'upload', {_id: ref.env.compose_id||ref.env.cid||'', _uploadid: ts, _remote: 1, _from: ref.env.action}),
         contentType: formdata ? false : 'multipart/form-data; boundary=' + boundary,
         processData: false,
         timeout: 0, // disable default timeout set in ajaxSetup()
diff --git a/program/js/editor.js b/program/js/editor.js
index 0dd8fef..3b49968 100644
--- a/program/js/editor.js
+++ b/program/js/editor.js
@@ -589,8 +589,14 @@
     this.hack_file_input(elem, rcmail.gui_objects.uploadform);
 
     // enable drag-n-drop area
-    if (rcmail.gui_objects.filedrop && rcmail.env.filedrop && ((window.XMLHttpRequest && XMLHttpRequest.prototype && XMLHttpRequest.prototype.sendAsBinary) || window.FormData)) {
-      rcmail.env.old_file_drop = rcmail.gui_objects.filedrop;
+    if ((window.XMLHttpRequest && XMLHttpRequest.prototype && XMLHttpRequest.prototype.sendAsBinary) || window.FormData) {
+      if (!rcmail.env.filedrop) {
+        rcmail.env.filedrop = {};
+      }
+      if (rcmail.gui_objects.filedrop) {
+        rcmail.env.old_file_drop = rcmail.gui_objects.filedrop;
+      }
+
       rcmail.gui_objects.filedrop = $('#image-selector-form');
       rcmail.gui_objects.filedrop.addClass('droptarget')
         .bind('dragover dragleave', function(e) {
@@ -637,6 +643,10 @@
   {
     if (!file.complete || !file.mimetype) {
       return;
+    }
+
+    if (rcmail.file_upload_id) {
+      rcmail.set_busy(false, null, rcmail.file_upload_id);
     }
 
     var rx, img_src;
@@ -692,7 +702,7 @@
   this.hack_file_input = function(elem, clone_form)
   {
     var link = $(elem),
-      file = $('<input>').attr('name', '_files[]'),
+      file = $('<input>').attr('name', '_file[]'),
       form = $('<form>').attr({method: 'post', enctype: 'multipart/form-data'}),
       offset = link.offset();
 
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index 34fe979..cd7ba5f 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -52,7 +52,7 @@
 $OUTPUT->include_script('list.js');
 $OUTPUT->add_handler('identityform', 'rcube_identity_form');
 $OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
-$OUTPUT->add_label('deleteidentityconfirm');
+$OUTPUT->add_label('deleteidentityconfirm', 'uploading');
 
 $OUTPUT->set_pagetitle($RCMAIL->gettext(($RCMAIL->action == 'add-identity' ? 'addidentity' : 'editidentity')));
 
diff --git a/program/steps/settings/upload.inc b/program/steps/settings/upload.inc
index 8d338eb..41e19f8 100644
--- a/program/steps/settings/upload.inc
+++ b/program/steps/settings/upload.inc
@@ -51,15 +51,15 @@
 $uploadid  = rcube_utils::get_input_value('_uploadid', rcube_utils::INPUT_GET);
 
 
-if (is_array($_FILES['_files']['tmp_name'])) {
-    $multiple = count($_FILES['_files']['tmp_name']) > 1;
+if (is_array($_FILES['_file']['tmp_name'])) {
+    $multiple = count($_FILES['_file']['tmp_name']) > 1;
 
-    foreach ($_FILES['_files']['tmp_name'] as $i => $filepath) {
+    foreach ($_FILES['_file']['tmp_name'] as $i => $filepath) {
         // Process uploaded attachment if there is no error
-        $err = $_FILES['_files']['error'][$i];
+        $err = $_FILES['_file']['error'][$i];
 
         if (!$err) {
-            if ($max_size < $_FILES['_files']['size'][$i]) {
+            if ($max_size < $_FILES['_file']['size'][$i]) {
                 $err = 'size_error';
             }
             // check image file type
@@ -77,8 +77,8 @@
         if (!$err) {
             $attachment = $RCMAIL->plugins->exec_hook('attachment_upload', array(
                 'path'     => $filepath,
-                'size'     => $_FILES['_files']['size'][$i],
-                'name'     => $_FILES['_files']['name'][$i],
+                'size'     => $_FILES['_file']['size'][$i],
+                'name'     => $_FILES['_file']['name'][$i],
                 'mimetype' => 'image/' . $imageprop['type'],
                 'group'    => $type,
             ));

--
Gitblit v1.9.1