spree_core 4.2.0.rc1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js +16 -0
  3. data/app/controllers/spree/base_controller.rb +2 -3
  4. data/app/controllers/spree/errors_controller.rb +11 -0
  5. data/app/finders/spree/addresses/find.rb +1 -12
  6. data/app/finders/spree/base_finder.rb +14 -0
  7. data/app/finders/spree/countries/find.rb +11 -3
  8. data/app/finders/spree/credit_cards/find.rb +2 -2
  9. data/app/finders/spree/orders/find_current.rb +2 -2
  10. data/app/finders/spree/products/find.rb +14 -3
  11. data/app/helpers/spree/base_helper.rb +4 -9
  12. data/app/helpers/spree/currency_helper.rb +24 -0
  13. data/app/helpers/spree/locale_helper.rb +31 -0
  14. data/app/helpers/spree/products_helper.rb +37 -12
  15. data/app/mailers/spree/base_mailer.rb +4 -4
  16. data/app/mailers/spree/order_mailer.rb +3 -3
  17. data/app/mailers/spree/reimbursement_mailer.rb +1 -1
  18. data/app/mailers/spree/shipment_mailer.rb +1 -1
  19. data/app/models/concerns/spree/default_price.rb +1 -5
  20. data/app/models/concerns/spree/product_scopes.rb +1 -1
  21. data/app/models/concerns/spree/user_methods.rb +2 -2
  22. data/app/models/concerns/spree/user_payment_source.rb +1 -1
  23. data/app/models/spree/ability.rb +45 -34
  24. data/app/models/spree/address.rb +4 -0
  25. data/app/models/spree/adjustment.rb +1 -0
  26. data/app/models/spree/app_configuration.rb +2 -3
  27. data/app/models/spree/app_dependencies.rb +6 -2
  28. data/app/models/spree/base.rb +5 -0
  29. data/app/models/spree/credit_card.rb +4 -0
  30. data/app/models/spree/fulfilment_changer.rb +58 -16
  31. data/app/models/spree/image.rb +14 -14
  32. data/app/models/spree/inventory_unit.rb +2 -7
  33. data/app/models/spree/line_item.rb +7 -15
  34. data/app/models/spree/log_entry.rb +1 -1
  35. data/app/models/spree/option_type.rb +2 -0
  36. data/app/models/spree/order.rb +5 -4
  37. data/app/models/spree/order/address_book.rb +7 -20
  38. data/app/models/spree/payment.rb +18 -4
  39. data/app/models/spree/payment/processing.rb +2 -2
  40. data/app/models/spree/payment_method.rb +3 -3
  41. data/app/models/spree/price.rb +2 -7
  42. data/app/models/spree/product.rb +41 -17
  43. data/app/models/spree/promotion.rb +4 -15
  44. data/app/models/spree/promotion/rules/option_value.rb +1 -1
  45. data/app/models/spree/promotion/rules/product.rb +2 -1
  46. data/app/models/spree/promotion/rules/user.rb +2 -1
  47. data/app/models/spree/promotion_handler/coupon.rb +1 -2
  48. data/app/models/spree/refund.rb +2 -2
  49. data/app/models/spree/return_item/eligibility_validator/default.rb +0 -2
  50. data/app/models/spree/return_item/eligibility_validator/{r_m_a_required.rb → rma_required.rb} +0 -0
  51. data/app/models/spree/shipment.rb +1 -1
  52. data/app/models/spree/shipping_method.rb +1 -5
  53. data/app/models/spree/shipping_rate.rb +2 -11
  54. data/app/models/spree/stock/availability_validator.rb +3 -4
  55. data/app/models/spree/stock_item.rb +1 -5
  56. data/app/models/spree/store.rb +59 -1
  57. data/app/models/spree/store_credit.rb +1 -1
  58. data/app/models/spree/variant.rb +9 -16
  59. data/app/models/spree/zone.rb +17 -4
  60. data/app/paginators/spree/shared/paginate.rb +8 -1
  61. data/app/presenters/spree/variant_presenter.rb +2 -5
  62. data/app/services/spree/account/addresses/create.rb +6 -1
  63. data/app/services/spree/account/addresses/{base.rb → helper.rb} +1 -3
  64. data/app/services/spree/account/addresses/update.rb +6 -1
  65. data/app/services/spree/build_localized_redirect_url.rb +101 -0
  66. data/app/services/spree/cart/estimate_shipping_rates.rb +1 -1
  67. data/app/services/spree/compare_line_items.rb +4 -2
  68. data/app/sorters/spree/base_sorter.rb +35 -0
  69. data/app/sorters/spree/orders/sort.rb +1 -37
  70. data/app/sorters/spree/products/sort.rb +9 -32
  71. data/app/validators/email_validator.rb +1 -1
  72. data/app/views/spree/errors/forbidden.html.erb +0 -0
  73. data/app/views/spree/errors/unauthorized.html.erb +0 -0
  74. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +13 -2
  75. data/app/views/spree/shared/_purchased_items_table.html.erb +15 -6
  76. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +2 -2
  77. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +2 -2
  78. data/config/initializers/inflections.rb +3 -0
  79. data/config/initializers/rails61_fixes.rb +3 -0
  80. data/config/locales/en.yml +36 -63
  81. data/config/routes.rb +2 -1
  82. data/db/default/spree/stores.rb +1 -0
  83. data/db/default/spree/zones.rb +4 -1
  84. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
  85. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +1 -0
  86. data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +12 -0
  87. data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +10 -0
  88. data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +5 -0
  89. data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +5 -0
  90. data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +10 -0
  91. data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +15 -0
  92. data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +5 -0
  93. data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +5 -0
  94. data/db/migrate/20210205211040_add_supported_locales_to_spree_stores.rb +11 -0
  95. data/db/migrate/20210215202602_migrate_spree_i18n_globalize_config.rb +22 -0
  96. data/lib/generators/spree/install/install_generator.rb +9 -6
  97. data/lib/spree/core.rb +2 -1
  98. data/lib/spree/core/controller_helpers/auth.rb +3 -1
  99. data/lib/spree/core/controller_helpers/common.rb +6 -8
  100. data/lib/spree/core/controller_helpers/currency.rb +47 -0
  101. data/lib/spree/core/controller_helpers/locale.rb +58 -0
  102. data/lib/spree/core/controller_helpers/search.rb +1 -1
  103. data/lib/spree/core/controller_helpers/store.rb +4 -16
  104. data/lib/spree/core/importer/order.rb +9 -9
  105. data/lib/spree/core/product_filters.rb +3 -3
  106. data/lib/spree/core/version.rb +1 -1
  107. data/lib/spree/i18n.rb +17 -19
  108. data/lib/spree/permitted_attributes.rb +2 -2
  109. data/lib/spree/service_module.rb +8 -4
  110. data/lib/spree/testing_support/capybara_config.rb +1 -1
  111. data/lib/spree/testing_support/common_rake.rb +1 -1
  112. data/lib/spree/testing_support/controller_requests.rb +10 -10
  113. data/lib/spree/testing_support/factories/promotion_factory.rb +29 -17
  114. data/lib/spree/testing_support/factories/shipment_factory.rb +7 -9
  115. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
  116. data/lib/spree/testing_support/factories/store_factory.rb +1 -0
  117. data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
  118. data/lib/spree/testing_support/flatpickr_capybara.rb +101 -0
  119. data/lib/spree/testing_support/i18n.rb +1 -1
  120. data/lib/spree/testing_support/locale_helpers.rb +71 -0
  121. data/lib/spree/testing_support/next_instance_of.rb +38 -0
  122. data/lib/spree/testing_support/order_walkthrough.rb +8 -3
  123. data/lib/spree/testing_support/rspec_retry_config.rb +10 -0
  124. data/spree_core.gemspec +6 -5
  125. metadata +74 -27
  126. data/lib/generators/spree/install/templates/config/initializers/spree_storefront.rb +0 -1
  127. data/lib/generators/spree/install/templates/config/spree_storefront.yml +0 -67
  128. data/lib/spree/core/controller_helpers/currency_helpers.rb +0 -15
  129. data/lib/spree/i18n/base.rb +0 -17
  130. data/lib/spree/i18n/initializer.rb +0 -1
