Skip to content

Commit f47c82d

Browse files
author
Chris Whitman
committed
Merge pull request #2 from whitman/update_assets
Update assets
2 parents e07e8fd + 7310f09 commit f47c82d

20 files changed

+2204
-564
lines changed

README.md

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
# jQuery File Upload for Rails 3.1 Asset Pipeline
1+
# jQuery File Upload for Rails
22

33
[jQuery-File-Plugin](https://github.com/blueimp/jQuery-File-Upload) is a file upload plugin written by [Sebastian Tschan](https://github.com/blueimp). jQuery File Upload features multiple file selection, drag&drop support, progress bars and preview images for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing.
44

5-
jquery-fileupload-rails is a library that integrates jQuery File Upload for Rails 3.1 Asset Pipeline.
5+
jquery-fileupload-rails is a library that integrates jQuery File Upload for Rails 3.1 Asset Pipeline (Rails 3.2 supported).
66

7-
jquery-fileupload-rails is currently using jQuery-File-Plugin version 6.7.0.
7+
## Plugin versions
8+
9+
* jQuery File Upload User Interface Plugin 6.11
10+
* jQuery File Upload Plugin 5.19.3
11+
* jQuery UI Widget 1.9.1+amd
812

913
## Installing Gem
1014

@@ -18,32 +22,45 @@ Require jquery-fileupload in your app/assets/application.js file.
1822

1923
The snippet above will add the following js files to the mainfest file.
2024

21-
//=require jquery-fileupload/vendor/jquery.ui.widget
22-
//=require jquery-fileupload/vendor/load-image
23-
//=require jquery-fileupload/vendor/canvas-to-blob
24-
//=require jquery-fileupload/vendor/tmpl
25-
//=require jquery-fileupload/jquery.iframe-transport
26-
//=require jquery-fileupload/jquery.fileupload
27-
//=require jquery-fileupload/jquery.fileupload-fp
28-
//=require jquery-fileupload/jquery.fileupload-ui
29-
//=require jquery-fileupload/locale
25+
//= require jquery-fileupload/vendor/jquery.ui.widget
26+
//= require jquery-fileupload/vendor/load-image
27+
//= require jquery-fileupload/vendor/canvas-to-blob
28+
//= require jquery-fileupload/vendor/tmpl
29+
//= require jquery-fileupload/jquery.iframe-transport
30+
//= require jquery-fileupload/jquery.fileupload
31+
//= require jquery-fileupload/jquery.fileupload-fp
32+
//= require jquery-fileupload/jquery.fileupload-ui
33+
//= require jquery-fileupload/locale
3034

3135
If you only need the basic files, just add the code below to your application.js file. [Basic setup guide](https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin)
3236

33-
//=require jquery-fileupload/basic
37+
//= require jquery-fileupload/basic
3438

3539
The basic setup only includes the following files:
3640

37-
//=require jquery-fileupload/vendor/jquery.ui.widget
38-
//=require jquery-fileupload/jquery.iframe-transport
39-
//=require jquery-fileupload/jquery.fileupload
41+
//= require jquery-fileupload/vendor/jquery.ui.widget
42+
//= require jquery-fileupload/jquery.iframe-transport
43+
//= require jquery-fileupload/jquery.fileupload
4044

4145
## Using the stylesheet
4246

4347
Require the stylesheet file to app/assets/stylesheets/application.css
4448

4549
*= require jquery.fileupload-ui
4650

51+
## Using the middleware
52+
53+
The `jquery.iframe-transport` fallback transport has some special caveats regarding the response data type, http status, and character encodings. `jquery-fileupload-rails` includes a middleware that handles these inconsistencies seamlessly. If you decide to use it, create an initializer that adds the middleware to your application's middleware stack.
54+
55+
Rails.application.config.middleware.use JQuery::FileUpload::Rails::Middleware
56+
57+
## [Example app](https://github.com/tors/jquery-fileupload-rails-paperclip-example)
58+
This app uses paperclip and twitter-bootstrap-rails
59+
60+
You can also check out Ryan Bate's RailsCast [jQuery File Upload episode](http://railscasts.com/episodes/381-jquery-file-upload). You will
61+
need a pro account to watch it though.
62+
63+
4764
## Thanks
4865
Thanks to [Sebastian Tschan](https://github.com/blueimp) for writing an awesome file upload plugin.
4966

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
module JQuery
2+
module FileUpload
3+
module Rails
4+
class Middleware
5+
def initialize(app)
6+
@app = app
7+
end
8+
9+
def call(env)
10+
dup._call(env)
11+
end
12+
13+
def _call(env)
14+
@status, @headers, @response = @app.call(env)
15+
@request = Rack::Request.new(env)
16+
17+
if iframe_transport?
18+
@headers['Content-Type'] = 'text/html'
19+
[@status, @headers, self]
20+
else
21+
[@status, @headers, @response]
22+
end
23+
end
24+
25+
def each(&block)
26+
block.call(html_document_left) if iframe_transport?
27+
@response.each(&block)
28+
block.call(html_document_right) if iframe_transport?
29+
end
30+
31+
def iframe_transport?
32+
@request.params['X-Requested-With'] == 'IFrame'
33+
end
34+
35+
def html_document_left
36+
"<!DOCTYPE html><html><body><textarea #{metadata}>"
37+
end
38+
39+
def html_document_right
40+
"</textarea></body></html>"
41+
end
42+
43+
def metadata
44+
meta = {}
45+
meta['data-status'] = @response.status if @response.respond_to? :status
46+
meta['data-statusText'] = @response.status_message if @response.respond_to? :status_message
47+
meta['data-type'] = @headers['Content-Type'] if @headers.has_key?('Content-Type')
48+
meta.map {|key,value| "#{key}='#{value}'" }.join(' ')
49+
end
50+
51+
private
52+
53+
def method_missing(method, *args)
54+
@response.send(method.intern, *args)
55+
end
56+
end
57+
end
58+
end
59+
end

lib/jquery/fileupload/rails/upload.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
require "jquery/fileupload/rails/engine"
22
require "jquery/fileupload/rails/version"
3+
require "jquery/fileupload/rails/middleware"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module JQuery
22
module FileUpload
33
module Rails
4-
VERSION = "0.3.0"
4+
VERSION = "0.4.1"
55
end
66
end
77
end

vendor/assets/images/loading.gif

100644100755
File mode changed.

vendor/assets/images/progressbar.gif

100644100755
File mode changed.

vendor/assets/javascripts/jquery-fileupload/cors/jquery.postmessage-transport.js

100644100755
File mode changed.

vendor/assets/javascripts/jquery-fileupload/cors/jquery.xdr-transport.js

100644100755
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* jQuery XDomainRequest Transport Plugin 1.1.2
2+
* jQuery XDomainRequest Transport Plugin 1.1.3
33
* https://github.com/blueimp/jQuery-File-Upload
44
*
55
* Copyright 2011, Sebastian Tschan
@@ -36,6 +36,7 @@
3636
var xdr;
3737
return {
3838
send: function (headers, completeCallback) {
39+
var addParamChar = /\?/.test(s.url) ? '&' : '?';
3940
function callback(status, statusText, responses, responseHeaders) {
4041
xdr.onload = xdr.onerror = xdr.ontimeout = $.noop;
4142
xdr = null;
@@ -44,12 +45,13 @@
4445
xdr = new XDomainRequest();
4546
// XDomainRequest only supports GET and POST:
4647
if (s.type === 'DELETE') {
47-
s.url = s.url + (/\?/.test(s.url) ? '&' : '?') +
48-
'_method=DELETE';
48+
s.url = s.url + addParamChar + '_method=DELETE';
4949
s.type = 'POST';
5050
} else if (s.type === 'PUT') {
51-
s.url = s.url + (/\?/.test(s.url) ? '&' : '?') +
52-
'_method=PUT';
51+
s.url = s.url + addParamChar + '_method=PUT';
52+
s.type = 'POST';
53+
} else if (s.type === 'PATCH') {
54+
s.url = s.url + addParamChar + '_method=PATCH';
5355
s.type = 'POST';
5456
}
5557
xdr.open(s.type, s.url);

0 commit comments

Comments
 (0)