jquery.fileupload-rails 1.5.1 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjgzMTExMGIwZTc2Y2U2Y2MzN2YwNzkxOThkYzEzMjg1NDI3YjRiYg==
4
+ MjcxMzNlMTc1MjdhY2VjNGQyOWZjYmE3OWZjZTAzYWMzMGJhZTY1Mw==
5
5
  data.tar.gz: !binary |-
6
- YzZlOWYyY2YzZWUxYmZhMjllZDI0N2RmNjY4NGNmYjJkY2Q1NmY1Yg==
6
+ NzgzMjg0NDY4YWIwNmM4MTUwOGE1MGI3NzViYTIxMWZlYzczMGU3Yg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZDkzYmRjMDdjZmZiYTE5MGZlMmRlZjQxM2IzNjJlMjQ5ZWIxODMxZmYxNjEy
10
- N2IyNzNiMzFmMGUyMWIwNGNmNzdmMmYyMDY0YTgzYTkzYWJkMzRmMjQ5NjVj
11
- MjE3MjM5MjI1YWM4ZDFlY2RiMmQ4MjZhYzBkMzMxZjJkNjVkY2Q=
9
+ MmRkNmNhOTE1MjcwMjA3NWI2Y2YwM2UzYzYxYmRlOGY3ODJhZWE5YWJmMGE2
10
+ NjZhM2MwYjJjMTA0MGYxNzk0OGFiNjkwMjc5OTQ2MmYyOWE0NmNmMjVkNzE5
11
+ YzA3MmYxMGRlNjZiZmE3NTMwNTczZWE5NWFkMDM2NjBjOTEyMTI=
12
12
  data.tar.gz: !binary |-