@@ -24,7 +24,7 @@ module Spree
24
24
  if country_iso.present?
25
25
  ::Spree::Country.by_iso(country_iso)&.id
26
26
  else
27
- ::Spree::Country.default.id
27
+ Spree::Config[:default_country_id]
28
28
  end
29
29
  end
30
30
 
@@ -1,9 +1,11 @@
1
1
  # This class should be refactored
2
2
  module Spree
3
3
  class CompareLineItems
4
- prepend Spree::ServiceModule:: Base
4
+ prepend Spree::ServiceModule::Base
5
+
6
+ def call(order:, line_item:, options: {}, comparison_hooks: nil)
7
+ comparison_hooks ||= Rails.application.config.spree.line_item_comparison_hooks
5
8
 
6
- def call(order:, line_item:, options: {}, comparison_hooks: Rails.application.config.spree.line_item_comparison_hooks)
7
9
  legacy_part = comparison_hooks.all? do |hook|
8
10
  order.send(hook, line_item, options)
9
11
  end
@@ -0,0 +1,35 @@
1
+ module Spree
2
+ class BaseSorter
3
+ def initialize(scope, params = {}, allowed_sort_attributes = [])
4
+ @scope = scope
5
+ @sort = params[:sort]
6
+ @allowed_sort_attributes = allowed_sort_attributes
7
+ end
8
+
9
+ def call
10
+ by_param_attribute(scope)
11
+ end
12
+
13
+ protected
14
+
15
+ attr_reader :scope, :collection, :sort, :allowed_sort_attributes
16
+
17
+ def by_param_attribute(scope)
18
+ return scope if sort_field.blank? || !allowed_sort_attributes.include?(sort_field.to_sym)
19
+
20
+ scope.order("#{sort_field}": order_direction)
21
+ end
22
+
23
+ def desc_order
24
+ @desc_order ||= String(sort)[0] == '-'
25
+ end
26
+
27
+ def sort_field
28
+ @sort_field ||= desc_order ? sort[1..-1] : sort
29
+ end
30
+
31
+ def order_direction
32
+ desc_order ? :desc : :asc
33
+ end
34
+ end
35
+ end
@@ -1,42 +1,6 @@
1
1
  module Spree
