trestle-active_storage 2.0.0 → 2.1.0

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: d7afe155600a65f0a430762dd74d885234377f3f4587c08813f3a7b8ab2ef9e2
4
- data.tar.gz: ac66a74dac13db2f3df90b0c30591d135780f0036c9e9923a194045c5ef8074a
3
+ metadata.gz: 1dc007395a6923c10983c54ed4bd8b4f2073eaa230cdc60878a4b35e2d808a7a
4
+ data.tar.gz: 8fcb932920c938072708e39dd7a7712f8b07167af062b332ec80b2a3897036dc
5
5
  SHA512:
6
- metadata.gz: 9023b24a2bda93e2441cbce24eea0bfe70dc964b5b0702fabb4b33cc1f0aa45c33d22ceca066ffd0ae152a475a63717d76479085432badd376dd7266662a1c44
7
- data.tar.gz: b9472272e26f4b3643830247b3ae5e10037aa83a71143a612877e7aaeca1f7d34489a78a752152eba00020b3171092c0e8261dfa6a52f1e6cf43bc07908624cb
6
+ metadata.gz: a208efb0445661502d8cb641f0f10aab91aaceb312b60c9192083521e1f911a6002da14c847cba99f1099c57222585a5ee7e9990b80376027eef53fbd9b0b496
7
+ data.tar.gz: 95e5ac5377b3bbb0cd10cad88f156e97128b90f4c7df0d89ad937c9e068ce71901ab447b1f20a3a3c2af3f2b43827360de57ec9c833fcb1e3cb9aac808cf6197
data/README.md CHANGED
@@ -23,6 +23,8 @@ Trestle.resource(:users) do
23
23
  end
