administrate-field-active_storage 0.3.2 → 0.3.7

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.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +21 -0
  3. data/.gitignore +1 -1
  4. data/.ruby-version +1 -1
  5. data/Gemfile.lock +217 -0
  6. data/README.md +34 -3
  7. data/administrate-field-active_storage.gemspec +3 -2
  8. data/app/views/fields/active_storage/_form.html.erb +4 -1
  9. data/app/views/fields/active_storage/_index.html.erb +5 -2
  10. data/app/views/fields/active_storage/_item.html.erb +3 -2
  11. data/app/views/fields/active_storage/_preview.html.erb +1 -1
  12. data/app/views/fields/active_storage/_show.html.erb +1 -1
  13. data/config/i18n-tasks.yml +8 -0
  14. data/config/locales/administrate-field-active_storage.en.yml +10 -0
  15. data/config/locales/administrate-field-active_storage.ru.yml +10 -0
  16. data/contribute.md +3 -0
  17. data/lib/administrate/field/active_storage.rb +4 -10
  18. data/spec/i18n_spec.rb +35 -0
  19. data/test_app/.browserslistrc +1 -0
  20. data/test_app/.gitattributes +10 -0
  21. data/{example-project → test_app}/.gitignore +9 -7
  22. data/test_app/.ruby-version +1 -0
  23. data/test_app/Gemfile +45 -0
  24. data/test_app/Gemfile.lock +237 -0
  25. data/{example-project → test_app}/README.md +0 -0
  26. data/{example-project → test_app}/Rakefile +1 -1
  27. data/test_app/app/assets/config/manifest.js +4 -0
  28. data/{example-project → test_app}/app/assets/images/.keep +0 -0
  29. data/{example-project → test_app}/app/assets/stylesheets/application.css +0 -0
  30. data/{example-project → test_app}/app/controllers/admin/application_controller.rb +3 -3
  31. data/test_app/app/controllers/admin/posts_controller.rb +46 -0
  32. data/{example-project → test_app}/app/controllers/application_controller.rb +0 -0
  33. data/{example-project/app/dashboards/user_dashboard.rb → test_app/app/dashboards/post_dashboard.rb} +29 -27
  34. data/{example-project → test_app}/app/helpers/application_helper.rb +0 -0
  35. data/test_app/app/javascript/packs/application.js +10 -0
  36. data/{example-project → test_app}/app/models/application_record.rb +0 -0
  37. data/test_app/app/models/post.rb +3 -0
  38. data/test_app/app/views/layouts/application.html.erb +16 -0
  39. data/test_app/bin/bundle +114 -0
  40. data/test_app/bin/rails +4 -0
  41. data/test_app/bin/rake +4 -0
  42. data/{example-project → test_app}/bin/setup +6 -9
  43. data/{example-project → test_app}/config.ru +2 -1
  44. data/test_app/config/application.rb +35 -0
  45. data/{example-project/bin/bundle → test_app/config/boot.rb} +2 -2
  46. data/test_app/config/credentials.yml.enc +1 -0
  47. data/{example-project → test_app}/config/database.yml +1 -1
  48. data/{example-project → test_app}/config/environment.rb +1 -1
  49. data/{example-project → test_app}/config/environments/development.rb +21 -11
  50. data/{example-project → test_app}/config/environments/production.rb +36 -24
  51. data/{example-project → test_app}/config/environments/test.rb +20 -14
  52. data/{example-project → test_app}/config/initializers/application_controller_renderer.rb +0 -0
  53. data/{example-project → test_app}/config/initializers/assets.rb +0 -0
  54. data/test_app/config/initializers/backtrace_silencers.rb +8 -0
  55. data/{example-project → test_app}/config/initializers/content_security_policy.rb +5 -0
  56. data/{example-project → test_app}/config/initializers/cookies_serializer.rb +0 -0
  57. data/{example-project → test_app}/config/initializers/filter_parameter_logging.rb +3 -1
  58. data/{example-project → test_app}/config/initializers/inflections.rb +0 -0
  59. data/{example-project → test_app}/config/initializers/mime_types.rb +0 -0
  60. data/test_app/config/initializers/permissions_policy.rb +11 -0
  61. data/{example-project → test_app}/config/initializers/wrap_parameters.rb +0 -0
  62. data/{example-project → test_app}/config/locales/en.yml +1 -1
  63. data/{example-project → test_app}/config/puma.rb +13 -4
  64. data/test_app/config/routes.rb +9 -0
  65. data/{example-project → test_app}/config/storage.yml +0 -0
  66. data/{example-project/db/migrate/20181221134334_create_active_storage_tables.active_storage.rb → test_app/db/migrate/20210118122804_create_active_storage_tables.active_storage.rb} +15 -5
  67. data/test_app/db/migrate/20210118122927_create_posts.rb +8 -0
  68. data/{example-project → test_app}/db/schema.rb +18 -10
  69. data/{example-project → test_app}/db/seeds.rb +1 -1
  70. data/test_app/lib/active_storage/fixture_set.rb +71 -0
  71. data/{example-project → test_app}/public/404.html +0 -0
  72. data/{example-project → test_app}/public/422.html +0 -0
  73. data/{example-project → test_app}/public/500.html +0 -0
  74. data/{example-project → test_app}/public/apple-touch-icon-precomposed.png +0 -0
  75. data/{example-project → test_app}/public/apple-touch-icon.png +0 -0
  76. data/{example-project → test_app}/public/favicon.ico +0 -0
  77. data/test_app/public/robots.txt +1 -0
  78. data/{example-project → test_app}/test/application_system_test_case.rb +0 -0
  79. data/test_app/test/controllers/admin/posts_controller_test.rb +14 -0
  80. data/test_app/test/fixtures/active_storage/attachments.yml +4 -0
  81. data/test_app/test/fixtures/active_storage/blobs.yml +2 -0
  82. data/test_app/test/fixtures/files/cover_image.jpg +0 -0
  83. data/test_app/test/fixtures/posts.yml +11 -0
  84. data/test_app/test/models/post_test.rb +9 -0
  85. data/test_app/test/test_helper.rb +20 -0
  86. metadata +97 -99
  87. data/Rakefile +0 -22
  88. data/example-project/.ruby-version +0 -1
  89. data/example-project/Gemfile +0 -67
  90. data/example-project/Gemfile.lock +0 -265
  91. data/example-project/app/assets/config/manifest.js +0 -3
  92. data/example-project/app/assets/javascripts/application.js +0 -16
  93. data/example-project/app/assets/javascripts/cable.js +0 -13
  94. data/example-project/app/assets/javascripts/channels/.keep +0 -0
  95. data/example-project/app/channels/application_cable/channel.rb +0 -4
  96. data/example-project/app/channels/application_cable/connection.rb +0 -4
  97. data/example-project/app/controllers/admin/users_controller.rb +0 -27
  98. data/example-project/app/controllers/concerns/.keep +0 -0
  99. data/example-project/app/controllers/users_controller.rb +0 -7
  100. data/example-project/app/jobs/application_job.rb +0 -2
  101. data/example-project/app/mailers/application_mailer.rb +0 -4
  102. data/example-project/app/models/concerns/.keep +0 -0
  103. data/example-project/app/models/user.rb +0 -3
  104. data/example-project/app/views/layouts/application.html.erb +0 -15
  105. data/example-project/app/views/layouts/mailer.html.erb +0 -13
  106. data/example-project/app/views/layouts/mailer.text.erb +0 -1
  107. data/example-project/bin/rails +0 -9
  108. data/example-project/bin/rake +0 -9
  109. data/example-project/bin/spring +0 -17
  110. data/example-project/bin/update +0 -31
  111. data/example-project/bin/yarn +0 -11
  112. data/example-project/config/application.rb +0 -19
  113. data/example-project/config/boot.rb +0 -4
  114. data/example-project/config/cable.yml +0 -10
  115. data/example-project/config/credentials.yml.enc +0 -1
  116. data/example-project/config/initializers/backtrace_silencers.rb +0 -7
  117. data/example-project/config/routes.rb +0 -10
  118. data/example-project/config/spring.rb +0 -6
  119. data/example-project/db/migrate/20181013145025_create_users.rb +0 -9
  120. data/example-project/lib/assets/.keep +0 -0
  121. data/example-project/lib/tasks/.keep +0 -0
  122. data/example-project/log/.keep +0 -0
  123. data/example-project/package.json +0 -5
  124. data/example-project/public/robots.txt +0 -1
  125. data/example-project/test/controllers/.keep +0 -0
  126. data/example-project/test/fixtures/.keep +0 -0
  127. data/example-project/test/fixtures/files/.keep +0 -0
  128. data/example-project/test/fixtures/users.yml +0 -7
  129. data/example-project/test/helpers/.keep +0 -0
  130. data/example-project/test/integration/.keep +0 -0
  131. data/example-project/test/mailers/.keep +0 -0
  132. data/example-project/test/models/.keep +0 -0
  133. data/example-project/test/models/user_test.rb +0 -7
  134. data/example-project/test/system/.keep +0 -0
  135. data/example-project/test/test_helper.rb +0 -10
  136. data/example-project/tmp/.keep +0 -0
  137. data/example-project/vendor/.keep +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64b33a96266a15db1be6623e30f3cd194169efa9ccc893ac03136da0c3721e38