2
2
  module Orders
3
- class Sort
4
- attr_reader :scope, :sort
5
-
6
- def initialize(scope, params)
7
- @scope = scope
8
- @sort = params[:sort]
9
- end
10
-
11
- def call
12
- orders = completed_at(scope)
13
-
14
- orders
15
- end
16
-
17
- private
18
-
19
- def desc_order
20
- @desc_order ||= String(sort)[0] == '-'
21
- end
22
-
23
- def sort_field
24
- @sort_field ||= desc_order ? sort[1..-1] : sort
25
- end
26
-
27
- def order_direction
28
- desc_order ? :asc : :desc
29
- end
30
-
31
- def completed_at?
32
- sort_field.eql?('completed_at')
33
- end
34
-
35
- def completed_at(orders)
36
- return orders unless completed_at?
37
-
38
- orders.order(completed_at: order_direction)
39
- end
3
+ class Sort < ::Spree::BaseSorter
40
4
  end
41
5
  end
42
6
  end
@@ -1,53 +1,30 @@
1
1
  module Spree
2
2
  module Products
3
- class Sort
4
- def initialize(scope, params, current_currency)
5
- @scope = scope
6
- @sort = params[:sort]
3
+ class Sort < ::Spree::BaseSorter
4
+ def initialize(scope, current_currency, params = {}, allowed_sort_attributes = [])
5
+ super(scope, params, allowed_sort_attributes)
7
6
  @currency = params[:currency] || current_currency
8
7
  end
9
8
 
10
9
  def call
11
- products = updated_at(scope)
12
- products = price(products)
10
+ products = by_param_attribute(scope)
11
+ products = by_price(products)
13
12
 
14
13
  products.distinct
15
14
  end
16
15
 
17
16
  private
18
17
 
19
- attr_reader :sort, :scope, :currency
20
-
21
- def desc_order
22
- @desc_order ||= String(sort)[0] == '-'
23
- end
24
-
25
- def sort_field
26
- @sort_field ||= desc_order ? sort[1..-1] : sort
27
- end
28
-
29
- def updated_at?
30
- sort_field == 'updated_at'
31
- end
18
+ attr_reader :sort, :scope, :currency, :allowed_sort_attributes
32
19
 
33
20
  def price?
34
21
  sort_field == 'price'
35
22
  end
36
23
 
37
- def order_direction
38
- desc_order ? :desc : :asc
39
- end
40
-
41
- def updated_at(products)
42
- return products unless updated_at?
43
-
44
- products.order(updated_at: order_direction)
45
- end
46
-
47
- def price(products)
48
- return products unless price?
24
+ def by_price(scope)
25
+ return scope unless price?
49
26
 
