spree_backend 4.5.1 → 4.6.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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +98 -4
  3. data/.github/workflows/spelling_lint.yml +1 -1
  4. data/Gemfile +5 -3
  5. data/app/assets/images/admin/logo.png +0 -0
  6. data/app/assets/images/backend-spree-icon.svg +5 -1
  7. data/app/assets/images/backend-spree-logo.svg +8 -4
  8. data/app/assets/images/noimage/large.png +0 -0
  9. data/app/assets/images/noimage/mini.png +0 -0
  10. data/app/assets/images/noimage/product.png +0 -0
  11. data/app/assets/images/noimage/small.png +0 -0
  12. data/app/assets/stylesheets/spree/backend/components/_nav.scss +13 -0
  13. data/app/assets/stylesheets/spree/backend/spree_admin.css.scss +1 -0
  14. data/app/controllers/concerns/spree/admin/product_concern.rb +1 -1
  15. data/app/controllers/concerns/spree/admin/translatable.rb +29 -0
  16. data/app/controllers/spree/admin/base_controller.rb +1 -1
  17. data/app/controllers/spree/admin/data_feeds_controller.rb +12 -0
  18. data/app/controllers/spree/admin/option_types_controller.rb +2 -0
  19. data/app/controllers/spree/admin/option_values_controller.rb +8 -1
  20. data/app/controllers/spree/admin/payment_methods_controller.rb +4 -1
  21. data/app/controllers/spree/admin/products_controller.rb +1 -1
  22. data/app/controllers/spree/admin/stores_controller.rb +8 -1
  23. data/app/controllers/spree/admin/taxons_controller.rb +7 -0
  24. data/app/views/spree/admin/data_feeds/_form.html.erb +29 -0
  25. data/app/views/spree/admin/data_feeds/edit.html.erb +13 -0
  26. data/app/views/spree/admin/data_feeds/index.html.erb +45 -0
  27. data/app/views/spree/admin/data_feeds/new.html.erb +13 -0
  28. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +12 -0
  29. data/app/views/spree/admin/option_types/_tabs.html.erb +22 -0
  30. data/app/views/spree/admin/option_types/edit.html.erb +1 -2
  31. data/app/views/spree/admin/option_types/translations.html.erb +5 -0
  32. data/app/views/spree/admin/option_values/translations.html.erb +9 -0
  33. data/app/views/spree/admin/products/translations.html.erb +6 -0
  34. data/app/views/spree/admin/prototypes/show.html.erb +1 -1
  35. data/app/views/spree/admin/shared/_product_tabs.html.erb +8 -0
  36. data/app/views/spree/admin/shared/_store_switcher.html.erb +2 -2
  37. data/app/views/spree/admin/shared/sub_menu/_integrations.html.erb +1 -0
  38. data/app/views/spree/admin/stores/_tabs.html.erb +17 -0
  39. data/app/views/spree/admin/stores/edit.html.erb +1 -0
  40. data/app/views/spree/admin/stores/form/_internationalization.html.erb +3 -0
  41. data/app/views/spree/admin/stores/translations.html.erb +8 -0
  42. data/app/views/spree/admin/taxonomies/translations.html.erb +3 -0
  43. data/app/views/spree/admin/taxons/_tabs.html.erb +26 -0
  44. data/app/views/spree/admin/taxons/edit.html.erb +1 -8
  45. data/app/views/spree/admin/taxons/translations.html.erb +5 -0
  46. data/app/views/spree/admin/translations/_form.html.erb +16 -0
  47. data/app/views/spree/admin/translations/_translation_table.html.erb +31 -0
  48. data/app/views/spree/admin/translations/_translations_unavailable.html.erb +11 -0
  49. data/app/views/spree/admin/webhooks_subscribers/index.html.erb +1 -1
  50. data/app/views/spree/admin/webhooks_subscribers/show.html.erb +1 -1
  51. data/config/locales/en.yml +6 -0
  52. data/config/routes.rb +28 -1
  53. data/lib/spree/backend/version.rb +1 -1
  54. data/spec/fixtures/files/favicon.ico +0 -0
  55. data/spree_backend.gemspec +1 -1
  56. metadata +26 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52a858880403173a9a9f056d3cc56cfcddc3722ba81e0cb8b9a98916c7b8de98
4
- data.tar.gz: 30a8477e002f5d2358e88734a94ad68d764c7fcb11f2c0aad23a21449f1ac3ef
3
+ metadata.gz: 6b658a0d5f11161bb88e49c2db87c4a50a2346b2f76bab36c286d93c89fbc171
4
+ data.tar.gz: 5135287e5f65f52b088d9ecae613efbfb721533eb40f79dcb2a07b80553501c2
5
5
  SHA512:
6
- metadata.gz: ce6e3c3fb15c923f5a1141e83d97d8dd6a95ace8ac955fb46626e47b64fc5df143af04560e144f47658dc5fa98575da4d4c395525ea0b21ceb0e01a7c8fdc789
7
- data.tar.gz: 83bff3a71be5bbb9a7a1ed5f0b386953665c3a396abeab1f2343dc83d9f5d4d11a742771e66d227cc1200a8619b615a648ca9ef7e7e55486936867bc03bd8c5d
6
+ metadata.gz: ed586053b82dbf636a94436d7e960d592ac574fb98c55177a5424366dc34dd6fdd315c8ab24e5e32927f0749c697f206ba21452795aa002776b4188cbb012616
7
+ data.tar.gz: 2e7b00634d3d7dd86fb4d8a2e65904289865d501789f4263993502753b5c62dd21020265ce2f4ea0931ebe4304dbe2bf0417aa26023c5e6f2b3151179c6499c0
data/.circleci/config.yml CHANGED
@@ -19,6 +19,12 @@ defaults_3_0: &defaults_3_0
19
19
  - image: &ruby_3_0_image circleci/ruby:3.0-node-browsers
20
20
  - image: *redis_image
21
21
 
22
+ defaults_3_2: &defaults_3_2
23
+ <<: *defaults
24
+ docker:
25
+ - image: &ruby_3_2_image cimg/ruby:3.2.0-browsers
26
+ - image: *redis_image
27
+
22
28
  run_tests_2_7: &run_tests_2_7
23
29
  <<: *defaults
24
30
  parallelism: 8
@@ -28,9 +34,12 @@ run_tests_2_7: &run_tests_2_7
28
34
  keys:
29
35
  - spree-dashboard-bundle-v10-ruby-2-7-{{ .Branch }}
30
36
  - spree-dashboard-bundle-v10-ruby-2-7
37
+ - run:
38
+ name: Add keyserver
39
+ command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4EB27DB2A3B88B8B
31
40
  - run:
32
41
  name: Install libvips
33
- command: sudo apt-get install libvips
42
+ command: sudo apt-get update && sudo apt-get install libvips
34
43
  - run:
35
44
  name: Set bundle path
36
45
  command: bundle config --local path vendor/bundle
@@ -68,9 +77,12 @@ run_tests_3_0: &run_tests_3_0
68
77
  keys:
69
78
  - spree-dashboard-bundle-v10-ruby-3-0-{{ .Branch }}
70
79
  - spree-dashboard-bundle-v10-ruby-3-0
80
+ - run:
81
+ name: Add keyserver
82
+ command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4EB27DB2A3B88B8B
71
83
  - run:
72
84
  name: Install libvips
73
- command: sudo apt-get install libvips
85
+ command: sudo apt-get update && sudo apt-get install libvips
74
86
  - run:
75
87
  name: Set bundle path
76
88
  command: bundle config --local path vendor/bundle
@@ -99,6 +111,46 @@ run_tests_3_0: &run_tests_3_0
99
111
  - store_artifacts:
100
112
  path: /tmp/test-artifacts
101
113
 
114
+ run_tests_3_2: &run_tests_3_2
115
+ <<: *defaults_3_2
116
+ parallelism: 8
117
+ steps:
118
+ - checkout
119
+ - restore_cache:
120
+ keys:
121
+ - spree-dashboard-bundle-v10-ruby-3-2-{{ .Branch }}
122
+ - spree-dashboard-bundle-v10-ruby-3-2
123
+ - run:
124
+ name: Install libvips
125
+ command: sudo apt-get update && sudo apt-get install libvips42
126
+ - run:
127
+ name: Set bundle path
128
+ command: bundle config --local path vendor/bundle
129
+ - run:
130
+ name: Ensure bundle Install
131
+ command: |
132
+ bundle check || bundle install
133
+ - run:
134
+ name: Create test app
135
+ command: |
136
+ bundle exec rake test_app
137
+ - run:
138
+ name: Unlink NPM package
139
+ command: |
140
+ cd spec/dummy && yarn unlink @spree/dashboard
141
+ - run:
142
+ name: Run Rspec
143
+ command: |
144
+ TESTFILES=$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
145
+ bundle exec rspec --format documentation \
146
+ --format RspecJunitFormatter \
147
+ -o ~/rspec/rspec.xml \
148
+ -- ${TESTFILES}
149
+ - store_test_results:
150
+ path: ~/rspec
151
+ - store_artifacts:
152
+ path: /tmp/test-artifacts
153
+
102
154
  jobs:
103
155
  bundle_ruby_2_7:
104
156
  <<: *defaults
@@ -108,9 +160,12 @@ jobs:
108
160
  keys:
109
161
  - spree-dashboard-bundle-v10-ruby-2-7-{{ .Branch }}
110
162
  - spree-dashboard-bundle-v10-ruby-2-7
