activeadmin_jfu_upload 0.2.0 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3487b2c9b6cc7ec7629e7c27ffab790aeb5ba129598ffbe7156bc88ab4fc05e
4
- data.tar.gz: b98f8ddf92561c9c11875674d06e4ed8c97a0094c104b819118c972daa0b4e17
3
+ metadata.gz: 8507f1d38c207a46d95b79316a5500f12c3730a889b1b2d2cc39f01dd76c83aa
4
+ data.tar.gz: 884e71ae2ea339f6fe9ea2a6ad1ff9b9399a4e25cb2a8c72d08b3965892418a1
5
5
  SHA512:
6
- metadata.gz: 56c150827bcdf37dbe99871899a10d63b626ae1a9e8266ec4b302c1ca991cc01ebbf5197e98e8ca8f73a72542ec0d5f5cccd10c71e1771f1d06ed8065c38c803
7
- data.tar.gz: bb10d759cb7d82691906c6824dcfec20b7152e562b1f9f6223364ff9eeea4492fd97285105fcc7a0fe2768a8d439947c4d9b128cea322e3044169ed27a4f8f31
6
+ metadata.gz: 2d723b212a98c8c0764ea03e1047c81f6db2e5afe4806b1fe9708c5db407e751c402ef01121d8db6a5c85a3261b504a9977bbdf2758e622790294788d3f312b4
7
+ data.tar.gz: f7307899f6deeed6a8b31ba93af0d8d1d53cf8413dae6313a5e94aacc60295223f120c3c344e97cbe732b3c9798d099a4a2213221885a2a9f801c97e1ea02d9c
data/README.md CHANGED
@@ -1,10 +1,11 @@
1
- # ActiveAdmin jQuery-File-Upload [![Gem Version](https://badge.fury.io/rb/activeadmin_jfu_upload.svg)](https://badge.fury.io/rb/activeadmin_jfu_upload)
1
+ # ActiveAdmin jQuery-File-Upload [![Gem Version](https://badge.fury.io/rb/activeadmin_jfu_upload.svg)](https://badge.fury.io/rb/activeadmin_jfu_upload) [![CircleCI](https://circleci.com/gh/blocknotes/activeadmin_jfu_upload.svg?style=svg)](https://circleci.com/gh/blocknotes/activeadmin_jfu_upload)
2
2
 
