jquery.fileupload-rails 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Readme.md +5 -5
- data/demo/.gitignore +0 -13
- data/demo/Gemfile +2 -2
- data/demo/Rakefile +2 -0
- data/demo/app/assets/javascripts/application.js.coffee +1 -1
- data/demo/bin/bundle +3 -0
- data/demo/bin/rails +4 -0
- data/demo/bin/rake +4 -0
- data/demo/config/application.rb +3 -1
- data/demo/config/routes.rb +1 -1
- data/jquery.fileupload-rails.gemspec +1 -1
- data/vendor/assets/javascripts/jquery.fileupload.js +79 -26
- data/vendor/assets/javascripts/jquery.iframe-transport.js +10 -4
- metadata +17 -14
- data/demo/script/rails +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2bf21e6407433ab2910ed3579e010eca9f350626
|
4
|
+
data.tar.gz: 4879e8e4dfd53fa02cb9a5e92a87ee2798a5f75d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a42d4ce5e2fb2cdccff283ecfb56628afc19f5b5fc57120fcb97cf9e753d1261890e6d5c31d6c493ccfe5838cace5a16ddf8b782316706a83079dc8382ab8bb7
|
7
|
+
data.tar.gz: 75d2ec6fa20bb3eefdda82cd079542a367f1e969d1cb1d3bd961cf2cbef770a6bd4e7e348aafc00b126c37329ec155d2770bd4c41edce626b7d55f1009a75fe6
|
data/Readme.md
CHANGED
@@ -8,13 +8,11 @@ There are no instructions here on how to use the library itself.
|
|
8
8
|
|
9
9
|
## Usage
|
10
10
|
|
11
|
-
Add
|
11
|
+
Add a line to your Gemfile.
|
12
12
|
|
13
|
-
|
14
|
-
gem 'jquery.fileupload-rails'
|
15
|
-
end
|
13
|
+
gem 'jquery.fileupload-rails'
|
16
14
|
|
17
|
-
|
15
|
+
Now you can require the javascript library in application.js:
|
18
16
|
|
19
17
|
//= require jquery.fileupload
|
20
18
|
|
@@ -41,6 +39,8 @@ If you downloaded jquery.ui assets into your project, delete them and use [jquer
|
|
41
39
|
|
42
40
|
## Changelog
|
43
41
|
|
42
|
+
1.8.0. Core 5.40.0, updated demo app.
|
43
|
+
|
44
44
|
1.7.0. Core 5.34.0.
|
45
45
|
|
46
46
|
1.6.1. Core 5.32.5, jQuery UI Rails 4 compatibility.
|
data/demo/.gitignore
CHANGED
@@ -1,16 +1,3 @@
|
|
1
|
-
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
-
#
|
3
|
-
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
-
# or operating system, you probably want to add a global ignore instead:
|
5
|
-
# git config --global core.excludesfile ~/.gitignore_global
|
6
|
-
|
7
|
-
# Ignore bundler config
|
8
1
|
/.bundle
|
9
|
-
/bin
|
10
|
-
|
11
|
-
# Ignore the default SQLite database.
|
12
|
-
/db/*.sqlite3
|
13
|
-
|
14
|
-
# Ignore all logfiles and tempfiles.
|
15
2
|
/log/*.log
|
16
3
|
/tmp
|
data/demo/Gemfile
CHANGED
data/demo/Rakefile
ADDED
data/demo/bin/bundle
ADDED
data/demo/bin/rails
ADDED
data/demo/bin/rake
ADDED
data/demo/config/application.rb
CHANGED
@@ -2,14 +2,16 @@ require File.expand_path('../boot', __FILE__)
|
|
2
2
|
|
3
3
|
require 'action_controller/railtie'
|
4
4
|
require 'sprockets/railtie'
|
5
|
-
Bundler.require
|
5
|
+
Bundler.require
|
6
6
|
|
7
7
|
module Demo
|
8
8
|
class Application < Rails::Application
|
9
9
|
config.cache_classes = false
|
10
|
+
config.eager_load = false
|
10
11
|
config.consider_all_requests_local = true
|
11
12
|
|
12
13
|
config.session_store :disabled
|
14
|
+
config.secret_key_base = "no"
|
13
15
|
config.active_support.deprecation = :log
|
14
16
|
config.action_dispatch.best_standards_support = :builtin
|
15
17
|
|
data/demo/config/routes.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
//= require jquery.iframe-transport
|
3
3
|
|
4
4
|
/*
|
5
|
-
* jQuery File Upload Plugin 5.
|
5
|
+
* jQuery File Upload Plugin 5.40.0
|
6
6
|
* https://github.com/blueimp/jQuery-File-Upload
|
7
7
|
*
|
8
8
|
* Copyright 2010, Sebastian Tschan
|
@@ -12,8 +12,8 @@
|
|
12
12
|
* http://www.opensource.org/licenses/MIT
|
13
13
|
*/
|
14
14
|
|
15
|
-
/*
|
16
|
-
/*global define, window, document, location,
|
15
|
+
/* jshint nomen:false */
|
16
|
+
/* global define, window, document, location, Blob, FormData */
|
17
17
|
|
18
18
|
(function (factory) {
|
19
19
|
'use strict';
|
@@ -43,9 +43,11 @@
|
|
43
43
|
$('<input type="file">').prop('disabled'));
|
44
44
|
|
45
45
|
// The FileReader API is not actually used, but works as feature detection,
|
46
|
-
// as
|
47
|
-
// but not non-multipart XHR file uploads
|
48
|
-
|
46
|
+
// as some Safari versions (5?) support XHR file uploads via the FormData API,
|
47
|
+
// but not non-multipart XHR file uploads.
|
48
|
+
// window.XMLHttpRequestUpload is not available on IE10, so we check for
|
49
|
+
// window.ProgressEvent instead to detect XHR2 file upload capability:
|
50
|
+
$.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader);
|
49
51
|
$.support.xhrFormDataFileUpload = !!window.FormData;
|
50
52
|
|
51
53
|
// Detect support for Blob slicing (required for chunked uploads):
|
@@ -91,6 +93,14 @@
|
|
91
93
|
// To limit the number of files uploaded with one XHR request,
|
92
94
|
// set the following option to an integer greater than 0:
|
93
95
|
limitMultiFileUploads: undefined,
|
96
|
+
// The following option limits the number of files uploaded with one
|
97
|
+
// XHR request to keep the request size under or equal to the defined
|
98
|
+
// limit in bytes:
|
99
|
+
limitMultiFileUploadSize: undefined,
|
100
|
+
// Multipart file uploads add a number of bytes to each uploaded file,
|
101
|
+
// therefore the following option adds an overhead for each file used
|
102
|
+
// in the limitMultiFileUploadSize configuration:
|
103
|
+
limitMultiFileUploadSizeOverhead: 512,
|
94
104
|
// Set the following option to true to issue all file upload requests
|
95
105
|
// in a sequential order:
|
96
106
|
sequentialUploads: false,
|
@@ -286,7 +296,7 @@
|
|
286
296
|
|
287
297
|
_getFormData: function (options) {
|
288
298
|
var formData;
|
289
|
-
if (
|
299
|
+
if ($.type(options.formData) === 'function') {
|
290
300
|
return options.formData(options.form);
|
291
301
|
}
|
292
302
|
if ($.isArray(options.formData)) {
|
@@ -412,7 +422,8 @@
|
|
412
422
|
file = options.files[0],
|
413
423
|
// Ignore non-multipart setting if not supported:
|
414
424
|
multipart = options.multipart || !$.support.xhrFileUpload,
|
415
|
-
paramName = options.paramName
|
425
|
+
paramName = $.type(options.paramName) === 'array' ?
|
426
|
+
options.paramName[0] : options.paramName;
|
416
427
|
options.headers = $.extend({}, options.headers);
|
417
428
|
if (options.contentRange) {
|
418
429
|
options.headers['Content-Range'] = options.contentRange;
|
@@ -422,7 +433,7 @@
|
|
422
433
|
encodeURI(file.name) + '"';
|
423
434
|
}
|
424
435
|
if (!multipart) {
|
425
|
-
options.contentType = file.type;
|
436
|
+
options.contentType = file.type || 'application/octet-stream';
|
426
437
|
options.data = options.blob || file;
|
427
438
|
} else if ($.support.xhrFormDataFileUpload) {
|
428
439
|
if (options.postMessage) {
|
@@ -439,7 +450,8 @@
|
|
439
450
|
} else {
|
440
451
|
$.each(options.files, function (index, file) {
|
441
452
|
formData.push({
|
442
|
-
name: options.paramName
|
453
|
+
name: ($.type(options.paramName) === 'array' &&
|
454
|
+
options.paramName[index]) || paramName,
|
443
455
|
value: file
|
444
456
|
});
|
445
457
|
});
|
@@ -462,9 +474,10 @@
|
|
462
474
|
if (that._isInstanceOf('File', file) ||
|
463
475
|
that._isInstanceOf('Blob', file)) {
|
464
476
|
formData.append(
|
465
|
-
options.paramName
|
477
|
+
($.type(options.paramName) === 'array' &&
|
478
|
+
options.paramName[index]) || paramName,
|
466
479
|
file,
|
467
|
-
file.name
|
480
|
+
file.uploadName || file.name
|
468
481
|
);
|
469
482
|
}
|
470
483
|
});
|
@@ -610,16 +623,23 @@
|
|
610
623
|
// Adds convenience methods to the data callback argument:
|
611
624
|
_addConvenienceMethods: function (e, data) {
|
612
625
|
var that = this,
|
613
|
-
getPromise = function (
|
614
|
-
return $.Deferred().resolveWith(that,
|
626
|
+
getPromise = function (args) {
|
627
|
+
return $.Deferred().resolveWith(that, args).promise();
|
615
628
|
};
|
616
629
|
data.process = function (resolveFunc, rejectFunc) {
|
617
630
|
if (resolveFunc || rejectFunc) {
|
618
631
|
data._processQueue = this._processQueue =
|
619
|
-
(this._processQueue || getPromise(this))
|
620
|
-
|
632
|
+
(this._processQueue || getPromise([this])).pipe(
|
633
|
+
function () {
|
634
|
+
if (data.errorThrown) {
|
635
|
+
return $.Deferred()
|
636
|
+
.rejectWith(that, [data]).promise();
|
637
|
+
}
|
638
|
+
return getPromise(arguments);
|
639
|
+
}
|
640
|
+
).pipe(resolveFunc, rejectFunc);
|
621
641
|
}
|
622
|
-
return this._processQueue || getPromise(this);
|
642
|
+
return this._processQueue || getPromise([this]);
|
623
643
|
};
|
624
644
|
data.submit = function () {
|
625
645
|
if (this.state() !== 'pending') {
|
@@ -636,7 +656,9 @@
|
|
636
656
|
if (this.jqXHR) {
|
637
657
|
return this.jqXHR.abort();
|
638
658
|
}
|
639
|
-
|
659
|
+
this.errorThrown = 'abort';
|
660
|
+
that._trigger('fail', null, this);
|
661
|
+
return that._getXHRPromise(false);
|
640
662
|
};
|
641
663
|
data.state = function () {
|
642
664
|
if (this.jqXHR) {
|
@@ -646,6 +668,10 @@
|
|
646
668
|
return that._getDeferredState(this._processQueue);
|
647
669
|
}
|
648
670
|
};
|
671
|
+
data.processing = function () {
|
672
|
+
return !this.jqXHR && this._processQueue && that
|
673
|
+
._getDeferredState(this._processQueue) === 'pending';
|
674
|
+
};
|
649
675
|
data.progress = function () {
|
650
676
|
return this._progress;
|
651
677
|
};
|
@@ -923,32 +949,59 @@
|
|
923
949
|
var that = this,
|
924
950
|
result = true,
|
925
951
|
options = $.extend({}, this.options, data),
|
952
|
+
files = data.files,
|
953
|
+
filesLength = files.length,
|
926
954
|
limit = options.limitMultiFileUploads,
|
955
|
+
limitSize = options.limitMultiFileUploadSize,
|
956
|
+
overhead = options.limitMultiFileUploadSizeOverhead,
|
957
|
+
batchSize = 0,
|
927
958
|
paramName = this._getParamName(options),
|
928
959
|
paramNameSet,
|
929
960
|
paramNameSlice,
|
930
961
|
fileSet,
|
931
|
-
i
|
932
|
-
|
962
|
+
i,
|
963
|
+
j = 0;
|
964
|
+
if (limitSize && (!filesLength || files[0].size === undefined)) {
|
965
|
+
limitSize = undefined;
|
966
|
+
}
|
967
|
+
if (!(options.singleFileUploads || limit || limitSize) ||
|
933
968
|
!this._isXHRUpload(options)) {
|
934
|
-
fileSet = [
|
969
|
+
fileSet = [files];
|
935
970
|
paramNameSet = [paramName];
|
936
|
-
} else if (!options.singleFileUploads && limit) {
|
971
|
+
} else if (!(options.singleFileUploads || limitSize) && limit) {
|
937
972
|
fileSet = [];
|
938
973
|
paramNameSet = [];
|
939
|
-
for (i = 0; i <
|
940
|
-
fileSet.push(
|
974
|
+
for (i = 0; i < filesLength; i += limit) {
|
975
|
+
fileSet.push(files.slice(i, i + limit));
|
941
976
|
paramNameSlice = paramName.slice(i, i + limit);
|
942
977
|
if (!paramNameSlice.length) {
|
943
978
|
paramNameSlice = paramName;
|
944
979
|
}
|
945
980
|
paramNameSet.push(paramNameSlice);
|
946
981
|
}
|
982
|
+
} else if (!options.singleFileUploads && limitSize) {
|
983
|
+
fileSet = [];
|
984
|
+
paramNameSet = [];
|
985
|
+
for (i = 0; i < filesLength; i = i + 1) {
|
986
|
+
batchSize += files[i].size + overhead;
|
987
|
+
if (i + 1 === filesLength ||
|
988
|
+
((batchSize + files[i + 1].size + overhead) > limitSize) ||
|
989
|
+
(limit && i + 1 - j >= limit)) {
|
990
|
+
fileSet.push(files.slice(j, i + 1));
|
991
|
+
paramNameSlice = paramName.slice(j, i + 1);
|
992
|
+
if (!paramNameSlice.length) {
|
993
|
+
paramNameSlice = paramName;
|
994
|
+
}
|
995
|
+
paramNameSet.push(paramNameSlice);
|
996
|
+
j = i + 1;
|
997
|
+
batchSize = 0;
|
998
|
+
}
|
999
|
+
}
|
947
1000
|
} else {
|
948
1001
|
paramNameSet = paramName;
|
949
1002
|
}
|
950
|
-
data.originalFiles =
|
951
|
-
$.each(fileSet ||
|
1003
|
+
data.originalFiles = files;
|
1004
|
+
$.each(fileSet || files, function (index, element) {
|
952
1005
|
var newData = $.extend({}, data);
|
953
1006
|
newData.files = fileSet ? element : [element];
|
954
1007
|
newData.paramName = paramNameSet[index];
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* jQuery Iframe Transport Plugin 1.8.
|
2
|
+
* jQuery Iframe Transport Plugin 1.8.2
|
3
3
|
* https://github.com/blueimp/jQuery-File-Upload
|
4
4
|
*
|
5
5
|
* Copyright 2011, Sebastian Tschan
|
@@ -9,8 +9,7 @@
|
|
9
9
|
* http://www.opensource.org/licenses/MIT
|
10
10
|
*/
|
11
11
|
|
12
|
-
/*
|
13
|
-
/*global define, window, document */
|
12
|
+
/* global define, window, document */
|
14
13
|
|
15
14
|
(function (factory) {
|
16
15
|
'use strict';
|
@@ -41,7 +40,9 @@
|
|
41
40
|
if (options.async) {
|
42
41
|
// javascript:false as initial iframe src
|
43
42
|
// prevents warning popups on HTTPS in IE6:
|
43
|
+
/*jshint scripturl: true */
|
44
44
|
var initialIframeSrc = options.initialIframeSrc || 'javascript:false;',
|
45
|
+
/*jshint scripturl: false */
|
45
46
|
form,
|
46
47
|
iframe,
|
47
48
|
addParamChar;
|
@@ -141,6 +142,8 @@
|
|
141
142
|
.prop('enctype', 'multipart/form-data')
|
142
143
|
// enctype must be set as encoding for IE:
|
143
144
|
.prop('encoding', 'multipart/form-data');
|
145
|
+
// Remove the HTML5 form attribute from the input(s):
|
146
|
+
options.fileInput.removeAttr('form');
|
144
147
|
}
|
145
148
|
form.submit();
|
146
149
|
// Insert the file input fields at their original location
|
@@ -148,7 +151,10 @@
|
|
148
151
|
if (fileInputClones && fileInputClones.length) {
|
149
152
|
options.fileInput.each(function (index, input) {
|
150
153
|
var clone = $(fileInputClones[index]);
|
151
|
-
|
154
|
+
// Restore the original name and form properties:
|
155
|
+
$(input)
|
156
|
+
.prop('name', clone.prop('name'))
|
157
|
+
.attr('form', clone.attr('form'));
|
152
158
|
clone.replaceWith(input);
|
153
159
|
});
|
154
160
|
}
|
metadata
CHANGED
@@ -1,47 +1,47 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jquery.fileupload-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.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:
|
11
|
+
date: 2014-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: jquery-ui-rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.0'
|
34
|
-
- - <
|
34
|
+
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: '5.0'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '3.0'
|
44
|
-
- - <
|
44
|
+
- - "<"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '5.0'
|
47
47
|
description: This gem packages jQuery File Upload plugin and it's dependencies for
|
@@ -51,13 +51,14 @@ executables: []
|
|
51
51
|
extensions: []
|
52
52
|
extra_rdoc_files: []
|
53
53
|
files:
|
54
|
-
- .gitignore
|
55
|
-
- .gitmodules
|
54
|
+
- ".gitignore"
|
55
|
+
- ".gitmodules"
|
56
56
|
- Gemfile
|
57
57
|
- Rakefile
|
58
58
|
- Readme.md
|
59
59
|
- demo/.gitignore
|
60
60
|
- demo/Gemfile
|
61
|
+
- demo/Rakefile
|
61
62
|
- demo/Readme.md
|
62
63
|
- demo/app/assets/javascripts/application.js.coffee
|
63
64
|
- demo/app/controllers/application_controller.rb
|
@@ -65,13 +66,15 @@ files:
|
|
65
66
|
- demo/app/views/application/create.html.erb
|
66
67
|
- demo/app/views/application/ui.html.erb
|
67
68
|
- demo/app/views/layouts/application.html.erb
|
69
|
+
- demo/bin/bundle
|
70
|
+
- demo/bin/rails
|
71
|
+
- demo/bin/rake
|
68
72
|
- demo/config.ru
|
69
73
|
- demo/config/application.rb
|
70
74
|
- demo/config/boot.rb
|
71
75
|
- demo/config/environment.rb
|
72
76
|
- demo/config/routes.rb
|
73
77
|
- demo/log/.gitkeep
|
74
|
-
- demo/script/rails
|
75
78
|
- dependencies.json
|
76
79
|
- jquery.fileupload-rails.gemspec
|
77
80
|
- lib/jquery.fileupload-rails.rb
|
@@ -93,17 +96,17 @@ require_paths:
|
|
93
96
|
- lib
|
94
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
95
98
|
requirements:
|
96
|
-
- -
|
99
|
+
- - ">="
|
97
100
|
- !ruby/object:Gem::Version
|
98
101
|
version: '0'
|
99
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
103
|
requirements:
|
101
|
-
- -
|
104
|
+
- - ">="
|
102
105
|
- !ruby/object:Gem::Version
|
103
106
|
version: '0'
|
104
107
|
requirements: []
|
105
108
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
109
|
+
rubygems_version: 2.2.0
|
107
110
|
signing_key:
|
108
111
|
specification_version: 4
|
109
112
|
summary: Use jQuery File Upload plugin with Rails 3
|
data/demo/script/rails
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
-
|
4
|
-
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
-
require File.expand_path('../../config/boot', __FILE__)
|
6
|
-
require 'rails/commands'
|