163
+ - run:
164
+ name: Add keyserver
165
+ command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4EB27DB2A3B88B8B
111
166
  - run:
112
167
  name: Install libvips
113
- command: sudo apt-get install libvips
168
+ command: sudo apt-get update && sudo apt-get install libvips
114
169
  - run:
115
170
  name: Set bundle path
116
171
  command: bundle config --local path vendor/bundle
@@ -131,9 +186,12 @@ jobs:
131
186
  keys:
132
187
  - spree-dashboard-bundle-v10-ruby-3-0-{{ .Branch }}
133
188
  - spree-dashboard-bundle-v10-ruby-3-0
189
+ - run:
190
+ name: Add keyserver
191
+ command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4EB27DB2A3B88B8B
134
192
  - run:
135
193
  name: Install libvips
136
- command: sudo apt-get install libvips
194
+ command: sudo apt-get update && sudo apt-get install libvips
137
195
  - run:
138
196
  name: Set bundle path
139
197
  command: bundle config --local path vendor/bundle
@@ -146,6 +204,29 @@ jobs:
146
204
  - vendor/bundle
147
205
  key: spree-dashboard-bundle-v10-ruby-3-0-{{ checksum "Gemfile.lock" }}
148
206
 
207
+ bundle_ruby_3_2:
208
+ <<: *defaults_3_2
209
+ steps:
210
+ - checkout
211
+ - restore_cache:
212
+ keys:
213
+ - spree-dashboard-bundle-v10-ruby-3-2-{{ .Branch }}
214
+ - spree-dashboard-bundle-v10-ruby-3-2
215
+ - run:
216
+ name: Install libvips
217
+ command: sudo apt-get update && sudo apt-get install libvips42
218
+ - run:
219
+ name: Set bundle path
220
+ command: bundle config --local path vendor/bundle
221
+ - run:
222
+ name: Bundle Install
223
+ command: |
224
+ bundle check || bundle install
225
+ - save_cache:
226
+ paths:
227
+ - vendor/bundle
228
+ key: spree-dashboard-bundle-v10-ruby-3-2-{{ checksum "Gemfile.lock" }}
229
+
149
230
  tests_ruby_2_7_rails_7_0_postgres:
150
231
  <<: *run_tests_2_7
151
232
  environment: &postgres_environment
@@ -169,6 +250,15 @@ jobs:
169
250
  - image: *postgres_image
170
251
  - image: *redis_image
171
252
 
253
+ tests_ruby_3_2_rails_7_0_postgres:
254
+ <<: *run_tests_3_2
255
+ environment:
256
+ <<: *postgres_environment
257
+ docker:
258
+ - image: *ruby_3_2_image
259
+ - image: *postgres_image
260
+ - image: *redis_image
261
+
172
262
  tests_ruby_2_7_rails_7_0_mysql:
173
263
  <<: *run_tests_2_7
174
264
  environment:
@@ -189,6 +279,10 @@ workflows:
189
279
  jobs:
190
280
  - bundle_ruby_2_7
191
281
  - bundle_ruby_3_0
282
+ - bundle_ruby_3_2
283
+ - tests_ruby_3_2_rails_7_0_postgres:
284
+ requires:
285
+ - bundle_ruby_3_2
192
286
  - tests_ruby_3_0_rails_7_0_postgres:
193
287
  requires:
194
288
  - bundle_ruby_3_0
@@ -22,7 +22,7 @@ jobs:
22
22
  pip install codespell
23
23
  if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
24
24
  - name: Check spelling with codespell
25
- run: codespell --ignore-words=codespell.txt || exit 1
25
+ run: codespell --ignore-words=codespell.txt --skip=vendor,node_modules,yarn.lock || exit 1
26
26
  misspell:
27
27
  name: Check spelling all files in commit with misspell
28
28
  runs-on: ubuntu-latest
data/Gemfile CHANGED
@@ -36,7 +36,7 @@ group :test do
36
36
  gem 'rspec_junit_formatter'
37
37
  gem 'rswag-specs'
38
38
  gem 'jsonapi-rspec'
39
- gem 'simplecov', '0.17.1'
39
+ gem 'simplecov', '0.22.0'
40
40
  gem 'webmock', '~> 3.7'
41
41
  gem 'timecop'
42
42
  gem 'rails-controller-testing'
@@ -47,7 +47,7 @@ group :test, :development do
47
47
  gem 'awesome_print'
48
48
  gem 'gem-release'
49
49
  gem 'redis'
50
- gem 'rubocop', '~> 1.22.3', require: false # bumped
50
+ gem 'rubocop', '~> 1.48.1', require: false # bumped
51
51
  gem 'rubocop-rspec', require: false
52
52
  gem 'pry-byebug'
53
53
  gem 'webdrivers', '~> 4.1'
@@ -65,5 +65,7 @@ end
65
65
  spree_opts = { github: 'spree/spree', branch: 'main' }
66
66
  gem 'spree_core', spree_opts
67
67
  gem 'spree_api', spree_opts
68
- gem 'selenium-webdriver'
68
+ # Last version that supports Ruby 2.7
69
+ # We should remove this once we drop support for Ruby 2.7
70
+ gem 'selenium-webdriver', '~> 4.8.1'
69
71
  gemspec
