From a41aaf3352fe0d69f662132d8e70885993ed4d9a Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 12 Jun 2014 13:18:07 -0400
Subject: [PATCH] Move some code to legacy_browser plugin

---
 plugins/legacy_browser/js/iehacks.js |   10 ++++++++++
 program/js/app.js                    |   29 ++++++++++++-----------------
 2 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/plugins/legacy_browser/js/iehacks.js b/plugins/legacy_browser/js/iehacks.js
index 91dc6d6..8f88e6f 100644
--- a/plugins/legacy_browser/js/iehacks.js
+++ b/plugins/legacy_browser/js/iehacks.js
@@ -96,3 +96,13 @@
 
   return {start: start, end: end, text: normalizedValue.substr(start, end-start)};
 };
+
+// For IE<9 we have to do it this way
+// otherwise the form will be posted to a new window
+rcube_webmail.prototype.async_upload_form_frame = function(name)
+{
+  document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="' + name + '"'
+    + ' src="program/resources/blank.gif" style="width:0; height:0; visibility:hidden"></iframe>');
+
+  return $('iframe[name="' + name + '"]');
+};
diff --git a/program/js/app.js b/program/js/app.js
index 499e2a2..9909a02 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -7497,8 +7497,10 @@
   // post the given form to a hidden iframe
   this.async_upload_form = function(form, action, onload)
   {
-    var frame, ts = new Date().getTime(),
-      frame_name = 'rcmupload'+ts;
+    // create hidden iframe
+    var ts = new Date().getTime(),
+      frame_name = 'rcmupload' + ts,
+      frame = this.async_upload_form_frame(frame_name);
 
     // upload progress support
     if (this.env.upload_progress_name) {
@@ -7513,21 +7515,7 @@
       field.val(ts);
     }
 
-    // have to do it this way for IE
-    // otherwise the form will be posted to a new window
-    if (document.all) {
-      document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="'+frame_name+'"'
-        + ' src="program/resources/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>');
-      frame = $('iframe[name="'+frame_name+'"]');
-    }
-    // for standards-compliant browsers
-    else {
-      frame = $('<iframe>').attr('name', frame_name)
-        .css({border: 'none', width: 0, height: 0, visibility: 'hidden'})
-        .appendTo(document.body);
-    }
-
-    // handle upload errors, parsing iframe content in onload
+    // handle upload errors by parsing iframe content in onload
     frame.bind('load', {ts:ts}, onload);
 
     $(form).attr({
@@ -7540,6 +7528,13 @@
     return frame_name;
   };
 
+  // create iframe element for files upload
+  this.async_upload_form_frame = function(name)
+  {
+    return $('<iframe>').attr({name: name, style: 'border: none; width: 0; height: 0; visibility: hidden'})
+      .appendTo(document.body);
+  };
+
   // html5 file-drop API
   this.document_drag_hover = function(e, over)
   {

--
Gitblit v1.9.1