24
24
  ```
25
25
 
26
+ You can use the `active_storage_field` field type for both `has_one_attached` and `has_many_attached` attachments.
27
+
26
28
  ## Installation
27
29
 
28
30
  These instructions assume you have a working Trestle application. To integrate trestle-active_storage, first add it to your application's Gemfile:
@@ -41,11 +43,18 @@ If you'd like to get up and running on Heroku, check out their [documentation on
41
43
 
42
44
  ## TODO / Wishlist
43
45
 
44
- - [ ] Support for `has_many_attached` attachments
46
+ - [x] Support for `has_many_attached` attachments
45
47
  - [x] Support for Active Storage previews
46
48
  - [ ] Preview of selected local file ([#1](https://github.com/richardvenneman/trestle-active_storage/issues/1))
47
49
  - [ ] Integration tests
48
50
 
51
+ ## Contributors
52
+
53
+ | <img src="https://avatars.githubusercontent.com/richardvenneman?s=100" width="100" alt="richard venneman" /><br />[<sub>Richard Venneman</sub>](https://www.cityspotters.com)<br />[💻](https://github.com/richardvenneman/trestle-active_storage/commits?author=richardvenneman) [📖](https://github.com/richardvenneman/trestle-active_storage/commits?author=richardvenneman) 👀 | <img src="https://avatars.githubusercontent.com/tachyons?s=100" width="100" alt="aboobacker mk" /><br />[<sub>Aboobacker MK</sub>](http://aboobacker.in/)<br />💡 | <img src="https://avatars.githubusercontent.com/PunkMaldito?s=100" width="100" alt="rafael porto" /><br />[<sub>Rafael Porto</sub>](http://euodeiovoce.com.br/)<br />[💻](https://github.com/richardvenneman/trestle-active_storage/commits?author=PunkMaldito) |
54
+ | :---: | :---: | :---: |
55
+
56
+ This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification.
57
+
49
58
  ## License
50
59
 
51
60
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,35 @@
1
+ <div class='nested-fields-container'>
2
+ <%= builder.fields_for :images do %>
3
+ <div class="active-storage">
4
+ <% if attachments.attached? %>
5
+ <% attachments.each do |attachment| %>
6
+ <div class="active-storage__preview">
7
+ <% if attachment.previewable? %>
8
+ <%= link_to image_tag(main_app.url_for(attachment.preview(resize: "300x300>")), class: "active-storage__image"),
9
+ main_app.rails_blob_path(attachment, disposition: "attachment") %>
10
+ <% elsif attachment.variable? %>
11
+ <%= link_to image_tag(main_app.url_for(attachment.variant(resize: "300x300>")), class: "active-storage__image"),
12
+ main_app.rails_blob_path(attachment, disposition: "attachment") %>
13
+ <% else %>
14
+ <%= link_to main_app.rails_blob_path(attachment, disposition: "attachment"), class: "btn btn-info" do %>
15
+ <i class="fa fa-download"></i>
16
+ <span class="btn-label">Download <%= field_name %></span>
17
+ <% end %>
18
+ <% end %>
19
+
20
+ <div>
21
+ <small><%= attachment.blob.filename %></small>
22
+ <%= builder.check_box("delete_#{field_name}_#{attachment.blob_id}", label: "Delete this #{field_name.to_s.singularize}") %>
23
+ </div>
24
+ </div>
25
+ <hr>
26
+ <% end %>
27
+ <% end %>
28
+ </div>
29
+
30
+ <%= builder.raw_file_field(field_name, class: 'active-storage__field', multiple: true, direct_upload: true) %>
31
+ <% end %>
32
+ </div>
33
+
34
+
35
+
@@ -13,13 +13,29 @@ module Trestle
13
13
  self.instance = admin.find_instance(params)
14
14
 
15
15
  admin.active_storage_fields.each do |field|
16
- instance.class.send(:attr_accessor, "delete_#{field}")
16
+ attachment = instance.send(field)
17
+
18
+ if attachment.respond_to?(:each)
19
+ attachment.each do |att|
20
+ instance.class.send(:attr_accessor, "delete_#{field}_#{att.blob_id}")
21
+ end
22
+ else
23
+ instance.class.send(:attr_accessor, "delete_#{field}")
24
+ end
17
25
  end
18
26
  end
19
27
 
20
28
  def purge_attachments
21
29
  admin.active_storage_fields.each do |field|
22
- instance.send(field).purge if instance.try("delete_#{field}") == '1'
30
+ attachment = instance.send(field)
31
+
32
+ if attachment.respond_to?(:each)
33
+ attachment.each do |att|
34
+ att.purge if instance.try("delete_#{field}_#{att.blob_id}") == '1'
35
+ end
36
+ else
37
+ instance.send(field).purge if instance.try("delete_#{field}") == '1'
38
+ end
23
39
  end
24
40
  end
25
41
  end
@@ -5,12 +5,22 @@ module Trestle
5
5
  instance = builder.object
6
6
  attachment = instance.send(name)
7
7
 
8
- @template.render partial: 'trestle/active_storage/field',
9
- locals: {
10
- builder: builder,
11
- field_name: name,
12
- attachment: attachment
13
- }
8
+ rendering_options = {}.tap do |hash|
9
+ hash[:locals] = {}.tap do |locals|
10
+ locals[:builder] = builder
11
+ locals[:field_name] = name
12
+
13
+ if attachment.respond_to?(:each)
14
+ hash[:partial] = 'trestle/active_storage/has_many_field'
15
+ locals[:attachments] = attachment
16
+ else
17
+ hash[:partial] = 'trestle/active_storage/has_one_field'
18
+ locals[:attachment] = attachment
19
+ end
20
+ end
21
+ end
22
+
23
+ @template.render rendering_options
14
24
  end
15
25
  end
16
26
  end
@@ -1,5 +1,5 @@
1
1
  module Trestle
2
2
  module ActiveStorage
3
- VERSION = '2.0.0'
3
+ VERSION = '2.1.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trestle-active_storage
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Venneman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-04 00:00:00.000000000 Z
11
+ date: 2018-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.0.beta2
19
+ version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '6'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 5.2.0.beta2
29
+ version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '6'
@@ -55,9 +55,9 @@ files:
55
55
  - README.md
56
56
  - Rakefile
57
57
  - app/assets/javascripts/trestle/active_storage_fields.js
58
- - app/views/trestle/active_storage/_field.html.erb
58
+ - app/views/trestle/active_storage/_has_many_field.html.erb
59
+ - app/views/trestle/active_storage/_has_one_field.html.erb
59
60
  - config/initializers/trestle.rb
60
- - config/routes.rb
61
61
  - lib/tasks/trestle/active_storage_tasks.rake
62
62
  - lib/trestle/active_storage.rb
63
63
  - lib/trestle/active_storage/builder.rb
data/config/routes.rb DELETED
@@ -1,3 +0,0 @@
1
- Trestle::Engine.routes.draw do
2
- post '/active_storage/direct_uploads' => 'active_storage/direct_uploads#create', as: :rails_direct_uploads
3
- end