Binary file
@@ -1 +1,5 @@
1
- <svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path d="M219.139 381.189c0 13.505-10.945 24.451-24.45 24.451-13.502 0-24.448-10.946-24.448-24.451s10.946-24.451 24.448-24.451c13.505 0 24.45 10.946 24.45 24.451M321.928 381.189c0 13.505-10.948 24.451-24.45 24.451-13.503 0-24.448-10.946-24.448-24.451s10.945-24.451 24.448-24.451c13.502 0 24.45 10.946 24.45 24.451M306.461 332.291H185.71a23.944 23.944 0 01-22.136-14.808l-31.807-77.004h-24.896c-13.227 0-23.951-10.724-23.951-23.951s10.724-23.951 23.951-23.951h40.916a23.95 23.95 0 0122.137 14.808l31.806 77.004h88.869l32.729-77.208c5.164-12.182 19.22-17.858 31.402-12.705 12.176 5.164 17.864 19.22 12.703 31.399l-38.92 91.812a23.953 23.953 0 01-22.052 14.604" fill-rule="nonzero"/><path d="M333.217 113.118c-9.165-9.545-24.325-9.85-33.867-.686l-29.815 28.627V26.919c0-13.23-10.721-23.95-23.951-23.95-13.227 0-23.951 10.72-23.951 23.95v113.58l-28.693-27.95c-9.475-9.227-24.639-9.032-33.869.446-9.23 9.475-9.032 24.639.443 33.869l69.358 67.556c.318.309.659.581.988.868.174.153.342.312.521.461a24.027 24.027 0 002.539 1.83c.123.074.255.143.38.221a24.01 24.01 0 002.656 1.371c.084.036.156.087.239.123.057.024.114.042.168.063.545.228 1.096.422 1.653.605.203.069.404.149.607.212.545.162 1.099.294 1.65.419.222.051.44.117.662.159.553.111 1.11.183 1.667.252.222.027.437.074.659.092.748.075 1.497.111 2.245.111.024 0 .048.006.075.006h.003c.063 0 .129-.009.192-.009.7-.006 1.401-.036 2.095-.102.413-.039.824-.116 1.231-.176.344-.051.688-.087 1.03-.153.488-.093.97-.224 1.452-.347.254-.069.515-.117.766-.192.497-.147.979-.326 1.467-.506.234-.084.473-.155.707-.251.464-.186.916-.404 1.371-.623.248-.117.5-.225.742-.35.413-.216.815-.458 1.219-.701.275-.164.557-.32.826-.497.353-.23.695-.488 1.039-.739.305-.225.614-.446.91-.686.299-.242.587-.506.877-.763.222-.198.452-.375.668-.581l70.355-67.553c9.541-9.164 9.847-24.325.686-33.866M249.284 497.033c-23.996 0-49.024-9.035-75.93-27.103-10.981-7.374-13.906-22.253-6.532-33.234 7.373-10.979 22.253-13.904 33.237-6.533 41.938 28.163 65.634 21.379 90.282 1.311 10.26-8.349 25.346-6.808 33.696 3.452 8.35 10.26 6.805 25.346-3.455 33.696-23.268 18.942-46.74 28.411-71.298 28.411" fill-rule="nonzero"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="215.156" height="240.112" viewBox="0 0 215.156 240.112">
2
+ <g fill-rule="nonzero" fill="currentColor">
3
+ <path d="M125.668,240.112h0a72.581,72.581,0,0,1-23.006-3.89,94.124,94.124,0,0,1-18.873-8.857,107.267,107.267,0,0,1-20.2-15.773h0a.038.038,0,0,1-.01-.008L67.7,205.44a.257.257,0,0,0,.031.015,129.888,129.888,0,0,0,18,6.538,159.717,159.717,0,0,0,18.66,4.242,140.957,140.957,0,0,0,22.752,1.911c18.939,0,36.223-4.183,51.365-12.433l4.6,6.144C165.469,230.606,146.145,240.112,125.668,240.112Zm49.205-52.481a15.174,15.174,0,0,1-10.359-3.971,12.848,12.848,0,0,1,0-19.168,15.5,15.5,0,0,1,20.719,0,12.848,12.848,0,0,1,0,19.168A15.167,15.167,0,0,1,174.873,187.631Zm-102.539,0c-8.377,0-15.2-6.081-15.2-13.555s6.818-13.555,15.2-13.555a16.057,16.057,0,0,1,10.74,3.971,12.551,12.551,0,0,1,0,19.168A16.06,16.06,0,0,1,72.334,187.631Zm5.723-45.9a32.085,32.085,0,0,1-10.328-1.7,31.065,31.065,0,0,1-8.91-4.729,29.019,29.019,0,0,1-6.748-7.224,27.241,27.241,0,0,1-3.848-9.182L30.924,18.424H0L.008,0h37.41A12.563,12.563,0,0,1,44.98,2.5a10.945,10.945,0,0,1,4.137,6.373l4.895,24.229H203.217a12.291,12.291,0,0,1,9.2,4,10.438,10.438,0,0,1,2.531,9.111l-14.965,72.605a27.356,27.356,0,0,1-3.859,9.228,28.967,28.967,0,0,1-6.777,7.248,31.211,31.211,0,0,1-8.98,4.738,32.738,32.738,0,0,1-10.459,1.7c-.2,0-.387,0-.588-.005H78.641C78.449,141.736,78.25,141.736,78.057,141.736ZM193.385,52.909h0l-135.6.019,10.869,61.653a6.213,6.213,0,0,0,2.342,3.641,7.124,7.124,0,0,0,4.291,1.419h.131l97.768-.019h.152a6.726,6.726,0,0,0,6.846-5.041L193.389,52.91Z" />
4
+ </g>
5
+ </svg>
@@ -1,6 +1,10 @@
1
- <svg viewBox="0 0 2075 892" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2">
2
- <g fill-rule="nonzero" fill="currentColor">
3
- <path d="M774.897 704.867c-37.553 0-81.661-17.277-100.736-45.895-4.166-5.366-5.958-11.32-5.958-17.88 0-16.089 14.903-29.803 30.991-29.803 8.348 0 16.099 4.167 23.844 13.117 11.922 14.894 29.21 22.052 51.859 22.052 39.937 0 63.184-23.247 63.184-47.688 0-26.223-26.229-44.108-59.008-56.03-32.783-11.917-67.957-23.246-91.198-52.451-11.325-14.904-17.288-32.779-17.288-54.836 0-61.396 51.261-97.162 108.486-97.162 38.145 0 79.87 20.862 100.732 52.456 2.981 4.769 4.768 10.13 4.768 16.686 0 16.691-14.306 29.807-30.997 29.807-8.94 0-16.685-4.774-23.838-14.306-12.52-17.288-29.21-26.228-50.665-26.228-31.001 0-48.882 17.288-48.882 38.747 0 22.057 26.228 36.955 59.012 48.877 32.784 12.519 67.953 25.039 91.199 56.623 11.324 16.098 17.283 35.168 17.283 57.817 0 63.781-56.623 106.097-122.788 106.097zm226.342 84.294c0 18.518-13.734 29.863-29.858 29.863-16.123 0-29.857-11.345-29.857-29.863V466.683c0-71.064 57.325-128.389 128.39-128.389 71.069 0 128.395 57.325 128.395 128.389v110.485c0 71.059-57.326 128.39-128.395 128.39-26.871 0-49.565-8.363-68.675-25.676v109.279zm0-211.993c0 38.215 30.454 68.675 68.675 68.675 38.22 0 68.675-30.46 68.675-68.675V466.683c0-38.22-30.455-68.675-68.675-68.675-38.221 0-68.675 30.455-68.675 68.675v110.485zm426.266-153.928c-7.841 0-15.064-3.017-21.696-9.643l-1.204-1.205c-11.445-9.035-24.09-13.854-39.154-13.854-35.545 0-57.235 24.702-57.235 73.499v200.619c0 18.678-13.855 30.123-30.124 30.123s-30.123-11.445-30.123-30.123V472.037c0-75.306 42.773-133.746 117.482-133.746 28.908 0 63.851 13.252 83.739 33.135 6.024 6.626 9.036 13.257 9.036 21.083 0 16.269-14.457 30.731-30.721 30.731zm310.885 84.928c0 16.099-13.709 29.803-29.802 29.803h-166.901v38.747c0 35.761 34.576 68.545 74.513 68.545 23.839 0 42.914-7.746 57.817-22.649 6.551-8.946 14.301-13.709 23.839-13.709 16.098 0 31.002 13.709 31.002 29.797 0 11.927-6.561 19.672-13.714 26.825-24.436 26.228-57.818 39.34-98.944 39.34-69.739 0-134.123-57.215-134.123-128.149V466.444c0-70.928 57.23-128.154 128.159-128.154s128.154 57.226 128.154 128.154v41.724zm-59.604-29.802v-11.922c0-38.15-30.405-68.544-68.55-68.544-38.15 0-68.549 30.394-68.549 68.544v11.922h137.099zm357.283 29.802c0 16.099-13.709 29.803-29.802 29.803h-166.896v38.747c0 35.761 34.571 68.545 74.508 68.545 23.839 0 42.919-7.746 57.817-22.649 6.556-8.946 14.301-13.709 23.844-13.709 16.093 0 30.997 13.709 30.997 29.797 0 11.927-6.556 19.672-13.714 26.825-24.436 26.228-57.812 39.34-98.944 39.34-69.739 0-134.123-57.215-134.123-128.149V466.444c0-70.928 57.23-128.154 128.159-128.154 70.934 0 128.154 57.226 128.154 128.154v41.724zm-59.604-29.802v-11.922c0-38.15-30.405-68.544-68.55-68.544-38.15 0-68.544 30.394-68.544 68.544v11.922h137.094zM241.964 660.886c0 22.644-18.352 40.996-40.996 40.996-22.64 0-40.992-18.352-40.992-40.996 0-22.644 18.352-40.996 40.992-40.996 22.644 0 40.996 18.352 40.996 40.996M414.309 660.886c0 22.644-18.357 40.996-40.996 40.996-22.639 0-40.991-18.352-40.991-40.996 0-22.644 18.352-40.996 40.991-40.996s40.996 18.352 40.996 40.996M388.374 578.898H185.913a40.149 40.149 0 01-37.116-24.827L95.468 424.958H53.724c-22.178 0-40.158-17.981-40.158-40.158s17.98-40.158 40.158-40.158h68.604a40.156 40.156 0 0137.116 24.828l53.33 129.113H361.78l54.876-129.454c8.659-20.426 32.226-29.943 52.652-21.304 20.415 8.659 29.952 32.226 21.298 52.647l-65.256 153.94a40.164 40.164 0 01-36.976 24.486"/>
4
- <path d="M433.236 211.413c-15.366-16.003-40.786-16.515-56.783-1.15l-49.992 47.999V66.885c0-22.183-17.976-40.158-40.158-40.158-22.177 0-40.158 17.975-40.158 40.158v190.438l-48.109-46.864c-15.887-15.471-41.312-15.144-56.788.748-15.476 15.888-15.145 41.313.743 56.788l116.292 113.271c.532.517 1.104.974 1.656 1.455.292.256.573.523.874.774a40.237 40.237 0 004.257 3.067c.205.125.426.241.637.371a40.349 40.349 0 004.453 2.299c.14.06.261.146.401.206.096.04.191.07.281.105.914.382 1.837.708 2.771 1.014.342.116.678.251 1.019.357.914.271 1.842.492 2.766.702.372.086.738.196 1.109.267.929.185 1.863.306 2.796.421.372.045.733.126 1.105.156 1.255.125 2.51.186 3.765.186.04 0 .08.01.125.01h.005c.105 0 .216-.016.321-.016 1.175-.01 2.35-.06 3.514-.17.693-.065 1.381-.196 2.063-.296.578-.086 1.155-.146 1.727-.256.818-.156 1.626-.377 2.435-.583.426-.115.863-.195 1.285-.321.833-.246 1.641-.547 2.459-.848.392-.141.793-.261 1.185-.422.778-.311 1.536-.678 2.299-1.044.417-.196.838-.376 1.245-.587.693-.362 1.365-.768 2.043-1.175.462-.276.934-.537 1.385-.833.593-.387 1.165-.818 1.742-1.24.512-.377 1.029-.748 1.526-1.15.502-.406.984-.848 1.471-1.28.372-.331.758-.627 1.119-.973l117.964-113.266c15.998-15.365 16.51-40.785 1.15-56.783M292.506 855.121c-40.233 0-82.198-15.149-127.31-45.444-18.413-12.363-23.317-37.311-10.953-55.724 12.363-18.407 37.311-23.311 55.729-10.953 70.316 47.221 110.048 35.846 151.375 2.199 17.203-14 42.497-11.415 56.497 5.788 14 17.202 11.41 42.497-5.792 56.497-39.014 31.76-78.369 47.637-119.546 47.637"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1199.129" height="300.825" viewBox="0 0 1199.129 300.825">
2
+ <g transform="translate(-224.344 -239.125)" fill="currentColor">
3
+ <g transform="translate(224.344 239.125)">
4
+ <g>
5
+ <path d="M125.668,240.112h0a72.581,72.581,0,0,1-23.006-3.89,94.124,94.124,0,0,1-18.873-8.857,107.267,107.267,0,0,1-20.2-15.773h0a.038.038,0,0,1-.01-.008L67.7,205.44a.257.257,0,0,0,.031.015,129.888,129.888,0,0,0,18,6.538,159.717,159.717,0,0,0,18.66,4.242,140.957,140.957,0,0,0,22.752,1.911c18.939,0,36.223-4.183,51.365-12.433l4.6,6.144C165.469,230.606,146.145,240.112,125.668,240.112Zm49.205-52.481a15.174,15.174,0,0,1-10.359-3.971,12.848,12.848,0,0,1,0-19.168,15.5,15.5,0,0,1,20.719,0,12.848,12.848,0,0,1,0,19.168A15.167,15.167,0,0,1,174.873,187.631Zm-102.539,0c-8.377,0-15.2-6.081-15.2-13.555s6.818-13.555,15.2-13.555a16.057,16.057,0,0,1,10.74,3.971,12.551,12.551,0,0,1,0,19.168A16.06,16.06,0,0,1,72.334,187.631Zm5.723-45.9a32.085,32.085,0,0,1-10.328-1.7,31.065,31.065,0,0,1-8.91-4.729,29.019,29.019,0,0,1-6.748-7.224,27.241,27.241,0,0,1-3.848-9.182L30.924,18.424H0L.008,0h37.41A12.563,12.563,0,0,1,44.98,2.5a10.945,10.945,0,0,1,4.137,6.373l4.895,24.229H203.217a12.291,12.291,0,0,1,9.2,4,10.438,10.438,0,0,1,2.531,9.111l-14.965,72.605a27.356,27.356,0,0,1-3.859,9.228,28.967,28.967,0,0,1-6.777,7.248,31.211,31.211,0,0,1-8.98,4.738,32.738,32.738,0,0,1-10.459,1.7c-.2,0-.387,0-.588-.005H78.641C78.449,141.736,78.25,141.736,78.057,141.736ZM193.385,52.909h0l-135.6.019,10.869,61.653a6.213,6.213,0,0,0,2.342,3.641,7.124,7.124,0,0,0,4.291,1.419h.131l97.768-.019h.152a6.726,6.726,0,0,0,6.846-5.041L193.389,52.91Z" transform="translate(0 0)" />
6
+ </g>
7
+ </g>
8
+ <path d="M220.518,267.868H188.227V3.852h28.885l3.414,34.871.051.538h3.205l.17-.313a71.884,71.884,0,0,1,12.227-16.555A70.851,70.851,0,0,1,252.49,10.179a80,80,0,0,1,19.9-7.58A99.514,99.514,0,0,1,295.41,0c12.859,0,24.6,2.308,34.889,6.858a69.852,69.852,0,0,1,26.039,19.913c7.152,8.765,12.648,19.555,16.334,32.071,3.758,12.743,5.662,27.323,5.662,43.333,0,16.193-1.9,30.9-5.662,43.722-3.693,12.6-9.189,23.417-16.334,32.165A69.522,69.522,0,0,1,330.3,197.925c-10.266,4.522-22,6.815-34.895,6.815a101.836,101.836,0,0,1-23.617-2.656,79.464,79.464,0,0,1-20.025-7.667,67.849,67.849,0,0,1-27.812-28.62l-.168-.319h-3.27Zm65.65-241.347a76.039,76.039,0,0,0-26.777,4.591A59.7,59.7,0,0,0,238.65,44.06a57.23,57.23,0,0,0-13.391,20.02,68.977,68.977,0,0,0-4.742,25.782v25.018A68.52,68.52,0,0,0,225.26,140.6a56.735,56.735,0,0,0,13.391,19.894A59.585,59.585,0,0,0,259.4,173.3a76.919,76.919,0,0,0,26.77,4.535c17.721,0,32.619-5.164,43.084-14.933,10.484-9.782,16.025-23.727,16.025-40.327V82.163c0-16.625-5.539-30.635-16.018-40.514C318.768,31.752,303.867,26.521,286.168,26.521ZM813.123,207.434c-14.346,0-27.553-2.449-39.25-7.278a81.139,81.139,0,0,1-29.59-20.815,92.683,92.683,0,0,1-18.717-32.885c-4.332-12.969-6.531-27.608-6.531-43.509,0-15.868,2.2-30.426,6.525-43.271a90,90,0,0,1,18.674-32.347A80.172,80.172,0,0,1,773.711,7.041C785.316,2.369,798.449,0,812.74,0a104.883,104.883,0,0,1,36.965,6.245,76.843,76.843,0,0,1,27.906,17.877A78.153,78.153,0,0,1,895.27,52.385a108.659,108.659,0,0,1,6.178,37.477,171.369,171.369,0,0,1-1.086,20.188H752.1l0,12.146a65.8,65.8,0,0,0,4.406,24.36,53.083,53.083,0,0,0,12.516,18.792,55.624,55.624,0,0,0,19.518,12.077,73.161,73.161,0,0,0,25.357,4.259c13.848,0,26.477-3.546,36.518-10.254a49.172,49.172,0,0,0,20.127-27.085h31.914c-4.311,19.228-14.252,34.234-30.393,45.877a92.6,92.6,0,0,1-12.91,7.529,93.781,93.781,0,0,1-14.1,5.375,104.528,104.528,0,0,1-15.326,3.232A124.678,124.678,0,0,1,813.123,207.434ZM812.74,25.75a73.857,73.857,0,0,0-24.521,3.965,56.338,56.338,0,0,0-19.18,11.2A49.878,49.878,0,0,0,756.547,58.26,55.846,55.846,0,0,0,752.1,80.622V86.61H869.535l0-8.3a55.422,55.422,0,0,0-4.117-21.5A47.378,47.378,0,0,0,853.8,40.195a51.919,51.919,0,0,0-17.953-10.673A68.611,68.611,0,0,0,812.74,25.75ZM602.188,207.434c-14.346,0-27.553-2.449-39.25-7.278a81.053,81.053,0,0,1-29.59-20.815,92.683,92.683,0,0,1-18.717-32.885c-4.332-12.969-6.531-27.608-6.531-43.509,0-15.882,2.2-30.44,6.525-43.271A90,90,0,0,1,533.3,27.329,80.2,80.2,0,0,1,562.77,7.041C574.381,2.369,587.514,0,601.8,0A104.883,104.883,0,0,1,638.77,6.245a76.845,76.845,0,0,1,27.9,17.877,78.078,78.078,0,0,1,17.664,28.263,108.613,108.613,0,0,1,6.178,37.477,171.4,171.4,0,0,1-1.084,20.188H541.16l0,12.146a65.8,65.8,0,0,0,4.406,24.36,53,53,0,0,0,12.516,18.792,55.615,55.615,0,0,0,19.52,12.077,73.094,73.094,0,0,0,25.355,4.259c13.848,0,26.477-3.546,36.518-10.254A49.146,49.146,0,0,0,659.6,144.344h31.914c-4.311,19.228-14.252,34.234-30.393,45.877a91.839,91.839,0,0,1-27.012,12.9,104.621,104.621,0,0,1-15.326,3.232A124.678,124.678,0,0,1,602.188,207.434ZM601.8,25.75a73.849,73.849,0,0,0-24.521,3.965,56.338,56.338,0,0,0-19.18,11.2A49.755,49.755,0,0,0,545.611,58.26a55.846,55.846,0,0,0-4.449,22.362V86.61H658.6l0-8.3a55.377,55.377,0,0,0-4.117-21.5,47.378,47.378,0,0,0-11.619-16.612,51.906,51.906,0,0,0-17.953-10.673A68.619,68.619,0,0,0,601.8,25.75ZM81.393,207.434c-24.617,0-45.252-6.1-59.678-17.626A56.742,56.742,0,0,1,5.605,169.613,60.958,60.958,0,0,1,0,143.962H31.914c.158,11.487,4.887,21.176,13.678,28.021s21.18,10.47,35.8,10.47a73.968,73.968,0,0,0,19.047-2.274,42.731,42.731,0,0,0,14.363-6.646,29.5,29.5,0,0,0,9.076-10.736,32.54,32.54,0,0,0,3.146-14.432,30.161,30.161,0,0,0-1.7-10.379,23.257,23.257,0,0,0-5.111-8.218,28.879,28.879,0,0,0-8.469-5.976,49.488,49.488,0,0,0-11.77-3.727l-43.113-8.086a100.8,100.8,0,0,1-23.322-6.953A56.1,56.1,0,0,1,17,93.958,42.633,42.633,0,0,1,7.139,78.8,54.181,54.181,0,0,1,3.854,59.45,57.6,57.6,0,0,1,9.145,34.57,51.835,51.835,0,0,1,24.215,15.9C37.465,5.5,56.438,0,79.08,0A110.546,110.546,0,0,1,111.02,4.34a70.231,70.231,0,0,1,23.936,12.271c13.072,10.551,20.162,25.557,20.5,43.4H123.535c-1-23.5-15.959-35.416-44.455-35.416a70.987,70.987,0,0,0-18.3,2.18A39.769,39.769,0,0,0,47.3,33.035a27.234,27.234,0,0,0-8.334,9.922,29.573,29.573,0,0,0-2.83,13.029,28.154,28.154,0,0,0,3.4,14.106,23.2,23.2,0,0,0,9.619,9.133l.045.019c7.922,3.4,11.479,4.623,19.758,6.2l39.648,7.31A93.816,93.816,0,0,1,131.49,99.57a54.132,54.132,0,0,1,16.3,11.206,43.876,43.876,0,0,1,9.783,15.591,58.259,58.259,0,0,1,3.273,20.075,58.013,58.013,0,0,1-5.57,25.6A53.43,53.43,0,0,1,139.395,191.2C125.43,201.82,105.373,207.434,81.393,207.434Zm357.762-3.852H406.861V32.891a39.827,39.827,0,0,1,1.848-12.722,22.8,22.8,0,0,1,5.525-9.032A23.415,23.415,0,0,1,423.5,5.693a42.561,42.561,0,0,1,13.174-1.841h69.07V30.367H439.158Z" transform="translate(521.02 272.083)" />
5
9
  </g>
