activeadmin_jfu_upload 0.2.0 → 0.2.4

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 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: []