50
- products.joins(master: :prices).
27
+ scope.joins(master: :prices).
51
28
  select("#{Spree::Product.table_name}.*, #{Spree::Price.table_name}.amount").
52
29
  distinct.
53
30
  where(spree_prices: { currency: currency }).
@@ -1,7 +1,7 @@
1
1
  class EmailValidator < ActiveModel::EachValidator
2
2
  def validate_each(record, attribute, value)
3
3
  unless value =~ /\A[^@\s]+@[^@\s]+\z/
4
- record.errors.add(attribute, :invalid, { value: value }.merge!(options))
4
+ record.errors.add(attribute, :invalid, **{ value: value }.merge!(options))
5
5
  end
6
6
  end
7
7
  end
File without changes
File without changes
@@ -249,11 +249,9 @@
249
249
  color: #51545E;
250
250
  font-size: 15px;
251
251
  line-height: 18px;
252
- width: 62%;
253
252
  }
254
253
 
255
254
  .purchase_image {
256
- width: 18%;
257
255
  padding: 5px;
258
256
  }
259
257
 
@@ -289,10 +287,20 @@
289
287
  color: #333333;
290
288
  }
291
289
 
290
+ .purchase_total--name {
291
+ margin: 0;
292
+ text-align: right;
293
+ color: #333333;
294
+ }
295
+
292
296
  .purchase_total--label {
293
297
  padding: 0 15px 0 0;
294
298
  }
295
299
 
300
+ .purchase_total-col {
301
+ vertical-align: bottom;
302
+ }
303
+
296
304
  body {
297
305
  background-color: #F2F4F6;
298
306
  color: #51545E;
@@ -402,6 +410,9 @@
402
410
  .email-footer {
403
411
  width: 100% !important;
404
412
  }
413
+ .content-cell {
414
+ padding: 40px 15px !important;
415
+ }
405
416
  }
406
417
 