6
10
  </svg>
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ .nav-pills .nav-link {
2
+ color: $gray-800;
3
+ }
4
+
5
+ .nav-pills .nav-link:hover {
6
+ color: map-get($theme-colors, 'primary');
7
+ }
8
+
9
+ .nav-pills .nav-link.active {
10
+ background-color: $gray-200;
11
+ color: map-get($theme-colors, 'primary');
12
+ }
13
+
@@ -14,6 +14,7 @@
14
14
  @import 'spree/backend/components/page_header';
15
15
  @import 'spree/backend/components/icons';
16
16
  @import 'spree/backend/components/buttons';
17
+ @import 'spree/backend/components/nav';
17
18
  @import 'spree/backend/components/filters';
18
19
  @import 'spree/backend/components/navigation';
19
20
  @import 'spree/backend/components/taxon_products_view';
@@ -4,7 +4,7 @@ module Spree
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  def product_scope
7
- current_store.products.accessible_by(current_ability, :index)
7
+ current_store.products.accessible_by(current_ability, :index).includes(:translations)
8
8
  end
9
9
  end
10
10
  end
@@ -0,0 +1,29 @@
1
+ module Spree
2
+ module Admin
3
+ module Translatable
4
+ extend ActiveSupport::Concern
5
+
6
+ def edit_translations
7
+ save_translation_values
8
+ flash[:success] = Spree.t('notice_messages.translations_saved')
9
+
10
+ redirect_to(edit_polymorphic_path([:admin, @object]))
11
+ end
12
+
13
+ private
14
+
15
+ def save_translation_values
16
+ translation_params = params[:translation]
17
+
18
+ current_store.supported_locales_list.each do |locale|
19
+ I18n.with_locale(locale) do
20
+ translation_params.each do |attribute, translations|
21
+ @object.public_send("#{attribute}=", translations[locale])
22
+ end
23
+ @object.save!
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -70,7 +70,7 @@ module Spree
70
70
  end
