instant-upload 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ .iu-simple{ 'ng-controller' => 'singleIuCtrl', data: options }
2
+ .iu-simple-dropzone{ 'ng-class' => '{uploading:uploaded == false}' }
3
+ = image_tag record.send(field).send(options[:version]).url, class: 'iu-simple-image', width: options[:width], height: options[:height]
4
+ .iu-progress-bar{ style: "width: {{ uploadProgress }}%;" }
5
+
6
+ = file_field :user, field
7
+
8
+ .iu-simple-select
9
+ drag & drop or
10
+ = link_to 'select file from disk', '#', class: 'iu-simple-select-files'
11
+
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>InstantUpload</title>
5
+ <%= stylesheet_link_tag "instant_upload/application", media: "all" %>
6
+ <%= javascript_include_tag "instant_upload/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
data/config/routes.rb ADDED
@@ -0,0 +1,2 @@
1
+ InstantUpload::Engine.routes.draw do
2
+ end
@@ -0,0 +1,9 @@
1
+ class CreateInstantUploadUploads < ActiveRecord::Migration
2
+ def change
3
+ create_table :instant_upload_uploads do |t|
4
+ t.string :file, null: false
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ require "instant_upload/engine"
2
+
3
+ module InstantUpload
4
+ extend ActiveSupport::Autoload
5
+
6
+ autoload :Helpers
7
+ end
@@ -0,0 +1,26 @@
1
+ module InstantUpload
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace InstantUpload
4
+
5
+ config.generators do |g|
6
+ g.test_framework :rspec, fixture: true
7
+ g.fixture_replacement :factory_girl, dir: 'spec/factories'
8
+
9
+ g.view_specs false
10
+ g.helper_specs false
11
+
12
+ g.stylesheets = false
13
+ g.javascripts = false
14
+ end
15
+
16
+ initializer 'instant_upload.initialize' do
17
+ ActiveSupport.on_load(:action_view) do
18
+ include InstantUpload::Helpers::UploadHelper
19
+ end
20
+
21
+ ActiveSupport.on_load(:action_controller) do
22
+ include InstantUpload::Helpers::ControllerHelper
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,6 @@
1
+ module InstantUpload
2
+ module Helpers
3
+ autoload :UploadHelper, 'instant_upload/helpers/upload_helper'
4
+ autoload :ControllerHelper, 'instant_upload/helpers/controller_helper'
5
+ end
6
+ end
@@ -0,0 +1,72 @@
1
+ module InstantUpload
2
+ module Helpers
3
+
4
+ module ControllerHelper
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ helper_method :handle_upload, :load_uploaded_files, :clear_uploaded_files
9
+ end
10
+
11
+ def handle_upload(record, field, options ={})
12
+ sesssion_key = "#{record.class.name.downcase}_#{field}"
13
+
14
+ if request.env['HTTP_X_INSTANT_UPLOAD']
15
+ if options[:multi].present? # multiple
16
+ files = []
17
+
18
+ record.send(field).each do |img|
19
+ file = InstantUpload::Upload.new
20
+ file.file = img.path
21
+ file.save
22
+ files << file
23
+ end
24
+
25
+ session[sesssion_key] = [] if session[sesssion_key].blank?
26
+ session[sesssion_key] << files.map { |f| f.id }
27
+
28
+ render json: record.send(field)
29
+ else
30
+ file = InstantUpload::Upload.new
31
+ file.file = record.send(field)
32
+ file.save
33
+
34
+ session[sesssion_key] = file.id
35
+
36
+ render json: record
37
+ end
38
+
39
+ return true
40
+ else
41
+ load_uploaded_files(record, field, options)
42
+ end
43
+
44
+ false
45
+ end
46
+
47
+ def load_uploaded_files(record, field, options ={})
48
+ sesssion_key = "#{record.class.name.downcase}_#{field}"
49
+
50
+ if session[sesssion_key].present?
51
+ if options[:multi].present? # multiple
52
+ files = InstantUpload::Upload.find(session[sesssion_key])
53
+ record.send(field).clear
54
+
55
+ files.each do |f|
56
+ record.send(field).build(options[:multi] => f.file)
57
+ end
58
+ else # single
59
+ file = InstantUpload::Upload.find(session[sesssion_key])
60
+ record.send("#{field}=", file.file)
61
+ end
62
+ end
63
+ end
64
+
65
+ def clear_uploaded_files(record, field)
66
+ session.delete("#{record.class.name.downcase}_#{field}")
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+ end
@@ -0,0 +1,14 @@
1
+ module InstantUpload
2
+ module Helpers
3
+
4
+ module UploadHelper
5
+
6
+ def instant_upload_for(record, field, options = {})
7
+ partial ||= options[:multi].present? ? 'instant_upload/multi' : 'instant_upload/single'
8
+ render partial: partial, locals: { record: record, field: field, options: { field: field, persisted: record.persisted?.to_s }.merge(options) }
9
+ end
10
+
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ module InstantUpload
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :instant_upload do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,349 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: instant-upload
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mariusz Ołownia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.0.rc1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.0.rc1
27
+ - !ruby/object:Gem::Dependency
28
+ name: carrierwave
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: haml
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mini_magick
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mysql2
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pg
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec-rails
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: factory_girl_rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: shoulda
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec-html-matchers
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: capybara
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: poltergeist
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: launchy
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: database_cleaner
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '='
214
+ - !ruby/object:Gem::Version
215
+ version: 1.0.0.RC1
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '='
221
+ - !ruby/object:Gem::Version
222
+ version: 1.0.0.RC1
223
+ - !ruby/object:Gem::Dependency
224
+ name: guard-rspec
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - '>='
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: rb-fsevent
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - '>='
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: spork
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - '>='
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - '>='
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: guard-spork
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - '>='
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - '>='
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ - !ruby/object:Gem::Dependency
280
+ name: terminal-notifier-guard
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - '>='
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - '>='
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ description: Instant-upload is simply ajax upload for rails (with carrierwave).
294
+ email:
295
+ - ollownia@gmail.com
296
+ executables: []
297
+ extensions: []
298
+ extra_rdoc_files: []
299
+ files:
300
+ - app/assets/javascripts/instant_upload/angular/angular.js
301
+ - app/assets/javascripts/instant_upload/multi.js.coffee
302
+ - app/assets/javascripts/instant_upload/single.js.coffee
303
+ - app/assets/javascripts/instant_upload.js
304
+ - app/assets/stylesheets/instant_upload/multi.css.scss
305
+ - app/assets/stylesheets/instant_upload/single.css.scss
306
+ - app/assets/stylesheets/instant_upload.css
307
+ - app/controllers/instant_upload/application_controller.rb
308
+ - app/helpers/instant_upload/application_helper.rb
309
+ - app/models/instant_upload/upload.rb
310
+ - app/uploaders/instant_upload/file_uploader.rb
311
+ - app/views/instant_upload/_multi.html.haml
312
+ - app/views/instant_upload/_single.html.haml
313
+ - app/views/layouts/instant_upload/application.html.erb
314
+ - config/routes.rb
315
+ - db/migrate/20130509140233_create_instant_upload_uploads.rb
316
+ - lib/instant_upload/engine.rb
317
+ - lib/instant_upload/helpers/controller_helper.rb
318
+ - lib/instant_upload/helpers/upload_helper.rb
319
+ - lib/instant_upload/helpers.rb
320
+ - lib/instant_upload/version.rb
321
+ - lib/instant_upload.rb
322
+ - lib/tasks/instant_upload_tasks.rake
323
+ - MIT-LICENSE
324
+ - Rakefile
325
+ - README.md
326
+ homepage: https://github.com/olownia/instant-upload
327
+ licenses: []
328
+ metadata: {}
329
+ post_install_message:
330
+ rdoc_options: []
331
+ require_paths:
332
+ - lib
333
+ required_ruby_version: !ruby/object:Gem::Requirement
334
+ requirements:
335
+ - - '>='
336
+ - !ruby/object:Gem::Version
337
+ version: '0'
338
+ required_rubygems_version: !ruby/object:Gem::Requirement
339
+ requirements:
340
+ - - '>='
341
+ - !ruby/object:Gem::Version
342
+ version: '0'
343
+ requirements: []
344
+ rubyforge_project:
345
+ rubygems_version: 2.0.3
346
+ signing_key:
347
+ specification_version: 4
348
+ summary: Ajax upload for Rails.
349
+ test_files: []