spree_admin 5.3.4 → 5.4.0.beta2
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/README.md +2 -2
- data/app/controllers/concerns/spree/admin/order_concern.rb +1 -1
- data/app/controllers/spree/admin/action_text/video_embeds_controller.rb +1 -1
- data/app/controllers/spree/admin/addresses_controller.rb +1 -1
- data/app/controllers/spree/admin/admin_users_controller.rb +3 -3
- data/app/controllers/spree/admin/api_keys_controller.rb +77 -0
- data/app/controllers/spree/admin/assets_controller.rb +2 -2
- data/app/controllers/spree/admin/base_controller.rb +4 -4
- data/app/controllers/spree/admin/classifications_controller.rb +5 -4
- data/app/controllers/spree/admin/coupon_codes_controller.rb +1 -1
- data/app/controllers/spree/admin/customer_group_users_controller.rb +3 -2
- data/app/controllers/spree/admin/dashboard_controller.rb +2 -1
- data/app/controllers/spree/admin/digital_assets_controller.rb +1 -1
- data/app/controllers/spree/admin/exports_controller.rb +2 -1
- data/app/controllers/spree/admin/gift_cards_controller.rb +5 -5
- data/app/controllers/spree/admin/import_mappings_controller.rb +1 -1
- data/app/controllers/spree/admin/import_rows_controller.rb +1 -1
- data/app/controllers/spree/admin/integrations_controller.rb +1 -1
- data/app/controllers/spree/admin/invitations_controller.rb +6 -5
- data/app/controllers/spree/admin/line_items_controller.rb +1 -1
- data/app/controllers/spree/admin/markets_controller.rb +28 -0
- data/app/controllers/spree/admin/option_values_controller.rb +1 -1
- data/app/controllers/spree/admin/orders/adjustments_controller.rb +4 -4
- data/app/controllers/spree/admin/orders/billing_address_controller.rb +4 -4
- data/app/controllers/spree/admin/orders/customer_returns_controller.rb +1 -1
- data/app/controllers/spree/admin/orders/shipping_address_controller.rb +3 -3
- data/app/controllers/spree/admin/orders/user_controller.rb +4 -4
- data/app/controllers/spree/admin/orders_controller.rb +8 -4
- data/app/controllers/spree/admin/payments_controller.rb +3 -3
- data/app/controllers/spree/admin/price_list_products_controller.rb +1 -1
- data/app/controllers/spree/admin/price_rules_controller.rb +1 -1
- data/app/controllers/spree/admin/products_controller.rb +21 -24
- data/app/controllers/spree/admin/profile_controller.rb +1 -1
- data/app/controllers/spree/admin/promotion_actions_controller.rb +1 -1
- data/app/controllers/spree/admin/promotion_rules_controller.rb +1 -1
- data/app/controllers/spree/admin/promotions_controller.rb +1 -1
- data/app/controllers/spree/admin/refunds_controller.rb +1 -1
- data/app/controllers/spree/admin/reimbursements_controller.rb +2 -2
- data/app/controllers/spree/admin/resource_controller.rb +30 -11
- data/app/controllers/spree/admin/shipments_controller.rb +3 -3
- data/app/controllers/spree/admin/shipping_methods_controller.rb +1 -1
- data/app/controllers/spree/admin/store_credits_controller.rb +5 -5
- data/app/controllers/spree/admin/stores_controller.rb +1 -32
- data/app/controllers/spree/admin/taxons_controller.rb +3 -3
- data/app/controllers/spree/admin/translations_controller.rb +1 -0
- data/app/controllers/spree/admin/users_controller.rb +2 -2
- data/app/helpers/spree/admin/api_keys_helper.rb +36 -0
- data/app/helpers/spree/admin/base_helper.rb +6 -1
- data/app/helpers/spree/admin/json_preview_helper.rb +29 -25
- data/app/helpers/spree/admin/navigation_helper.rb +2 -4
- data/app/helpers/spree/admin/orders_filters_helper.rb +1 -1
- data/app/helpers/spree/admin/products_helper.rb +0 -3
- data/app/helpers/spree/admin/sortable_tree_helper.rb +1 -1
- data/app/helpers/spree/admin/stores_helper.rb +0 -4
- data/app/helpers/spree/admin/tags_helper.rb +0 -11
- data/app/javascript/spree/admin/controllers/autocomplete_select_controller.js +5 -1
- data/app/javascript/spree/admin/controllers/search_clear_controller.js +1 -1
- data/app/javascript/spree/admin/controllers/select_controller.js +4 -0
- data/app/javascript/spree/admin/controllers/variants_form_controller.js +4 -3
- data/app/models/action_text/video_embed.rb +13 -0
- data/app/presenters/spree/admin/order_summary_presenter.rb +12 -0
- data/app/views/action_text/video_embeds/_thumbnail.html.erb +1 -0
- data/app/views/action_text/video_embeds/_video_embed.html.erb +3 -0
- data/app/views/layouts/action_text/contents/_content.html.erb +3 -0
- data/app/views/spree/admin/api_keys/_details.html.erb +51 -0
- data/app/views/spree/admin/api_keys/_form.html.erb +26 -0
- data/app/views/spree/admin/api_keys/_token_card.html.erb +55 -0
- data/app/views/spree/admin/api_keys/_usage_info.html.erb +17 -0
- data/app/views/spree/admin/api_keys/index.html.erb +9 -0
- data/app/views/spree/admin/api_keys/show.html.erb +26 -0
- data/app/views/spree/admin/classifications/_classification.html.erb +2 -2
- data/app/views/spree/admin/classifications/index.html.erb +1 -1
- data/app/views/spree/admin/classifications/new.html.erb +1 -1
- data/app/views/spree/admin/exports/create.turbo_stream.erb +1 -1
- data/app/views/spree/admin/exports/new.html.erb +3 -3
- data/app/views/spree/admin/json_previews/show.html.erb +6 -6
- data/app/views/spree/admin/markets/_form.html.erb +28 -0
- data/app/views/spree/admin/markets/index.html.erb +9 -0
- data/app/views/spree/admin/orders/billing_address/_form.html.erb +2 -2
- data/app/views/spree/admin/orders/shipping_address/_form.html.erb +2 -2
- data/app/views/spree/admin/payment_methods/_form.html.erb +0 -12
- data/app/views/spree/admin/payment_methods/descriptions/_gateway.html.erb +1 -1
- data/app/views/spree/admin/payment_methods/index.html.erb +12 -11
- data/app/views/spree/admin/price_rules/forms/_market_rule.html.erb +7 -0
- data/app/views/spree/admin/products/_form.html.erb +0 -3
- data/app/views/spree/admin/products/form/_variants.html.erb +4 -3
- data/app/views/spree/admin/promotion_rules/forms/_country.html.erb +1 -1
- data/app/views/spree/admin/shared/_content_header.html.erb +1 -1
- data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +0 -33
- data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +3 -125
- data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +2 -2
- data/app/views/spree/admin/stores/form/_basic.html.erb +10 -7
- data/app/views/spree/admin/stores/form/_checkout.html.erb +5 -8
- data/app/views/spree/admin/tables/columns/_api_key_status.html.erb +2 -0
- data/app/views/spree/admin/tables/columns/_api_key_type.html.erb +2 -0
- data/app/views/spree/admin/taxonomies/show.html.erb +1 -1
- data/app/views/spree/admin/taxons/_form.html.erb +2 -2
- data/app/views/spree/admin/taxons/edit.html.erb +1 -2
- data/app/views/spree/admin/taxons/update.turbo_stream.erb +1 -1
- data/app/views/spree/admin/users/_billing.html.erb +2 -2
- data/app/views/spree/admin/users/_shipping.html.erb +1 -1
- data/app/views/spree/admin/variants/_variant.html.erb +1 -1
- data/config/brakeman.ignore +28 -0
- data/config/initializers/oembed.rb +1 -0
- data/config/initializers/spree_admin_navigation.rb +16 -31
- data/config/initializers/spree_admin_tables.rb +94 -99
- data/config/locales/en.yml +35 -1
- data/config/routes.rb +6 -18
- data/db/migrate/20250217171018_create_action_text_video_embeds.rb +11 -0
- data/lib/spree/admin/engine.rb +9 -0
- data/lib/spree/admin/tailwind_helper.rb +11 -1
- data/lib/spree/admin/testing_support/tom_select.rb +1 -1
- data/lib/spree/admin.rb +1 -0
- metadata +50 -63
- data/LICENSE.md +0 -13
- data/app/controllers/spree/admin/custom_domains_controller.rb +0 -21
- data/app/controllers/spree/admin/oauth_applications_controller.rb +0 -23
- data/app/controllers/spree/admin/post_categories_controller.rb +0 -21
- data/app/controllers/spree/admin/posts_controller.rb +0 -37
- data/app/controllers/spree/admin/properties_controller.rb +0 -26
- data/app/helpers/spree/admin/posts_helper.rb +0 -9
- data/app/views/spree/admin/custom_domains/_custom_domain.html.erb +0 -11
- data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +0 -19
- data/app/views/spree/admin/custom_domains/_form.html.erb +0 -7
- data/app/views/spree/admin/custom_domains/index.html.erb +0 -65
- data/app/views/spree/admin/oauth_applications/_form.html.erb +0 -6
- data/app/views/spree/admin/oauth_applications/_table_header.html.erb +0 -7
- data/app/views/spree/admin/oauth_applications/_table_row.html.erb +0 -34
- data/app/views/spree/admin/oauth_applications/create.turbo_stream.erb +0 -31
- data/app/views/spree/admin/oauth_applications/edit.html.erb +0 -1
- data/app/views/spree/admin/oauth_applications/index.html.erb +0 -21
- data/app/views/spree/admin/oauth_applications/new.html.erb +0 -1
- data/app/views/spree/admin/post_categories/_form.html.erb +0 -6
- data/app/views/spree/admin/post_categories/_table_header.html.erb +0 -5
- data/app/views/spree/admin/post_categories/_table_row.html.erb +0 -9
- data/app/views/spree/admin/post_categories/index.html.erb +0 -10
- data/app/views/spree/admin/post_categories/new.html.erb +0 -1
- data/app/views/spree/admin/posts/_extra_actions.html.erb +0 -0
- data/app/views/spree/admin/posts/_form.html.erb +0 -54
- data/app/views/spree/admin/posts/_table_header.html.erb +0 -7
- data/app/views/spree/admin/posts/_table_row.html.erb +0 -22
- data/app/views/spree/admin/posts/edit.html.erb +0 -5
- data/app/views/spree/admin/posts/filters.html.erb +0 -39
- data/app/views/spree/admin/posts/index.html.erb +0 -10
- data/app/views/spree/admin/posts/new.html.erb +0 -1
- data/app/views/spree/admin/products/form/_properties.html.erb +0 -46
- data/app/views/spree/admin/products/form/_stores.html.erb +0 -27
- data/app/views/spree/admin/properties/_filters.html.erb +0 -5
- data/app/views/spree/admin/properties/_form.html.erb +0 -8
- data/app/views/spree/admin/properties/_table_header.html.erb +0 -9
- data/app/views/spree/admin/properties/_table_row.html.erb +0 -25
- data/app/views/spree/admin/properties/edit.html.erb +0 -2
- data/app/views/spree/admin/properties/index.html.erb +0 -22
- data/app/views/spree/admin/properties/update.turbo_stream.erb +0 -1
- data/app/views/spree/admin/shared/_posts_tabs.html.erb +0 -8
- data/app/views/spree/admin/shared/sidebar/_customers_nav.html.erb +0 -15
- data/app/views/spree/admin/shared/sidebar/_integrations_nav.html.erb +0 -3
- data/app/views/spree/admin/shared/sidebar/_orders_nav.html.erb +0 -45
- data/app/views/spree/admin/shared/sidebar/_products_nav.html.erb +0 -42
- data/app/views/spree/admin/shared/sidebar/_promotions_nav.html.erb +0 -15
- data/app/views/spree/admin/shared/sidebar/_returns_nav.html.erb +0 -26
- data/app/views/spree/admin/shared/sidebar/_storefront_nav.html.erb +0 -46
- data/app/views/spree/admin/shared/sidebar/_vendors_nav.html.erb +0 -17
- data/app/views/spree/admin/stores/new.html.erb +0 -128
- data/app/views/spree/admin/stores/new.turbo_stream.erb +0 -1
- /data/app/views/spree/admin/{custom_domains → api_keys}/edit.html.erb +0 -0
- /data/app/views/spree/admin/{custom_domains → api_keys}/new.html.erb +0 -0
- /data/app/views/spree/admin/{post_categories → markets}/edit.html.erb +0 -0
- /data/app/views/spree/admin/{properties → markets}/new.html.erb +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4f57b463a1f1a46360341017872bff19562f612a9f2fd6a040a5a340e8ad04b9
|
|
4
|
+
data.tar.gz: ab57b308e0087992c563e520a5d3312b1f49f8eaf0d07445700cd374f150f4f6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 38b26c705f3a4445a0fe84f122a04ee8e1f209437573b6e1fad9a7f60cbf943a3cdc6130fbd12dc5af5b0b80cf80c90b7fa9d5b544f518b59a648ff8f91ec89e
|
|
7
|
+
data.tar.gz: 751ee61e2e785860e87f0677e3d2b3693f5c0c88586f38cd2fbeb38caafb779d0ea2c33129b46315109017da12acc59c39bdca974189e064a282d3610dcbf7cc
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/rb/spree_admin)
|
|
4
4
|
|
|
5
|
-
Spree Admin provides a modern, fully-featured admin dashboard for managing your Spree
|
|
5
|
+
Spree Admin provides a modern, fully-featured admin dashboard for managing your Spree application.
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
@@ -147,4 +147,4 @@ end
|
|
|
147
147
|
|
|
148
148
|
- [Admin Customization Guide](https://docs.spreecommerce.org/developer/customization/admin)
|
|
149
149
|
- [Navigation Configuration](https://docs.spreecommerce.org/developer/customization/admin-navigation)
|
|
150
|
-
- [Permissions Guide](https://docs.spreecommerce.org/developer/customization/permissions)
|
|
150
|
+
- [Permissions Guide](https://docs.spreecommerce.org/developer/customization/permissions)
|
|
@@ -20,7 +20,7 @@ module Spree
|
|
|
20
20
|
|
|
21
21
|
render json: { sgid: video_embed.attachable_sgid, content: content }, status: :created
|
|
22
22
|
else
|
|
23
|
-
render json: { error: video_embed.errors.full_messages.to_sentence }, status: :
|
|
23
|
+
render json: { error: video_embed.errors.full_messages.to_sentence }, status: :unprocessable_content
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -4,7 +4,7 @@ module Spree
|
|
|
4
4
|
before_action :set_new_address_country, only: :new
|
|
5
5
|
|
|
6
6
|
def create
|
|
7
|
-
user = Spree.user_class.
|
|
7
|
+
user = Spree.user_class.find_by_prefix_id!(params[:user_id])
|
|
8
8
|
|
|
9
9
|
result = create_service.call(
|
|
10
10
|
address_params: permitted_resource_params,
|
|
@@ -56,7 +56,7 @@ module Spree
|
|
|
56
56
|
end
|
|
57
57
|
redirect_to spree.admin_path
|
|
58
58
|
else
|
|
59
|
-
render :new, status: :
|
|
59
|
+
render :new, status: :unprocessable_content
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -74,7 +74,7 @@ module Spree
|
|
|
74
74
|
if @admin_user.update(permitted_params)
|
|
75
75
|
redirect_to spree.admin_admin_user_path(@admin_user), status: :see_other, notice: flash_message_for(@admin_user, :successfully_updated)
|
|
76
76
|
else
|
|
77
|
-
render :edit, status: :
|
|
77
|
+
render :edit, status: :unprocessable_content
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
@@ -110,7 +110,7 @@ module Spree
|
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
def load_admin_user
|
|
113
|
-
@admin_user = Spree.admin_user_class.accessible_by(current_ability).
|
|
113
|
+
@admin_user = Spree.admin_user_class.accessible_by(current_ability).find_by_prefix_id!(params[:id])
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
# for self signup flow, we use the minimal layout
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Admin
|
|
5
|
+
class ApiKeysController < ResourceController
|
|
6
|
+
include Spree::Admin::SettingsConcern
|
|
7
|
+
include Spree::Admin::TableConcern
|
|
8
|
+
|
|
9
|
+
helper 'spree/admin/api_keys'
|
|
10
|
+
|
|
11
|
+
def create
|
|
12
|
+
invoke_callbacks(:create, :before)
|
|
13
|
+
set_created_by
|
|
14
|
+
@object.attributes = permitted_resource_params
|
|
15
|
+
if @object.save
|
|
16
|
+
invoke_callbacks(:create, :after)
|
|
17
|
+
if @object.secret?
|
|
18
|
+
# Pass plaintext token via flash so the show page can display it once.
|
|
19
|
+
# Flash is stored in the encrypted session cookie and auto-cleared after one request.
|
|
20
|
+
# Skip the success flash — the token warning banner is sufficient feedback.
|
|
21
|
+
flash[:plaintext_token] = @object.plaintext_token
|
|
22
|
+
else
|
|
23
|
+
flash[:success] = message_after_create
|
|
24
|
+
end
|
|
25
|
+
redirect_to location_after_create, status: :see_other
|
|
26
|
+
else
|
|
27
|
+
invoke_callbacks(:create, :fails)
|
|
28
|
+
render action: :new, status: :unprocessable_content
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def revoke
|
|
33
|
+
@object = scope.find_by_prefix_id!(params[:id])
|
|
34
|
+
@object.revoke!(try_spree_current_user)
|
|
35
|
+
flash[:success] = Spree.t('admin.api_keys.revoked')
|
|
36
|
+
redirect_to spree.admin_api_key_path(@object)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def model_class
|
|
42
|
+
Spree::ApiKey
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def scope
|
|
46
|
+
current_store.api_keys
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def object_name
|
|
50
|
+
'api_key'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def permitted_resource_params
|
|
54
|
+
permitted = params.require(:api_key).permit(permitted_api_key_attributes)
|
|
55
|
+
# key_type can only be set on create, not update
|
|
56
|
+
permitted.delete(:key_type) unless action_name == 'create'
|
|
57
|
+
permitted
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def location_after_save
|
|
61
|
+
spree.admin_api_key_path(@object)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def update_turbo_stream_enabled?
|
|
65
|
+
true
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def build_resource
|
|
69
|
+
if params[:api_key].present?
|
|
70
|
+
scope.new(permitted_resource_params.merge(created_by: try_spree_current_user))
|
|
71
|
+
else
|
|
72
|
+
scope.new(created_by: try_spree_current_user)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -14,7 +14,7 @@ module Spree
|
|
|
14
14
|
store_uploaded_asset_in_session(@asset, @asset.viewable_type) if @asset.viewable.nil? || @asset.viewable.new_record?
|
|
15
15
|
else
|
|
16
16
|
flash.now[:error] = @asset.errors.full_messages.to_sentence
|
|
17
|
-
render :create, status: :
|
|
17
|
+
render :create, status: :unprocessable_content
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -27,7 +27,7 @@ module Spree
|
|
|
27
27
|
format.json { render json: @asset }
|
|
28
28
|
end
|
|
29
29
|
else
|
|
30
|
-
head :
|
|
30
|
+
head :unprocessable_content
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
@@ -14,7 +14,6 @@ module Spree
|
|
|
14
14
|
helper 'spree/integrations'
|
|
15
15
|
|
|
16
16
|
before_action :authorize_admin
|
|
17
|
-
after_action :set_return_to, only: [:index]
|
|
18
17
|
|
|
19
18
|
protected
|
|
20
19
|
|
|
@@ -56,7 +55,8 @@ module Spree
|
|
|
56
55
|
|
|
57
56
|
def try_spree_current_user
|
|
58
57
|
if Spree.admin_user_class && Spree.admin_user_class != Spree.user_class
|
|
59
|
-
|
|
58
|
+
method_name = "current_#{Spree.admin_user_class.model_name.singular_route_key}"
|
|
59
|
+
respond_to?(method_name, true) ? send(method_name) : nil
|
|
60
60
|
else
|
|
61
61
|
# use Spree::Core::ControllerHelpers::Auth#try_spree_current_user
|
|
62
62
|
super
|
|
@@ -80,8 +80,8 @@ module Spree
|
|
|
80
80
|
Spree.t(event_sym, resource: resource_desc)
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
-
def
|
|
84
|
-
|
|
83
|
+
def default_locale
|
|
84
|
+
@default_locale ||= current_store&.preferred_admin_locale.presence || super
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
def current_timezone
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Admin
|
|
3
3
|
class ClassificationsController < ResourceController
|
|
4
|
-
belongs_to 'spree/taxon', find_by: :
|
|
4
|
+
belongs_to 'spree/taxon', find_by: :permalink
|
|
5
5
|
|
|
6
6
|
layout 'turbo_rails/frame'
|
|
7
7
|
|
|
@@ -19,7 +19,7 @@ module Spree
|
|
|
19
19
|
private
|
|
20
20
|
|
|
21
21
|
def collection_url
|
|
22
|
-
spree.admin_taxon_classifications_path(@parent
|
|
22
|
+
spree.admin_taxon_classifications_path(@parent)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def update_turbo_stream_enabled?
|
|
@@ -38,8 +38,9 @@ module Spree
|
|
|
38
38
|
includes(
|
|
39
39
|
:taxon,
|
|
40
40
|
product: {
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
thumbnail: [attachment_attachment: :blob],
|
|
42
|
+
master: [:stock_items, :stock_locations],
|
|
43
|
+
variants: [:stock_items, :stock_locations]
|
|
43
44
|
}
|
|
44
45
|
).
|
|
45
46
|
accessible_by(current_ability)
|
|
@@ -33,7 +33,8 @@ module Spree
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def destroy
|
|
36
|
-
|
|
36
|
+
user = Spree.user_class.find_by_prefix_id!(params[:id])
|
|
37
|
+
deleted_count = @customer_group.remove_customers([user.id])
|
|
37
38
|
|
|
38
39
|
if deleted_count > 0
|
|
39
40
|
flash[:success] = Spree.t(:customer_removed_from_group)
|
|
@@ -58,7 +59,7 @@ module Spree
|
|
|
58
59
|
private
|
|
59
60
|
|
|
60
61
|
def set_customer_group
|
|
61
|
-
@customer_group = current_store.customer_groups.
|
|
62
|
+
@customer_group = current_store.customer_groups.find_by_prefix_id!(params[:customer_group_id])
|
|
62
63
|
end
|
|
63
64
|
|
|
64
65
|
def model_class
|
|
@@ -146,7 +146,8 @@ module Spree
|
|
|
146
146
|
end
|
|
147
147
|
|
|
148
148
|
@top_landing_pages = @visits_scope.where.not(landing_page: [nil, '']).top(:landing_page, 10)
|
|
149
|
-
|
|
149
|
+
excluded_domains = current_store.respond_to?(:custom_domains) ? current_store.custom_domains.pluck(:url) : []
|
|
150
|
+
@top_referrers = @visits_scope.where.not(referring_domain: excluded_domains << current_store.url).top(
|
|
150
151
|
:referring_domain, 10
|
|
151
152
|
)
|
|
152
153
|
@top_locations = @visits_scope.top(:country, 10)
|
|
@@ -35,7 +35,8 @@ module Spree
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def assign_params
|
|
38
|
-
|
|
38
|
+
available_type = available_types.map(&:to_s).find { |t| t == permitted_resource_params[:type] }
|
|
39
|
+
@object = @object.becomes!(available_type.constantize) if available_type.present?
|
|
39
40
|
@object.search_params = permitted_resource_params[:search_params]
|
|
40
41
|
end
|
|
41
42
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Admin
|
|
3
3
|
class GiftCardsController < ResourceController
|
|
4
|
-
prepend_before_action :load_user
|
|
5
4
|
prepend_before_action :set_user_id_filter, only: :index
|
|
5
|
+
prepend_before_action :load_user
|
|
6
6
|
before_action :add_breadcrumbs
|
|
7
7
|
before_action :load_orders, only: :show
|
|
8
8
|
|
|
@@ -27,10 +27,10 @@ module Spree
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def set_user_id_filter
|
|
30
|
-
return if
|
|
30
|
+
return if @user.blank?
|
|
31
31
|
|
|
32
32
|
params[:q] ||= {}
|
|
33
|
-
params[:q][:user_id_eq] =
|
|
33
|
+
params[:q][:user_id_eq] = @user.id
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def location_after_destroy
|
|
@@ -42,11 +42,11 @@ module Spree
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def location_after_save
|
|
45
|
-
spree.admin_gift_card_path(@object
|
|
45
|
+
spree.admin_gift_card_path(@object)
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def load_user
|
|
49
|
-
@user = Spree.user_class.
|
|
49
|
+
@user = Spree.user_class.find_by_prefix_id(params[:user_id]) if params[:user_id].present?
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
def gift_cards_filter_dropdown_value
|
|
@@ -49,7 +49,7 @@ module Spree
|
|
|
49
49
|
|
|
50
50
|
unless @integration.can_connect?
|
|
51
51
|
@integration.errors.add(:base, :unable_to_connect, error_message: @integration.connection_error_message)
|
|
52
|
-
render action == :create ? :new : :edit, status: :
|
|
52
|
+
render action == :create ? :new : :edit, status: :unprocessable_content
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -42,13 +42,14 @@ module Spree
|
|
|
42
42
|
format.turbo_stream
|
|
43
43
|
end
|
|
44
44
|
else
|
|
45
|
-
render :new, status: :
|
|
45
|
+
render :new, status: :unprocessable_content
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
# GET /admin/invitations/:id?token=:token
|
|
50
50
|
def show
|
|
51
|
-
|
|
51
|
+
decoded_id = Spree::Invitation.decode_prefixed_id(params[:id])
|
|
52
|
+
@invitation = Spree::Invitation.pending.not_expired.find_by!(id: decoded_id, token: params[:token])
|
|
52
53
|
@parent = @invitation.resource
|
|
53
54
|
|
|
54
55
|
if try_spree_current_user.present?
|
|
@@ -68,7 +69,7 @@ module Spree
|
|
|
68
69
|
|
|
69
70
|
# PUT /admin/invitations/:id/accept
|
|
70
71
|
def accept
|
|
71
|
-
@invitation = try_spree_current_user.invitations.pending.not_expired.
|
|
72
|
+
@invitation = try_spree_current_user.invitations.pending.not_expired.find_by_prefix_id!(params[:id])
|
|
72
73
|
|
|
73
74
|
authorize! :accept, @invitation
|
|
74
75
|
|
|
@@ -78,7 +79,7 @@ module Spree
|
|
|
78
79
|
|
|
79
80
|
# PUT /admin/invitations/:id/resend
|
|
80
81
|
def resend
|
|
81
|
-
@invitation = scope.
|
|
82
|
+
@invitation = scope.find_by_prefix_id!(params[:id])
|
|
82
83
|
@invitation.resend!
|
|
83
84
|
redirect_back fallback_location: spree.admin_invitations_path, notice: Spree.t('invitation_resent')
|
|
84
85
|
end
|
|
@@ -94,7 +95,7 @@ module Spree
|
|
|
94
95
|
private
|
|
95
96
|
|
|
96
97
|
def load_invitation
|
|
97
|
-
@invitation = scope.
|
|
98
|
+
@invitation = scope.find_by_prefix_id!(params[:id])
|
|
98
99
|
end
|
|
99
100
|
|
|
100
101
|
def load_parent
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Admin
|
|
3
|
+
class MarketsController < ResourceController
|
|
4
|
+
include Spree::Admin::SettingsConcern
|
|
5
|
+
|
|
6
|
+
before_action :load_data, except: :index
|
|
7
|
+
before_action :normalize_supported_locales, only: [:create, :update]
|
|
8
|
+
|
|
9
|
+
protected
|
|
10
|
+
|
|
11
|
+
def load_data
|
|
12
|
+
@countries = current_store.countries_with_shipping_coverage
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def permitted_resource_params
|
|
16
|
+
params.require(:market).permit(permitted_market_attributes)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def normalize_supported_locales
|
|
22
|
+
if params.dig(:market, :supported_locales)&.is_a?(Array)
|
|
23
|
+
params[:market][:supported_locales] = params[:market][:supported_locales].compact.uniq.reject(&:blank?).join(',')
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Admin
|
|
3
3
|
class OptionValuesController < ResourceController
|
|
4
|
-
belongs_to 'spree/option_type', find_by: :
|
|
4
|
+
belongs_to 'spree/option_type', find_by: :prefix_id
|
|
5
5
|
|
|
6
6
|
def select_options
|
|
7
7
|
render json: @option_type.option_values.accessible_by(current_ability).to_tom_select_json
|
|
@@ -35,7 +35,7 @@ module Spree
|
|
|
35
35
|
flash.now[:error] = @adjustment.errors.full_messages.to_sentence
|
|
36
36
|
respond_to do |format|
|
|
37
37
|
format.turbo_stream
|
|
38
|
-
format.html { render :new, status: :
|
|
38
|
+
format.html { render :new, status: :unprocessable_content }
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
end
|
|
@@ -58,7 +58,7 @@ module Spree
|
|
|
58
58
|
end
|
|
59
59
|
else
|
|
60
60
|
flash.now[:error] = @adjustment.errors.full_messages.to_sentence
|
|
61
|
-
render :edit, status: :
|
|
61
|
+
render :edit, status: :unprocessable_content
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -102,12 +102,12 @@ module Spree
|
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
def load_order
|
|
105
|
-
@order = current_store.orders.
|
|
105
|
+
@order = current_store.orders.find_by_prefix_id!(params[:order_id])
|
|
106
106
|
authorize! :update, @order
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
def load_adjustment
|
|
110
|
-
@adjustment = @order.all_adjustments.
|
|
110
|
+
@adjustment = @order.all_adjustments.find_by_prefix_id!(params[:id])
|
|
111
111
|
authorize! action, @adjustment
|
|
112
112
|
end
|
|
113
113
|
|
|
@@ -20,7 +20,7 @@ module Spree
|
|
|
20
20
|
@order.clone_shipping_address
|
|
21
21
|
|
|
22
22
|
elsif params[:billing_address_id].present?
|
|
23
|
-
@address = Spree::Address.accessible_by(current_ability, :manage).
|
|
23
|
+
@address = Spree::Address.accessible_by(current_ability, :manage).find_by_prefix_id!(params[:billing_address_id])
|
|
24
24
|
@order.bill_address_id = @address.id
|
|
25
25
|
else
|
|
26
26
|
@order.bill_address_attributes = address_params
|
|
@@ -48,7 +48,7 @@ module Spree
|
|
|
48
48
|
flash[:success] = Spree.t(:successfully_created, resource: Spree.t(:billing_address))
|
|
49
49
|
redirect_to spree.edit_admin_order_path(@order)
|
|
50
50
|
else
|
|
51
|
-
render :create, status: :
|
|
51
|
+
render :create, status: :unprocessable_content
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -60,7 +60,7 @@ module Spree
|
|
|
60
60
|
if params[:billing_address_type] == 'same_as_shipping'
|
|
61
61
|
@order.clone_shipping_address
|
|
62
62
|
elsif params[:billing_address_id].present?
|
|
63
|
-
@address = Spree::Address.accessible_by(current_ability, :manage).
|
|
63
|
+
@address = Spree::Address.accessible_by(current_ability, :manage).find_by_prefix_id!(params[:billing_address_id])
|
|
64
64
|
@order.bill_address_id = @address.id
|
|
65
65
|
else
|
|
66
66
|
@order.bill_address_attributes = address_params
|
|
@@ -88,7 +88,7 @@ module Spree
|
|
|
88
88
|
flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:billing_address))
|
|
89
89
|
redirect_to spree.edit_admin_order_path(@order)
|
|
90
90
|
else
|
|
91
|
-
render :update, status: :
|
|
91
|
+
render :update, status: :unprocessable_content
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
@@ -32,7 +32,7 @@ module Spree
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def find_resource
|
|
35
|
-
current_store.customer_returns.accessible_by(current_ability, :show).
|
|
35
|
+
current_store.customer_returns.accessible_by(current_ability, :show).find_by_prefix_id!(params[:id])
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def load_form_data
|
|
@@ -36,7 +36,7 @@ module Spree
|
|
|
36
36
|
|
|
37
37
|
redirect_to spree.edit_admin_order_path(@order)
|
|
38
38
|
else
|
|
39
|
-
render :create, status: :
|
|
39
|
+
render :create, status: :unprocessable_content
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|
|
@@ -46,7 +46,7 @@ module Spree
|
|
|
46
46
|
|
|
47
47
|
def update
|
|
48
48
|
if params[:shipping_address_id].present?
|
|
49
|
-
@address = Spree::Address.accessible_by(current_ability, :manage).
|
|
49
|
+
@address = Spree::Address.accessible_by(current_ability, :manage).find_by_prefix_id!(params[:shipping_address_id])
|
|
50
50
|
@order.ship_address_id = @address.id
|
|
51
51
|
else
|
|
52
52
|
@order.ship_address_attributes = address_params
|
|
@@ -70,7 +70,7 @@ module Spree
|
|
|
70
70
|
|
|
71
71
|
redirect_to spree.edit_admin_order_path(@order)
|
|
72
72
|
else
|
|
73
|
-
render :update, status: :
|
|
73
|
+
render :update, status: :unprocessable_content
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
|
|
@@ -29,11 +29,11 @@ module Spree
|
|
|
29
29
|
redirect_to spree.edit_admin_order_path(@order)
|
|
30
30
|
else
|
|
31
31
|
flash[:error] = result.error.value.full_messages.to_sentence
|
|
32
|
-
redirect_to spree.new_admin_order_user_path(@order), status: :
|
|
32
|
+
redirect_to spree.new_admin_order_user_path(@order), status: :unprocessable_content
|
|
33
33
|
end
|
|
34
34
|
else
|
|
35
35
|
flash[:error] = @user.errors.full_messages.to_sentence
|
|
36
|
-
redirect_to spree.new_admin_order_user_path(@order), status: :
|
|
36
|
+
redirect_to spree.new_admin_order_user_path(@order), status: :unprocessable_content
|
|
37
37
|
end
|
|
38
38
|
else
|
|
39
39
|
@user = @order.build_user(user_params)
|
|
@@ -47,13 +47,13 @@ module Spree
|
|
|
47
47
|
redirect_to spree.edit_admin_order_path(@order)
|
|
48
48
|
else
|
|
49
49
|
flash[:error] = @user.errors.full_messages.to_sentence
|
|
50
|
-
redirect_to spree.new_admin_order_user_path(@order), status: :
|
|
50
|
+
redirect_to spree.new_admin_order_user_path(@order), status: :unprocessable_content
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
def update
|
|
56
|
-
user = Spree.user_class.
|
|
56
|
+
user = Spree.user_class.find_by_prefix_id!(params[:user_id])
|
|
57
57
|
@order.associate_user!(user)
|
|
58
58
|
|
|
59
59
|
if !@order.completed? && @order.line_items.any?
|
|
@@ -24,7 +24,7 @@ module Spree
|
|
|
24
24
|
flash[:success] = flash_message_for(@order, :successfully_created)
|
|
25
25
|
redirect_to spree.edit_admin_order_path(@order)
|
|
26
26
|
else
|
|
27
|
-
render :new, status: :
|
|
27
|
+
render :new, status: :unprocessable_content
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -47,8 +47,12 @@ module Spree
|
|
|
47
47
|
|
|
48
48
|
# PUT /admin/orders/:id/cancel
|
|
49
49
|
def cancel
|
|
50
|
-
@order.canceled_by(try_spree_current_user)
|
|
51
|
-
|
|
50
|
+
result = @order.canceled_by(try_spree_current_user)
|
|
51
|
+
if result.success?
|
|
52
|
+
flash[:success] = Spree.t(:order_canceled)
|
|
53
|
+
else
|
|
54
|
+
flash[:error] = result.error.to_s
|
|
55
|
+
end
|
|
52
56
|
redirect_back fallback_location: spree.edit_admin_order_url(@order)
|
|
53
57
|
end
|
|
54
58
|
|
|
@@ -102,7 +106,7 @@ module Spree
|
|
|
102
106
|
end
|
|
103
107
|
|
|
104
108
|
def load_order
|
|
105
|
-
@order = scope.includes(:adjustments).
|
|
109
|
+
@order = scope.includes(:adjustments).find_by_prefix_id!(params[:id])
|
|
106
110
|
authorize! action, @order
|
|
107
111
|
end
|
|
108
112
|
|
|
@@ -3,7 +3,7 @@ module Spree
|
|
|
3
3
|
class PaymentsController < Spree::Admin::ResourceController
|
|
4
4
|
include Spree::Admin::OrderBreadcrumbConcern
|
|
5
5
|
|
|
6
|
-
belongs_to 'spree/order', find_by: :
|
|
6
|
+
belongs_to 'spree/order', find_by: :prefix_id
|
|
7
7
|
|
|
8
8
|
before_action :load_data
|
|
9
9
|
before_action :proceed_order_state, only: :new
|
|
@@ -48,13 +48,13 @@ module Spree
|
|
|
48
48
|
invoke_callbacks(:create, :fails)
|
|
49
49
|
|
|
50
50
|
flash[:error] = e.message.to_s
|
|
51
|
-
render :new, status: :
|
|
51
|
+
render :new, status: :unprocessable_content
|
|
52
52
|
rescue ActiveRecord::RecordInvalid => _e
|
|
53
53
|
@object.failure if defined?(@object) && @object.persisted?
|
|
54
54
|
invoke_callbacks(:create, :fails)
|
|
55
55
|
|
|
56
56
|
flash[:error] = @object.errors.full_messages.to_sentence
|
|
57
|
-
render :new, status: :
|
|
57
|
+
render :new, status: :unprocessable_content
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
def capture
|