71
71
 
72
72
  def stores_scope
73
- Spree::Store.accessible_by(current_ability, :show)
73
+ Spree::Store.accessible_by(current_ability, :show).includes(:translations)
74
74
  end
75
75
 
76
76
  def load_stores
@@ -0,0 +1,12 @@
1
+ module Spree
2
+ module Admin
3
+ class DataFeedsController < ResourceController
4
+ def collection
5
+ return @collection if @collection.present?
6
+
7
+ @collection = super
8
+ @collection.page(params[:page]).per(params[:per_page])
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,6 +1,8 @@
1
1
  module Spree
2
2
  module Admin
3
3
  class OptionTypesController < ResourceController
4
+ include Translatable
5
+
4
6
  before_action :setup_new_option_value, only: :edit
5
7
 
6
8
  def update_values_positions
@@ -1,6 +1,13 @@
1
1
  module Spree
2
2
  module Admin
3
- class OptionValuesController < Spree::Admin::BaseController
3
+ class OptionValuesController < ResourceController
4
+ include Translatable
5
+
6
+ # This method is added here to allow `edit_polymorphic_path` to work
7
+ def edit_admin_option_value_path(option_value)
8
+ spree.edit_admin_option_type_url(option_value.option_type)
9
+ end
10
+
4
11
  def destroy
5
12
  option_value = Spree::OptionValue.find(params[:id])
6
13
  option_value.destroy
@@ -45,7 +45,10 @@ module Spree
45
45
  redirect_to spree.edit_admin_payment_method_path(@payment_method)
46
46
  else
47
47
  invoke_callbacks(:update, :fails)
48
- respond_with(@payment_method, status: :unprocessable_entity)
48
+ respond_with(@payment_method) do |format|
49
+ format.html { render action: :edit, status: :unprocessable_entity }
50
+ format.js { render layout: false, status: :unprocessable_entity }
51
+ end
49
52
  end
50
53
  end
51
54
 
@@ -2,6 +2,7 @@ module Spree
2
2
  module Admin
3
3
  class ProductsController < ResourceController
4
4
  include Spree::Admin::ProductConcern
5
+ include Translatable
5
6
 
6
7
  helper 'spree/admin/products'
7
8
 
@@ -139,7 +140,6 @@ module Spree
139
140
 
140
141
  params[:q] ||= {}
141
142
  params[:q][:deleted_at_null] ||= '1'
142
-
143
143
  params[:q][:s] ||= 'name asc'
144
144
 
145
145
  @collection = product_scope
@@ -1,7 +1,9 @@
1
1
  module Spree
2
2
  module Admin
3
3
  class StoresController < Spree::Admin::BaseController
4
- before_action :load_store, only: [:new, :edit, :update]
4
+ include Translatable
5
+
6
+ before_action :load_store, only: [:new, :edit, :translations, :edit_translations, :update]
5
7
  before_action :set_default_currency, only: :new
6
8
  before_action :set_default_locale, only: :new
7
9
  before_action :normalize_supported_currencies, only: [:create, :update]
@@ -88,6 +90,11 @@ module Spree
88
90
  def set_default_country_id
89
91
  @store.default_country_id ||= Spree::Store.default.default_country_id || Spree::Country.find_by(iso: "US")&.id
90
92
  end
93
+
94
+ def save_translation_values
95
+ @object = @store
96
+ super
97
+ end
91
98
  end
92
99
  end
93
100
  end
@@ -1,6 +1,8 @@
1
1
  module Spree
2
2
  module Admin
3
3
  class TaxonsController < ResourceController
4
+ include Translatable
5
+
4
6
  belongs_to 'spree/taxonomy'
5
7
 
6
8
  before_action :set_permalink_part, only: [:edit]
@@ -55,6 +57,11 @@ module Spree
55
57
  end
56
58
  end
57
59
 
60
+ # This method is added here to allow `edit_polymorphic_path` to work
61
+ def edit_admin_taxon_path(taxon)
62
+ spree.edit_admin_taxonomy_taxon_path(taxon.taxonomy, taxon.id)
63
+ end
64
+
58
65
  private
59
66
 
60
67
  def location_after_save
@@ -0,0 +1,29 @@
1
+ <div data-hook="admin_webhooks_subscriber_form_fields">
2
+ <%= f.field_container :name, class: ['form-group'] do %>
3
+ <%= f.label :name %>
4
+ <%= f.text_field :name, class: 'form-control' %>
5
+ <%= f.error_message_on :name %>
6
+ <% end %>
7
+
8
+ <%= f.field_container :slug, class: ['form-group'] do %>
9
+ <%= f.label :slug, Spree.t('admin.data_feeds.slug_label') %>
10
+ <%= f.text_field :slug, class: 'form-control' %>
11
+ <%= f.error_message_on :slug %>
12
+ <% end %>
13
+
14
+ <%= f.field_container :provider, class: ['form-group'] do %>
15
+ <%= f.label :type, Spree.t('admin.data_feeds.type') %>
16
+ <%= f.collection_select :type, Spree::DataFeed.available_types, :name, :label, {}, class: 'form-control' %>
17
+ <%= f.error_message_on :type %>
18
+ <% end %>
19
+
20
+ <%= f.hidden_field :store_id, value: current_store.id %>
21
+
22
+ <div class="form-group">
23
+ <div class="custom-control custom-switch">
24
+ <%= f.check_box :active, class: 'custom-control-input' %>
25
+ <%= f.label :active, class: 'custom-control-label' %>
26
+ </div>
27
+ </div>
28
+
29
+ </div>
@@ -0,0 +1,13 @@
1
+ <% content_for :page_title do %>
2
+ <%= link_to Spree.t('spree.admin.data_feeds.data_feeds'), spree.admin_data_feeds_path %> /
3
+ <%= @data_feed.name %>
4
+ <% end %>
5
+
6
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @data_feed } %>
7
+
8
+ <%= form_for @data_feed, as: :data_feed, url: admin_data_feed_path(@data_feed) do |f| %>
9
+ <fieldset>
10
+ <%= render partial: 'form', locals: { f: f } %>
11
+ <%= render partial: 'spree/admin/shared/edit_resource_links' %>
12
+ </fieldset>
13
+ <% end %>
@@ -0,0 +1,45 @@
1
+ <% content_for :page_title do %>
2
+ <%= Spree.t('admin.data_feeds.data_feeds') %>
3
+ <% end %>
4
+
5
+ <% content_for :page_actions do %>
6
+ <%= button_link_to Spree.t('admin.data_feeds.new_data_feed'), new_object_url, class: "btn-success", icon: 'add.svg', id: 'admin_new_data_feed_link' %>
7
+ <% end if can?(:create, Spree::DataFeed) %>
8
+
9
+ <% if @data_feeds.present? %>
10
+ <div class="table-responsive border rounded bg-white">
11
+ <table class="table">
12
+ <thead class="text-muted">
13
+ <tr>
14
+ <th><%= Spree.t('admin.name') %></th>
15
+ <th><%= Spree.t('admin.url') %></th>
16
+ <th><%= Spree.t('admin.data_feeds.type') %></th>
17
+ <th><%= Spree.t('admin.active') %></th>
18
+ <th></th>
19
+ </tr>
20
+ </thead>
21
+ <tbody>
22
+ <% @data_feeds.each do |data_feed| %>
23
+ <tr id="<%= spree_dom_id data_feed %>">
24
+ <td><%= data_feed.name %></td>
25
+ <td><code><%= data_feed.formatted_url %></code></td>
26
+ <td><%= data_feed.class.label %></td>
27
+ <td><%= active_badge(data_feed.active) %></td>
28
+ <td class="actions">
29
+ <span class="d-flex justify-content-end">
30
+ <%= link_to_edit(data_feed, no_text: true) if can? :edit, data_feed %>
31
+ <%= link_to_delete(data_feed, no_text: true) if can? :delete, data_feed %>
32
+ </span>
33
+ </td>
34
+ </tr>
35
+ <% end %>
36
+ </tbody>
37
+ </table>
38
+ </div>
39
+ <%= render 'spree/admin/shared/index_table_options', collection: @data_feeds, simple: true %>
40
+ <% else %>
41
+ <div class="text-center no-objects-found m-5">
42
+ <%= Spree.t(:no_resource_found, resource: plural_resource_name(Spree::DataFeed)) %>,
43
+ <%= link_to(Spree.t(:add_one), new_object_url) if can? :create, Spree::DataFeed %>!
44
+ </div>
45
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <% content_for :page_title do %>
2
+ <%= link_to Spree.t('spree.admin.data_feeds.data_feeds'), spree.admin_data_feeds_path %> /
3
+ <%= Spree.t('spree.admin.data_feeds.new_data_feed') %>
4
+ <% end %>
5
+
6
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @data_feed } %>
7
+
8
+ <%= form_for [:admin, @data_feed] do |f| %>
9
+ <fieldset>
10
+ <%= render partial: 'form', locals: { f: f } %>
11
+ <%= render partial: 'spree/admin/shared/new_resource_links' %>
12
+ </fieldset>
13
+ <% end %>
@@ -6,7 +6,19 @@
6
6
  <td class="name"><%= f.text_field :name, class: "form-control", required: true %></td>