4
- data.tar.gz: bf7d12d3084e8955f14abc20a2d19b5ce76abe7445d9aab5cb31c3367ebba957
3
+ metadata.gz: 400847147cef13ebaf2becff0f8d6f60ab159e42373aab67e39d7823900b7061
4
+ data.tar.gz: 28dcb24685789156e988f3aa1a2065a50c6d147e1863b277cc93c6ce73d91f56
5
5
  SHA512:
6
- metadata.gz: e551359ad5008217a52ab7295053f84b5ce4488f324c8eaa4e4595a43e90791eb3dea17ff43327bba61e536675d20e26b4c4be1e030c0c79878ee2e1ac708bdb
7
- data.tar.gz: 027fe2605c468b7c0cc9fbc48eb404922108c05c1602ca4f6953729a1713aace84b5b82eca8fc923da6c7865281447be158da91827622dbbb98b6e856c7affda
6
+ metadata.gz: a4395b379fb47e7efc923ef5c69cdc7d85f26f0cb1aa0efde7b31cd8f7dd4916f6ca650d94a8772d1a522510669fc0f125a02e69399e6d7ee0c68972c232934f
7
+ data.tar.gz: c9966fd2cc8194963455def07ea138d28a19394d680c14edad1ec7d05740eedd7856dd1484ad4f16dd8db76eefaf0dab0993dde43e907d92a7a330798f53531f
@@ -0,0 +1,21 @@
1
+ name: CI
2
+
3
+ on: [push,pull_request]
4
+
5
+ env:
6
+ RAILS_MASTER_KEY: ca18e029a12884a87e96cf6a64a12fb5
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - uses: ruby/setup-ruby@v1
14
+ - uses: actions/cache@v2
15
+ with:
16
+ path: vendor/bundle
17
+ key: bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('**/Gemfile.lock') }}
18
+ restore-keys: |
19
+ bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby }}-
20
+ - run: test_app/bin/setup
21
+ - run: cd test_app && bundle exec rails test
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
@@ -9,3 +8,4 @@
9
8
  /tmp/
10
9
  *.gem
11
10
  .DS_Store
11
+ .vscode/settings.json
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.3
1
+ 3.0.0
data/Gemfile.lock ADDED
@@ -0,0 +1,217 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ administrate-field-active_storage (0.3.6)
5
+ administrate (>= 0.2.2)
6
+ rails (>= 6.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actioncable (6.1.1)
12
+ actionpack (= 6.1.1)
13
+ activesupport (= 6.1.1)
14
+ nio4r (~> 2.0)
15
+ websocket-driver (>= 0.6.1)
16
+ actionmailbox (6.1.1)
17
+ actionpack (= 6.1.1)
18
+ activejob (= 6.1.1)
19
+ activerecord (= 6.1.1)
20
+ activestorage (= 6.1.1)
21
+ activesupport (= 6.1.1)
22
+ mail (>= 2.7.1)
23
+ actionmailer (6.1.1)
24
+ actionpack (= 6.1.1)
25
+ actionview (= 6.1.1)
26
+ activejob (= 6.1.1)
27
+ activesupport (= 6.1.1)
28
+ mail (~> 2.5, >= 2.5.4)
29
+ rails-dom-testing (~> 2.0)
30
+ actionpack (6.1.1)
31
+ actionview (= 6.1.1)
32
+ activesupport (= 6.1.1)
33
+ rack (~> 2.0, >= 2.0.9)
34
+ rack-test (>= 0.6.3)
35
+ rails-dom-testing (~> 2.0)
36
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
37
+ actiontext (6.1.1)
38
+ actionpack (= 6.1.1)
39
+ activerecord (= 6.1.1)
40
+ activestorage (= 6.1.1)
41
+ activesupport (= 6.1.1)
42
+ nokogiri (>= 1.8.5)
43
+ actionview (6.1.1)
44
+ activesupport (= 6.1.1)
45
+ builder (~> 3.1)
46
+ erubi (~> 1.4)
47
+ rails-dom-testing (~> 2.0)
48
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
49
+ activejob (6.1.1)
50
+ activesupport (= 6.1.1)
51
+ globalid (>= 0.3.6)
52
+ activemodel (6.1.1)
53
+ activesupport (= 6.1.1)
54
+ activerecord (6.1.1)
55
+ activemodel (= 6.1.1)
56
+ activesupport (= 6.1.1)
57
+ activestorage (6.1.1)
58
+ actionpack (= 6.1.1)
59
+ activejob (= 6.1.1)
60
+ activerecord (= 6.1.1)
61
+ activesupport (= 6.1.1)
62
+ marcel (~> 0.3.1)
63
+ mimemagic (~> 0.3.2)
64
+ activesupport (6.1.1)
65
+ concurrent-ruby (~> 1.0, >= 1.0.2)
66
+ i18n (>= 1.6, < 2)
67
+ minitest (>= 5.1)
68
+ tzinfo (~> 2.0)
69
+ zeitwerk (~> 2.3)
70
+ administrate (0.14.0)
71
+ actionpack (>= 4.2)
72
+ actionview (>= 4.2)
73
+ activerecord (>= 4.2)
74
+ autoprefixer-rails (>= 6.0)
75
+ datetime_picker_rails (~> 0.0.7)
76
+ jquery-rails (>= 4.0)
77
+ kaminari (>= 1.0)
78
+ momentjs-rails (~> 2.8)
79
+ sassc-rails (~> 2.1)
80
+ selectize-rails (~> 0.6)
81
+ ast (2.4.2)
82
+ autoprefixer-rails (10.2.0.0)
83
+ execjs
84
+ builder (3.2.4)
85
+ concurrent-ruby (1.1.8)
86
+ crass (1.0.6)
87
+ datetime_picker_rails (0.0.7)
88
+ momentjs-rails (>= 2.8.1)
89
+ erubi (1.10.0)
90
+ execjs (2.7.0)
91
+ ffi (1.14.2)
92
+ globalid (0.4.2)
93
+ activesupport (>= 4.2.0)
94
+ highline (2.0.3)
95
+ i18n (1.8.7)
96
+ concurrent-ruby (~> 1.0)
97
+ i18n-tasks (0.9.34)
98
+ activesupport (>= 4.0.2)
99
+ ast (>= 2.1.0)
100
+ erubi
101
+ highline (>= 2.0.0)
102
+ i18n
103
+ parser (>= 2.2.3.0)
104
+ rails-i18n
105
+ rainbow (>= 2.2.2, < 4.0)
106
+ terminal-table (>= 1.5.1)
107
+ jquery-rails (4.4.0)
108
+ rails-dom-testing (>= 1, < 3)
109
+ railties (>= 4.2.0)
110
+ thor (>= 0.14, < 2.0)
111
+ kaminari (1.2.1)
112
+ activesupport (>= 4.1.0)
113
+ kaminari-actionview (= 1.2.1)
114
+ kaminari-activerecord (= 1.2.1)
115
+ kaminari-core (= 1.2.1)
116
+ kaminari-actionview (1.2.1)
117
+ actionview
118
+ kaminari-core (= 1.2.1)
119
+ kaminari-activerecord (1.2.1)
120
+ activerecord
121
+ kaminari-core (= 1.2.1)
122
+ kaminari-core (1.2.1)
123
+ loofah (2.9.0)
124
+ crass (~> 1.0.2)
125
+ nokogiri (>= 1.5.9)
126
+ mail (2.7.1)
127
+ mini_mime (>= 0.1.1)
128
+ marcel (0.3.3)
129
+ mimemagic (~> 0.3.2)
130
+ method_source (1.0.0)
131
+ mimemagic (0.3.5)
132
+ mini_mime (1.0.2)
133
+ minitest (5.14.3)
134
+ momentjs-rails (2.20.1)
135
+ railties (>= 3.1)
136
+ nio4r (2.5.4)
137
+ nokogiri (1.11.1-x86_64-darwin)
138
+ racc (~> 1.4)
139
+ nokogiri (1.11.1-x86_64-linux)
140
+ racc (~> 1.4)
141
+ parser (3.0.0.0)
142
+ ast (~> 2.4.1)
143
+ racc (1.5.2)
144
+ rack (2.2.3)
145
+ rack-test (1.1.0)
146
+ rack (>= 1.0, < 3)
147
+ rails (6.1.1)
148
+ actioncable (= 6.1.1)
149
+ actionmailbox (= 6.1.1)
150
+ actionmailer (= 6.1.1)
151
+ actionpack (= 6.1.1)
152
+ actiontext (= 6.1.1)
153
+ actionview (= 6.1.1)
154
+ activejob (= 6.1.1)
155
+ activemodel (= 6.1.1)
156
+ activerecord (= 6.1.1)
157
+ activestorage (= 6.1.1)
158
+ activesupport (= 6.1.1)
159
+ bundler (>= 1.15.0)
160
+ railties (= 6.1.1)
161
+ sprockets-rails (>= 2.0.0)
162
+ rails-dom-testing (2.0.3)
163
+ activesupport (>= 4.2.0)
164
+ nokogiri (>= 1.6)
165
+ rails-html-sanitizer (1.3.0)
166
+ loofah (~> 2.3)
167
+ rails-i18n (6.0.0)
168
+ i18n (>= 0.7, < 2)
169
+ railties (>= 6.0.0, < 7)
170
+ railties (6.1.1)
171
+ actionpack (= 6.1.1)
172
+ activesupport (= 6.1.1)
173
+ method_source
174
+ rake (>= 0.8.7)
175
+ thor (~> 1.0)
176
+ rainbow (3.0.0)
177
+ rake (13.0.3)
178
+ sassc (2.4.0)
179
+ ffi (~> 1.9)
180
+ sassc-rails (2.1.2)
181
+ railties (>= 4.0.0)
182
+ sassc (>= 2.0)
183
+ sprockets (> 3.0)
184
+ sprockets-rails
185
+ tilt
186
+ selectize-rails (0.12.6)
187
+ sprockets (4.0.2)
188
+ concurrent-ruby (~> 1.0)
189
+ rack (> 1, < 3)
190
+ sprockets-rails (3.2.2)
191
+ actionpack (>= 4.0)
192
+ activesupport (>= 4.0)
193
+ sprockets (>= 3.0.0)
194
+ sqlite3 (1.4.2)
195
+ terminal-table (3.0.0)
196
+ unicode-display_width (~> 1.1, >= 1.1.1)
197
+ thor (1.1.0)
198
+ tilt (2.0.10)
199
+ tzinfo (2.0.4)
200
+ concurrent-ruby (~> 1.0)
201
+ unicode-display_width (1.7.0)
202
+ websocket-driver (0.7.3)
203
+ websocket-extensions (>= 0.1.0)
204
+ websocket-extensions (0.1.5)
205
+ zeitwerk (2.4.2)
206
+
207
+ PLATFORMS
208
+ x86_64-darwin-20
209
+ x86_64-linux
210
+
211
+ DEPENDENCIES
212
+ administrate-field-active_storage!
213
+ i18n-tasks (~> 0.9.34)
214
+ sqlite3 (~> 1.4)
215
+
216
+ BUNDLED WITH
217
+ 2.2.14
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # Administrate::Field::ActiveStorage
2
2
  ![rails](https://img.shields.io/badge/rails-%3E%3D5.2.0-red.svg)
3
+ ![CI](https://github.com/Dreamersoul/administrate-field-active_storage/workflows/CI/badge.svg)
3
4
 
4
5
  ## Things To Know:
5
6
  - To preview pdf files you need to install `mupdf` or `Poppler`.
@@ -16,7 +17,7 @@ gem "image_processing"
16
17
 
17
18
  for rails 5.x use the following
18
19
  ```ruby
19
- gem 'administrate-field-active_storage' -v 0.1.8
20
+ gem 'administrate-field-active_storage', "0.1.8"
20
21
  ```
21
22
 
22
23
  Install:
@@ -59,6 +60,8 @@ class ModelDashboard < Administrate::BaseDashboard
59
60
  ```
60
61
  I know it is not ideal, if you have a workaround please submit a PR.
61
62
 
63
+ Note: Rails 6 introduced a new config to determine the behavior on updates to `has_many_attached`. Setting `Rails.application.config.active_storage.replace_on_assign_to_many` to `true` will overwrite any existing values (purging the old ones), and setting it to `false` will append the new values.
64
+
62
65
  ### Prevent N+1 queries
63
66
  In order to prevent N+1 queries from active storage you have to modify your admin model controller, below an example for a model called `User` and with attached avatars
64
67
  ```ruby
@@ -102,7 +105,33 @@ module Admin
102
105
  end
103
106
  end
104
107
  ```
108
+ For `has_one_attached` cases, you will use:
109
+
110
+ ```rb
111
+ # routes.rb
112
+ ...
113
+ namespace :admin do
114
+ ...
115
+ resources :users do
116
+ delete :avatar, on: :member, action: :destroy_avatar
117
+ end
118
+ end
119
+
120
+ # app/controllers/admin/users_controller.rb
121
+ module Admin
122
+ class UsersController < ApplicationController
105
123
 
124
+ # For illustrative purposes only.
125
+ #
126
+ # **SECURITY NOTICE**: first verify whether current user is authorized to perform the action.
127
+ def destroy_avatar
128
+ avatar = requested_resource.avatar
129
+ avatar.purge
130
+ redirect_back(fallback_location: requested_resource)
131
+ end
132
+ end
133
+ end
134
+ ```
106
135
  This route can be customized with `destroy_url`. The option expects a `proc` receiving 3 arguments:
107
136
  the Administrate `namespace`, the `resource`, and the `attachment`. The proc can return anything
108
137
  accepted by `link_to`:
@@ -125,8 +154,6 @@ class UserDashboard < Administrate::BaseDashboard
125
154
  end
126
155
  ```
127
156
 
128
- To disable this feature, set `destroy_url` to `nil`.
129
-
130
157
  ## Options
131
158
 
132
159
  Various options can be passed to `Administrate::Field::ActiveStorage#with_options`
@@ -177,6 +204,10 @@ Defaults to `false`.
177
204
 
178
205
  Don't forget to include [ActiveStorage JavaScript](https://edgeguides.rubyonrails.org/active_storage_overview.html#direct-uploads). You can use `rails generate administrate:assets:javascripts` to be able to customize Administrate JavaScripts in your application.
179
206
 
207
+ ## I18n
208
+
209
+ You can see translation example [here](https://github.com/Dreamersoul/administrate-field-active_storage/blob/master/config/locales/administrate-field-active_storage.en.yml).
210
+
180
211
  ## Things To Do:
181
212
  - [x] upload single file
182
213
  - [x] adding image support through url_for to support 3rd party cloud storage
@@ -2,7 +2,7 @@ $:.push File.expand_path("../lib", __FILE__)
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "administrate-field-active_storage"
5
- gem.version = "0.3.2"
5
+ gem.version = "0.3.7"
6
6
  gem.authors = ["Hamad AlGhanim"]
7
7
  gem.email = ["hamadyalghanim@gmail.com"]
8
8
  gem.homepage = "https://github.com/Dreamersoul/administrate-field-active_storage"
@@ -17,5 +17,6 @@ Gem::Specification.new do |gem|
17
17
  gem.add_dependency "administrate", ">= 0.2.2"
18
18
  gem.add_dependency "rails", ">= 6.0"
19
19
 
20
- gem.add_development_dependency "rspec", "~> 3.4"
20
+ gem.add_development_dependency 'sqlite3', '~> 1.4'
21
+ gem.add_development_dependency 'i18n-tasks', '~> 0.9.34'
21
22
  end
@@ -25,7 +25,10 @@ By default, the input is a text field for the image's URL.
25
25
  <% end %>
26
26
 
27
27
  <div>
28
- <%= field.can_add_attachment? ? "Add:" : "Replace:" %>
28
+ <%= field.can_add_attachment? ?
29
+ I18n.t("administrate.fields.active_storage.add", default: 'Add') :
30
+ I18n.t("administrate.fields.active_storage.replace", default: 'Replace')
31
+ %>
29
32
  <%= f.file_field field.attribute, multiple: field.many?, direct_upload: field.direct? %>
30
33
  </div>
31
34
  </div>
@@ -25,14 +25,17 @@ By default, the attribute is rendered as an image tag.
25
25
  <%= render partial: 'fields/active_storage/preview',
26
26
  locals: {
27
27
  field: field,
28
- attachment: field.attachments[0],
28
+ attachment: field.data,
29
29
  size: field.index_preview_size
30
30
  } %>
31
31
  <% end %>
32
32
 
33
33
  <% if field.index_display_count? %>
34
34
  <div class="attachments-count">
35
- <%= pluralize(field.attachments.count, 'Attachment') %>
35
+ <%= pluralize(field.attachments.count,
36
+ I18n.t("administrate.fields.active_storage.attachment", default: 'Attachment')
37
+ )
38
+ %>
36
39
  </div>
37
40
  <% end %>
38
41
  <% end %>
@@ -30,13 +30,14 @@ controlled via a boolean local variable.
30
30
  <% end %>
31
31
 
32
32
  <div>
33
- <%= link_to 'Download', field.blob_url(attachment), title: attachment.filename %>
33
+ <%= link_to attachment.filename, field.blob_url(attachment), title: attachment.filename %>
34
34
  </div>
35
35
 
36
36
  <% if field.destroy_url.present? %>
37
37
  <% destroy_url = field.destroy_url.call(namespace, field.data.record, attachment) %>
38
38
  <div>
39
- <%= link_to 'Remove', destroy_url, method: :delete, class: 'remove-attachment-link' %>
39
+ <%= link_to I18n.t("administrate.fields.active_storage.remove", default: 'Remove'),
40
+ destroy_url, method: :delete, class: 'remove-attachment-link', data: { confirm: t("administrate.actions.confirm") } %>
40
41
  </div>
41
42
  <hr>
42
43
  <% end %>
@@ -13,7 +13,7 @@
13
13
  autobuffer: true,
14
14
  style: "object-fit: contain; width: 100%; height: 100%;") %>
15
15
  <% else %>
16
- <%= video_tag(field.url(attachment), controls: true, autobuffer: true, style: style) %>
16
+ <%= video_tag(field.url(attachment), controls: true, autobuffer: true, style: "object-fit: contain; width: 100%; height: 100%;") %>
17
17
  <% end %>
18
18
  <% elsif attachment.audio? %>
19
19
  <%= audio_tag(field.url(attachment), autoplay: false, controls: true) %>
@@ -18,5 +18,5 @@ By default, the attribute is rendered as an image tag.
18
18
  <% if field.attached? %>
19
19
  <%= render partial: 'fields/active_storage/items', locals: { field: field } %>
20
20
  <% else %>
21
- No attachment
21
+ <%= I18n.t("administrate.fields.active_storage.no_attachment", default: 'No attachment') %>
22
22
  <% end %>
@@ -0,0 +1,8 @@
1
+ base_locale: en
2
+
3
+ data:
4
+ read:
5
+ - config/locales/administrate-field-active_storage.%{locale}.yml
6
+
7
+ ignore:
8
+ - 'administrate.actions.*'
@@ -0,0 +1,10 @@
1
+ ---
2
+ en:
3
+ administrate:
4
+ fields:
5
+ active_storage:
6
+ add: Add
7
+ attachment: Attachment
8
+ no_attachment: No attachment
9
+ remove: Remove
10
+ replace: Replace