spree_core 5.5.3 → 5.6.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/helpers/spree/base_helper.rb +12 -2
- data/app/helpers/spree/currency_helper.rb +1 -4
- data/app/helpers/spree/locale_helper.rb +18 -13
- data/app/helpers/spree/localized_names_helper.rb +25 -0
- data/app/mailers/spree/admin_user_mailer.rb +71 -0
- data/app/mailers/spree/base_mailer.rb +73 -11
- data/app/mailers/spree/export_mailer.rb +7 -7
- data/app/mailers/spree/import_mailer.rb +19 -0
- data/app/mailers/spree/invitation_mailer.rb +16 -11
- data/app/mailers/spree/report_mailer.rb +6 -6
- data/app/mailers/spree/webhook_mailer.rb +7 -6
- data/app/models/concerns/spree/admin_user_methods.rb +44 -0
- data/app/models/concerns/spree/legacy_multi_store_support.rb +48 -0
- data/app/models/concerns/spree/presentation_translatable.rb +39 -0
- data/app/models/concerns/spree/product_scopes.rb +21 -3
- data/app/models/concerns/spree/single_store_resource.rb +5 -0
- data/app/models/concerns/spree/store_scoped_resource.rb +10 -0
- data/app/models/concerns/spree/stores/markets.rb +9 -1
- data/app/models/concerns/spree/stores/setup.rb +37 -23
- data/app/models/concerns/spree/translatable_resource.rb +95 -5
- data/app/models/concerns/spree/user_methods.rb +27 -2
- data/app/models/spree/ability.rb +5 -4
- data/app/models/spree/allowed_origin.rb +31 -0
- data/app/models/spree/category.rb +12 -2
- data/app/models/spree/channel/gating.rb +67 -0
- data/app/models/spree/channel.rb +1 -0
- data/app/models/spree/classification.rb +12 -0
- data/app/models/spree/country.rb +22 -1
- data/app/models/spree/credit_card.rb +29 -0
- data/app/models/spree/currency.rb +47 -0
- data/app/models/spree/current.rb +12 -1
- data/app/models/spree/customer_group.rb +1 -0
- data/app/models/spree/export.rb +19 -0
- data/app/models/spree/exports/coupon_codes.rb +1 -2
- data/app/models/spree/import.rb +84 -1
- data/app/models/spree/import_row.rb +7 -1
- data/app/models/spree/imports/product_translations.rb +6 -0
- data/app/models/spree/locale.rb +104 -0
- data/app/models/spree/option_type.rb +11 -13
- data/app/models/spree/option_value.rb +5 -17
- data/app/models/spree/order.rb +19 -2
- data/app/models/spree/payment_method.rb +6 -5
- data/app/models/spree/policy.rb +2 -1
- data/app/models/spree/product.rb +23 -2
- data/app/models/spree/promotion/rules/channel.rb +37 -0
- data/app/models/spree/promotion/rules/market.rb +37 -0
- data/app/models/spree/promotion.rb +5 -3
- data/app/models/spree/promotion_handler/promotion_duplicator.rb +1 -1
- data/app/models/spree/role_user.rb +4 -0
- data/app/models/spree/search_provider/meilisearch.rb +22 -9
- data/app/models/spree/setup_task.rb +12 -0
- data/app/models/spree/setup_tasks.rb +86 -0
- data/app/models/spree/shipment.rb +38 -1
- data/app/models/spree/shipment_handler.rb +1 -1
- data/app/models/spree/stock/availability_validator.rb +1 -1
- data/app/models/spree/stock/quantifier.rb +21 -1
- data/app/models/spree/stock_item.rb +2 -1
- data/app/models/spree/stock_location.rb +4 -1
- data/app/models/spree/store.rb +45 -9
- data/app/models/spree/store_payment_method.rb +5 -1
- data/app/models/spree/store_promotion.rb +4 -0
- data/app/models/spree/taxon.rb +112 -9
- data/app/models/spree/taxonomy.rb +1 -1
- data/app/models/spree/translations/batch.rb +104 -0
- data/app/models/spree/variant.rb +29 -2
- data/app/presenters/spree/search_provider/product_presenter.rb +3 -0
- data/app/services/spree/carts/complete.rb +3 -0
- data/app/services/spree/fulfillments/create.rb +259 -0
- data/app/services/spree/locales/set_fallback_locale_for_store.rb +7 -1
- data/app/services/spree/locales.rb +52 -0
- data/app/services/spree/products/prepare_nested_attributes.rb +40 -12
- data/app/services/spree/shipments/update.rb +1 -1
- data/app/services/spree/stock_reservations/reserve.rb +4 -1
- data/app/services/spree/taxons/add_products.rb +3 -0
- data/app/services/spree/taxons/remove_products.rb +3 -0
- data/app/subscribers/spree/admin_user_email_subscriber.rb +29 -0
- data/app/subscribers/spree/import_email_subscriber.rb +26 -0
- data/app/views/layouts/spree/base_mailer.html.erb +14 -17
- data/app/views/spree/admin_user_mailer/confirmation_email.html.erb +7 -0
- data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +8 -0
- data/app/views/spree/export_mailer/export_done.html.erb +6 -14
- data/app/views/spree/import_mailer/import_done.html.erb +12 -0
- data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +4 -12
- data/app/views/spree/invitation_mailer/invitation_email.html.erb +11 -24
- data/app/views/spree/report_mailer/report_done.html.erb +6 -14
- data/app/views/spree/shared/_base_mailer_footer.html.erb +15 -8
- data/app/views/spree/shared/_base_mailer_header.html.erb +7 -5
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +211 -273
- data/app/views/spree/shared/_mailer_button.html.erb +10 -0
- data/app/views/spree/shared/_mailer_hero.html.erb +12 -0
- data/app/views/spree/shared/_purchased_items_styles.html.erb +112 -0
- data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +39 -14
- data/config/initializers/spree_store_setup_tasks.rb +23 -0
- data/config/locales/en.yml +42 -992
- data/db/migrate/20260613000001_add_store_id_to_spree_role_users.rb +10 -0
- data/db/migrate/20260626000001_add_store_id_to_spree_taxons.rb +11 -0
- data/db/migrate/20260627000001_add_products_count_to_spree_taxons.rb +6 -0
- data/db/migrate/20260628000001_add_store_id_to_spree_promotions.rb +10 -0
- data/db/migrate/20260628000002_add_store_id_to_spree_payment_methods.rb +11 -0
- data/db/migrate/20260630000001_add_preorder_fields_to_spree_variants.rb +7 -0
- data/db/migrate/20260707000001_add_fingerprint_to_spree_credit_cards.rb +39 -0
- data/db/migrate/20260710000001_add_import_id_status_index_to_spree_import_rows.rb +7 -0
- data/db/migrate/20260711000001_add_preferences_to_spree_exports.rb +7 -0
- data/db/sample_data/promotions.rb +1 -1
- data/lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt +0 -1
- data/lib/mobility/plugins/store_based_fallbacks.rb +7 -5
- data/lib/spree/core/configuration.rb +1 -0
- data/lib/spree/core/controller_helpers/locale.rb +4 -1
- data/lib/spree/core/controller_helpers/strong_parameters.rb +1 -0
- data/lib/spree/core/dependencies.rb +3 -0
- data/lib/spree/core/engine.rb +24 -0
- data/lib/spree/core/preferences/preferable.rb +6 -1
- data/lib/spree/core/previews/admin_user_preview.rb +22 -0
- data/lib/spree/core/previews/export_preview.rb +37 -0
- data/lib/spree/core/previews/invitation_preview.rb +47 -0
- data/lib/spree/core/previews/preview_data.rb +52 -0
- data/lib/spree/core/previews/report_preview.rb +40 -0
- data/lib/spree/core/previews/webhook_preview.rb +34 -0
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +22 -1
- data/lib/spree/permitted_attributes.rb +5 -4
- data/lib/spree/testing_support/factories/export_factory.rb +4 -0
- data/lib/spree/testing_support/factories/payment_method_factory.rb +1 -9
- data/lib/spree/testing_support/factories/promotion_factory.rb +1 -9
- data/lib/spree/testing_support/factories/promotion_rule_factory.rb +24 -0
- data/lib/spree/translations.rb +113 -0
- data/lib/spree/upgrades/5_5_to_5_6/manifest.yml +59 -0
- data/lib/tasks/role_users.rake +21 -0
- data/lib/tasks/single_store_associations.rake +65 -0
- data/lib/tasks/taxons.rake +62 -1
- metadata +47 -5
- data/app/models/spree/product/legacy_multi_store_support.rb +0 -40
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<%# Per-email stylesheet for the line item tiles + order summary rows.
|
|
2
|
+
Render it once at the top of any mailer template that uses these components —
|
|
3
|
+
it lands in the layout <head> via `content_for :head`. %>
|
|
4
|
+
<% content_for :head do %>
|
|
5
|
+
<style type="text/css" rel="stylesheet" media="all">
|
|
6
|
+
/* Line item tiles ------------------------------ */
|
|
7
|
+
|
|
8
|
+
.item {
|
|
9
|
+
width: 100%;
|
|
10
|
+
background-color: #F0F0F0;
|
|
11
|
+
border-radius: 16px;
|
|
12
|
+
margin: 0 0 8px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.item .item_image {
|
|
16
|
+
padding: 8px;
|
|
17
|
+
width: 96px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.item .item_thumb {
|
|
21
|
+
display: block;
|
|
22
|
+
width: 80px;
|
|
23
|
+
height: auto;
|
|
24
|
+
border-radius: 12px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.item .item_info {
|
|
28
|
+
padding: 8px 16px 8px 8px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.item .item_name {
|
|
32
|
+
display: inline-block;
|
|
33
|
+
font-size: 15px;
|
|
34
|
+
line-height: 1.5;
|
|
35
|
+
font-weight: 500;
|
|
36
|
+
color: #332C2C;
|
|
37
|
+
text-decoration: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.item .item_meta {
|
|
41
|
+
margin: 2px 0 0;
|
|
42
|
+
font-size: 13px;
|
|
43
|
+
line-height: 1.5;
|
|
44
|
+
color: #726A6A;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.item .item_amount {
|
|
48
|
+
padding: 8px 16px 8px 8px;
|
|
49
|
+
text-align: right;
|
|
50
|
+
white-space: nowrap;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.item .item_qty {
|
|
54
|
+
margin: 0;
|
|
55
|
+
font-size: 13px;
|
|
56
|
+
line-height: 1.5;
|
|
57
|
+
color: #726A6A;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.item .item_price {
|
|
61
|
+
margin: 2px 0 0;
|
|
62
|
+
font-size: 15px;
|
|
63
|
+
line-height: 1.5;
|
|
64
|
+
font-weight: 500;
|
|
65
|
+
color: #332C2C;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Summary rows ------------------------------ */
|
|
69
|
+
|
|
70
|
+
.summary {
|
|
71
|
+
width: 100%;
|
|
72
|
+
margin: 16px 0 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.summary td {
|
|
76
|
+
padding: 6px 0;
|
|
77
|
+
font-size: 14px;
|
|
78
|
+
line-height: 1.6;
|
|
79
|
+
font-weight: 450;
|
|
80
|
+
color: #726A6A;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.summary .summary_value {
|
|
84
|
+
font-size: 15px;
|
|
85
|
+
font-weight: 500;
|
|
86
|
+
text-align: right;
|
|
87
|
+
white-space: nowrap;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.summary .summary_sub {
|
|
91
|
+
display: block;
|
|
92
|
+
font-size: 13px;
|
|
93
|
+
line-height: 1.5;
|
|
94
|
+
color: #726A6A;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.summary .summary_strong {
|
|
98
|
+
color: #332C2C;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.summary_total td {
|
|
102
|
+
padding: 14px 0 0;
|
|
103
|
+
border-top: 1px solid #E8E9E9;
|
|
104
|
+
font-weight: 500;
|
|
105
|
+
color: #332C2C;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.summary_total .summary_value {
|
|
109
|
+
font-weight: 600;
|
|
110
|
+
}
|
|
111
|
+
</style>
|
|
112
|
+
<% end %>
|
|
@@ -1,26 +1,51 @@
|
|
|
1
|
-
|
|
1
|
+
<%= render 'spree/shared/purchased_items_styles' %>
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<%= render layout: 'spree/shared/mailer_hero' do %>
|
|
4
|
+
<h1><%= Spree.t('webhook_mailer.endpoint_disabled.heading') %></h1>
|
|
5
|
+
<p><%= Spree.t('webhook_mailer.endpoint_disabled.message', endpoint_name: @endpoint.name || @endpoint.url) %></p>
|
|
6
|
+
<% end %>
|
|
4
7
|
|
|
5
|
-
<table
|
|
8
|
+
<table class="section summary" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
|
6
9
|
<tr>
|
|
7
|
-
<td
|
|
8
|
-
|
|
10
|
+
<td valign="top">
|
|
11
|
+
<span class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.url_label') %></span>
|
|
12
|
+
</td>
|
|
13
|
+
<td class="summary_value summary_strong" align="right" valign="top">
|
|
14
|
+
<span class="f-fallback"><%= @endpoint.url %></span>
|
|
15
|
+
</td>
|
|
9
16
|
</tr>
|
|
10
17
|
<% if @endpoint.name.present? %>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
<tr>
|
|
19
|
+
<td valign="top">
|
|
20
|
+
<span class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.name_label') %></span>
|
|
21
|
+
</td>
|
|
22
|
+
<td class="summary_value summary_strong" align="right" valign="top">
|
|
23
|
+
<span class="f-fallback"><%= @endpoint.name %></span>
|
|
24
|
+
</td>
|
|
25
|
+
</tr>
|
|
15
26
|
<% end %>
|
|
16
27
|
<tr>
|
|
17
|
-
<td
|
|
18
|
-
|
|
28
|
+
<td valign="top">
|
|
29
|
+
<span class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.reason_label') %></span>
|
|
30
|
+
</td>
|
|
31
|
+
<td class="summary_value summary_strong" align="right" valign="top">
|
|
32
|
+
<span class="f-fallback"><%= @endpoint.disabled_reason %></span>
|
|
33
|
+
</td>
|
|
19
34
|
</tr>
|
|
20
35
|
<tr>
|
|
21
|
-
<td
|
|
22
|
-
|
|
36
|
+
<td valign="top">
|
|
37
|
+
<span class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.disabled_at_label') %></span>
|
|
38
|
+
</td>
|
|
39
|
+
<td class="summary_value summary_strong" align="right" valign="top">
|
|
40
|
+
<span class="f-fallback"><%= @endpoint.disabled_at&.strftime('%Y-%m-%d %H:%M %Z') %></span>
|
|
41
|
+
</td>
|
|
23
42
|
</tr>
|
|
24
43
|
</table>
|
|
25
44
|
|
|
26
|
-
<
|
|
45
|
+
<table class="section" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
|
46
|
+
<tr>
|
|
47
|
+
<td>
|
|
48
|
+
<p class="f-fallback"><%= Spree.t('webhook_mailer.endpoint_disabled.instructions') %></p>
|
|
49
|
+
</td>
|
|
50
|
+
</tr>
|
|
51
|
+
</table>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Default Getting Started tasks shown on the admin dashboard.
|
|
2
|
+
# See Spree::SetupTasks for how to add or remove tasks.
|
|
3
|
+
Rails.application.config.after_initialize do
|
|
4
|
+
Spree.store_setup_tasks.add :setup_payment_method,
|
|
5
|
+
position: 10,
|
|
6
|
+
done: ->(store) { store.payment_method_setup? }
|
|
7
|
+
|
|
8
|
+
Spree.store_setup_tasks.add :add_products,
|
|
9
|
+
position: 20,
|
|
10
|
+
done: ->(store) { store.products.any? }
|
|
11
|
+
|
|
12
|
+
Spree.store_setup_tasks.add :set_customer_support_email,
|
|
13
|
+
position: 30,
|
|
14
|
+
done: ->(store) { store.customer_support_email.present? }
|
|
15
|
+
|
|
16
|
+
Spree.store_setup_tasks.add :setup_taxes_collection,
|
|
17
|
+
position: 40,
|
|
18
|
+
done: ->(_store) { Spree::TaxRate.any? }
|
|
19
|
+
|
|
20
|
+
Spree.store_setup_tasks.add :setup_storefront,
|
|
21
|
+
position: 50,
|
|
22
|
+
done: ->(store) { store.storefront_setup? }
|
|
23
|
+
end
|