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 +4 -4
- data/README.md +25 -10
- data/Rakefile +15 -2
- data/lib/activeadmin/jfu_upload.rb +2 -0
- data/lib/activeadmin/jfu_upload/engine.rb +7 -4
- data/lib/activeadmin/jfu_upload/version.rb +3 -1
- data/lib/activeadmin_jfu_upload.rb +2 -0
- data/lib/formtastic/inputs/jfu_upload_input.rb +6 -4
- metadata +74 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8507f1d38c207a46d95b79316a5500f12c3730a889b1b2d2cc39f01dd76c83aa
|
4
|
+
data.tar.gz: 884e71ae2ea339f6fe9ea2a6ad1ff9b9399a4e25cb2a8c72d08b3965892418a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d723b212a98c8c0764ea03e1047c81f6db2e5afe4806b1fe9708c5db407e751c402ef01121d8db6a5c85a3261b504a9977bbdf2758e622790294788d3f312b4
|
7
|
+
data.tar.gz: f7307899f6deeed6a8b31ba93af0d8d1d53cf8413dae6313a5e94aacc60295223f120c3c344e97cbe732b3c9798d099a4a2213221885a2a9f801c97e1ea02d9c
|
data/README.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
# ActiveAdmin jQuery-File-Upload [](https://badge.fury.io/rb/activeadmin_jfu_upload)
|
1
|
+
# ActiveAdmin jQuery-File-Upload [](https://badge.fury.io/rb/activeadmin_jfu_upload) [](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 -
|
39
|
-
f.input :cover, as: :jfu_upload, hint:
|
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
|
-
#
|
46
|
-
|
47
|
-
|
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
|
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
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
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,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(
|
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 }
|
25
|
-
|
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
|
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,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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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.
|
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:
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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:
|
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
|
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
|
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
|
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:
|
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
|
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
|
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: []
|