data/app/assets/javascripts/s3_direct_upload.js.coffee CHANGED
@@ -35,7 +35,7 @@ $.fn.S3Uploader = (options) ->
35
35
add: (e, data) ->
36
36
current_files.push data
37
37
file = data.files[0]
38
- unless settings.before_add and not settings.before_add(file)
38
+ unless settings.before_add and not settings.before_add(data)
39
39
data.context = $(tmpl("template-upload", file)) if $('#template-upload').length > 0
40
40
settings['progress_container'].append(data.context)
41
41
data.submit()
data/app/assets/javascripts/s3_direct_upload.js.js ADDED
@@ -0,0 +1,117 @@
1
+ // Generated by CoffeeScript 1.3.3
2
+ var $;
3
+
4
+ $ = jQuery;
5
+
6
+ $.fn.S3Uploader = function(options) {
7
+ var $uploadForm, build_content_object, current_files, setUploadForm, settings;
8
+ if (this.length > 1) {
9
+ this.each(function() {
10
+ return $(this).S3Uploader(options);
11
+ });
12
+ return this;
13
+ }
14
+ $uploadForm = this;
15
+ settings = {
16
+ path: '',
17
+ additional_data: null,
18
+ before_add: null,
19
+ remove_completed_progress_bar: true,
20
+ progress_container: $uploadForm
21
+ };
22
+ $.extend(settings, options);
23
+ current_files = [];
24
+ setUploadForm = function() {
25
+ return $uploadForm.fileupload({
26
+ start: function(e) {
27
+ return $uploadForm.trigger("s3_uploads_start", [e]);
28
+ },
29
+ add: function(e, data) {
30
+ var file;
31
+ current_files.push(data);
32
+ file = data.files[0];
33
+ if (!(settings.before_add && !settings.before_add(data))) {
34
+ if ($('#template-upload').length > 0) {
35
+ data.context = $(tmpl("template-upload", file));
36
+ }
37
+ settings['progress_container'].append(data.context);
38
+ return data.submit();
39
+ }
40
+ },
41
+ progress: function(e, data) {
42
+ var progress;
43
+ if (data.context) {
44
+ progress = parseInt(data.loaded / data.total * 100, 10);
45
+ return data.context.find('.bar').css('width', progress + '%');
46
+ }
47
+ },
48
+ done: function(e, data) {
49
+ var content, to;
50
+ content = build_content_object($uploadForm, data.files[0]);
51
+ to = $uploadForm.data('post');
52
+ if (to) {
53
+ content[$uploadForm.data('as')] = content.url;
54
+ $.post(to, content);
55
+ }
56
+ if (data.context && settings.remove_completed_progress_bar) {
57
+ data.context.remove();
58
+ }
59
+ $uploadForm.trigger("s3_upload_complete", [content]);
60
+ current_files.splice($.inArray(data, current_files), 1);
61
+ if (current_files.length === 0) {
62
+ return $(document).trigger("s3_uploads_complete");
63
+ }
64
+ },
65
+ fail: function(e, data) {
66
+ var content;
67
+ content = build_content_object($uploadForm, data.files[0]);
68
+ content.error_thrown = data.errorThrown;
69
+ return $uploadForm.trigger("s3_upload_failed", [content]);
70
+ },
71
+ formData: function(form) {
72
+ var data, fileType;
73
+ data = form.serializeArray();
74
+ fileType = "";
75
+ if ("type" in this.files[0]) {
76
+ fileType = this.files[0].type;
77
+ }
78
+ data.push({
79
+ name: "Content-Type",
80
+ value: fileType
81
+ });
82
+ data[1].value = settings.path + data[1].value;
83
+ return data;
84
+ }
85
+ });
86
+ };
87
+ build_content_object = function($uploadForm, file) {
88
+ var content, domain, path;
89
+ domain = $uploadForm.attr('action');
90
+ path = settings.path + $uploadForm.find('input[name=key]').val().replace('/${filename}', '');
91
+ content = {};
92
+ content.url = domain + path + '/' + file.name;
93
+ content.filename = file.name;
94
+ content.filepath = path;
95
+ if ('size' in file) {
96
+ content.filesize = file.size;
97
+ }
98
+ if ('type' in file) {
99
+ content.filetype = file.type;
100
+ }
101
+ if (settings.additional_data) {
102
+ content = $.extend(content, settings.additional_data);
103
+ }
104
+ return content;
105
+ };
106
+ this.initialize = function() {
107
+ setUploadForm();
108
+ return this;
109
+ };
110
+ this.path = function(new_path) {
111
+ return settings.path = new_path;
112
+ };
113
+ this.additional_data = function(new_data) {
114
+ return settings.additional_data = new_data;
115
+ };
116
+ return this.initialize();
117
+ };
data/lib/s3_direct_upload/form_helper.rb CHANGED
@@ -53,7 +53,7 @@ module S3DirectUpload
53
53
end
54
54
55
55
def url
56
- "https://#{@options[:bucket]}.s3.amazonaws.com/"
56
+ "https://s3.amazonaws.com/#{@options[:bucket]}/"
57
57
end
58
58
59
59
def policy
data/lib/s3_direct_upload/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
module S3DirectUpload
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.9"
3
3
end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
--- !ruby/object:Gem::Specification
2
2
name: actionverb_s3_direct_upload
3
3
version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
prerelease:
6
6
platform: ruby
7
7
authors:
@@ -9,7 +9,7 @@ authors:
9
9
autorequire:
10
10
bindir: bin
11
11
cert_chain: []
12
- date: 2012-12-05 00:00:00.000000000 Z
12
+ date: 2013-02-12 00:00:00.000000000 Z
13
13
dependencies:
14
14
- !ruby/object:Gem::Dependency
15
15
name: rails
@@ -89,6 +89,7 @@ files:
89
89
- lib/s3_direct_upload/version.rb
90
90
- lib/s3_direct_upload.rb
91
91
- app/assets/javascripts/s3_direct_upload.js.coffee
92
+ - app/assets/javascripts/s3_direct_upload.js.js
92
93
- app/assets/stylesheets/s3_direct_upload_progress_bars.css.scss
93
94
- LICENSE
94
95
- README.md
@@ -118,4 +119,3 @@ specification_version: 3
118
119
summary: Gives a form helper for Rails which allows direct uploads to s3. Based on
119
120
RailsCast#383
120
121
test_files: []
121
- has_rdoc: