administrate-field-active_storage 0.3.2 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
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