13
- YmI0YmY1ZGQ4MGYxMzEyNWJjMmZkZjNiZTNlOTRjMGRiYjQ0YTEyYjYyNTJk
14
- Njc1MTgyNmEzN2M2YWM1MmE5OGZjZDhlODEyNTVmNTJmYzA5MmU1YjczMDQ0
15
- MTQ3YjZlNWEyYTQxMGZkMWZiMjlhZDNkZGU5MWRiZWY0YmIzZDA=
13
+ NzFjMjU0YWU4MDViNGRhNDM1NzUzYmYzMmVhMDM3NTFjMjBjNzEyNTE4OTEx
14
+ OWFjYzNmNzJjYTE3NjUwNDNhOTE4MGE3MTM4MDg0NjE5N2U0NzI1NjhjNmM4
15
+ MWNiMzlhNjE2ZTljNTBjZDA5ZGM0ZjM1MDRmNjJkMDA0M2UzNzc=
data/Readme.md CHANGED
@@ -41,6 +41,8 @@ If you downloaded jquery.ui assets into your project, delete them and use [jquer
41
41
 
42
42
  ## Changelog
43
43
 
44
+ 1.6.0. Core 5.32.2.
45
+
44
46
  1.5.1. Core 5.31.
45
47
 
46
48
  1.5.0. Core 5.30.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "jquery.fileupload-rails"
5
- s.version = "1.5.1"
5
+ s.version = "1.6.0"
6
6
  s.author = "Semyon Perepelitsa"
7
7
  s.email = "sema@sema.in"
8
8
  s.homepage = "https://github.com/semaperepelitsa/jquery.fileupload-rails"
@@ -2,7 +2,7 @@
2
2
  //= require jquery.iframe-transport
3
3
 
4
4
  /*
5
- * jQuery File Upload Plugin 5.31
5
+ * jQuery File Upload Plugin 5.32.2
6
6
  * https://github.com/blueimp/jQuery-File-Upload
7
7
  *
8
8
  * Copyright 2010, Sebastian Tschan
@@ -13,7 +13,7 @@
13
13
  */
14
14
 
15
15
  /*jslint nomen: true, unparam: true, regexp: true */
16
- /*global define, window, document, File, Blob, FormData, location */
16
+ /*global define, window, document, location, File, Blob, FormData */
17
17
 
18
18
  (function (factory) {
19
19
  'use strict';
@@ -30,12 +30,28 @@
30
30
  }(function ($) {
31
31
  'use strict';
32
32
 
33
+ // Detect file input support, based on
34
+ // http://viljamis.com/blog/2012/file-upload-support-on-mobile/
35
+ $.support.fileInput = !(new RegExp(
36
+ // Handle devices which give false positives for the feature detection:
37
+ '(Android (1\\.[0156]|2\\.[01]))' +
38
+ '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' +
39
+ '|(w(eb)?OSBrowser)|(webOS)' +
40
+ '|(Kindle/(1\\.0|2\\.[05]|3\\.0))'
41
+ ).test(window.navigator.userAgent) ||
42
+ // Feature detection for all other devices:
43
+ $('<input type="file">').prop('disabled'));
44
+
33
45
  // The FileReader API is not actually used, but works as feature detection,
34
46
  // as e.g. Safari supports XHR file uploads via the FormData API,
35
47
  // but not non-multipart XHR file uploads:
36
48
  $.support.xhrFileUpload = !!(window.XMLHttpRequestUpload && window.FileReader);
37
49
  $.support.xhrFormDataFileUpload = !!window.FormData;
38
50
 
51
+ // Detect support for Blob slicing (required for chunked uploads):
52
+ $.support.blobSlice = window.Blob && (Blob.prototype.slice ||
53
+ Blob.prototype.webkitSlice || Blob.prototype.mozSlice);
54
+
39
55
  // The fileupload widget listens for change events on file input fields defined
40
56
  // via fileInput setting and paste or drop events of the given dropZone.
41
57
  // In addition to the default jQuery Widget methods, the fileupload widget
@@ -147,13 +163,16 @@
147
163
  // The add callback is invoked as soon as files are added to the fileupload
148
164
  // widget (via file input selection, drag & drop, paste or add API call).
149
165
  // If the singleFileUploads option is enabled, this callback will be
150
- // called once for each file in the selection for XHR file uplaods, else
166
+ // called once for each file in the selection for XHR file uploads, else
151
167
  // once for each file selection.
168
+ //
152
169
  // The upload starts when the submit method is invoked on the data parameter.
153
170
  // The data object contains a files property holding the added files
154
- // and allows to override plugin options as well as define ajax settings.
171
+ // and allows you to override plugin options as well as define ajax settings.
172
+ //
155
173
  // Listeners for this callback can also be bound the following way:
156
174
  // .bind('fileuploadadd', func);
175
+ //
157
176
  // data.submit() returns a Promise object and allows to attach additional
158
177
  // handlers using jQuery's Deferred callbacks:
159
178
  // data.submit().done(func).fail(func).always(func);
@@ -236,6 +255,11 @@
236
255
  'forceIframeTransport'
237
256
  ],
238
257
 
258
+ _blobSlice: $.support.blobSlice && function () {
259
+ var slice = this.slice || this.webkitSlice || this.mozSlice;
260
+ return slice.apply(this, arguments);
261
+ },
262
+
239
263
  _BitrateTimer: function () {
240
264
  this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime());
241
265
  this.loaded = 0;
@@ -382,9 +406,11 @@
382
406
  if (options.contentRange) {
383
407
  options.headers['Content-Range'] = options.contentRange;
384
408
  }
385
- if (!multipart) {
409
+ if (!multipart || options.blob || !this._isInstanceOf('File', file)) {
386
410
  options.headers['Content-Disposition'] = 'attachment; filename="' +
387
411
  encodeURI(file.name) + '"';
412
+ }
413
+ if (!multipart) {
388
414
  options.contentType = file.type;
389
415
  options.data = options.blob || file;
390
416
  } else if ($.support.xhrFormDataFileUpload) {
@@ -417,8 +443,6 @@
417
443
  });
418
444
  }
419
445
  if (options.blob) {
420
- options.headers['Content-Disposition'] = 'attachment; filename="' +
421
- encodeURI(file.name) + '"';
422
446
  formData.append(paramName, options.blob, file.name);
423
447
  } else {
424
448
  $.each(options.files, function (index, file) {
@@ -442,13 +466,13 @@
442
466
  },
443
467
 
444
468
  _initIframeSettings: function (options) {
469
+ var targetHost = $('<a></a>').prop('href', options.url).prop('host');
445
470
  // Setting the dataType to iframe enables the iframe transport:
446
471
  options.dataType = 'iframe ' + (options.dataType || '');
447
472
  // The iframe transport accepts a serialized array as form data:
448
473
  options.formData = this._getFormData(options);
449
474
  // Add redirect url to form data on cross-domain uploads:
450
- if (options.redirect && $('<a></a>').prop('href', options.url)
451
- .prop('host') !== location.host) {
475
+ if (options.redirect && targetHost && targetHost !== location.host) {
452
476
  options.formData.push({
453
477
  name: options.redirectParamName || 'redirect',
454
478
  value: options.redirect
@@ -630,12 +654,13 @@
630
654
  // should be uploaded in chunks, but does not invoke any
631
655
  // upload requests:
632
656
  _chunkedUpload: function (options, testOnly) {
657
+ options.uploadedBytes = options.uploadedBytes || 0;
633
658
  var that = this,
634
659
  file = options.files[0],
635
660
  fs = file.size,
636
- ub = options.uploadedBytes = options.uploadedBytes || 0,
661
+ ub = options.uploadedBytes,
637
662
  mcs = options.maxChunkSize || fs,
638
- slice = file.slice || file.webkitSlice || file.mozSlice,
663
+ slice = this._blobSlice,
639
664
  dfd = $.Deferred(),
640
665
  promise = dfd.promise(),
641
666
  jqXHR,
@@ -684,7 +709,7 @@
684
709
  // Create a progress event if no final progress event
685
710
  // with loaded equaling total has been triggered
686
711
  // for this chunk:
687
- if (o._progress.loaded === currentLoaded) {
712
+ if (currentLoaded + o.chunkSize - o._progress.loaded) {
688
713
  that._onProgress($.Event('progress', {
689
714
  lengthComputable: true,
690
715
  loaded: ub - o.uploadedBytes,
@@ -853,7 +878,8 @@
853
878
  this._slots.push(slot);
854
879
  pipe = slot.pipe(send);
855
880
  } else {
856
- pipe = (this._sequence = this._sequence.pipe(send, send));
881
+ this._sequence = this._sequence.pipe(send, send);
882
+ pipe = this._sequence;
857
883
  }
858
884
  // Return the piped Promise object, enhanced with an abort method,
859
885
  // which is delegated to the jqXHR object of the current upload,
@@ -1103,9 +1129,9 @@
1103
1129
  },
1104
1130
 
1105
1131
  _onDrop: function (e) {
1132
+ e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
1106
1133
  var that = this,
1107
- dataTransfer = e.dataTransfer = e.originalEvent &&
1108
- e.originalEvent.dataTransfer,
1134
+ dataTransfer = e.dataTransfer,
1109
1135
  data = {};
1110
1136
  if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {
1111
1137
  e.preventDefault();
@@ -1119,8 +1145,8 @@
1119
1145
  },
1120
1146
 
1121
1147
  _onDragOver: function (e) {
1122
- var dataTransfer = e.dataTransfer = e.originalEvent &&
1123
- e.originalEvent.dataTransfer;
1148
+ e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
1149
+ var dataTransfer = e.dataTransfer;
1124
1150
  if (dataTransfer) {
1125
1151
  if (this._trigger('dragover', e) === false) {
1126
1152
  return false;
@@ -1142,9 +1168,11 @@
1142
1168
  paste: this._onPaste
1143
1169
  });
1144
1170
  }
1145
- this._on(this.options.fileInput, {
1146
- change: this._onChange
1147
- });
1171
+ if ($.support.fileInput) {
1172
+ this._on(this.options.fileInput, {
1173
+ change: this._onChange
1174
+ });
1175
+ }
1148
1176
  },
1149
1177
 
1150
1178
  _destroyEventHandlers: function () {
@@ -1278,6 +1306,10 @@
1278
1306
  if (aborted) {
1279
1307
  return;
1280
1308
  }
1309
+ if (!files.length) {
1310
+ dfd.reject();
1311
+ return;
1312
+ }
1281
1313
  data.files = files;
1282
1314
  jqXHR = that._onSend(null, data).then(
1283
1315
  function (result, textStatus, jqXHR) {
@@ -1,5 +1,5 @@
1
1
  /*
2
- * jQuery Iframe Transport Plugin 1.6.1
2
+ * jQuery Iframe Transport Plugin 1.7
3
3
  * https://github.com/blueimp/jQuery-File-Upload
4
4
  *
5
5
  * Copyright 2011, Sebastian Tschan
@@ -61,9 +61,10 @@
61
61
  // IE versions below IE8 cannot set the name property of
62
62
  // elements that have already been added to the DOM,
63
63
  // so we set the name along with the iframe HTML markup:
64
+ counter += 1;
64
65
  iframe = $(
65
66
  '<iframe src="javascript:false;" name="iframe-transport-' +
66
- (counter += 1) + '"></iframe>'
67
+ counter + '"></iframe>'
67
68
  ).bind('load', function () {
68
69
  var fileInputClones,
69
70
  paramNames = $.isArray(options.paramName) ?
@@ -96,7 +97,12 @@
96
97
  // (happens on form submits to iframe targets):
97
98
  $('<iframe src="javascript:false;"></iframe>')
98
99
  .appendTo(form);
99
- form.remove();
100
+ window.setTimeout(function () {
101
+ // Removing the form in a setTimeout call
102
+ // allows Chrome's developer tools to display
103
+ // the response result
104
+ form.remove();
105
+ }, 0);
100
106
  });
101
107
  form
102
108
  .prop('target', iframe.prop('name'))
@@ -164,7 +170,15 @@
164
170
  });
165
171
 
166
172
  // The iframe transport returns the iframe content document as response.
167
- // The following adds converters from iframe to text, json, html, and script:
173
+ // The following adds converters from iframe to text, json, html, xml
174
+ // and script.
175
+ // Please note that the Content-Type for JSON responses has to be text/plain
176
+ // or text/html, if the browser doesn't include application/json in the
177
+ // Accept header, else IE will show a download dialog.
178
+ // The Content-Type for XML responses on the other hand has to be always
179
+ // application/xml or text/xml, so IE properly parses the XML response.
180
+ // See also
181
+ // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
168
182
  $.ajaxSetup({
169
183
  converters: {
170
184
  'iframe text': function (iframe) {
@@ -176,6 +190,12 @@
176
190
  'iframe html': function (iframe) {
177
191
  return iframe && $(iframe[0].body).html();
178
192
  },
193
+ 'iframe xml': function (iframe) {
194
+ var xmlDoc = iframe && iframe[0];
195
+ return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc :
196
+ $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) ||
197
+ $(xmlDoc.body).html());
198
+ },
179
199
  'iframe script': function (iframe) {
180
200
  return iframe && $.globalEval($(iframe[0].body).text());
181
201
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery.fileupload-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Semyon Perepelitsa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-03 00:00:00.000000000 Z
11
+ date: 2013-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  prerelease: false