spree_admin 5.2.0.rc2 → 5.2.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.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/spree/admin/application.scss +1 -1
- data/app/assets/stylesheets/spree/admin/components/_alerts.scss +1 -1
- data/app/assets/stylesheets/spree/admin/components/_buttons.scss +5 -4
- data/app/assets/stylesheets/spree/admin/components/_dialogs.scss +0 -1
- data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +6 -0
- data/app/assets/stylesheets/spree/admin/components/_main.scss +2 -233
- data/app/assets/stylesheets/spree/admin/components/_sidebar.scss +693 -0
- data/app/assets/stylesheets/spree/admin/components/_tables.scss +2 -2
- data/app/assets/stylesheets/spree/admin/components/_variants_form.scss +1 -2
- data/app/assets/stylesheets/spree/admin/global/_variables.scss +15 -12
- data/app/assets/stylesheets/spree/admin/shared/_base.scss +9 -3
- data/app/assets/stylesheets/spree/admin/shared/_forms.scss +5 -6
- data/app/assets/stylesheets/spree/admin/views/_dashboard.scss +14 -0
- data/app/controllers/spree/admin/admin_users_controller.rb +0 -2
- data/app/controllers/spree/admin/checkouts_controller.rb +1 -4
- data/app/controllers/spree/admin/coupon_codes_controller.rb +0 -14
- data/app/controllers/spree/admin/customer_returns_controller.rb +0 -13
- data/app/controllers/spree/admin/digital_assets_controller.rb +2 -2
- data/app/controllers/spree/admin/exports_controller.rb +2 -9
- data/app/controllers/spree/admin/gift_cards_controller.rb +7 -14
- data/app/controllers/spree/admin/integrations_controller.rb +1 -1
- data/app/controllers/spree/admin/invitations_controller.rb +0 -2
- data/app/controllers/spree/admin/metafields_controller.rb +1 -1
- data/app/controllers/spree/admin/oauth_applications_controller.rb +0 -10
- data/app/controllers/spree/admin/option_types_controller.rb +0 -10
- data/app/controllers/spree/admin/orders_controller.rb +1 -1
- data/app/controllers/spree/admin/page_blocks_controller.rb +1 -1
- data/app/controllers/spree/admin/pages_controller.rb +1 -1
- data/app/controllers/spree/admin/payment_methods_controller.rb +1 -11
- data/app/controllers/spree/admin/policies_controller.rb +4 -0
- data/app/controllers/spree/admin/posts_controller.rb +2 -10
- 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/properties_controller.rb +0 -12
- data/app/controllers/spree/admin/reports_controller.rb +1 -1
- data/app/controllers/spree/admin/resource_controller.rb +27 -17
- data/app/controllers/spree/admin/return_authorizations_controller.rb +0 -10
- data/app/controllers/spree/admin/shipping_methods_controller.rb +4 -0
- data/app/controllers/spree/admin/stock_items_controller.rb +8 -11
- data/app/controllers/spree/admin/stock_locations_controller.rb +1 -1
- data/app/controllers/spree/admin/stock_transfers_controller.rb +0 -10
- data/app/controllers/spree/admin/store_credits_controller.rb +35 -35
- data/app/controllers/spree/admin/taxonomies_controller.rb +0 -10
- data/app/controllers/spree/admin/taxons_controller.rb +1 -1
- data/app/controllers/spree/admin/themes_controller.rb +6 -2
- data/app/controllers/spree/admin/translations_controller.rb +1 -1
- data/app/controllers/spree/admin/users_controller.rb +7 -17
- data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +0 -10
- data/app/controllers/spree/admin/zones_controller.rb +0 -7
- data/app/helpers/spree/admin/base_helper.rb +1 -1
- data/app/helpers/spree/admin/drawer_helper.rb +6 -6
- data/app/helpers/spree/admin/dropdown_helper.rb +26 -16
- data/app/helpers/spree/admin/modal_helper.rb +2 -0
- data/app/helpers/spree/admin/navigation_helper.rb +47 -4
- data/app/helpers/spree/admin/orders_filters_helper.rb +3 -0
- data/app/helpers/spree/admin/promotion_actions_helper.rb +1 -1
- data/app/helpers/spree/admin/promotion_rules_helper.rb +1 -1
- data/app/helpers/spree/admin/translations_helper.rb +1 -1
- data/app/javascript/spree/admin/application.js +2 -1
- data/app/javascript/spree/admin/controllers/dropdown_controller.js +85 -14
- data/app/javascript/spree/admin/controllers/sidebar_controller.js +231 -0
- data/app/javascript/spree/admin/controllers/tooltip_controller.js +84 -31
- data/app/models/spree/admin/form_builder.rb +76 -17
- data/app/models/spree/admin/navigation/builder.rb +82 -0
- data/app/models/spree/admin/navigation/item.rb +177 -0
- data/app/models/spree/admin/navigation.rb +193 -0
- data/app/views/layouts/spree/admin.html.erb +1 -1
- data/app/views/spree/admin/assets/edit.html.erb +1 -1
- data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +1 -1
- data/app/views/spree/admin/custom_domains/_form.html.erb +2 -14
- data/app/views/spree/admin/digital_assets/_table.html.erb +1 -1
- data/app/views/spree/admin/gift_cards/_filters.html.erb +25 -16
- data/app/views/spree/admin/gift_cards/index.html.erb +1 -1
- data/app/views/spree/admin/integrations/index.html.erb +20 -8
- data/app/views/spree/admin/invitations/new.html.erb +2 -1
- data/app/views/spree/admin/metafield_definitions/_filters.html.erb +1 -1
- data/app/views/spree/admin/newsletter_subscribers/_filters.html.erb +1 -1
- data/app/views/spree/admin/newsletter_subscribers/_table_header.html.erb +2 -2
- data/app/views/spree/admin/oauth_applications/_table_header.html.erb +1 -1
- data/app/views/spree/admin/orders/_customer.html.erb +3 -3
- data/app/views/spree/admin/orders/_filters.html.erb +33 -25
- data/app/views/spree/admin/orders/_header.html.erb +0 -5
- data/app/views/spree/admin/orders/_list.html.erb +3 -3
- data/app/views/spree/admin/orders/_table_filter_dropdown.html.erb +1 -1
- data/app/views/spree/admin/page_blocks/edit.html.erb +3 -3
- data/app/views/spree/admin/page_blocks/forms/_image.html.erb +2 -5
- data/app/views/spree/admin/page_builder/_add_block.html.erb +1 -1
- data/app/views/spree/admin/page_builder/_header.html.erb +1 -1
- data/app/views/spree/admin/page_builder/_pages_dropdown.html.erb +2 -2
- data/app/views/spree/admin/page_builder/_sidebar_block.html.erb +1 -1
- data/app/views/spree/admin/page_builder/_sidebar_colors.html.erb +2 -2
- data/app/views/spree/admin/page_builder/_sidebar_fonts.html.erb +3 -3
- data/app/views/spree/admin/page_builder/_sidebar_section.html.erb +1 -1
- data/app/views/spree/admin/page_links/_form.html.erb +4 -13
- data/app/views/spree/admin/page_links/_list.html.erb +1 -1
- data/app/views/spree/admin/page_links/edit.html.erb +1 -1
- data/app/views/spree/admin/page_sections/edit.html.erb +3 -3
- data/app/views/spree/admin/page_sections/forms/_header.html.erb +0 -2
- data/app/views/spree/admin/page_sections/new.html.erb +1 -1
- data/app/views/spree/admin/pages/_table_header.html.erb +3 -3
- data/app/views/spree/admin/payment_methods/index.html.erb +5 -1
- data/app/views/spree/admin/payments/_payment.html.erb +7 -0
- data/app/views/spree/admin/policies/_filters.html.erb +1 -1
- data/app/views/spree/admin/posts/_form.html.erb +1 -4
- data/app/views/spree/admin/posts/filters.html.erb +18 -8
- data/app/views/spree/admin/products/_bulk_operations.html.erb +2 -2
- data/app/views/spree/admin/products/_filters.html.erb +17 -6
- data/app/views/spree/admin/products/_table_filter_dropdown.html.erb +1 -1
- data/app/views/spree/admin/products/edit.html.erb +0 -2
- data/app/views/spree/admin/products/form/_status.html.erb +0 -3
- data/app/views/spree/admin/products/form/_variants.html.erb +1 -1
- data/app/views/spree/admin/profile/edit.html.erb +9 -61
- data/app/views/spree/admin/promotions/_filters.html.erb +23 -13
- data/app/views/spree/admin/promotions/_table_filter_dropdown.html.erb +1 -1
- data/app/views/spree/admin/promotions/_table_header.html.erb +1 -1
- data/app/views/spree/admin/promotions/form/_kind.html.erb +4 -4
- data/app/views/spree/admin/promotions/form/_settings.html.erb +2 -13
- data/app/views/spree/admin/refund_reasons/_table_header.html.erb +1 -1
- data/app/views/spree/admin/refunds/_form.html.erb +1 -9
- data/app/views/spree/admin/reimbursement_types/_table_header.html.erb +1 -1
- data/app/views/spree/admin/return_authorization_reasons/_table_header.html.erb +1 -1
- data/app/views/spree/admin/return_authorizations/filters.html.erb +1 -1
- data/app/views/spree/admin/roles/index.html.erb +1 -1
- data/app/views/spree/admin/shared/_audit_nav.html.erb +2 -0
- data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +2 -2
- data/app/views/spree/admin/shared/_content_header.html.erb +5 -2
- data/app/views/spree/admin/shared/_developers_nav.html.erb +2 -4
- data/app/views/spree/admin/shared/_header.html.erb +5 -7
- data/app/views/spree/admin/shared/_index_table.html.erb +5 -4
- data/app/views/spree/admin/shared/_index_table_options.html.erb +1 -1
- data/app/views/spree/admin/shared/_navigation.html.erb +5 -0
- data/app/views/spree/admin/shared/_navigation_item.html.erb +64 -0
- data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +2 -2
- data/app/views/spree/admin/shared/_page_section_image.html.erb +2 -5
- data/app/views/spree/admin/shared/_page_section_logo.html.erb +1 -1
- data/app/views/spree/admin/shared/_returns_and_refunds_nav.html.erb +2 -3
- data/app/views/spree/admin/shared/_shipping_nav.html.erb +3 -2
- data/app/views/spree/admin/shared/_sidebar.html.erb +33 -7
- data/app/views/spree/admin/shared/_stock_nav.html.erb +6 -3
- data/app/views/spree/admin/shared/_tax_nav.html.erb +1 -2
- data/app/views/spree/admin/shared/_team_nav.html.erb +2 -3
- data/app/views/spree/admin/shared/_user_dropdown.html.erb +29 -19
- data/app/views/spree/admin/shared/sidebar/_customers_nav.html.erb +7 -0
- data/app/views/spree/admin/shared/sidebar/_orders_nav.html.erb +22 -2
- data/app/views/spree/admin/shared/sidebar/_products_nav.html.erb +21 -0
- data/app/views/spree/admin/shared/sidebar/_promotions_nav.html.erb +8 -0
- data/app/views/spree/admin/shared/sidebar/_returns_nav.html.erb +12 -0
- data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +4 -2
- data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +15 -1
- data/app/views/spree/admin/shared/sidebar/_storefront_nav.html.erb +25 -3
- data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +1 -1
- data/app/views/spree/admin/shipping_categories/_table_header.html.erb +1 -1
- data/app/views/spree/admin/shipping_methods/_table_header.html.erb +1 -1
- data/app/views/spree/admin/stock_items/_filters.html.erb +18 -8
- data/app/views/spree/admin/stock_locations/_table_header.html.erb +2 -2
- data/app/views/spree/admin/stock_locations/_table_row.html.erb +1 -1
- data/app/views/spree/admin/stock_transfers/_filters.html.erb +19 -9
- data/app/views/spree/admin/store_credit_categories/index.html.erb +1 -1
- data/app/views/spree/admin/store_credits/_list.html.erb +3 -3
- data/app/views/spree/admin/storefront/edit.html.erb +2 -14
- data/app/views/spree/admin/stores/form/_basic.html.erb +2 -8
- data/app/views/spree/admin/stores/form/_checkout.html.erb +2 -2
- data/app/views/spree/admin/stores/form/_checkout_links.html.erb +1 -1
- data/app/views/spree/admin/stores/form/_emails.html.erb +1 -1
- data/app/views/spree/admin/tax_categories/_table_header.html.erb +2 -2
- data/app/views/spree/admin/tax_rates/_form.html.erb +1 -10
- data/app/views/spree/admin/tax_rates/_table_header.html.erb +2 -2
- data/app/views/spree/admin/taxonomies/_table_header.html.erb +1 -1
- data/app/views/spree/admin/taxons/_form.html.erb +2 -9
- data/app/views/spree/admin/themes/_theme.html.erb +1 -1
- data/app/views/spree/admin/translations/translation_rows/_permalink_field_row.html.erb +1 -12
- data/app/views/spree/admin/users/_filters.html.erb +26 -17
- data/app/views/spree/admin/users/index.html.erb +1 -1
- data/config/initializers/spree_admin_navigation.rb +510 -0
- data/config/locales/en.yml +6 -0
- data/lib/generators/spree/admin/scaffold/templates/controller.rb.tt +3 -1
- data/lib/generators/spree/admin/scaffold/templates/views/_filters.html.erb.tt +1 -1
- data/lib/generators/spree/admin/scaffold/templates/views/_table_header.html.erb.tt +2 -2
- data/lib/generators/spree/admin/scaffold/templates/views/_table_row.html.erb.tt +8 -6
- data/lib/spree/admin/engine.rb +64 -2
- data/lib/spree/admin/runtime_configuration.rb +1 -0
- data/lib/spree/admin.rb +20 -0
- metadata +17 -15
- data/app/assets/stylesheets/spree/admin/components/_offcanvas.scss +0 -26
- data/app/javascript/spree/admin/helpers/canvas.js +0 -29
- data/app/views/spree/admin/shared/_offcanvas_nav.html.erb +0 -12
|
@@ -15,16 +15,6 @@ module Spree
|
|
|
15
15
|
spree.admin_stock_transfer_path(@object)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def collection
|
|
19
|
-
params[:q] ||= {}
|
|
20
|
-
params[:q][:s] ||= 'created_at desc'
|
|
21
|
-
|
|
22
|
-
@search = super.accessible_by(current_ability, :index).ransack(params[:q])
|
|
23
|
-
@stock_transfers = @search.result.
|
|
24
|
-
page(params[:page]).
|
|
25
|
-
per(params[:per_page])
|
|
26
|
-
end
|
|
27
|
-
|
|
28
18
|
def permitted_resource_params
|
|
29
19
|
params.require(:stock_transfer).permit(permitted_stock_transfer_attributes)
|
|
30
20
|
end
|
|
@@ -2,18 +2,10 @@ module Spree
|
|
|
2
2
|
module Admin
|
|
3
3
|
class StoreCreditError < StandardError; end
|
|
4
4
|
|
|
5
|
-
class StoreCreditsController < Spree::Admin::
|
|
6
|
-
before_action :
|
|
7
|
-
before_action :
|
|
5
|
+
class StoreCreditsController < Spree::Admin::ResourceController
|
|
6
|
+
before_action :set_breadcrumbs
|
|
7
|
+
before_action :set_user
|
|
8
8
|
before_action :ensure_unused_store_credit, only: [:update]
|
|
9
|
-
helper_method :collection_url
|
|
10
|
-
|
|
11
|
-
def index
|
|
12
|
-
@store_credits = scope.includes(:created_by).order(created_at: :desc)
|
|
13
|
-
@store_credits = @store_credits.page(params[:page]).per(params[:per_page])
|
|
14
|
-
|
|
15
|
-
@collection = @store_credits
|
|
16
|
-
end
|
|
17
9
|
|
|
18
10
|
def show
|
|
19
11
|
@store_credit = scope.find(params[:id])
|
|
@@ -21,8 +13,8 @@ module Spree
|
|
|
21
13
|
end
|
|
22
14
|
|
|
23
15
|
def create
|
|
24
|
-
@store_credit =
|
|
25
|
-
|
|
16
|
+
@store_credit = parent.store_credits.build(
|
|
17
|
+
permitted_resource_params.merge(
|
|
26
18
|
created_by: try_spree_current_user,
|
|
27
19
|
action_originator: try_spree_current_user,
|
|
28
20
|
store: current_store
|
|
@@ -31,7 +23,7 @@ module Spree
|
|
|
31
23
|
|
|
32
24
|
if @store_credit.save
|
|
33
25
|
flash[:success] = flash_message_for(@store_credit, :successfully_created)
|
|
34
|
-
redirect_to spree.admin_user_path(
|
|
26
|
+
redirect_to spree.admin_user_path(parent)
|
|
35
27
|
else
|
|
36
28
|
flash[:error] = Spree.t('store_credit.errors.unable_to_create')
|
|
37
29
|
render :new, status: :unprocessable_entity
|
|
@@ -39,11 +31,11 @@ module Spree
|
|
|
39
31
|
end
|
|
40
32
|
|
|
41
33
|
def update
|
|
42
|
-
@store_credit.assign_attributes(
|
|
34
|
+
@store_credit.assign_attributes(permitted_resource_params)
|
|
43
35
|
|
|
44
36
|
if @store_credit.save
|
|
45
37
|
flash[:success] = flash_message_for(@store_credit, :successfully_updated)
|
|
46
|
-
redirect_to spree.admin_user_store_credit_path(
|
|
38
|
+
redirect_to spree.admin_user_store_credit_path(parent, @store_credit)
|
|
47
39
|
else
|
|
48
40
|
flash[:error] = Spree.t('store_credit.errors.unable_to_update')
|
|
49
41
|
render :edit, status: :unprocessable_entity
|
|
@@ -59,37 +51,41 @@ module Spree
|
|
|
59
51
|
flash[:error] = Spree.t('store_credit.errors.unable_to_delete')
|
|
60
52
|
end
|
|
61
53
|
|
|
62
|
-
redirect_to spree.admin_user_path(
|
|
54
|
+
redirect_to spree.admin_user_path(parent)
|
|
63
55
|
end
|
|
64
56
|
|
|
65
57
|
protected
|
|
66
58
|
|
|
67
|
-
def
|
|
68
|
-
|
|
59
|
+
def parent
|
|
60
|
+
@parent ||= Spree.user_class.find_by(id: params[:user_id])
|
|
69
61
|
end
|
|
70
62
|
|
|
71
|
-
|
|
63
|
+
def parent_data
|
|
64
|
+
{
|
|
65
|
+
model_name: 'spree/user',
|
|
66
|
+
model_class: Spree.user_class,
|
|
67
|
+
find_by: :id
|
|
68
|
+
}
|
|
69
|
+
end
|
|
72
70
|
|
|
73
|
-
def
|
|
74
|
-
|
|
71
|
+
def permitted_resource_params
|
|
72
|
+
params.require(:store_credit).permit(permitted_store_credit_attributes)
|
|
73
|
+
end
|
|
75
74
|
|
|
76
|
-
|
|
77
|
-
flash[:error] = Spree.t(:user_not_found)
|
|
78
|
-
redirect_to spree.admin_path
|
|
79
|
-
end
|
|
75
|
+
private
|
|
80
76
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
add_breadcrumb @user.name, spree.admin_user_path(@user)
|
|
77
|
+
def set_user
|
|
78
|
+
@user = parent
|
|
84
79
|
end
|
|
85
80
|
|
|
86
|
-
def
|
|
87
|
-
|
|
88
|
-
@object = @store_credit
|
|
81
|
+
def object_url
|
|
82
|
+
spree.admin_user_store_credit_path(parent, @store_credit)
|
|
89
83
|
end
|
|
90
84
|
|
|
91
|
-
def
|
|
92
|
-
|
|
85
|
+
def set_breadcrumbs
|
|
86
|
+
@breadcrumb_icon = 'users'
|
|
87
|
+
add_breadcrumb Spree.t(:customers), :admin_users_path
|
|
88
|
+
add_breadcrumb parent.name, spree.admin_user_path(parent)
|
|
93
89
|
end
|
|
94
90
|
|
|
95
91
|
def ensure_unused_store_credit
|
|
@@ -99,7 +95,11 @@ module Spree
|
|
|
99
95
|
end
|
|
100
96
|
|
|
101
97
|
def collection_url
|
|
102
|
-
spree.admin_user_store_credits_path(
|
|
98
|
+
spree.admin_user_store_credits_path(parent)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def update_turbo_stream_enabled?
|
|
102
|
+
true
|
|
103
103
|
end
|
|
104
104
|
end
|
|
105
105
|
end
|
|
@@ -8,16 +8,6 @@ module Spree
|
|
|
8
8
|
|
|
9
9
|
private
|
|
10
10
|
|
|
11
|
-
def collection
|
|
12
|
-
return @collection if @collection.present?
|
|
13
|
-
|
|
14
|
-
@collection = super
|
|
15
|
-
|
|
16
|
-
params[:q] ||= {}
|
|
17
|
-
@search = @collection.ransack(params[:q])
|
|
18
|
-
@collection = @search.result.all
|
|
19
|
-
end
|
|
20
|
-
|
|
21
11
|
def location_after_save
|
|
22
12
|
spree.admin_taxonomy_path(@taxonomy)
|
|
23
13
|
end
|
|
@@ -97,7 +97,7 @@ module Spree
|
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
def load_form_data
|
|
100
|
-
@taxon_rules =
|
|
100
|
+
@taxon_rules = Spree.taxon_rules
|
|
101
101
|
@rule_types = @taxon_rules.map do |taxon_rule|
|
|
102
102
|
[Spree.t("admin.taxon_rules.#{taxon_rule.to_s.demodulize.underscore}"), taxon_rule.to_s]
|
|
103
103
|
end
|
|
@@ -70,8 +70,12 @@ module Spree
|
|
|
70
70
|
true
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
-
def
|
|
74
|
-
super.without_previews.order(default: :desc)
|
|
73
|
+
def scope
|
|
74
|
+
super.without_previews.order(default: :desc)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def collection_includes
|
|
78
|
+
{ screenshot_attachment: :blob }
|
|
75
79
|
end
|
|
76
80
|
|
|
77
81
|
def permitted_resource_params
|
|
@@ -50,23 +50,13 @@ module Spree
|
|
|
50
50
|
|
|
51
51
|
protected
|
|
52
52
|
|
|
53
|
-
def
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
@collection = model_class.accessible_by(current_ability, :index)
|
|
61
|
-
@search = @collection.ransack(params[:q])
|
|
62
|
-
@collection = @search.result(distinct: true).
|
|
63
|
-
includes(
|
|
64
|
-
addresses: [:country, :state],
|
|
65
|
-
ship_address: [:country, :state],
|
|
66
|
-
bill_address: [:country, :state],
|
|
67
|
-
avatar_attachment: :blob
|
|
68
|
-
).
|
|
69
|
-
page(params[:page]).per(params[:per_page])
|
|
53
|
+
def collection_includes
|
|
54
|
+
{
|
|
55
|
+
addresses: [:country, :state],
|
|
56
|
+
ship_address: [:country, :state],
|
|
57
|
+
bill_address: [:country, :state],
|
|
58
|
+
avatar_attachment: :blob
|
|
59
|
+
}
|
|
70
60
|
end
|
|
71
61
|
|
|
72
62
|
def find_resource
|
|
@@ -19,16 +19,6 @@ module Spree
|
|
|
19
19
|
@resource ||= Spree::Admin::Resource.new 'spree/admin/webhooks/subscribers', 'subscribers', nil
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def collection
|
|
23
|
-
params[:q] ||= {}
|
|
24
|
-
params[:q][:s] ||= 'created_at desc'
|
|
25
|
-
|
|
26
|
-
@search = Webhooks::Subscriber.accessible_by(current_ability).ransack(params[:q])
|
|
27
|
-
@collection = @search.result.
|
|
28
|
-
page(params[:page]).
|
|
29
|
-
per(params[:per_page])
|
|
30
|
-
end
|
|
31
|
-
|
|
32
22
|
def process_subscriptions
|
|
33
23
|
return if params[:webhooks_subscriber].blank?
|
|
34
24
|
|
|
@@ -14,13 +14,6 @@ module Spree
|
|
|
14
14
|
edit_object_url(@object, states_country_id: @selected_country&.id)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
def collection
|
|
18
|
-
params[:q] ||= {}
|
|
19
|
-
params[:q][:s] ||= 'name asc'
|
|
20
|
-
@search = super.ransack(params[:q])
|
|
21
|
-
@zones = @search.result.page(params[:page]).per(params[:per_page])
|
|
22
|
-
end
|
|
23
|
-
|
|
24
17
|
def load_data
|
|
25
18
|
@selected_country = if params[:states_country_id]
|
|
26
19
|
Spree::Country.find_by(id: params[:states_country_id])
|
|
@@ -4,7 +4,7 @@ module Spree
|
|
|
4
4
|
include Spree::ImagesHelper
|
|
5
5
|
|
|
6
6
|
def render_admin_partials(section, options = {})
|
|
7
|
-
|
|
7
|
+
Spree.admin.partials.send(section.to_s.gsub('_partials', '').to_sym).map do |partial|
|
|
8
8
|
render partial, options
|
|
9
9
|
end.join.html_safe
|
|
10
10
|
end
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Admin
|
|
3
3
|
module DrawerHelper
|
|
4
|
-
def drawer_header(title)
|
|
4
|
+
def drawer_header(title, controller_name = 'drawer')
|
|
5
5
|
content_tag(:div, class: 'drawer-header') do
|
|
6
|
-
content_tag(:h5, title, class: 'drawer-title') + drawer_close_button
|
|
6
|
+
content_tag(:h5, title, class: 'drawer-title') + drawer_close_button(controller_name)
|
|
7
7
|
end.html_safe
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def drawer_close_button
|
|
11
|
-
button_tag('', type: 'button', class: 'btn-close', data: { action:
|
|
10
|
+
def drawer_close_button(controller_name = 'drawer')
|
|
11
|
+
button_tag('', type: 'button', class: 'btn-close', data: { action: "#{controller_name}#close", dismiss: controller_name, aria_label: Spree.t(:close) }).html_safe
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def drawer_discard_button
|
|
15
|
-
button_tag(type: 'button', class: 'btn btn-light', data: { action:
|
|
14
|
+
def drawer_discard_button(controller_name = 'drawer')
|
|
15
|
+
button_tag(type: 'button', class: 'btn btn-light', data: { action: "#{controller_name}#close", dismiss: controller_name }) do
|
|
16
16
|
Spree.t('actions.discard')
|
|
17
17
|
end.html_safe
|
|
18
18
|
end
|
|
@@ -3,7 +3,31 @@ module Spree
|
|
|
3
3
|
module DropdownHelper
|
|
4
4
|
def dropdown(options = {}, &block)
|
|
5
5
|
options[:class] = ['dropdown'] + Array(options[:class])
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
# Extract direction option for backward compatibility and convert to Floating UI placement
|
|
8
|
+
placement = case options.delete(:direction)
|
|
9
|
+
when 'left'
|
|
10
|
+
'bottom-end'
|
|
11
|
+
when 'top'
|
|
12
|
+
'top-start'
|
|
13
|
+
when 'top-left'
|
|
14
|
+
'top-end'
|
|
15
|
+
else
|
|
16
|
+
options[:placement] || 'bottom-start'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Extract portal option
|
|
20
|
+
portal = options.delete(:portal)
|
|
21
|
+
|
|
22
|
+
data_attrs = {
|
|
23
|
+
controller: 'dropdown',
|
|
24
|
+
dropdown_placement_value: placement
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# Add portal value if explicitly set
|
|
28
|
+
data_attrs[:dropdown_portal_value] = portal unless portal.nil?
|
|
29
|
+
|
|
30
|
+
options[:data] = data_attrs.merge(options[:data] || {})
|
|
7
31
|
content_tag(:div, options, &block)
|
|
8
32
|
end
|
|
9
33
|
|
|
@@ -19,22 +43,8 @@ module Spree
|
|
|
19
43
|
|
|
20
44
|
def dropdown_menu(options = {}, &block)
|
|
21
45
|
options[:class] = ['dropdown-container hidden'] + Array(options[:class])
|
|
22
|
-
|
|
23
|
-
# Extract direction option for backward compatibility and convert to Floating UI placement
|
|
24
|
-
placement = case options.delete(:direction)
|
|
25
|
-
when 'left'
|
|
26
|
-
'bottom-end'
|
|
27
|
-
when 'top'
|
|
28
|
-
'top-start'
|
|
29
|
-
when 'top-left'
|
|
30
|
-
'top-end'
|
|
31
|
-
else
|
|
32
|
-
options[:placement] || 'bottom-start'
|
|
33
|
-
end
|
|
34
|
-
|
|
35
46
|
options[:data] = {
|
|
36
|
-
dropdown_target: 'menu'
|
|
37
|
-
dropdown_placement_value: placement
|
|
47
|
+
dropdown_target: 'menu'
|
|
38
48
|
}.merge(options[:data] || {})
|
|
39
49
|
|
|
40
50
|
content_tag(:div, options, &block)
|
|
@@ -5,6 +5,8 @@ module Spree
|
|
|
5
5
|
# @param title [String, Proc] the title of the modal
|
|
6
6
|
# @return [String]
|
|
7
7
|
def modal_header(title)
|
|
8
|
+
Spree::Deprecation.warn('Bootstrap modals are deprecated and will be removed in Spree 6. Please use native dialogs with `dialog_header` helper.')
|
|
9
|
+
|
|
8
10
|
title = capture(&title) if block_given?
|
|
9
11
|
content_tag(:div, class: 'modal-header') do
|
|
10
12
|
content_tag(:h5, title, class: 'modal-title') + modal_close_button
|
|
@@ -7,15 +7,15 @@ module Spree
|
|
|
7
7
|
# @param [String, nil] icon Optional icon name to prepend to the label
|
|
8
8
|
# @param [Boolean, nil] active Whether the link should be marked as active
|
|
9
9
|
# @return [SafeBuffer] The navigation item HTML
|
|
10
|
-
def nav_item(label = nil, url, icon: nil, active: nil, data: {})
|
|
10
|
+
def nav_item(label = nil, url, icon: nil, active: nil, data: {}, **options)
|
|
11
11
|
content_tag :li, class: 'nav-item', role: 'presentation' do
|
|
12
12
|
if block_given?
|
|
13
|
-
active_link_to url, class: 'nav-link', active: active, data: data do
|
|
13
|
+
active_link_to url, class: 'nav-link', active: active, data: data, **options do
|
|
14
14
|
yield
|
|
15
15
|
end
|
|
16
16
|
else
|
|
17
17
|
label = icon(icon) + label if icon.present? && label.present?
|
|
18
|
-
active_link_to label, url, class: 'nav-link', active: active, data: data
|
|
18
|
+
active_link_to label, url, class: 'nav-link', active: active, data: data, **options
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
end
|
|
@@ -248,7 +248,7 @@ module Spree
|
|
|
248
248
|
end
|
|
249
249
|
|
|
250
250
|
link_to url, class: 'd-flex align-items-center text-decoration-none' do
|
|
251
|
-
content_tag(:span, icon('chevron-left', class: 'mr-0'), class: 'btn hover-gray px-2 d-flex align-items-center') +
|
|
251
|
+
content_tag(:span, icon('chevron-left', class: 'mr-0'), class: 'btn hover-gray shadow-none px-2 d-flex align-items-center shadow-none') +
|
|
252
252
|
content_tag(:span, label, class: 'font-size-base text-black')
|
|
253
253
|
end
|
|
254
254
|
end
|
|
@@ -312,6 +312,49 @@ module Spree
|
|
|
312
312
|
icon(@breadcrumb_icon)
|
|
313
313
|
end
|
|
314
314
|
end
|
|
315
|
+
|
|
316
|
+
# Renders the navigation for the given context
|
|
317
|
+
# @param context [Symbol] the navigation context (:sidebar, :settings, etc.)
|
|
318
|
+
# @param options [Hash] additional options for rendering
|
|
319
|
+
# @return [String] the rendered navigation HTML
|
|
320
|
+
def render_navigation(context = :sidebar, **options)
|
|
321
|
+
return '' if Spree::Admin::RuntimeConfig.legacy_sidebar_navigation
|
|
322
|
+
|
|
323
|
+
items = navigation_items(context)
|
|
324
|
+
return '' if items.empty?
|
|
325
|
+
|
|
326
|
+
render 'spree/admin/shared/navigation',
|
|
327
|
+
items: items,
|
|
328
|
+
context: context,
|
|
329
|
+
**options
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
# Get navigation items for the given context
|
|
333
|
+
# @param context [Symbol] the navigation context
|
|
334
|
+
# @return [Array<Spree::Admin::Navigation::Item>] the visible navigation items
|
|
335
|
+
def navigation_items(context = :sidebar)
|
|
336
|
+
# Pass the view context (self) so that can? and other helpers are available
|
|
337
|
+
Spree.admin.navigation.send(context)&.visible_items(self) || []
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
# Renders page tab navigation for the given context
|
|
341
|
+
# @param context [Symbol] the navigation context (:tax_tabs, :shipping_tabs, etc.)
|
|
342
|
+
# @param options [Hash] additional options for rendering
|
|
343
|
+
# @return [String] the rendered tab navigation HTML wrapped in content_for(:page_tabs)
|
|
344
|
+
def render_tab_navigation(context, **options)
|
|
345
|
+
items = navigation_items(context)
|
|
346
|
+
return '' if items.empty?
|
|
347
|
+
|
|
348
|
+
content_for :page_tabs do
|
|
349
|
+
items.map do |item|
|
|
350
|
+
item_url = item.resolve_url(self)
|
|
351
|
+
item_label = item.resolve_label
|
|
352
|
+
is_active = item.active?(request.path, self)
|
|
353
|
+
|
|
354
|
+
nav_item(item_label, item_url, active: is_active)
|
|
355
|
+
end.join.html_safe
|
|
356
|
+
end
|
|
357
|
+
end
|
|
315
358
|
end
|
|
316
359
|
end
|
|
317
360
|
end
|
|
@@ -2,6 +2,8 @@ module Spree
|
|
|
2
2
|
module Admin
|
|
3
3
|
module OrdersFiltersHelper
|
|
4
4
|
def params_to_filters(search_params:, vendor: nil, user: nil)
|
|
5
|
+
return if search_params.blank?
|
|
6
|
+
|
|
5
7
|
if search_params.is_a?(String)
|
|
6
8
|
search_params = JSON.parse(search_params).deep_symbolize_keys
|
|
7
9
|
end
|
|
@@ -68,6 +70,7 @@ module Spree
|
|
|
68
70
|
# e.g. SELECT DISTINCT DISTINCT "spree_orders".id, "spree_orders"."created_at" AS alias_0 FROM "spree_orders"
|
|
69
71
|
# see https://github.com/spree/spree/pull/3919
|
|
70
72
|
@orders = @search.result(distinct: true).page(params[:page]).per(params[:per_page] || Spree::Admin::RuntimeConfig.admin_orders_per_page)
|
|
73
|
+
@collection = @orders
|
|
71
74
|
end
|
|
72
75
|
|
|
73
76
|
def load_user
|
|
@@ -3,7 +3,7 @@ module Spree
|
|
|
3
3
|
module PromotionActionsHelper
|
|
4
4
|
def options_for_promotion_action_types(promotion)
|
|
5
5
|
existing = promotion.actions.pluck(:type)
|
|
6
|
-
|
|
6
|
+
Spree.promotions.actions.map(&:name).reject { |r| existing.include? r }
|
|
7
7
|
end
|
|
8
8
|
end
|
|
9
9
|
end
|
|
@@ -3,7 +3,7 @@ module Spree
|
|
|
3
3
|
module PromotionRulesHelper
|
|
4
4
|
def options_for_promotion_rule_types(promotion)
|
|
5
5
|
existing = promotion.rules.pluck(:type)
|
|
6
|
-
|
|
6
|
+
Spree.promotions.rules.map(&:name).reject { |r| existing.include? r }
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
def active_options_for_option_value_promotion_rule(promotion_rule)
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
module Admin
|
|
3
3
|
module TranslationsHelper
|
|
4
4
|
def link_to_edit_translations(resource, options = {})
|
|
5
|
-
return unless
|
|
5
|
+
return unless Spree.translatable_resources.map(&:name).include?(resource.class.name)
|
|
6
6
|
return unless can?(:update, resource)
|
|
7
7
|
return unless can?(:update, :translations)
|
|
8
8
|
|
|
@@ -15,7 +15,6 @@ import "mapkick/bundle"
|
|
|
15
15
|
|
|
16
16
|
// Helpers
|
|
17
17
|
import 'spree/admin/helpers/tinymce'
|
|
18
|
-
import 'spree/admin/helpers/canvas'
|
|
19
18
|
import 'spree/admin/helpers/trix/video_embed'
|
|
20
19
|
import 'spree/admin/helpers/bootstrap'
|
|
21
20
|
|
|
@@ -76,6 +75,7 @@ import SearchPickerController from 'spree/admin/controllers/search_picker_contro
|
|
|
76
75
|
import SectionFormController from 'spree/admin/controllers/section_form_controller'
|
|
77
76
|
import SelectController from 'spree/admin/controllers/select_controller'
|
|
78
77
|
import SeoFormController from 'spree/admin/controllers/seo_form_controller'
|
|
78
|
+
import SidebarController from 'spree/admin/controllers/sidebar_controller'
|
|
79
79
|
import SlugFormController from 'spree/admin/controllers/slug_form_controller'
|
|
80
80
|
import StickyController from 'spree/admin/controllers/sticky_controller'
|
|
81
81
|
import SortableAutoSubmit from 'spree/admin/controllers/sortable_auto_submit_controller'
|
|
@@ -141,6 +141,7 @@ application.register('search-picker', SearchPickerController)
|
|
|
141
141
|
application.register('section-form', SectionFormController)
|
|
142
142
|
application.register('select', SelectController)
|
|
143
143
|
application.register('seo-form', SeoFormController)
|
|
144
|
+
application.register('sidebar', SidebarController)
|
|
144
145
|
application.register('slug-form', SlugFormController)
|
|
145
146
|
application.register('sticky', StickyController)
|
|
146
147
|
application.register('sortable', Sortable)
|