7
7
  <td class="presentation"><%= f.text_field :presentation, class: "form-control", required: true %></td>
8
8
  <td class="actions">
9
+
9
10
  <span class="d-flex justify-content-end">
11
+ <% unless f.object.id.nil? -%>
12
+ <%= link_to_with_icon 'translate.svg',
13
+ '',
14
+ spree.translations_admin_option_type_option_value_path(f.object.option_type.id, f.object.id),
15
+ class: 'btn btn-sm btn-light',
16
+ data: {
17
+ action: 'translate'
18
+ },
19
+ title: Spree.t(:translations),
20
+ no_text: true %>
21
+ <% end %>
10
22
  <%= link_to_icon_remove_fields f %>
11
23
  </span>
12
24
  </td>
@@ -0,0 +1,22 @@
1
+ <% content_for :page_title do %>
2
+ <%= link_to Spree.t(:option_types), spree.admin_option_types_url %> /
3
+ <%= @option_type.name %>
4
+ <% end %>
5
+
6
+ <% content_for(:page_tabs) do %>
7
+ <%= content_tag :li, class: 'nav-item' do %>
8
+ <%= link_to_with_icon 'edit.svg',
9
+ Spree.t(:details),
10
+ spree.edit_admin_option_type_path(@option_type),
11
+ class: "nav-link #{'active' if current == :details}" %>
12
+
13
+ <% end if can?(:admin, Spree::OptionType) %>
14
+
15
+ <%= content_tag :li, class: 'nav-item' do %>
16
+ <%= link_to_with_icon 'translate.svg',
17
+ Spree.t(:translations),
18
+ spree.translations_admin_option_type_path(@option_type),
19
+ class: "nav-link #{'active' if current == :translations}" %>
20
+
21
+ <% end if can?(:admin, Spree::OptionType) %>
22
+ <% end %>
@@ -1,6 +1,5 @@
1
1
  <% content_for :page_title do %>
2
- <%= link_to Spree.t(:option_types), spree.admin_option_types_url %> /
3
- <%= @option_type.name %>
2
+ <%= render partial: 'spree/admin/option_types/tabs', locals: {current: :details} %>
4
3
  <% end %>
5
4
 
6
5
  <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @option_type } %>
@@ -0,0 +1,5 @@
1
+ <%= render partial: 'spree/admin/option_types/tabs', locals: { current: :translations } %>
2
+
3
+ <div class="row" style="display: block">
4
+ <%= render 'spree/admin/translations/form', resource: @object %>
5
+ </div>
@@ -0,0 +1,9 @@
1
+ <% content_for :page_title do %>
2
+ <%= link_to Spree.t(:option_types), spree.admin_option_types_url %> /
3
+ <%= link_to @object.option_type.name, spree.edit_admin_option_type_url(@object.option_type) %> /
4
+ <%= @object.name %>
5
+ <% end %>
6
+
7
+ <div class="row" style="display: block">
8
+ <%= render 'spree/admin/translations/form', resource: @object %>
9
+ </div>
@@ -0,0 +1,6 @@
1
+ <%= render partial: 'spree/admin/shared/product_tabs', locals: { current: :translations } %>
2
+
3
+
4
+ <div class="row" style="display: block">
5
+ <%= render 'spree/admin/translations/form', resource: @object %>
6
+ </div>
@@ -8,7 +8,7 @@
8
8
  <%= check_box_tag "option_types[]", ot.id, (params[:option_types] || []).include?(ot.id.to_s), id: "option_type_#{ot.id}", class: "option-type" %>
9
9
  <%= label_tag "option_type_#{ot.id}", ot.presentation %>
10
10
  </b>
11
- <% if Spree::OptionType.color&.name == ot[:name] %>
11
+ <% if Spree::OptionType.color&.name == ot.name %>
12
12
  <ul class="option-type-values option-type-values__color">
13
13
  <% ot.option_values.each do |ov| %>
14
14
  <li>
@@ -59,4 +59,12 @@
59
59
  class: "nav-link #{'active' if current == :digitals} #{current}" %>
60
60
 
61
61
  <% end if can?(:admin, Spree::Digital) && !@product.deleted? %>
62
+
63
+ <%= content_tag :li, class: 'nav-item' do %>
64
+ <%= link_to_with_icon 'translate.svg',
65
+ Spree.t(:translations),
66
+ translations_admin_product_path(@product),
67
+ class: "nav-link #{'active' if current == :translations}" %>
68
+
69
+ <% end if can?(:admin, Spree::Product) && !@product.deleted? %>
62
70
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <% if can?(:admin, current_store) %>
2
- <span class="d-none d-lg-inline text-light">
3
- <%= svg_icon name: "spree-icon.svg", width: '35', height: '35' %>
2
+ <span class="d-none d-lg-inline text-light pl-1 pr-2">
3
+ <%= svg_icon name: "spree-icon.svg", width: '28', height: '28' %>
4
4
  </span>
5
5
 
6
6
  <a class="px-0 py-1 btn text-light" id="storeSelectorDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@@ -1,4 +1,5 @@
1
1
  <ul id="sidebar-integrations" class="collapse nav nav-pills nav-stacked pb-2" data-hook="admin_integrations">
2
2
  <%= tab :payment_methods, match_path: '/payment_methods', label: 'Payment Methods' if can? :manage, Spree::PaymentMethod %>
3
+ <%= tab :data_feeds, match_path: '/data_feeds', label: 'Data Feeds' if can? :manage, Spree::DataFeed %>
3
4
  <%= tab :webhooks_subscribers, match_path: '/webhooks_subscribers', label: 'Webhooks' if can? :manage, Spree::Webhooks::Subscriber %>
4
5
  </ul>
@@ -0,0 +1,17 @@
1
+ <% content_for(:page_tabs) do %>
2
+ <%= content_tag :li, class: 'nav-item' do %>
3
+ <%= link_to_with_icon 'edit.svg',
4
+ Spree.t(:details),
5
+ spree.edit_admin_store_path(@store),
6
+ class: "nav-link #{'active' if current == :details}" %>
7
+
8
+ <% end if can?(:admin, Spree::Store) %>
9
+
10
+ <%= content_tag :li, class: 'nav-item' do %>
11
+ <%= link_to_with_icon 'translate.svg',
12
+ Spree.t(:translations),
13
+ spree.translations_admin_store_path(@store),
14
+ class: "nav-link #{'active' if current == :translations}" %>
15
+
16
+ <% end if can?(:admin, Spree::Store) %>
17
+ <% end %>
@@ -1,5 +1,6 @@
1
1
  <% content_for :page_title do %>
2
2
  <%= Spree.t(:store) %>
3
+ <%= render partial: 'spree/admin/stores/tabs', locals: {current: :details} %>
3
4
  <% end %>
4
5
 
5
6
  <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @store } %>
@@ -40,6 +40,9 @@
40
40
  <%= f.label :default_locale %>
41
41
  <%= f.select :default_locale, options_from_collection_for_select(all_locales_options, :last, :first, @store.default_locale || I18n.locale), {}, { class: 'select2' } %>
42
42
  <%= f.error_message_on :default_locale %>
43
+ <small class="form-text text-muted">
44
+ <%= Spree.t('admin.store_form.default_locale_notice') %>
45
+ </small>
43
46
  <% unless defined?(SpreeI18n) %>
44
47
  <small class="form-text text-muted">
45
48
  <%= raw(Spree.t('admin.store_form.locales_help')) %>