407
418
  @media (prefers-color-scheme: dark) {
@@ -8,10 +8,13 @@
8
8
  <td></td>
9
9
  <td>
10
10
  <p class="f-fallback purchase_total purchase_total--label">
11
- <%= Spree.t(:promotion) %> <%= label %>:
11
+ <%= Spree.t(:promotion) %>:
12
+ </p>
13
+ <p class="f-fallback purchase_total--name purchase_total--label">
14
+ <%= label %>
12
15
  </p>
13
16
  </td>
14
- <td>
17
+ <td class="purchase_total-col">
15
18
  <p class="f-fallback purchase_total">
16
19
  <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
17
20
  </p>
@@ -25,10 +28,13 @@
25
28
  <td></td>
26
29
  <td>
27
30
  <p class="f-fallback purchase_total purchase_total--label">
28
- <%= Spree.t(:shipping) %> <%= name %>:
31
+ <%= Spree.t(:shipping) %>:
32
+ </p>
33
+ <p class="f-fallback purchase_total--name purchase_total--label">
34
+ <%= name %>
29
35
  </p>
30
36
  </td>
31
- <td>
37
+ <td class="purchase_total-col">
32
38
  <p class="f-fallback purchase_total">
33
39
  <%= Spree::Money.new(shipments.sum(&:discounted_cost), currency: order.currency) %>
34
40
  </p>
@@ -41,10 +47,13 @@
41
47
  <td></td>
42
48
  <td>
43
49
  <p class="f-fallback purchase_total purchase_total--label">
44
- <%= Spree.t(:tax) %> <%= label %>:
50
+ <%= Spree.t(:tax) %>:
51
+ </p>
52
+ <p class="f-fallback purchase_total--name purchase_total--label">
53
+ <%= label %>
45
54
  </p>
46
55
  </td>
47
- <td>
56
+ <td class="purchase_total-col">
48
57
  <p class="f-fallback purchase_total">
49
58
  <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
50
59
  </p>
@@ -5,9 +5,9 @@
5
5
  <%= raw(adjustment.label) %>:
6
6
  </p>
7
7
  </td>
8
- <td>
8
+ <td class="purchase_total-col">
9
9
  <p class="f-fallback purchase_total">
10
10
  <%= Spree::Money.new(adjustment.amount, currency: order.currency) %>
11
11
  </p>
12
12
  </td>
13
- </tr>
13
+ </tr>
@@ -18,9 +18,9 @@
18
18
  </strong>
19
19
  <p class="purchase_item--additional"><%= raw(line_item.variant.options_text) -%></p>
20
20
  </td>
21
- <td class="align-right">
21
+ <td class="align-right" width="30%">
22
22
  <span class="f-fallback purchase_item_price">
23
- <%= line_item.quantity %> x <%= line_item.single_money %>
23
+ <%= line_item.quantity %> x <%= line_item.single_money %><br>
24
24
  <%= line_item.display_amount %>
25
25
  </span>
26
26
  </td>
@@ -0,0 +1,3 @@
1
+ ActiveSupport::Inflector.inflections(:en) do |inflect|
2
+ inflect.acronym 'RMA'
3
+ end
@@ -0,0 +1,3 @@
1
+ if Rails::VERSION::STRING >= '6.1'
2
+ ActiveRecord::Base.has_many_inversing = false
3
+ end
@@ -6,7 +6,7 @@ en:
6
6
  attributes:
7
7
  desired_shipment:
8
8
  can_not_transfer_within_same_shipment: can not be same as current shipment
9
- not_enough_stock_at_desired_location: not enough stock in desired stock location
9
+ has_not_enough_stock_at_desired_location: has not enough stock in desired stock location
10
10
  current_shipment:
11
11
  has_already_been_shipped: has already been shipped
12
12
  can_not_have_backordered_inventory_units: has backordered inventory units
@@ -52,6 +52,7 @@ en:
52
52
  spree/option_type:
53
53
  name: Name
54
54
  presentation: Presentation
55
+ filterable: Filterable
55
56
  spree/order:
56
57
  checkout_complete: Checkout Complete
57
58
  completed_at: Completed At
@@ -141,7 +142,8 @@ en:
141
142
  url: Site URL
142
143
  meta_description: Meta Description
143
144
  meta_keywords: Meta Keywords
144
- seo_title: Seo Title
145
+ seo_robots: SEO Robots
146
+ seo_title: SEO Title
145
147
  name: Site Name
146
148
  mail_from_address: Mail From Address
147
149
  spree/store_credit:
@@ -574,9 +576,6 @@ en:
574
576
  agree_to_privacy_policy: Agree to Privacy Policy
575
577
  agree_to_terms_of_service: Agree to Terms of Service
576
578
  all: All
577
- allow_currency_change:
578
- short: Allow Currency Change
579
- long: Allow users to change their currency via the currency picker.
580
579
  all_adjustments_closed: All adjustments successfully closed!
581
580
  all_adjustments_opened: All adjustments successfully opened!
582
581
  all_departments: All departments
@@ -664,7 +663,6 @@ en:
664
663
  jackets_and_coats: JACKET & COASTS
665
664
  new_collection: NEW COLLECTION
666
665
  special_offers: SPECIAL OFFERS
667
- summer_2019: SUMMER 2019
668
666
  channel: Channel
669
667
  charged: Charged
670
668
  checkout: Checkout
@@ -697,7 +695,6 @@ en:
697
695
  confirm: Confirm
698
696
  confirm_delete: Confirm Deletion
699
697
  confirm_password: Password Confirmation
700
- contact_email: Contact email
701
698
  contact_phone: Contact phone
702
699
  contact_us: Contact us
703
700
  continue: Continue
@@ -758,42 +755,14 @@ en:
758
755
  new_order_notifications_email: New Order Notifications Email
759
756
  cut: Cut
760
757
  cvv: CVV
758
+ no_cc_type: N/A
761
759
  cvv_response: CVV Response
762
760
  date: Date
763
761
  date_completed: Date Completed
764
762
  date_picker:
765
- am: 'AM'
766
- first_day: 0
767
- format: ! '%Y/%m/%d'
768
- hourAriaLabel: 'Hour'
769
- js_format: Y/m/d
770
- js_date_time: Y/m/d - H:i
771
- minuteAriaLabel: 'Minute'
772
- pm: 'PM'
773
- rangeSeparator: ' to '
774
- scrollTitle: 'Scroll to increment'
775
- toggleTitle: 'Click to toggle'
776
- weekAbbreviation: 'Wk'
777
- yearAriaLabel: 'Year'
778
- sun: 'Sun'
779
- mon: 'Mon'
780
- tue: 'Tue'
781
- wed: 'Wed'
782
- thu: 'Thu'
783
- fri: 'Fri'
784
- sat: 'Sat'
785
- lh_jan: 'January'
786
- lh_feb: 'February'
787
- lh_mar: 'March'
788
- lh_apr: 'April'
789
- lh_may: 'May'
790
- lh_jun: 'June'
791
- lh_jul: 'July'
792
- lh_aug: 'August'
793
- lh_sep: 'September'
794
- lh_oct: 'October'
795
- lh_nov: 'November'
796
- lh_dec: 'December'
763
+ # FlatPickr human friendly formatting
764
+ fpr_human_friendly_date_format: M j, Y
765
+ fpr_human_friendly_date_time_format: M j, Y at H:i
797
766
  date_range: Date Range
798
767
  default: Default
799
768
  default_country_cannot_be_deleted: Default country cannot be deleted
@@ -852,6 +821,7 @@ en:
852
821
  blank: can't be blank
853
822
  could_not_create_taxon: Could not create taxon
854
823
  no_shipping_methods_available: No shipping methods available for selected location, please change your address and try again.
824
+ cannot_remove_icon: Cannot remove image
855
825
  services:
856
826
  get_shipping_rates:
857
827
  no_shipping_address: To generate Shipping Rates Order needs to have a Shipping Address
@@ -889,6 +859,7 @@ en:
889
859
  filename: Filename
890
860
  fill_in_customer_info: Please fill in customer info
891
861
  filter: Filter
862
+ filterable: Filterable
892
863
  filter_results: Filter Results
893
864
  finalize: Finalize
894
865
  find_a_taxon: Find a Taxon
@@ -901,7 +872,7 @@ en:
901
872
  flat_rate_per_order: Flat Rate
902
873
  flexible_rate: Flexible Rate
903
874
  follow_us: Follow us
904
- footer_info: Footer info
875
+ footer: Footer
905
876
  forgot_password: Forgot password?
906
877
  free: Free
907
878
  free_shipping: Free Shipping
@@ -926,24 +897,6 @@ en:
926
897
  hide_from_subcategories_nav: Hide from subcategories navigation
927
898
  home: Home
928
899
  home_page: homepage
929
- homepage:
930
- bestsellers: BESTSELLERS
931
- fashion_trends: FASHION TRENDS
932
- fashion_trends_note: Want to rock this season’s hottest trend in style? These are the top fashion from Summer 2020 Fashion Weeks that are coming our way this season.
933
- men: MEN
934
- new: NEW
935
- new_collection: NEW COLLECTION
936
- read_more: READ MORE
937
- shoes: SHOES
938
- shop_now: SHOP NOW
939
- sportswear: SPORTSWEAR
940
- streetstyle: STREETSTYLE
941
- summer_2020: Summer 2020
942
- summer_collection: Summer Collection
943
- summer_sale: SUMMER SALE
944
- trending: TRENDING
945
- up_to_60: UP TO 60%
946
- women: WOMEN
947
900
  help_center: Help Center
948
901
  i18n:
949
902
  available_locales: Available Locales
@@ -1130,6 +1083,7 @@ en:
1130
1083
  no_available_date_set: No available date set
1131
1084
  no_country: No country set
1132
1085
  no_payment_found: No payment found
1086
+ no_payment_provider_settings_message: This payment provider has no custom settings available
1133
1087
  no_pending_payments: No pending payments
1134
1088
  no_product_available:
1135
1089
  for_this_quantity: Sorry, it looks like some products are not available in selected quantity.
@@ -1152,6 +1106,7 @@ en:
1152
1106
  not_found: ! '%{resource} is not found'
1153
1107
  note: Note
1154
1108
  notice_messages:
1109
+ icon_removed: Image has been successfully removed
1155
1110
  prices_saved: Prices successfully saved
1156
1111
  product_cloned: Product has been cloned
1157
1112
  product_deleted: Product has been deleted
@@ -1252,6 +1207,7 @@ en:
1252
1207
  payment_processing_failed: Payment could not be processed, please check the details you entered
1253
1208
  payment_processor_choose_banner_text: If you need help choosing a payment processor, please visit
1254
1209
  payment_processor_choose_link: our payments page
1210
+ payment_provider_settings: Payment Provider Settings
1255
1211
  payment_state: Payment State
1256
1212
  payment_states:
1257
1213
  balance_due: balance due
@@ -1436,6 +1392,7 @@ en:
1436
1392
  rejected: Rejected
1437
1393
  remember_me: Remember me
1438
1394
  remove: Remove
1395
+ remove_image: Remove Image
1439
1396
  rename: Rename
1440
1397
  report: Report
1441
1398
  reports: Reports
@@ -1511,12 +1468,14 @@ en:
1511
1468
  select_a_return_authorization_reason: Select a reason for the return authorization
1512
1469
  select_a_stock_location: Select a stock location
1513
1470
  select_a_store_credit_reason: Select a reason for the store credit
1471
+ select_an_option: Select an option
1514
1472
  select_stock: Select stock
1515
1473
  selected_quantity_not_available: ! 'selected of %{item} is not available.'
1516
- seo: SEO
1517
1474
  send_copy_of_all_mails_to: Send Copy of All Mails To
1518
1475
  send_mails_as: Send Mails As
1519
- seo_title: SEO title
1476
+ seo: SEO
1477
+ seo_robots: SEO Robots
1478
+ seo_title: SEO Title
1520
1479
  server: Server
1521
1480
  server_error: The server returned an error
1522
1481
  settings: Settings
@@ -1570,15 +1529,15 @@ en:
1570
1529
  shopping_cart: Shopping Cart
1571
1530
  show: Show
1572
1531
  show_active: Show Active
1573
- show_currency_selector:
1574
- short: Show Currency Selector
1575
- long_html: Display the currency picker in the main nav bar. This will only display if there are multiple supported currencies, and <strong>Allow currency change</strong> option is enabled.
1576
1532
  show_deleted: Show Deleted
1577
1533
  show_discontinued: Show Discontinued
1578
1534
  show_only_complete_orders: Only show complete orders
1579
1535
  show_only_considered_risky: Only show risky orders
1580
1536
  show_property: Show Property
1581
1537
  show_rate_in_label: Show rate in label
1538
+ show_store_selector:
1539
+ short: Show Store selector
1540
+ long: Display the Store selector in the main nav bar of Storefront and allow users to change Store and Currency
1582
1541
  sign_up: Sign Up
1583
1542
  sku: SKU
1584
1543
  skus: SKUs
@@ -1652,6 +1611,18 @@ en:
1652
1611
  unable_to_create: Unable to create store.
1653
1612
  unable_to_update: Unable to update store.
1654
1613
  unable_to_delete: Unable to delete store.
1614
+ store_form:
1615
+ code_help: "Store unique identifier, which is an abbreviated version of the store’s name (used as the layout directory name, and also helpful for separating templates by store)"
1616
+ checkout_zone_help: "Selecting zone will limit to which Countries or States products are shipped.
1617
+ For more information <a href='https://guides.spreecommerce.org/user/configuration/configuring_geography.html#zones' target='_blank' class='alert-link'>please see documentation</a>"
1618
+ 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"
1619
+ social_help: "If you want to link to your social accounts in the footer part of your website please fill below fields"
1620
+ default_country_help: "This is the Country that will be pre-selected on the Checkout Address form"
1621
+ footer_help: "This content is visible in the footer section of your Store"
1622
+ mail_from_address_help: "This is the email which will be the sender of all your Store emails (Order Confirmation, Shipment notification etc)"
1623
+ customer_support_email_help: "This email is visible to your Store visitors in the Footer section"
1624
+ new_order_notifications_email_help: "If you want to receive an email notification every time someone places an Order please provide an email address for that notification to be sent to"
1625
+ seo_robots: "Please check <a href='https://developers.google.com/search/reference/robots_meta_tag' target='_blank'>this page for more help</a>"
1655
1626
  store_set_default_button: Set as default
1656
1627
  stores: Stores
1657
1628
  store_credit_name: Store Credit
@@ -1701,6 +1672,7 @@ en:
1701
1672
  summary: Summary
1702
1673
  supported_currencies: Supported Currencies
1703
1674
  supported_currencies_long: A comma separated list of supported currencies
1675
+ supported_locales: Supported Locales
1704
1676
  tax: Tax
1705
1677
  tax_included: "Tax (incl.)"
1706
1678
  tax_categories: Tax Categories
@@ -1811,3 +1783,4 @@ en:
1811
1783
  zipcode_required: Zip Code Required
1812
1784
  zone: Zone
1813
1785
  zones: Zones
1786
+ no_limits_zone: No Limits