spree_admin 5.0.4 → 5.1.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/app/assets/images/login_sidebar_background.png +0 -0
- data/app/assets/stylesheets/spree/admin/components/_bulk_panel.scss +8 -1
- data/app/assets/stylesheets/spree/admin/components/_buttons.scss +12 -20
- data/app/assets/stylesheets/spree/admin/components/_cards.scss +9 -3
- data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +13 -40
- data/app/assets/stylesheets/spree/admin/components/_filters.scss +32 -3
- data/app/assets/stylesheets/spree/admin/components/_main.scss +107 -31
- data/app/assets/stylesheets/spree/admin/components/_media_form.scss +21 -9
- data/app/assets/stylesheets/spree/admin/components/_modals.scss +4 -3
- data/app/assets/stylesheets/spree/admin/components/_navbar.scss +5 -9
- data/app/assets/stylesheets/spree/admin/components/_navigation.scss +0 -1
- data/app/assets/stylesheets/spree/admin/components/_sortable_tree.scss +6 -2
- data/app/assets/stylesheets/spree/admin/components/_tables.scss +35 -5
- data/app/assets/stylesheets/spree/admin/global/_variables.scss +37 -17
- data/app/assets/stylesheets/spree/admin/plugins/tom-select.bootstrap4.scss +5 -4
- data/app/assets/stylesheets/spree/admin/shared/_base.scss +50 -17
- data/app/assets/stylesheets/spree/admin/shared/_forms.scss +6 -2
- data/app/assets/stylesheets/spree/admin/views/_page_builder.scss +30 -21
- data/app/controllers/concerns/spree/admin/breadcrumb_concern.rb +22 -0
- data/app/controllers/concerns/spree/admin/preferences_concern.rb +22 -0
- data/app/controllers/concerns/spree/admin/products_breadcrumb_concern.rb +22 -0
- data/app/controllers/concerns/spree/admin/promotions_breadcrumb_concern.rb +23 -0
- data/app/controllers/concerns/spree/admin/storefront_breadcrumb_concern.rb +12 -0
- data/app/controllers/spree/admin/addresses_controller.rb +4 -0
- data/app/controllers/spree/admin/admin_users_controller.rb +112 -0
- data/app/controllers/spree/admin/assets_controller.rb +7 -9
- data/app/controllers/spree/admin/base_controller.rb +21 -10
- data/app/controllers/spree/admin/checkouts_controller.rb +4 -0
- data/app/controllers/spree/admin/classifications_controller.rb +4 -0
- data/app/controllers/spree/admin/coupon_codes_controller.rb +2 -0
- data/app/controllers/spree/admin/custom_domains_controller.rb +6 -0
- data/app/controllers/spree/admin/customer_returns_controller.rb +4 -0
- data/app/controllers/spree/admin/dashboard_controller.rb +8 -2
- data/app/controllers/spree/admin/digital_assets_controller.rb +8 -0
- data/app/controllers/spree/admin/exports_controller.rb +6 -2
- data/app/controllers/spree/admin/integrations_controller.rb +61 -0
- data/app/controllers/spree/admin/invitations_controller.rb +128 -0
- data/app/controllers/spree/admin/line_items_controller.rb +4 -0
- data/app/controllers/spree/admin/oauth_applications_controller.rb +6 -0
- data/app/controllers/spree/admin/option_types_controller.rb +15 -0
- data/app/controllers/spree/admin/option_values_controller.rb +4 -0
- data/app/controllers/spree/admin/orders/return_authorizations_controller.rb +4 -0
- data/app/controllers/spree/admin/orders_controller.rb +11 -0
- data/app/controllers/spree/admin/page_blocks_controller.rb +9 -2
- data/app/controllers/spree/admin/page_links_controller.rb +9 -0
- data/app/controllers/spree/admin/page_sections_controller.rb +13 -4
- data/app/controllers/spree/admin/pages_controller.rb +7 -0
- data/app/controllers/spree/admin/payment_methods_controller.rb +23 -12
- data/app/controllers/spree/admin/post_categories_controller.rb +3 -0
- data/app/controllers/spree/admin/posts_controller.rb +11 -0
- data/app/controllers/spree/admin/products_controller.rb +11 -8
- data/app/controllers/spree/admin/promotion_actions_controller.rb +10 -2
- data/app/controllers/spree/admin/promotion_rules_controller.rb +10 -2
- data/app/controllers/spree/admin/promotions_controller.rb +6 -0
- data/app/controllers/spree/admin/properties_controller.rb +15 -0
- data/app/controllers/spree/admin/refund_reasons_controller.rb +7 -0
- data/app/controllers/spree/admin/refunds_controller.rb +4 -0
- data/app/controllers/spree/admin/reimbursement_types_controller.rb +7 -0
- data/app/controllers/spree/admin/reimbursements_controller.rb +4 -0
- data/app/controllers/spree/admin/reports_controller.rb +12 -2
- data/app/controllers/spree/admin/resource_controller.rb +1 -1
- data/app/controllers/spree/admin/return_authorization_reasons_controller.rb +7 -0
- data/app/controllers/spree/admin/return_authorizations_controller.rb +4 -0
- data/app/controllers/spree/admin/return_items_controller.rb +6 -0
- data/app/controllers/spree/admin/role_users_controller.rb +36 -0
- data/app/controllers/spree/admin/roles_controller.rb +8 -0
- data/app/controllers/spree/admin/shipments_controller.rb +2 -2
- data/app/controllers/spree/admin/shipping_categories_controller.rb +7 -0
- data/app/controllers/spree/admin/shipping_methods_controller.rb +6 -0
- data/app/controllers/spree/admin/stock_items_controller.rb +13 -0
- data/app/controllers/spree/admin/stock_locations_controller.rb +7 -0
- data/app/controllers/spree/admin/stock_transfers_controller.rb +14 -2
- data/app/controllers/spree/admin/store_credit_categories_controller.rb +5 -0
- data/app/controllers/spree/admin/store_credits_controller.rb +4 -0
- data/app/controllers/spree/admin/storefront_controller.rb +3 -0
- data/app/controllers/spree/admin/stores_controller.rb +17 -2
- data/app/controllers/spree/admin/tax_categories_controller.rb +7 -0
- data/app/controllers/spree/admin/tax_rates_controller.rb +6 -0
- data/app/controllers/spree/admin/taxonomies_controller.rb +15 -0
- data/app/controllers/spree/admin/taxons_controller.rb +24 -1
- data/app/controllers/spree/admin/themes_controller.rb +7 -0
- data/app/controllers/spree/admin/translations_controller.rb +9 -1
- data/app/controllers/spree/admin/user_passwords_controller.rb +22 -0
- data/app/controllers/spree/admin/user_sessions_controller.rb +23 -0
- data/app/controllers/spree/admin/users_controller.rb +11 -2
- data/app/controllers/spree/admin/variants_controller.rb +13 -0
- data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +3 -0
- data/app/controllers/spree/admin/zones_controller.rb +5 -0
- data/app/helpers/spree/admin/base_helper.rb +32 -31
- data/app/helpers/spree/admin/bulk_operations_helper.rb +8 -2
- data/app/helpers/spree/admin/modal_helper.rb +1 -1
- data/app/helpers/spree/admin/navigation_helper.rb +11 -5
- data/app/helpers/spree/admin/posts_helper.rb +1 -1
- data/app/helpers/spree/admin/session_assets_helper.rb +1 -1
- data/app/helpers/spree/admin/stores_helper.rb +1 -18
- data/app/helpers/spree/admin/tags_helper.rb +2 -2
- data/app/javascript/spree/admin/application.js +2 -0
- data/app/javascript/spree/admin/helpers/bootstrap.js +3 -3
- data/app/views/active_storage/_upload_form.html.erb +1 -1
- data/app/views/layouts/spree/minimal.html.erb +22 -0
- data/app/views/spree/admin/admin_users/_admin_user.html.erb +19 -0
- data/app/views/spree/admin/admin_users/_audit_log.html.erb +5 -0
- data/app/views/spree/admin/admin_users/_form.html.erb +12 -0
- data/app/views/spree/admin/admin_users/edit.html.erb +35 -0
- data/app/views/spree/admin/admin_users/index.html.erb +18 -0
- data/app/views/spree/admin/admin_users/new.html.erb +21 -0
- data/app/views/spree/admin/admin_users/show.html.erb +113 -0
- data/app/views/spree/admin/coupon_codes/index.html.erb +6 -6
- data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +1 -1
- data/app/views/spree/admin/customer_returns/index.html.erb +1 -1
- data/app/views/spree/admin/dashboard/_store_preview.html.erb +1 -1
- data/app/views/spree/admin/dashboard/_top_products.html.erb +4 -2
- data/app/views/spree/admin/digital_assets/_table.html.erb +1 -1
- data/app/views/spree/admin/digital_assets/index.html.erb +0 -1
- data/app/views/spree/admin/exports/index.html.erb +1 -1
- data/app/views/spree/admin/integrations/_integration.html.erb +36 -0
- data/app/views/spree/admin/integrations/edit.html.erb +11 -0
- data/app/views/spree/admin/integrations/index.html.erb +23 -0
- data/app/views/spree/admin/integrations/new.html.erb +14 -0
- data/app/views/spree/admin/invitations/_invitation.html.erb +52 -0
- data/app/views/spree/admin/invitations/create.turbo_stream.erb +4 -0
- data/app/views/spree/admin/invitations/index.html.erb +21 -0
- data/app/views/spree/admin/invitations/new.html.erb +32 -0
- data/app/views/spree/admin/invitations/show.html.erb +9 -0
- data/app/views/spree/admin/line_items/new.html.erb +2 -2
- data/app/views/spree/admin/oauth_applications/index.html.erb +1 -1
- data/app/views/spree/admin/option_types/edit.html.erb +1 -1
- data/app/views/spree/admin/option_types/index.html.erb +1 -1
- data/app/views/spree/admin/orders/_customer.html.erb +1 -2
- data/app/views/spree/admin/orders/_filters.html.erb +17 -21
- data/app/views/spree/admin/orders/_list.html.erb +1 -1
- data/app/views/spree/admin/orders/_refunds.html.erb +1 -1
- data/app/views/spree/admin/orders/_shipment.html.erb +1 -1
- data/app/views/spree/admin/orders/_table_filter_dropdown.html.erb +2 -2
- data/app/views/spree/admin/orders/customer_returns/_customer_return.html.erb +1 -1
- data/app/views/spree/admin/orders/customer_returns/_return_item_decision.html.erb +1 -1
- data/app/views/spree/admin/orders/return_authorizations/_form.html.erb +1 -1
- data/app/views/spree/admin/orders/return_authorizations/show.html.erb +2 -2
- data/app/views/spree/admin/page_blocks/_form_tab_buttons.html.erb +5 -7
- data/app/views/spree/admin/page_blocks/edit.html.erb +3 -5
- data/app/views/spree/admin/page_builder/_add_block.html.erb +1 -1
- data/app/views/spree/admin/page_builder/_header.html.erb +35 -28
- data/app/views/spree/admin/page_builder/_pages_dropdown.html.erb +15 -21
- data/app/views/spree/admin/page_builder/_sidebar.html.erb +1 -1
- data/app/views/spree/admin/page_builder/_sidebar_block.html.erb +1 -1
- data/app/views/spree/admin/page_links/_list.html.erb +2 -2
- data/app/views/spree/admin/page_links/edit.html.erb +2 -4
- data/app/views/spree/admin/page_sections/_form_tab_buttons.html.erb +6 -10
- data/app/views/spree/admin/page_sections/new.html.erb +1 -1
- data/app/views/spree/admin/pages/edit.html.erb +2 -2
- data/app/views/spree/admin/payment_methods/index.html.erb +16 -15
- data/app/views/spree/admin/payments/_payment.html.erb +1 -1
- data/app/views/spree/admin/post_categories/index.html.erb +1 -1
- data/app/views/spree/admin/posts/index.html.erb +1 -1
- data/app/views/spree/admin/products/_bulk_operations.html.erb +1 -1
- data/app/views/spree/admin/products/_filters.html.erb +2 -5
- data/app/views/spree/admin/products/_list.html.erb +1 -1
- data/app/views/spree/admin/products/_table_filter_dropdown.html.erb +2 -2
- data/app/views/spree/admin/products/form/_categorization.html.erb +34 -30
- data/app/views/spree/admin/promotion_actions/_promotion_action.html.erb +1 -1
- data/app/views/spree/admin/promotion_rules/_promotion_rule.html.erb +1 -1
- data/app/views/spree/admin/promotions/_filters.html.erb +2 -6
- data/app/views/spree/admin/promotions/_header.html.erb +1 -3
- data/app/views/spree/admin/promotions/_sidebar.html.erb +18 -0
- data/app/views/spree/admin/promotions/_table_filter_dropdown.html.erb +2 -2
- data/app/views/spree/admin/promotions/index.html.erb +1 -1
- data/app/views/spree/admin/properties/edit.html.erb +1 -1
- data/app/views/spree/admin/properties/index.html.erb +1 -1
- data/app/views/spree/admin/refund_reasons/index.html.erb +1 -1
- data/app/views/spree/admin/reimbursement_types/_form.html.erb +22 -14
- data/app/views/spree/admin/reimbursement_types/index.html.erb +1 -1
- data/app/views/spree/admin/reimbursements/edit.html.erb +2 -2
- data/app/views/spree/admin/reimbursements/show.html.erb +1 -1
- data/app/views/spree/admin/reports/_report.html.erb +1 -1
- data/app/views/spree/admin/return_authorization_reasons/index.html.erb +1 -1
- data/app/views/spree/admin/return_authorizations/_filters.html.erb +2 -2
- data/app/views/spree/admin/return_authorizations/_list.html.erb +1 -1
- data/app/views/spree/admin/roles/edit.html.erb +6 -4
- data/app/views/spree/admin/roles/index.html.erb +11 -7
- data/app/views/spree/admin/shared/_alerts.html.erb +1 -1
- data/app/views/spree/admin/shared/_breadcrumbs.html.erb +13 -0
- data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +1 -1
- data/app/views/spree/admin/shared/_content_header.html.erb +3 -3
- data/app/views/spree/admin/shared/_filters_button.html.erb +1 -1
- data/app/views/spree/admin/shared/_filters_search_bar.html.erb +1 -1
- data/app/views/spree/admin/shared/_header.html.erb +26 -17
- data/app/views/spree/admin/shared/_index_table_options.html.erb +1 -1
- data/app/views/spree/admin/shared/_multi_product_picker.html.erb +1 -1
- data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +32 -0
- data/app/views/spree/admin/shared/_no_resource_found.html.erb +6 -3
- data/app/views/spree/admin/shared/_offcanvas_nav.html.erb +1 -14
- data/app/views/spree/admin/shared/_refunds.html.erb +1 -1
- data/app/views/spree/admin/shared/_sidebar.html.erb +0 -8
- data/app/views/spree/admin/shared/_team_nav.html.erb +13 -0
- data/app/views/spree/admin/shared/_user_dropdown.html.erb +25 -20
- data/app/views/spree/admin/shared/devise/_links.html.erb +18 -0
- data/app/views/spree/admin/shared/sidebar/_enterprise_edition_notice.html.erb +7 -5
- data/app/views/spree/admin/shared/sidebar/_integrations_nav.html.erb +5 -7
- data/app/views/spree/admin/shared/sidebar/_orders_nav.html.erb +2 -2
- data/app/views/spree/admin/shared/sidebar/_products_nav.html.erb +2 -2
- data/app/views/spree/admin/shared/sidebar/_promotions_nav.html.erb +17 -0
- data/app/views/spree/admin/shared/sidebar/_returns_nav.html.erb +1 -1
- data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +33 -75
- data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +14 -34
- data/app/views/spree/admin/shared/sidebar/_storefront_nav.html.erb +4 -2
- data/app/views/spree/admin/shared/sidebar/_vendors_nav.html.erb +9 -7
- data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +1 -1
- data/app/views/spree/admin/shipping_categories/index.html.erb +1 -1
- data/app/views/spree/admin/shipping_methods/_form.html.erb +7 -134
- data/app/views/spree/admin/shipping_methods/form/_display.html.erb +25 -0
- data/app/views/spree/admin/shipping_methods/form/_estimated_transit_business_days.html.erb +23 -0
- data/app/views/spree/admin/shipping_methods/form/_shipping_categories.html.erb +21 -0
- data/app/views/spree/admin/shipping_methods/form/_tax_category.html.erb +16 -0
- data/app/views/spree/admin/shipping_methods/form/_tracking_url.html.erb +18 -0
- data/app/views/spree/admin/shipping_methods/form/_zones.html.erb +26 -0
- data/app/views/spree/admin/shipping_methods/index.html.erb +1 -1
- data/app/views/spree/admin/stock_items/index.html.erb +1 -1
- data/app/views/spree/admin/stock_locations/_stock_location.html.erb +5 -3
- data/app/views/spree/admin/stock_locations/index.html.erb +4 -2
- data/app/views/spree/admin/stock_transfers/index.html.erb +1 -1
- data/app/views/spree/admin/store_credit_categories/index.html.erb +1 -1
- data/app/views/spree/admin/store_credits/_list.html.erb +1 -1
- data/app/views/spree/admin/stores/edit_emails.html.erb +1 -1
- data/app/views/spree/admin/stores/form/_emails.html.erb +1 -1
- data/app/views/spree/admin/tax_categories/index.html.erb +1 -1
- data/app/views/spree/admin/tax_rates/index.html.erb +1 -1
- data/app/views/spree/admin/taxonomies/index.html.erb +1 -1
- data/app/views/spree/admin/themes/_theme.html.erb +6 -4
- data/app/views/spree/admin/themes/_theme_preview_image.html.erb +6 -4
- data/app/views/spree/admin/themes/index.html.erb +1 -1
- data/app/views/spree/admin/translations/edit.html.erb +1 -1
- data/app/views/spree/admin/user_passwords/edit.html.erb +21 -0
- data/app/views/spree/admin/user_passwords/new.html.erb +12 -0
- data/app/views/spree/admin/user_sessions/new.html.erb +16 -0
- data/app/views/spree/admin/users/_form.html.erb +9 -7
- data/app/views/spree/admin/users/_user.html.erb +4 -4
- data/app/views/spree/admin/users/index.html.erb +1 -1
- data/app/views/spree/admin/users/new.html.erb +1 -1
- data/app/views/spree/admin/variants/_search_result.html.erb +1 -1
- data/app/views/spree/admin/variants/form/_media_asset.html.erb +1 -1
- data/app/views/spree/admin/webhooks_subscribers/index.html.erb +1 -1
- data/app/views/spree/admin/zones/_form.html.erb +11 -15
- data/app/views/spree/admin/zones/index.html.erb +1 -1
- data/config/locales/en.yml +3 -0
- data/config/routes.rb +16 -4
- data/lib/spree/admin/engine.rb +4 -0
- data/lib/spree/admin.rb +3 -1
- metadata +64 -7
@@ -1,6 +1,8 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class BaseController < Spree::BaseController
|
4
|
+
include Spree::Admin::BreadcrumbConcern
|
5
|
+
|
4
6
|
layout :choose_layout
|
5
7
|
|
6
8
|
helper 'spree/base'
|
@@ -8,6 +10,7 @@ module Spree
|
|
8
10
|
helper 'spree/locale'
|
9
11
|
helper 'spree/currency'
|
10
12
|
helper 'spree/addresses'
|
13
|
+
helper 'spree/integrations'
|
11
14
|
|
12
15
|
before_action :authorize_admin
|
13
16
|
|
@@ -33,20 +36,24 @@ module Spree
|
|
33
36
|
redirect_to spree.admin_forbidden_path, allow_other_host: true
|
34
37
|
else
|
35
38
|
store_location
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
try_to_redirect_to_login_path
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def try_to_redirect_to_login_path
|
44
|
+
if defined?(spree_admin_login_path)
|
45
|
+
redirect_to spree_admin_login_path, allow_other_host: true
|
46
|
+
elsif respond_to?(:spree_login_path)
|
47
|
+
redirect_to spree_login_path, allow_other_host: true
|
48
|
+
elsif spree.respond_to?(:root_path)
|
49
|
+
redirect_to spree.root_path, allow_other_host: true
|
50
|
+
else
|
51
|
+
redirect_to main_app.respond_to?(:root_path) ? main_app.root_path : '/'
|
45
52
|
end
|
46
53
|
end
|
47
54
|
|
48
55
|
def try_spree_current_user
|
49
|
-
if Spree.admin_user_class
|
56
|
+
if Spree.admin_user_class && Spree.admin_user_class != Spree.user_class
|
50
57
|
send("current_#{Spree.admin_user_class.model_name.singular_route_key}")
|
51
58
|
else
|
52
59
|
# use Spree::Core::ControllerHelpers::Auth#try_spree_current_user
|
@@ -54,6 +61,10 @@ module Spree
|
|
54
61
|
end
|
55
62
|
end
|
56
63
|
|
64
|
+
def store_location_session_key
|
65
|
+
"#{Spree.admin_user_class.model_name.singular_route_key.to_sym}_return_to"
|
66
|
+
end
|
67
|
+
|
57
68
|
def flash_message_for(object, event_sym)
|
58
69
|
if object.is_a?(ActiveRecord::Relation)
|
59
70
|
resource_desc = object.model.model_name.human.pluralize
|
@@ -5,6 +5,10 @@ module Spree
|
|
5
5
|
|
6
6
|
before_action :load_user, only: [:index]
|
7
7
|
|
8
|
+
add_breadcrumb Spree.t(:orders), :admin_orders_path
|
9
|
+
add_breadcrumb Spree.t(:draft_orders), :admin_checkouts_path
|
10
|
+
add_breadcrumb_icon 'inbox'
|
11
|
+
|
8
12
|
def index
|
9
13
|
params[:q] ||= {}
|
10
14
|
params[:q][:s] ||= 'created_at desc'
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class CustomDomainsController < ResourceController
|
4
|
+
add_breadcrumb Spree.t(:domains), :admin_custom_domains_path
|
5
|
+
|
4
6
|
protected
|
5
7
|
|
6
8
|
def collection_url
|
@@ -14,6 +16,10 @@ module Spree
|
|
14
16
|
def location_after_save
|
15
17
|
spree.admin_custom_domains_path
|
16
18
|
end
|
19
|
+
|
20
|
+
def permitted_resource_params
|
21
|
+
params.require(:custom_domain).permit(Spree::PermittedAttributes.custom_domain_attributes)
|
22
|
+
end
|
17
23
|
end
|
18
24
|
end
|
19
25
|
end
|
@@ -1,6 +1,10 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class CustomerReturnsController < ResourceController
|
4
|
+
add_breadcrumb_icon 'receipt-refund'
|
5
|
+
add_breadcrumb Spree.t(:returns), :admin_customer_returns_path
|
6
|
+
add_breadcrumb Spree.t(:customer_returns), :admin_customer_returns_path
|
7
|
+
|
4
8
|
def index; end
|
5
9
|
|
6
10
|
private
|
@@ -7,9 +7,15 @@ module Spree
|
|
7
7
|
before_action :load_vendor
|
8
8
|
before_action :clear_return_to, only: %i[show]
|
9
9
|
|
10
|
-
def show
|
10
|
+
def show
|
11
|
+
@breadcrumb_icon = 'home'
|
12
|
+
add_breadcrumb Spree.t(:home), spree.admin_dashboard_path
|
13
|
+
end
|
11
14
|
|
12
|
-
def getting_started
|
15
|
+
def getting_started
|
16
|
+
@breadcrumb_icon = 'map'
|
17
|
+
add_breadcrumb Spree.t('admin.getting_started'), spree.admin_getting_started_path
|
18
|
+
end
|
13
19
|
|
14
20
|
def analytics
|
15
21
|
@orders_scope = current_store.orders.complete.where(currency: params[:analytics_currency])
|
@@ -3,6 +3,10 @@ module Spree
|
|
3
3
|
class DigitalAssetsController < ResourceController
|
4
4
|
belongs_to 'spree/product', find_by: :slug
|
5
5
|
|
6
|
+
include ProductsBreadcrumbConcern
|
7
|
+
|
8
|
+
before_action :add_breadcrumbs
|
9
|
+
|
6
10
|
private
|
7
11
|
|
8
12
|
def model_class
|
@@ -40,6 +44,10 @@ module Spree
|
|
40
44
|
def permitted_resource_params
|
41
45
|
params.require(:digital_asset).permit(permitted_digital_attributes)
|
42
46
|
end
|
47
|
+
|
48
|
+
def add_breadcrumbs
|
49
|
+
add_breadcrumb Spree.t(:digital_assets), spree.admin_product_digital_assets_path(@product)
|
50
|
+
end
|
43
51
|
end
|
44
52
|
end
|
45
53
|
end
|
@@ -40,8 +40,12 @@ module Spree
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def assign_params
|
43
|
-
@object.type =
|
44
|
-
@object.search_params =
|
43
|
+
@object.type = permitted_resource_params[:type] if Spree::Export.available_types.map(&:to_s).include?(permitted_resource_params[:type])
|
44
|
+
@object.search_params = permitted_resource_params[:search_params]
|
45
|
+
end
|
46
|
+
|
47
|
+
def permitted_resource_params
|
48
|
+
params.require(:export).permit(permitted_export_attributes)
|
45
49
|
end
|
46
50
|
end
|
47
51
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class IntegrationsController < ResourceController
|
4
|
+
include Spree::Admin::PreferencesConcern
|
5
|
+
|
6
|
+
prepend_before_action :require_integration_type, only: %i[new create]
|
7
|
+
prepend_before_action :prevent_from_creating_more_integrations, only: %i[new create]
|
8
|
+
|
9
|
+
before_action -> { clear_empty_password_preferences(:integration) }, only: :update
|
10
|
+
|
11
|
+
before_action :check_if_can_connect, only: %i[create update]
|
12
|
+
|
13
|
+
add_breadcrumb Spree.t(:integrations), :admin_integrations_path
|
14
|
+
add_breadcrumb_icon 'plug-connected'
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def allowed_integration_types
|
19
|
+
@allowed_integration_types ||= Rails.application.config.spree.integrations.map { |klass| [klass.to_s, klass] }.to_h
|
20
|
+
end
|
21
|
+
|
22
|
+
def require_integration_type
|
23
|
+
redirect_to spree.admin_integrations_path unless params.dig(:integration, :type).present?
|
24
|
+
end
|
25
|
+
|
26
|
+
def prevent_from_creating_more_integrations
|
27
|
+
type = params.dig(:integration, :type)
|
28
|
+
|
29
|
+
if allowed_integration_types.key?(type) && allowed_integration_types[type].for_store(current_store).exists?
|
30
|
+
redirect_to spree.admin_integrations_path
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_resource
|
35
|
+
return unless params[:integration].present?
|
36
|
+
|
37
|
+
type = params[:integration].delete(:type)
|
38
|
+
|
39
|
+
if allowed_integration_types.key?(type)
|
40
|
+
@object = allowed_integration_types[type].new
|
41
|
+
else
|
42
|
+
flash[:error] = Spree.t('admin.integrations.invalid_integration_type')
|
43
|
+
redirect_to spree.admin_integrations_path
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def check_if_can_connect
|
48
|
+
@integration.attributes = permitted_resource_params
|
49
|
+
|
50
|
+
unless @integration.can_connect?
|
51
|
+
@integration.errors.add(:base, :unable_to_connect, error_message: @integration.connection_error_message)
|
52
|
+
render action == :create ? :new : :edit, status: :unprocessable_entity
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def permitted_resource_params
|
57
|
+
params.require(:integration).permit(*permitted_integration_attributes + @object.preferences.keys.map { |key| "preferred_#{key}" })
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class InvitationsController < BaseController
|
4
|
+
skip_before_action :authorize_admin, only: [:show, :accept]
|
5
|
+
|
6
|
+
add_breadcrumb Spree.t(:users), :admin_admin_users_path
|
7
|
+
add_breadcrumb Spree.t(:invitations), :admin_invitations_path
|
8
|
+
|
9
|
+
before_action :load_parent, except: [:show]
|
10
|
+
before_action :load_invitation, only: [:destroy]
|
11
|
+
before_action :load_roles, only: [:new, :create]
|
12
|
+
|
13
|
+
layout :choose_layout
|
14
|
+
|
15
|
+
# GET /admin/invitations
|
16
|
+
def index
|
17
|
+
params[:q] ||= {}
|
18
|
+
params[:q][:s] ||= 'created_at desc'
|
19
|
+
@search = scope.includes(:inviter, :role).ransack(params[:q])
|
20
|
+
@collection = @search.result
|
21
|
+
end
|
22
|
+
|
23
|
+
# GET /admin/invitations/new
|
24
|
+
def new
|
25
|
+
authorize! :create, Spree::Invitation
|
26
|
+
authorize! :manage, @parent
|
27
|
+
|
28
|
+
@invitation = Spree::Invitation.new
|
29
|
+
@invitation.resource = @parent
|
30
|
+
@invitation.inviter = try_spree_current_user
|
31
|
+
end
|
32
|
+
|
33
|
+
# POST /admin/invitations
|
34
|
+
def create
|
35
|
+
authorize! :create, Spree::Invitation
|
36
|
+
authorize! :manage, @parent
|
37
|
+
|
38
|
+
@invitation = Spree::Invitation.new(permitted_params)
|
39
|
+
@invitation.resource = @parent
|
40
|
+
@invitation.inviter = try_spree_current_user
|
41
|
+
|
42
|
+
if @invitation.save
|
43
|
+
respond_to do |format|
|
44
|
+
format.html { redirect_to spree.admin_invitations_path, notice: flash_message_for(@invitation, :successfully_created) }
|
45
|
+
format.turbo_stream
|
46
|
+
end
|
47
|
+
else
|
48
|
+
render :new, status: :unprocessable_entity
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# GET /admin/invitations/:id?token=:token
|
53
|
+
def show
|
54
|
+
@invitation = Spree::Invitation.pending.not_expired.find_by!(id: params[:id], token: params[:token])
|
55
|
+
@parent = @invitation.resource
|
56
|
+
|
57
|
+
if try_spree_current_user.present?
|
58
|
+
unless @invitation.invitee == try_spree_current_user
|
59
|
+
raise ActiveRecord::RecordNotFound
|
60
|
+
end
|
61
|
+
elsif @invitation.invitee.present?
|
62
|
+
store_location
|
63
|
+
try_to_redirect_to_login_path
|
64
|
+
else
|
65
|
+
redirect_to spree.new_admin_admin_user_path(token: @invitation.token), status: :see_other
|
66
|
+
end
|
67
|
+
rescue ActiveRecord::RecordNotFound
|
68
|
+
redirect_to spree.root_path, alert: Spree.t('invalid_or_expired_invitation')
|
69
|
+
nil
|
70
|
+
end
|
71
|
+
|
72
|
+
# PUT /admin/invitations/:id/accept
|
73
|
+
def accept
|
74
|
+
@invitation = try_spree_current_user.invitations.pending.not_expired.find(params[:id])
|
75
|
+
|
76
|
+
authorize! :accept, @invitation
|
77
|
+
|
78
|
+
@invitation.accept!
|
79
|
+
redirect_to spree.admin_path, notice: Spree.t('invitation_accepted')
|
80
|
+
end
|
81
|
+
|
82
|
+
# PUT /admin/invitations/:id/resend
|
83
|
+
def resend
|
84
|
+
@invitation = scope.find(params[:id])
|
85
|
+
@invitation.resend!
|
86
|
+
redirect_back fallback_location: spree.admin_invitations_path, notice: Spree.t('invitation_resent')
|
87
|
+
end
|
88
|
+
|
89
|
+
# DELETE /admin/invitations/:id
|
90
|
+
def destroy
|
91
|
+
authorize! :destroy, @invitation
|
92
|
+
|
93
|
+
@invitation.destroy
|
94
|
+
redirect_back fallback_location: spree.admin_invitations_path, notice: flash_message_for(@invitation, :successfully_removed)
|
95
|
+
end
|
96
|
+
|
97
|
+
private
|
98
|
+
|
99
|
+
def load_invitation
|
100
|
+
@invitation = scope.find(params[:id])
|
101
|
+
end
|
102
|
+
|
103
|
+
def load_parent
|
104
|
+
@parent = current_store
|
105
|
+
end
|
106
|
+
|
107
|
+
def scope
|
108
|
+
Spree::Invitation.accessible_by(current_ability).where(resource: @parent)
|
109
|
+
end
|
110
|
+
|
111
|
+
def load_roles
|
112
|
+
@roles = Spree::Role.accessible_by(current_ability)
|
113
|
+
end
|
114
|
+
|
115
|
+
def permitted_params
|
116
|
+
params.require(:invitation).permit(Spree::PermittedAttributes.invitation_attributes)
|
117
|
+
end
|
118
|
+
|
119
|
+
def choose_layout
|
120
|
+
action_name == 'show' ? 'spree/minimal' : 'spree/admin'
|
121
|
+
end
|
122
|
+
|
123
|
+
def model_class
|
124
|
+
Spree::Invitation
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -3,6 +3,8 @@ module Spree
|
|
3
3
|
class OauthApplicationsController < ResourceController
|
4
4
|
before_action :set_default_scopes, only: [:new, :edit]
|
5
5
|
|
6
|
+
add_breadcrumb Spree.t(:developers), :admin_oauth_applications_path
|
7
|
+
|
6
8
|
private
|
7
9
|
|
8
10
|
def collection
|
@@ -22,6 +24,10 @@ module Spree
|
|
22
24
|
def set_default_scopes
|
23
25
|
@object.scopes = 'admin' if @object.scopes.blank?
|
24
26
|
end
|
27
|
+
|
28
|
+
def permitted_resource_params
|
29
|
+
params.require(:oauth_application).permit(:name, :scopes)
|
30
|
+
end
|
25
31
|
end
|
26
32
|
end
|
27
33
|
end
|
@@ -3,6 +3,11 @@ module Spree
|
|
3
3
|
class OptionTypesController < ResourceController
|
4
4
|
before_action :setup_new_option_value, only: :edit
|
5
5
|
|
6
|
+
include ProductsBreadcrumbConcern
|
7
|
+
add_breadcrumb Spree.t(:options), :admin_option_types_path
|
8
|
+
|
9
|
+
before_action :add_breadcrumbs
|
10
|
+
|
6
11
|
private
|
7
12
|
|
8
13
|
def collection
|
@@ -18,6 +23,16 @@ module Spree
|
|
18
23
|
def setup_new_option_value
|
19
24
|
@option_type.option_values.build if @option_type.option_values.empty?
|
20
25
|
end
|
26
|
+
|
27
|
+
def add_breadcrumbs
|
28
|
+
if @option_type.present? && @option_type.persisted?
|
29
|
+
add_breadcrumb @option_type.presentation, spree.edit_admin_option_type_path(@option_type)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def permitted_resource_params
|
34
|
+
params.require(:option_type).permit(permitted_option_type_attributes)
|
35
|
+
end
|
21
36
|
end
|
22
37
|
end
|
23
38
|
end
|
@@ -11,12 +11,23 @@ module Spree
|
|
11
11
|
|
12
12
|
helper_method :model_class
|
13
13
|
|
14
|
+
add_breadcrumb Spree.t(:orders), :admin_orders_path
|
15
|
+
add_breadcrumb_icon 'inbox'
|
16
|
+
|
14
17
|
def create
|
15
18
|
@order = Spree::Order.create(created_by: try_spree_current_user, store: current_store)
|
16
19
|
|
17
20
|
redirect_to spree.edit_admin_order_path(@order)
|
18
21
|
end
|
19
22
|
|
23
|
+
def edit
|
24
|
+
unless @order.completed?
|
25
|
+
add_breadcrumb Spree.t(:draft_orders), :admin_checkouts_path
|
26
|
+
end
|
27
|
+
|
28
|
+
add_breadcrumb @order.number, spree.edit_admin_order_path(@order)
|
29
|
+
end
|
30
|
+
|
20
31
|
def index
|
21
32
|
params[:q] ||= {}
|
22
33
|
params[:q][:s] ||= 'completed_at desc'
|
@@ -27,9 +27,10 @@ module Spree
|
|
27
27
|
|
28
28
|
def create
|
29
29
|
page_block_type = params.dig(:page_block, :type)
|
30
|
+
allowed_type = allowed_types.find { |type| type.to_s == page_block_type }
|
30
31
|
|
31
|
-
if
|
32
|
-
@page_block =
|
32
|
+
if allowed_type
|
33
|
+
@page_block = allowed_type.new
|
33
34
|
@page_block.section = @page_section
|
34
35
|
@page_block.save!
|
35
36
|
end
|
@@ -43,6 +44,12 @@ module Spree
|
|
43
44
|
*parent&.available_blocks_to_add
|
44
45
|
].uniq.sort_by(&:name)
|
45
46
|
end
|
47
|
+
|
48
|
+
def permitted_resource_params
|
49
|
+
params.require(:page_block).permit(
|
50
|
+
permitted_page_block_attributes + @object.preferences.keys.map { |key| "preferred_#{key}" }
|
51
|
+
)
|
52
|
+
end
|
46
53
|
end
|
47
54
|
end
|
48
55
|
end
|
@@ -38,6 +38,15 @@ module Spree
|
|
38
38
|
@page_link.linkable_type ||= @parent.default_linkable_type
|
39
39
|
@page_link.linkable ||= @parent.default_linkable_resource
|
40
40
|
end
|
41
|
+
|
42
|
+
# for create action we don't pass the page_link at all
|
43
|
+
def permitted_resource_params
|
44
|
+
if params[:page_link].present?
|
45
|
+
params.require(:page_link).permit(permitted_page_link_attributes)
|
46
|
+
else
|
47
|
+
{}
|
48
|
+
end
|
49
|
+
end
|
41
50
|
end
|
42
51
|
end
|
43
52
|
end
|
@@ -9,10 +9,15 @@ module Spree
|
|
9
9
|
page_section_type = params.dig(:page_section, :type)
|
10
10
|
allowed_types = available_page_section_types.map(&:to_s)
|
11
11
|
|
12
|
-
if allowed_types.include?(page_section_type)
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
if allowed_types.include?(page_section_type)
|
13
|
+
# Find the actual class from our allowed types rather than using constantize
|
14
|
+
section_class = available_page_section_types.find { |type| type.to_s == page_section_type }
|
15
|
+
|
16
|
+
if section_class
|
17
|
+
@page_section = section_class.new(permitted_resource_params)
|
18
|
+
@page_section.pageable = @pageable
|
19
|
+
@page_section.save!
|
20
|
+
end
|
16
21
|
end
|
17
22
|
end
|
18
23
|
|
@@ -64,6 +69,10 @@ module Spree
|
|
64
69
|
[]
|
65
70
|
end
|
66
71
|
end
|
72
|
+
|
73
|
+
def permitted_resource_params
|
74
|
+
params.require(:page_section).permit(permitted_page_section_attributes + @object.preferences.keys.map { |key| "preferred_#{key}" })
|
75
|
+
end
|
67
76
|
end
|
68
77
|
end
|
69
78
|
end
|
@@ -6,6 +6,9 @@ module Spree
|
|
6
6
|
destroy.after :remove_preview_from_session
|
7
7
|
create.after :remove_preview_from_session
|
8
8
|
|
9
|
+
include StorefrontBreadcrumbConcern
|
10
|
+
add_breadcrumb Spree.t(:pages), :admin_pages_path
|
11
|
+
|
9
12
|
private
|
10
13
|
|
11
14
|
def remove_preview_from_session
|
@@ -35,6 +38,10 @@ module Spree
|
|
35
38
|
@search = @collection.ransack(params[:q])
|
36
39
|
@collection = @search.result.page(params[:page]).per(params[:per_page])
|
37
40
|
end
|
41
|
+
|
42
|
+
def permitted_resource_params
|
43
|
+
params.require(:page).permit(permitted_page_attributes)
|
44
|
+
end
|
38
45
|
end
|
39
46
|
end
|
40
47
|
end
|
@@ -1,13 +1,25 @@
|
|
1
1
|
module Spree
|
2
2
|
module Admin
|
3
3
|
class PaymentMethodsController < ResourceController
|
4
|
+
include Spree::Admin::PreferencesConcern
|
5
|
+
add_breadcrumb Spree.t(:payment_methods), :admin_payment_methods_path
|
6
|
+
|
4
7
|
prepend_before_action :require_payment_type, only: [:new, :create]
|
5
|
-
before_action :
|
8
|
+
before_action -> { clear_empty_password_preferences(:payment_method) }, only: :update
|
9
|
+
before_action :set_breadcrumb, only: :edit
|
6
10
|
|
7
11
|
private
|
8
12
|
|
9
13
|
def build_resource
|
10
|
-
|
14
|
+
if params[:payment_method].present?
|
15
|
+
payment_type = params[:payment_method].delete(:type)
|
16
|
+
# Find the actual class from our allowed types rather than using constantize
|
17
|
+
payment_class = allowed_payment_types.find { |type| type.to_s == payment_type }
|
18
|
+
|
19
|
+
if payment_class
|
20
|
+
@object = payment_class.new
|
21
|
+
end
|
22
|
+
end
|
11
23
|
end
|
12
24
|
|
13
25
|
def collection
|
@@ -28,17 +40,16 @@ module Spree
|
|
28
40
|
redirect_to spree.admin_payment_methods_path unless params.dig(:payment_method, :type).present?
|
29
41
|
end
|
30
42
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
password_preferences.each do |preference|
|
35
|
-
preference_key = "preferred_#{preference}"
|
43
|
+
def set_breadcrumb
|
44
|
+
add_breadcrumb @payment_method.name, spree.edit_admin_payment_method_path(@payment_method)
|
45
|
+
end
|
36
46
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
47
|
+
def allowed_payment_types
|
48
|
+
Rails.application.config.spree.payment_methods
|
49
|
+
end
|
50
|
+
|
51
|
+
def permitted_resource_params
|
52
|
+
params.require(:payment_method).permit(permitted_payment_method_attributes + @object.preferences.keys.map { |key| "preferred_#{key}" })
|
42
53
|
end
|
43
54
|
end
|
44
55
|
end
|
@@ -3,6 +3,11 @@ module Spree
|
|
3
3
|
class PostsController < ResourceController
|
4
4
|
before_action :load_post_categories
|
5
5
|
|
6
|
+
include StorefrontBreadcrumbConcern
|
7
|
+
add_breadcrumb Spree.t(:posts), :admin_posts_path
|
8
|
+
|
9
|
+
before_action :add_breadcrumb_for_post, only: [:edit, :update]
|
10
|
+
|
6
11
|
def select_options
|
7
12
|
render json: current_store.posts.published.to_tom_select_json
|
8
13
|
end
|
@@ -24,6 +29,12 @@ module Spree
|
|
24
29
|
def load_post_categories
|
25
30
|
@post_categories = current_store.post_categories.accessible_by(current_ability).order(:title)
|
26
31
|
end
|
32
|
+
|
33
|
+
def add_breadcrumb_for_post
|
34
|
+
return unless @post.present?
|
35
|
+
|
36
|
+
add_breadcrumb @post.title, spree.edit_admin_post_path(@post)
|
37
|
+
end
|
27
38
|
end
|
28
39
|
end
|
29
40
|
end
|