@@ -0,0 +1,8 @@
1
+ <% content_for :page_title do %>
2
+ <%= Spree.t(:store) %>
3
+ <%= render partial: 'spree/admin/stores/tabs', locals: {current: :translations} %>
4
+ <% end %>
5
+
6
+ <div class="row" style="display: block">
7
+ <%= render 'spree/admin/translations/form', resource: @store %>
8
+ </div>
@@ -0,0 +1,3 @@
1
+ <div class="row" style="display: block">
2
+ <%= render 'spree/admin/translations/form', resource: @object %>
3
+ </div>
@@ -0,0 +1,26 @@
1
+ <% content_for :page_title do %>
2
+ <%= link_to Spree.t(:taxonomies), spree.admin_taxonomies_url %> /
3
+
4
+ <%= link_to @taxonomy.root.name, spree.edit_admin_taxonomy_url(@taxonomy) %>
5
+ <% unless @taxon.root? %>
6
+ / <%= @taxon.name %>
7
+ <% end %>
8
+ <% end %>
9
+
10
+ <% content_for(:page_tabs) do %>
11
+ <%= content_tag :li, class: 'nav-item' do %>
12
+ <%= link_to_with_icon 'edit.svg',
13
+ Spree.t(:details),
14
+ spree.edit_admin_taxonomy_taxon_path(@taxonomy, @taxon.id),
15
+ class: "nav-link #{'active' if current == :details}" %>
16
+
17
+ <% end if can?(:admin, Spree::Taxonomy) %>
18
+
19
+ <%= content_tag :li, class: 'nav-item' do %>
20
+ <%= link_to_with_icon 'translate.svg',
21
+ Spree.t(:translations),
22
+ translations_admin_taxonomy_taxon_path(@taxonomy, @taxon.id),
23
+ class: "nav-link #{'active' if current == :translations}" %>
24
+
25
+ <% end if can?(:admin, Spree::Taxonomy) %>
26
+ <% end %>
@@ -1,11 +1,4 @@
1
- <% content_for :page_title do %>
2
- <%= link_to Spree.t(:taxonomies), spree.admin_taxonomies_url %> /
3
-
4
- <%= link_to @taxonomy.root.name, spree.edit_admin_taxonomy_url(@taxonomy) %>
5
- <% unless @taxon.root? %>
6
- / <%= @taxon.name %>
7
- <% end %>
8
- <% end %>
1
+ <%= render partial: 'spree/admin/taxons/tabs', locals: {current: :details} %>
9
2
 
10
3
  <% content_for :page_actions do %>
11
4
  <%= external_page_preview_link(@taxon) %>
@@ -0,0 +1,5 @@
1
+ <%= render partial: 'spree/admin/taxons/tabs', locals: {current: :translations} %>
2
+
3
+ <div class="row" style="display: block">
4
+ <%= render 'spree/admin/translations/form', resource: @object %>
5
+ </div>
@@ -0,0 +1,16 @@
1
+ <% if current_store.supported_locales_list.size > 1 %>
2
+ <div data-hook="translations_form">
3
+ <%= form_tag nil, { class: 'form-horizontal' } do %>
4
+ <div class="my-3">
5
+ <%= render 'spree/admin/translations/translation_table', resource: resource %>
6
+ </div>
7
+ <div class="form-actions" data-hook="buttons">
8
+ <%= button Spree.t('actions.update'), 'update.svg' %>
9
+ <span class="or"><%= Spree.t(:or) %></span>
10
+ <%= button_link_to Spree.t('actions.cancel'), admin_product_path(resource), icon: 'delete.svg' %>
11
+ </div>
12
+ <% end %>
13
+ </div>
14
+ <% else %>
15
+ <%= render partial: 'spree/admin/translations/translations_unavailable' %>
16
+ <% end %>
@@ -0,0 +1,31 @@
1
+ <div class="table-responsive border rounded bg-white">
2
+ <div id="translations-table-wrapper">
3
+ <table class="table">
4
+ <% locales = current_store.supported_locales_list.sort %>
5
+ <thead class="text-muted">
6
+ <tr data-hook="translations_header">
7
+ <th scope="col" class="text-center" style="min-width: 12.5rem; position: absolute; background-color: white;"><%= Spree.t(:field) %></th>
8
+ <th style="min-width: 12.5rem; display: block; height: 100%"></th>
9
+ <% locales.each do |locale| %>
10
+ <th scope="col" class="text-center" style="min-width: 12.5rem"><%= locale %></th>
11
+ <% end %>
12
+ </tr>
13
+ </thead>
14
+ <tbody id="translations_body" data-hook="translations_body">
15
+ <% resource.class.translatable_fields.each do |field| %>
16
+ <tr id="translates_field_row" data-hook="translates_field_row">
17
+ <td class="text-left" style="min-width: 12.5rem; position: absolute; background-color: white; height: 3.5rem">
18
+ <span><%= Spree.t(field) %></span>
19
+ </td>
20
+ <td style="min-width: 12.5rem; display: block; height: 100%"></td>
21
+ <% locales.each do |locale| %>
22
+ <td style="height: 3.5rem">
23
+ <%= text_field_tag "translation[#{field}][#{locale}]", resource.get_field_with_locale(locale, field), class: 'form-control' %>
24
+ </td>
25
+ <% end %>
26
+ </tr>
27
+ <% end %>
28
+ </tbody>
29
+ </table>
30
+ </div>
31
+ </div>
@@ -0,0 +1,11 @@
1
+ <div class="container">
2
+ <div class="card">
3
+ <div class="card-body">
4
+ <p>To use translations, configure more than one locale for the store.</p>
5
+
6
+ <% if can?(:edit, current_store) %>
7
+ <%= button_link_to('Configure store', spree.edit_admin_store_path(current_store)) %>
8
+ <% end %>
9
+ </div>
10
+ </div>
11
+ </div>
@@ -32,7 +32,7 @@
32
32
  </td>
33
33
  <% end %>
34
34
  <td><%= active_badge(webhooks_subscriber.active) %></td>
35
- <td><%= webhooks_subscriber.subscriptions&.join(', ') %></td>
35
+ <td><%= webhooks_subscriber.subscriptions&.sort&.join(', ') %></td>
36
36
  <td><%= webhooks_subscriber.events.order(:created_at).last&.created_at %></td>
37
37
  <td><%= link_to Spree.t(:view), admin_webhooks_subscriber_path(webhooks_subscriber) %></td>
38
38
  <td class="actions">
@@ -16,7 +16,7 @@
16
16
  </tr>
17
17
  <tr>
18
18
  <td><strong><%= Spree.t('admin.webhooks_subscribers.subscriptions') %></strong></td>
19
- <td><%= @webhooks_subscriber.subscriptions&.join(', ') %></td>
19
+ <td><%= @webhooks_subscriber.subscriptions&.sort&.join(', ') %></td>
20
20
  </tr>
21
21
  </table>
22
22
  </div>
@@ -80,6 +80,11 @@ en:
80
80
  square_image: Please use an image with an aspect ratio of 18:13 (1080px x 780px).
81
81
  tall_image: Please use an image with an aspect ratio of 27:40 (1080px x 1600px).
82
82
  copy_to_clipboard: Copy to clipboard
83
+ data_feeds:
84
+ data_feeds: Data Feeds
85
+ type: Type
86
+ slug_label: Slug (leave blank to generate)
87
+ new_data_feed: New Data Feed
83
88
  digitals:
84
89
  digital: Digital
85
90
  add_new_file: Add a new digital asset.
@@ -173,6 +178,7 @@ en:
173
178
  For more information <a href='https://guides.spreecommerce.org/user/configuration/configuring_geography.html#zones' target='_blank' class='alert-link'>please see documentation</a>"
174
179
  currencies_help: "You can accept payments in multiple currencies. Each product and product variant can have different price in different currency"
175
180
  locales_help: "Install <a href='https://github.com/spree-contrib/spree_i18n' target='_blank' class='alert-link'>Spree I18n extension</a> to add more locales"
181
+ default_locale_notice: "Warning: Before changing the default locale, ensure that all products, taxons and stores have translations in the new locale"
176
182
  social_help: "If you want to link to your social accounts in the footer part of your website please fill below fields"
177
183
  default_country_help: "This is the Country that will be pre-selected on the Checkout Address form"
178
184
  footer_help: "This content is visible in the footer section of your Store"
data/config/routes.rb CHANGED
@@ -12,7 +12,12 @@ Spree::Core::Engine.add_routes do
12
12
 
13
13
  resources :zones
14
14
 
15
- resources :stores, except: %i[index show]
15
+ resources :stores, except: %i[index show] do
16
+ member do
17
+ get :translations
18
+ post :translations, to: 'stores#edit_translations'
19
+ end
20
+ end
16
21
 
17
22
  resources :countries do
18
23
  resources :states
@@ -43,6 +48,10 @@ Spree::Core::Engine.add_routes do
43
48
  resources :variants_including_master, only: [:update]
44
49
  resources :prices, only: [:index, :create]
45
50
  resources :digitals, only: [:index, :create, :destroy]
51
+ member do
52
+ get :translations
53
+ post :translations, to: 'products#edit_translations'
54
+ end
46
55
  end
47
56
 
48
57
  resources :option_types do
@@ -50,6 +59,16 @@ Spree::Core::Engine.add_routes do
50
59
  post :update_positions
51
60
  post :update_values_positions
52
61
  end
62
+ member do
63
+ get :translations
64
+ post :translations, to: 'option_types#edit_translations'
65
+ end
66
+ resources :option_values do
67
+ member do
68
+ get :translations
69
+ post :translations, to: 'option_values#edit_translations'
70
+ end
71
+ end
53
72
  end
54
73
 
55
74
  delete '/option_values/:id', to: 'option_values#destroy', as: :option_value