3
3
  An ActiveAdmin 2.x plugin to use [jQuery-File-Upload](https://github.com/blueimp/jQuery-File-Upload) for file uploads in forms.
4
4
 
5
5
  Features:
6
- - AJAX uploads
7
- - chunked file uploads for large files
6
+ - AJAX uploads;
7
+ - chunked file uploads for large files;
8
+ - works with ActiveStorage.
8
9
 
9
10
  The file is uploaded when selected, not when the form is submitted, that's why a record must exist for uploads.
10
11
 
@@ -32,32 +33,46 @@ Why 2 separated scripts? In this way you can include a different version of *jQu
32
33
 
33
34
  ```ruby
34
35
  # ActiveAdmin article form conf:
36
+ # (optional) Upload action - an helper method is provided
37
+ member_action :jfu_upload, method: [:patch] do
38
+ render json: ActiveAdmin::JfuUpload::Engine::upload_file( request, params[:article][:cover], resource, :cover )
39
+ end
40
+
41
+ # Form setup
35
42
  form do |f|
36
43
  f.inputs 'Article' do
37
44
  f.input :title
38
- # Field setup - data url is required
39
- f.input :cover, as: :jfu_upload, hint: f.object.cover? ? image_tag( f.object.cover.url ) : '', input_html: { data: { url: jfu_upload_admin_article_path( resource.id ) } } unless f.object.new_record?
45
+ # Field setup - hint with file presence check using ActiveStorage
46
+ f.input :cover, as: :jfu_upload, hint: (object.avatar.attached? ? "Current: #{object.avatar.filename}" : nil) unless object.new_record?
40
47
  f.input :published
41
48
  end
42
49
  f.actions
43
50
  end
44
51
 
45
- # Upload action - an helper method is provided
46
- member_action :jfu_upload, method: [:patch] do
47
- render json: ActiveAdmin::JfuUpload::Engine::upload_file( request, params[:article][:cover], resource, :cover )
52
+ # Show setup (optional)
53
+ show do
54
+ attributes_table do
55
+ # ...
56
+ row :cover do |record|
57
+ image_tag url_for(record.cover) if record.cover.attached?
58
+ end
59
+ end
60
+ active_admin_comments
48
61
  end
49
62
  ```
50
63
 
51
64
  ```ruby
52
- # Chuncked upload (chunk size: 100 Kb)
65
+ # Chuncked upload (chunk size: 100 Kb) - checking presence with CarrierWave
53
66
  f.input :cover, as: :jfu_upload, hint: f.object.cover? ? image_tag( f.object.cover.url ) : '', input_html: { data: { url: jfu_upload_admin_article_path( resource.id ), options: { maxChunkSize: 100000 } } } unless f.object.new_record?
54
67
  ```
55
68
 
69
+ More example in [spec dummy app](spec/dummy/app/admin).
70
+
56
71
  ## Notes
57
72
 
58
73
  - The string field for the upload is used to store temp data, so it could be necessary to make it bigger
59
74
  - If you want to customize the upload action take a look [here](lib/activeadmin/jfu_upload/engine.rb)
60
- - Tested only with CarrierWave uploader gem
75
+ - Tested with CarrierWave uploader gem and with ActiveStorage
61
76
  - To use this plugins with ActiveAdmin 1.x please use the version 0.1.8
62
77
 
63
78
  ## Do you like it? Star it!
data/Rakefile CHANGED
@@ -1,3 +1,16 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
3
+ require 'bundler/gem_tasks'
4
+
5
+ begin
6
+ require 'rspec/core/rake_task'
7
+
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ # t.ruby_opts = %w[-w]
10
+ t.rspec_opts = ['--color', '--format documentation']
11
+ end
12
+
13
+ task default: :spec
14
+ rescue LoadError
15
+ puts '! LoadError: no RSpec available'
16
+ end
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'activeadmin/jfu_upload/engine'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_admin'
2
4
 
3
5
  module ActiveAdmin
@@ -13,7 +15,7 @@ module ActiveAdmin
13
15
  resource.update field => param
14
16
  response = { result: 1, file_name: resource.try( field ).try( :url ) }
15
17
  else
16
- m = request.headers['CONTENT-RANGE'].match( /[^\s]+\s(\d+)-(\d+)\/(\d+)/ )
18
+ m = request.headers['CONTENT-RANGE'].match(%r{[^\s]+\s(\d+)-(\d+)/(\d+)})
17
19
  if m
18
20
  buffer = param.read
19
21
  pos = m[1].to_i
@@ -21,11 +23,12 @@ module ActiveAdmin
21
23
  tempfile = Rails.root.join('tmp', "upload_#{Time.now.to_i}_#{resource.id}_#{field}")
22
24
  field_data = { original_filename: param.original_filename, tempfile: tempfile }
23
25
  # dir.mkdir unless File.exists?(dir)
24
- # field_data = { original_filename: param.original_filename, tempfile: dir.join(param.tempfile).to_s } # alternative: "#{resource.class.to_s.tableize}_#{resource.id}_#{Time.now.to_i}"
25
- resource.update_column field, YAML::dump( field_data )
26
+ # field_data = { original_filename: param.original_filename, tempfile: dir.join(param.tempfile).to_s }
27
+ # # alternative: "#{resource.class.to_s.tableize}_#{resource.id}_#{Time.now.to_i}"
28
+ resource.update_column field, YAML.dump(field_data)
26
29
  mode = 'wb'
27
30
  else
28
- field_data = YAML::load resource.read_attribute(field)
31
+ field_data = YAML.load resource.read_attribute(field) # rubocop:disable Security/YAMLLoad
29
32
  mode = 'ab'
30
33
  end
31
34
  File.open(field_data[:tempfile], mode) { |f| f.write(buffer) }
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveAdmin
2
4
  module JfuUpload
3
- VERSION = '0.2.0'.freeze
5
+ VERSION = '0.2.4'
4
6
  end
5
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'activeadmin/jfu_upload'
2
4
 
3
5
  require 'formtastic/inputs/jfu_upload_input'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Formtastic
2
4
  module Inputs
3
5
  class JfuUploadInput < Formtastic::Inputs::FileInput
@@ -8,10 +10,10 @@ module Formtastic
8
10
  def to_html
9
11
  input_wrapping do
10
12
  label_html <<
11
- template.content_tag( :div, { class: 'jfu_upload_wrapper' } ) do
12
- builder.file_field( method, input_html_options ) <<
13
- template.content_tag( :ul )
14
- end
13
+ template.content_tag(:div, { class: 'jfu_upload_wrapper' }) do
14
+ builder.file_field(method, input_html_options) <<
15
+ template.content_tag(:ul)
16
+ end
15
17
  end
16
18
  end
17
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin_jfu_upload
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mattia Roccoberton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-23 00:00:00.000000000 Z
11
+ date: 2021-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeadmin
@@ -30,112 +30,168 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 6.0.3.2
33
+ version: '6.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 6.0.3.2
40
+ version: '6.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: capybara
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.33.0
47
+ version: '3.33'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.33.0
54
+ version: '3.33'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.13.1
61
+ version: '0.13'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.13.1
68
+ version: '0.13'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: puma
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 4.3.5
75
+ version: '4.3'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 4.3.5
82
+ version: '4.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec_junit_formatter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.4'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.4'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec-rails
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 4.0.1
103
+ version: '4.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.90'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: 4.0.1
124
+ version: '0.90'
125
+ - !ruby/object:Gem::Dependency
126
+ name: sassc
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.4'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.4'
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: selenium-webdriver
99
141
  requirement: !ruby/object:Gem::Requirement
100
142
  requirements:
101
143
  - - "~>"
102
144
  - !ruby/object:Gem::Version
103
- version: 3.142.7
145
+ version: '3.142'
104
146
  type: :development
105
147
  prerelease: false
106
148
  version_requirements: !ruby/object:Gem::Requirement
107
149
  requirements:
108
150
  - - "~>"
109
151
  - !ruby/object:Gem::Version
110
- version: 3.142.7
152
+ version: '3.142'
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: simplecov
113
155
  requirement: !ruby/object:Gem::Requirement
114
156
  requirements:
115
157
  - - "~>"
116
158
  - !ruby/object:Gem::Version
117
- version: 0.19.0
159
+ version: '0.19'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.19'
167
+ - !ruby/object:Gem::Dependency
168
+ name: sprockets-rails
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '3.2'
118
174
  type: :development
119
175
  prerelease: false
120
176
  version_requirements: !ruby/object:Gem::Requirement
121
177
  requirements:
122
178
  - - "~>"
123
179
  - !ruby/object:Gem::Version
124
- version: 0.19.0
180
+ version: '3.2'
125
181
  - !ruby/object:Gem::Dependency
126
182
  name: sqlite3
127
183
  requirement: !ruby/object:Gem::Requirement
128
184
  requirements:
129
185
  - - "~>"
130
186
  - !ruby/object:Gem::Version
131
- version: 1.4.2
187
+ version: '1.4'
132
188
  type: :development
133
189
  prerelease: false
134
190
  version_requirements: !ruby/object:Gem::Requirement
135
191
  requirements:
136
192
  - - "~>"
137
193
  - !ruby/object:Gem::Version
138
- version: 1.4.2
194
+ version: '1.4'
139
195
  description: An Active Admin plugin to use jQuery-File-Upload component
140
196
  email: mat@blocknot.es
141
197
  executables: []