@@ -128,9 +147,15 @@ Spree::Core::Engine.add_routes do
128
147
  collection do
129
148
  post :update_positions
130
149
  end
150
+ member do
151
+ get :translations
152
+ post :translations, to: 'taxonomies#edit_translations'
153
+ end
131
154
  resources :taxons do
132
155
  member do
133
156
  delete :remove_icon
157
+ get :translations
158
+ post :translations, to: 'taxons#edit_translations'
134
159
  end
135
160
  end
136
161
  end
@@ -190,6 +215,8 @@ Spree::Core::Engine.add_routes do
190
215
  end
191
216
  end
192
217
 
218
+ resources :data_feeds
219
+
193
220
  resources :webhooks_subscribers
194
221
 
195
222
  get '/forbidden', to: 'errors#forbidden', as: :forbidden
@@ -1,6 +1,6 @@
1
1
  module Spree
2
2
  module Backend
3
- VERSION = '4.5.1'.freeze
3
+ VERSION = '4.6.0'.freeze
4
4
 
5
5
  def self.version
6
6
  VERSION
Binary file
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.require_path = 'lib'
26
26
  s.requirements << 'none'
27
27
 
28
- s.add_dependency 'spree', ">= 4.4.0"
28
+ s.add_dependency 'spree', ">= 4.6.0"
29
29
 
30
30
  s.add_dependency 'babel-transpiler', '~> 0.7'
31
31
  s.add_dependency 'bootstrap', '~> 4.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_backend
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.1
4
+ version: 4.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-04-21 00:00:00.000000000 Z
12
+ date: 2023-05-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: spree
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 4.4.0
20
+ version: 4.6.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 4.4.0
27
+ version: 4.6.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: babel-transpiler
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -1904,6 +1904,7 @@ files:
1904
1904
  - app/assets/stylesheets/spree/backend/components/_filters.scss
1905
1905
  - app/assets/stylesheets/spree/backend/components/_icons.scss
1906
1906
  - app/assets/stylesheets/spree/backend/components/_main.scss
1907
+ - app/assets/stylesheets/spree/backend/components/_nav.scss
1907
1908
  - app/assets/stylesheets/spree/backend/components/_navbar.scss
1908
1909
  - app/assets/stylesheets/spree/backend/components/_navigation.scss
1909
1910
  - app/assets/stylesheets/spree/backend/components/_page_header.scss
@@ -1933,6 +1934,7 @@ files:
1933
1934
  - app/assets/stylesheets/spree/backend/views/_taxonomies.scss
1934
1935
  - app/controllers/concerns/spree/admin/order_concern.rb
1935
1936
  - app/controllers/concerns/spree/admin/product_concern.rb
1937
+ - app/controllers/concerns/spree/admin/translatable.rb
1936
1938
  - app/controllers/spree/admin/adjustments_controller.rb
1937
1939
  - app/controllers/spree/admin/base_controller.rb
1938
1940
  - app/controllers/spree/admin/cms_pages_controller.rb
@@ -1940,6 +1942,7 @@ files:
1940
1942
  - app/controllers/spree/admin/countries_controller.rb
1941
1943
  - app/controllers/spree/admin/customer_returns_controller.rb
1942
1944
  - app/controllers/spree/admin/dashboard_controller.rb
1945
+ - app/controllers/spree/admin/data_feeds_controller.rb
1943
1946
  - app/controllers/spree/admin/digitals_controller.rb
1944
1947
  - app/controllers/spree/admin/errors_controller.rb
1945
1948
  - app/controllers/spree/admin/images_controller.rb
@@ -2066,6 +2069,10 @@ files:
2066
2069
  - app/views/spree/admin/dashboard/_apis.html.erb
2067
2070
  - app/views/spree/admin/dashboard/_getting_started.html.erb
2068
2071
  - app/views/spree/admin/dashboard/show.html.erb
2072
+ - app/views/spree/admin/data_feeds/_form.html.erb
2073
+ - app/views/spree/admin/data_feeds/edit.html.erb
2074
+ - app/views/spree/admin/data_feeds/index.html.erb
2075
+ - app/views/spree/admin/data_feeds/new.html.erb
2069
2076
  - app/views/spree/admin/digitals/_form.html.erb
2070
2077
  - app/views/spree/admin/digitals/index.html.erb
2071
2078
  - app/views/spree/admin/errors/forbidden.html.erb
@@ -2089,9 +2096,12 @@ files:
2089
2096
  - app/views/spree/admin/oauth_applications/new.html.erb
2090
2097
  - app/views/spree/admin/option_types/_form.html.erb
2091
2098
  - app/views/spree/admin/option_types/_option_value_fields.html.erb
2099
+ - app/views/spree/admin/option_types/_tabs.html.erb
2092
2100
  - app/views/spree/admin/option_types/edit.html.erb
2093
2101
  - app/views/spree/admin/option_types/index.html.erb
2094
2102
  - app/views/spree/admin/option_types/new.html.erb
2103
+ - app/views/spree/admin/option_types/translations.html.erb
2104
+ - app/views/spree/admin/option_values/translations.html.erb
2095
2105
  - app/views/spree/admin/orders/_add_line_item.html.erb
2096
2106
  - app/views/spree/admin/orders/_add_product.html.erb
2097
2107
  - app/views/spree/admin/orders/_adjustments.html.erb
@@ -2140,6 +2150,7 @@ files:
2140
2150
  - app/views/spree/admin/products/index.html.erb
2141
2151
  - app/views/spree/admin/products/new.html.erb
2142
2152
  - app/views/spree/admin/products/stock.html.erb
2153
+ - app/views/spree/admin/products/translations.html.erb
2143
2154
  - app/views/spree/admin/promotion_actions/create.js.erb
2144
2155
  - app/views/spree/admin/promotion_actions/destroy.js.erb
2145
2156
  - app/views/spree/admin/promotion_categories/_form.html.erb
@@ -2300,6 +2311,7 @@ files:
2300
2311
  - app/views/spree/admin/store_credits/index.html.erb
2301
2312
  - app/views/spree/admin/store_credits/new.html.erb
2302
2313
  - app/views/spree/admin/stores/_form.html.erb
2314
+ - app/views/spree/admin/stores/_tabs.html.erb
2303
2315
  - app/views/spree/admin/stores/edit.html.erb
2304
2316
  - app/views/spree/admin/stores/form/_basic.html.erb
2305
2317
  - app/views/spree/admin/stores/form/_digitals.html.erb
@@ -2311,6 +2323,7 @@ files:
2311
2323
  - app/views/spree/admin/stores/form/_social.html.erb
2312
2324
  - app/views/spree/admin/stores/index.html.erb
2313
2325
  - app/views/spree/admin/stores/new.html.erb
2326
+ - app/views/spree/admin/stores/translations.html.erb
2314
2327
  - app/views/spree/admin/tax_categories/_form.html.erb
2315
2328
  - app/views/spree/admin/tax_categories/edit.html.erb
2316
2329
  - app/views/spree/admin/tax_categories/index.html.erb
@@ -2325,12 +2338,18 @@ files:
2325
2338
  - app/views/spree/admin/taxonomies/edit.html.erb
2326
2339
  - app/views/spree/admin/taxonomies/index.html.erb
2327
2340
  - app/views/spree/admin/taxonomies/new.html.erb
2341
+ - app/views/spree/admin/taxonomies/translations.html.erb
2328
2342
  - app/views/spree/admin/taxons/_assets_form.html.erb
2329
2343
  - app/views/spree/admin/taxons/_form.html.erb
2344
+ - app/views/spree/admin/taxons/_tabs.html.erb
2330
2345
  - app/views/spree/admin/taxons/_taxon_table.html.erb
2331
2346
  - app/views/spree/admin/taxons/edit.html.erb
2332
2347
  - app/views/spree/admin/taxons/index.html.erb
2333
2348
  - app/views/spree/admin/taxons/new.html.erb
2349
+ - app/views/spree/admin/taxons/translations.html.erb
2350
+ - app/views/spree/admin/translations/_form.html.erb
2351
+ - app/views/spree/admin/translations/_translation_table.html.erb
2352
+ - app/views/spree/admin/translations/_translations_unavailable.html.erb
2334
2353
  - app/views/spree/admin/users/_addresses_form.html.erb
2335
2354
  - app/views/spree/admin/users/_form.html.erb
2336
2355
  - app/views/spree/admin/users/_lifetime_stats.html.erb
@@ -2408,9 +2427,9 @@ licenses:
2408
2427
  - BSD-3-Clause
2409
2428
  metadata:
2410
2429
  bug_tracker_uri: https://github.com/spree/spree_backend/issues
2411
- changelog_uri: https://github.com/spree/spree_backend/releases/tag/v4.5.1
2430
+ changelog_uri: https://github.com/spree/spree_backend/releases/tag/v4.6.0
2412
2431
  documentation_uri: https://dev-docs.spreecommerce.org/
2413
- source_code_uri: https://github.com/spree/spree_backend/tree/v4.5.1
2432
+ source_code_uri: https://github.com/spree/spree_backend/tree/v4.6.0
2414
2433
  post_install_message:
2415
2434
  rdoc_options: []
2416
2435
  require_paths:
@@ -2427,7 +2446,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2427
2446
  version: '0'
2428
2447
  requirements:
2429
2448
  - none
2430
- rubygems_version: 3.2.3
2449
+ rubygems_version: 3.4.1
2431
2450
  signing_key:
2432
2451
  specification_version: 4
2433
2452
  summary: Admin Dashboard for Spree eCommerce platform