spree_admin 5.2.0.rc2 → 5.2.0.rc3

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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spree/admin/components/_alerts.scss +1 -1
  3. data/app/assets/stylesheets/spree/admin/components/_buttons.scss +5 -4
  4. data/app/assets/stylesheets/spree/admin/components/_dialogs.scss +0 -1
  5. data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +4 -0
  6. data/app/assets/stylesheets/spree/admin/components/_main.scss +7 -7
  7. data/app/assets/stylesheets/spree/admin/components/_tables.scss +2 -2
  8. data/app/assets/stylesheets/spree/admin/components/_variants_form.scss +1 -2
  9. data/app/assets/stylesheets/spree/admin/global/_variables.scss +14 -12
  10. data/app/assets/stylesheets/spree/admin/shared/_base.scss +2 -2
  11. data/app/assets/stylesheets/spree/admin/shared/_forms.scss +5 -6
  12. data/app/controllers/spree/admin/admin_users_controller.rb +0 -2
  13. data/app/controllers/spree/admin/checkouts_controller.rb +1 -4
  14. data/app/controllers/spree/admin/coupon_codes_controller.rb +0 -14
  15. data/app/controllers/spree/admin/customer_returns_controller.rb +0 -13
  16. data/app/controllers/spree/admin/digital_assets_controller.rb +2 -2
  17. data/app/controllers/spree/admin/exports_controller.rb +2 -9
  18. data/app/controllers/spree/admin/gift_cards_controller.rb +7 -14
  19. data/app/controllers/spree/admin/invitations_controller.rb +0 -2
  20. data/app/controllers/spree/admin/oauth_applications_controller.rb +0 -10
  21. data/app/controllers/spree/admin/option_types_controller.rb +0 -10
  22. data/app/controllers/spree/admin/orders_controller.rb +1 -1
  23. data/app/controllers/spree/admin/pages_controller.rb +1 -1
  24. data/app/controllers/spree/admin/payment_methods_controller.rb +0 -10
  25. data/app/controllers/spree/admin/policies_controller.rb +4 -0
  26. data/app/controllers/spree/admin/posts_controller.rb +2 -10
  27. data/app/controllers/spree/admin/properties_controller.rb +0 -12
  28. data/app/controllers/spree/admin/resource_controller.rb +27 -17
  29. data/app/controllers/spree/admin/return_authorizations_controller.rb +0 -10
  30. data/app/controllers/spree/admin/shipping_methods_controller.rb +4 -0
  31. data/app/controllers/spree/admin/stock_items_controller.rb +8 -11
  32. data/app/controllers/spree/admin/stock_locations_controller.rb +1 -1
  33. data/app/controllers/spree/admin/stock_transfers_controller.rb +0 -10
  34. data/app/controllers/spree/admin/store_credits_controller.rb +35 -35
  35. data/app/controllers/spree/admin/taxonomies_controller.rb +0 -10
  36. data/app/controllers/spree/admin/themes_controller.rb +6 -2
  37. data/app/controllers/spree/admin/users_controller.rb +7 -17
  38. data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +0 -10
  39. data/app/controllers/spree/admin/zones_controller.rb +0 -7
  40. data/app/helpers/spree/admin/dropdown_helper.rb +18 -16
  41. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  42. data/app/helpers/spree/admin/orders_filters_helper.rb +2 -0
  43. data/app/models/spree/admin/form_builder.rb +13 -12
  44. data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +1 -1
  45. data/app/views/spree/admin/digital_assets/_table.html.erb +1 -1
  46. data/app/views/spree/admin/gift_cards/_filters.html.erb +2 -1
  47. data/app/views/spree/admin/integrations/index.html.erb +20 -8
  48. data/app/views/spree/admin/invitations/new.html.erb +2 -1
  49. data/app/views/spree/admin/metafield_definitions/_filters.html.erb +1 -1
  50. data/app/views/spree/admin/newsletter_subscribers/_filters.html.erb +1 -1
  51. data/app/views/spree/admin/newsletter_subscribers/_table_header.html.erb +2 -2
  52. data/app/views/spree/admin/oauth_applications/_table_header.html.erb +1 -1
  53. data/app/views/spree/admin/orders/_customer.html.erb +1 -1
  54. data/app/views/spree/admin/orders/_filters.html.erb +4 -5
  55. data/app/views/spree/admin/orders/_header.html.erb +0 -5
  56. data/app/views/spree/admin/orders/_list.html.erb +3 -3
  57. data/app/views/spree/admin/page_blocks/edit.html.erb +3 -3
  58. data/app/views/spree/admin/page_builder/_add_block.html.erb +1 -1
  59. data/app/views/spree/admin/page_builder/_header.html.erb +1 -1
  60. data/app/views/spree/admin/page_builder/_pages_dropdown.html.erb +2 -2
  61. data/app/views/spree/admin/page_builder/_sidebar_block.html.erb +1 -1
  62. data/app/views/spree/admin/page_builder/_sidebar_colors.html.erb +2 -2
  63. data/app/views/spree/admin/page_builder/_sidebar_fonts.html.erb +3 -3
  64. data/app/views/spree/admin/page_builder/_sidebar_section.html.erb +1 -1
  65. data/app/views/spree/admin/page_links/_list.html.erb +1 -1
  66. data/app/views/spree/admin/page_links/edit.html.erb +1 -1
  67. data/app/views/spree/admin/page_sections/edit.html.erb +3 -3
  68. data/app/views/spree/admin/page_sections/new.html.erb +1 -1
  69. data/app/views/spree/admin/pages/_table_header.html.erb +3 -3
  70. data/app/views/spree/admin/payment_methods/index.html.erb +5 -1
  71. data/app/views/spree/admin/policies/_filters.html.erb +1 -1
  72. data/app/views/spree/admin/products/_bulk_operations.html.erb +2 -2
  73. data/app/views/spree/admin/products/edit.html.erb +0 -2
  74. data/app/views/spree/admin/products/form/_status.html.erb +0 -3
  75. data/app/views/spree/admin/products/form/_variants.html.erb +1 -1
  76. data/app/views/spree/admin/promotions/_table_header.html.erb +1 -1
  77. data/app/views/spree/admin/promotions/form/_kind.html.erb +4 -4
  78. data/app/views/spree/admin/refund_reasons/_table_header.html.erb +1 -1
  79. data/app/views/spree/admin/reimbursement_types/_table_header.html.erb +1 -1
  80. data/app/views/spree/admin/return_authorization_reasons/_table_header.html.erb +1 -1
  81. data/app/views/spree/admin/roles/index.html.erb +1 -1
  82. data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +2 -2
  83. data/app/views/spree/admin/shared/_content_header.html.erb +4 -1
  84. data/app/views/spree/admin/shared/_index_table.html.erb +5 -4
  85. data/app/views/spree/admin/shared/_index_table_options.html.erb +1 -1
  86. data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +1 -1
  87. data/app/views/spree/admin/shared/_user_dropdown.html.erb +4 -3
  88. data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +1 -1
  89. data/app/views/spree/admin/shipping_categories/_table_header.html.erb +1 -1
  90. data/app/views/spree/admin/shipping_methods/_table_header.html.erb +1 -1
  91. data/app/views/spree/admin/stock_locations/_table_header.html.erb +2 -2
  92. data/app/views/spree/admin/store_credit_categories/index.html.erb +1 -1
  93. data/app/views/spree/admin/store_credits/_list.html.erb +3 -3
  94. data/app/views/spree/admin/stores/form/_checkout.html.erb +2 -2
  95. data/app/views/spree/admin/stores/form/_checkout_links.html.erb +1 -1
  96. data/app/views/spree/admin/tax_categories/_table_header.html.erb +2 -2
  97. data/app/views/spree/admin/tax_rates/_table_header.html.erb +2 -2
  98. data/app/views/spree/admin/taxonomies/_table_header.html.erb +1 -1
  99. data/app/views/spree/admin/users/_filters.html.erb +4 -5
  100. data/app/views/spree/admin/users/index.html.erb +1 -1
  101. data/config/locales/en.yml +2 -0
  102. data/lib/generators/spree/admin/scaffold/templates/views/_filters.html.erb.tt +1 -1
  103. data/lib/generators/spree/admin/scaffold/templates/views/_table_header.html.erb.tt +2 -2
  104. metadata +8 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57e59ddd5613ed6add9a0bc7b66e9effa39e85f763750a3b4e2bede3e8f203da
4
- data.tar.gz: bf9a3fc04741c70271817e9c81e1709e3a8de2a80f34771a3ce701391c5911d7
3
+ metadata.gz: 0ef3af7b481c377e93088f7ef61e1cd421b56db13d4fe9a55ec294a5c0e79588
4
+ data.tar.gz: 77c2dd8457a3acb0753c537b965e9d87913a77622b29cef116948fcbef535e6a
5
5
  SHA512:
6
- metadata.gz: f513a0d0377068700800f84a23bb46eb61447252dddf16a78bda9deba79a9574c0499b562138c6c9cab7c72c98c733c81a4f1512c695aeb55f023fe2b2e58211
7
- data.tar.gz: 21d4d0fcaf4029d2c5686dc73627aad315e5167b4c7d30a065bddd9f641f6bfd1dc74c780f8ec8695bb2ba0c748f30c10d997c948e934a0176b1703432bfb5c1
6
+ metadata.gz: c1155835ff2117a7265fe3cb6f27308ed51a23edbefcb3ed4f6a2919b42d10630de9aab7f0ffe4363a8503260e0e5bb49760ba4ee58a3dbef6c9acbf1d6e30a9
7
+ data.tar.gz: d936e9e79c1161aca8750c638257055b841646636859a10310cc4c8ec2e4c9136982b989f9841845ddf444d0206c8da49b25211fdb4bbb3bb944e061f7b58251
@@ -63,7 +63,7 @@
63
63
 
64
64
  .alert {
65
65
  border-width: 1px;
66
- box-shadow: $box-shadow-xs;
66
+ box-shadow: $box-shadow-sm;
67
67
  border-radius: $border-radius-lg;
68
68
  }
69
69
  }
@@ -10,11 +10,13 @@ button[disabled] .show-when-enabled { display: none; }
10
10
  }
11
11
 
12
12
  .btn {
13
- box-shadow: $btn-box-shadow;
14
-
15
13
  transition: background-color 0.1s linear 0s, border-color 0.2s linear 0s !important;
16
14
  }
17
15
 
16
+ .btn-primary, .btn-light, .btn-secondary {
17
+ box-shadow: $btn-box-shadow;
18
+ }
19
+
18
20
  .btn,
19
21
  .nav-pills > li > a {
20
22
  vertical-align: middle;
@@ -31,9 +33,8 @@ button[disabled] .show-when-enabled { display: none; }
31
33
  }
32
34
 
33
35
  .ti {
34
- font-size: 130%;
36
+ font-size: 120%;
35
37
  vertical-align: middle;
36
- line-height: 130%;
37
38
  }
38
39
 
39
40
  .btn {
@@ -198,7 +198,6 @@ dialog:open {
198
198
 
199
199
  .btn {
200
200
  display: inline-flex;
201
- height: 2.5rem;
202
201
  }
203
202
  }
204
203
  }
@@ -51,6 +51,7 @@
51
51
  align-items: center;
52
52
  justify-content: flex-start;
53
53
  background: transparent;
54
+ height: 2rem;
54
55
 
55
56
  transition-property: background-color, color;
56
57
  transition-duration: 0.01s;
@@ -72,6 +73,9 @@
72
73
  &.btn {
73
74
  font-weight: $font-weight-base !important;
74
75
  }
76
+ &.btn-danger {
77
+ box-shadow: none;
78
+ }
75
79
  }
76
80
  .dropdown-item.active {
77
81
  color: theme-color('black') !important;
@@ -149,25 +149,24 @@
149
149
  .nav {
150
150
  padding-left: 0.75rem;
151
151
  padding-right: 0.75rem;
152
- gap: 0.2rem;
152
+ gap: 0.25rem;
153
153
  display: flex;
154
154
  flex-direction: column;
155
155
  }
156
156
 
157
157
  .nav-link {
158
- border-radius: $nav-pills-border-radius;
158
+ border-radius: $border-radius-lg;
159
159
  display: flex;
160
160
  align-items: center;
161
- padding-left: 0.35rem;
162
- padding-right: 0.35rem;
163
- padding-top: 0.35rem;
164
- padding-bottom: 0.35rem;
161
+ padding-left: 0.25rem;
162
+ padding-right: 0.25rem;
163
+ padding-top: 0.25rem;
164
+ padding-bottom: 0.25rem;
165
165
  color: inherit;
166
166
 
167
167
  transition: background-color 0.1s ease-in-out;
168
168
 
169
169
  .ti {
170
- font-size: 1.125rem !important;
171
170
  margin-right: 0.5rem;
172
171
  border-radius: $border-radius;
173
172
  padding: 0.2rem 0.2rem;
@@ -194,6 +193,7 @@
194
193
 
195
194
  .badge:not(.badge-info) {
196
195
  @extend .badge-light;
196
+ border-radius: $border-radius;
197
197
  }
198
198
  }
199
199
 
@@ -35,8 +35,8 @@ table.table {
35
35
  th {
36
36
  background-color: $light;
37
37
  @extend .text-muted;
38
- font-size: $font-size-base;
39
- font-weight: $font-weight-normal;
38
+ font-size: $font-size-sm;
39
+ font-weight: $font-weight-medium;
40
40
  vertical-align: middle;
41
41
  padding-top: 0.45rem;
42
42
  padding-bottom: 0.45rem;
@@ -80,8 +80,7 @@
80
80
  .new_option_button {
81
81
  @extend .btn;
82
82
  @extend .btn-secondary;
83
- @extend .py-3;
84
- @extend .mt-2;
83
+ @extend .py-2;
85
84
  width: 100%;
86
85
  justify-content: flex-start;
87
86
  }
@@ -60,7 +60,7 @@ $body-bg: $white !default;
60
60
  $enable-shadows: false;
61
61
  $enable-responsive-font-sizes: true;
62
62
  $font-family-sans-serif: Inter, sans-serif !default;
63
- $font-size-base: 0.8125rem !default;
63
+ $font-size-base: 0.875rem !default;
64
64
  $font-size-plus: 0.875rem !default;
65
65
  $font-size-sm: 0.75rem !default;
66
66
  $font-size-lg: 1rem !default;
@@ -73,7 +73,7 @@ $border-radius: 0.5rem !default;
73
73
  $border-radius-sm: 0.4rem !default;
74
74
  $border-radius-lg: 0.75rem !default;
75
75
  $border-color: rgba($gray-100, 0.85) !default;
76
- $input-border-color: rgba($gray-200, 0.85) !default;
76
+ $input-border-color: $gray-200 !default;
77
77
  $list-group-border-color: $border-color !default;
78
78
  $list-group-hover-bg: $gray-25 !default;
79
79
  $list-group-active-bg: $action !default;
@@ -91,7 +91,7 @@ $card-spacer-x: 1.25rem !default;
91
91
  $component-active-bg: $blue !default;
92
92
 
93
93
  $input-placeholder-color: $gray-500;
94
- $input-padding-y: .55rem !default;
94
+ $input-padding-y: .5rem !default;
95
95
  $input-disabled-bg: $gray-25 !default;
96
96
  $input-focus-border-color: $blue !default;
97
97
  $custom-select-disabled-bg: $gray-50 !default;
@@ -103,15 +103,17 @@ $link-hover-decoration: underline !default;
103
103
 
104
104
  $btn-active-box-shadow: inset 0 3px 5px rgba($black, .025) !default;
105
105
  $btn-disabled-opacity: 0.7 !default;
106
+ $btn-padding-y: 0.35rem !default;
107
+ $btn-padding-x: 0.75rem !default;
106
108
 
107
- $nav-link-padding-y: .5rem !default;
108
- $nav-link-padding-x: .6rem !default;
109
+ $nav-link-padding-y: .35rem !default;
110
+ $nav-link-padding-x: .75rem !default;
109
111
 
110
112
  $box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06) !default;
111
- $box-shadow-xs: rgba(43, 34, 51, 0.03) 0px 1px 1px !default;
113
+ $box-shadow-xs: rgba(43, 34, 51, 0.05) 0px 1px 1px !default;
112
114
  $box-shadow-lg: rgba(0, 5, 13, 0.5) 0px 4px 8px 2px;
113
115
  $input-box-shadow: $box-shadow-xs !default;
114
- $btn-box-shadow: $input-box-shadow !default;
116
+ $btn-box-shadow: $box-shadow-xs !default;
115
117
 
116
118
  $btn-font-weight: $font-weight-medium !default;
117
119
 
@@ -166,15 +168,15 @@ $display4-weight: 400 !default;
166
168
  $dropdown-bg: $white !default;
167
169
  $dropdown-border-width: 0px !default;
168
170
  $dropdown-border-radius: 1rem !default;
169
- $dropdown-inner-border-radius: 0.75rem !default;
171
+ $dropdown-inner-border-radius: 0.8rem !default;
170
172
  $dropdown-link-hover-bg: rgba($gray-100, 0.5) !default;
171
- $dropdown-box-shadow: 0px 0px 0px 1px $gray-200, 0px 6px 12px -3px rgba($gray-300, 0.35), 0px 6px 18px 0px rgba($gray-300, 0.35) !default;
173
+ $dropdown-box-shadow: 0px 0px 0px 1px rgba($gray-300, 0.5), 0px 6px 12px -3px rgba($gray-300, 0.35), 0px 6px 18px 0px rgba($gray-300, 0.35) !default;
172
174
  $dropdown-padding-x: 0.25rem !default;
173
175
  $dropdown-padding-y: 0.25rem !default;
174
176
  $dropdown-divider-bg: $gray-50 !default;
175
177
  $dropdown-divider-margin-y: 0.25rem !default;
176
178
  $dropdown-header-color: $text-muted !default;
177
- $dropdown-item-padding-y: 0.45rem !default;
179
+ $dropdown-item-padding-y: 0.5rem !default;
178
180
  $dropdown-item-padding-x: 0.65rem !default;
179
181
 
180
182
  $zindex-dropdown: 1050;
@@ -213,7 +215,7 @@ $embed-responsive-aspect-ratios: (
213
215
  ) !default;
214
216
 
215
217
  // tables
216
- $table-cell-padding: 1.15rem .75rem !default;
218
+ $table-cell-padding: 1rem .75rem !default;
217
219
 
218
220
  $code-color: $body-color !default;
219
221
  $code-bg: $gray-50 !default;
@@ -223,7 +225,7 @@ $list-group-bg: transparent !default;
223
225
  $list-group-item-padding-x: 1.25rem !default;
224
226
  $list-group-item-padding-y: 0.75rem !default;
225
227
  $header-bg: $body-bg !default;
226
- $header-height: 54px !default;
228
+ $header-height: 58px !default;
227
229
  $sidebar-width: 220px !default;
228
230
  $sidebar-bg: $light !default;
229
231
 
@@ -7,7 +7,7 @@ html {
7
7
  }
8
8
  body {
9
9
  @extend .h-100;
10
- overflow-y:scroll;
10
+ overflow-y: scroll;
11
11
  }
12
12
 
13
13
  body * {
@@ -163,7 +163,7 @@ strong {
163
163
  }
164
164
  .focus-shadow {
165
165
  &:focus, &:focus-within, &:active {
166
- box-shadow: $input-btn-focus-box-shadow;
166
+ box-shadow: $input-focus-box-shadow;
167
167
  }
168
168
  }
169
169
  .focus-border {
@@ -1,6 +1,10 @@
1
1
  .custom-checkbox .custom-control-label::before {
2
2
  border-radius: 0.25rem !important;
3
3
  border-color: $input-border-color;
4
+ box-shadow: $input-box-shadow;
5
+ }
6
+ .custom-checkbox .custom-control-label::before, .custom-checkbox .custom-control-label::after {
7
+ top: 0rem;
4
8
  }
5
9
 
6
10
  label {
@@ -22,7 +26,7 @@ label {
22
26
  }
23
27
 
24
28
  .form-text {
25
- font-size: $font-size-sm;
29
+ font-size: $font-size-base;
26
30
  color: $text-muted;
27
31
  margin-top: 0;
28
32
  }
@@ -71,11 +75,6 @@ input[type="file"] {
71
75
  border-radius: $input-border-radius;
72
76
  padding-right: 2.5rem;
73
77
  }
74
- .custom-select, .form-control, .ts-control {
75
- &:hover:not(:focus):not(:active):not(.active):not(:focus-visible):not(:focus-within) {
76
- border: 1px solid $gray-100;
77
- }
78
- }
79
78
 
80
79
  .ts-control>input {
81
80
  min-width: auto !important;
@@ -13,8 +13,6 @@ module Spree
13
13
 
14
14
  # GET /admin/admin_users
15
15
  def index
16
- params[:q] ||= {}
17
- params[:q][:s] ||= 'created_at asc'
18
16
  @search = scope.includes(role_users: :role, avatar_attachment: :blob).
19
17
  where(role_users: { resource: @parent }).
20
18
  ransack(params[:q])
@@ -1,6 +1,6 @@
1
1
  module Spree
2
2
  module Admin
3
- class CheckoutsController < BaseController
3
+ class CheckoutsController < ResourceController
4
4
  include Spree::Admin::OrdersFiltersHelper
5
5
 
6
6
  before_action :load_user, only: [:index]
@@ -10,9 +10,6 @@ module Spree
10
10
  add_breadcrumb_icon 'inbox'
11
11
 
12
12
  def index
13
- params[:q] ||= {}
14
- params[:q][:s] ||= 'created_at desc'
15
-
16
13
  load_orders
17
14
  render template: 'spree/admin/orders/index'
18
15
  end
@@ -4,20 +4,6 @@ module Spree
4
4
  belongs_to 'spree/promotion', find_by: :id
5
5
 
6
6
  include PromotionsBreadcrumbConcern
7
-
8
- def collection
9
- return @collection if @collection.present?
10
-
11
- @collection = super
12
-
13
- params[:q] ||= {}
14
- @search = @collection.ransack(params[:q])
15
- @collection = if request.format.csv?
16
- @search.result
17
- else
18
- @search.result.page(params[:page])
19
- end
20
- end
21
7
  end
22
8
  end
23
9
  end
@@ -6,19 +6,6 @@ module Spree
6
6
  add_breadcrumb Spree.t(:customer_returns), :admin_customer_returns_path
7
7
 
8
8
  def index; end
9
-
10
- private
11
-
12
- def collection
13
- return @collection if @collection.present?
14
-
15
- params[:q] ||= {}
16
-
17
- # @search needs to be defined as this is passed to search_form_for
18
- @search = current_store.customer_returns.accessible_by(current_ability, :index).ransack(params[:q])
19
- per_page = params[:per_page]
20
- @collection = @search.result.order(created_at: :desc).page(params[:page]).per(per_page)
21
- end
22
9
  end
23
10
  end
24
11
  end
@@ -13,8 +13,8 @@ module Spree
13
13
  Spree::Digital
14
14
  end
15
15
 
16
- def collection
17
- parent.digitals
16
+ def scope
17
+ parent.digitals.accessible_by(current_ability, :index)
18
18
  end
19
19
 
20
20
  def collection_url
@@ -22,15 +22,8 @@ module Spree
22
22
  Spree.t('admin.export_created')
23
23
  end
24
24
 
25
- def collection
26
- return @collection if @collection.present?
27
-
28
- @collection = super
29
-
30
- params[:q] ||= {}
31
- params[:q][:s] ||= 'created_at desc'
32
- @search = @collection.ransack(params[:q])
33
- @collection = @search.result.includes(:user, attachment_attachment: :blob).page(params[:page])
25
+ def collection_includes
26
+ [:user, attachment_attachment: :blob]
34
27
  end
35
28
 
36
29
  def set_user
@@ -1,7 +1,8 @@
1
1
  module Spree
2
2
  module Admin
3
3
  class GiftCardsController < ResourceController
4
- before_action :load_user
4
+ prepend_before_action :load_user
5
+ prepend_before_action :set_user_id_filter, only: :index
5
6
  before_action :add_breadcrumbs
6
7
  before_action :load_orders, only: :show
7
8
 
@@ -21,23 +22,15 @@ module Spree
21
22
  end
22
23
  end
23
24
 
24
- def collection
25
- return @collection if @collection.present?
25
+ def collection_includes
26
+ [:user, :created_by]
27
+ end
26
28
 
27
- @collection = super
29
+ def set_user_id_filter
30
+ return if params[:user_id].blank?
28
31
 
29
32
  params[:q] ||= {}
30
- params[:q][:s] ||= 'created_at desc'
31
33
  params[:q][:user_id_eq] = params[:user_id] if params[:user_id].present?
32
-
33
- @search = @collection
34
- @search = @search.ransack(params[:q])
35
-
36
- @collection = @search.result.includes(:user, :created_by)
37
-
38
- @collection = @collection.page(params[:page]).per(params[:per_page])
39
-
40
- @collection
41
34
  end
42
35
 
43
36
  def location_after_destroy
@@ -13,8 +13,6 @@ module Spree
13
13
 
14
14
  # GET /admin/invitations
15
15
  def index
16
- params[:q] ||= {}
17
- params[:q][:s] ||= 'created_at desc'
18
16
  @search = scope.includes(:inviter, :role).ransack(params[:q])
19
17
  @collection = @search.result
20
18
  end
@@ -7,16 +7,6 @@ module Spree
7
7
 
8
8
  private
9
9
 
10
- def collection
11
- return @collection if @collection.present?
12
-
13
- @collection = super
14
-
15
- params[:q] ||= {}
16
- @search = @collection.ransack(params[:q])
17
- @collection = @search.result.page(params[:page]).per(500)
18
- end
19
-
20
10
  def create_turbo_stream_enabled?
21
11
  true
22
12
  end
@@ -10,16 +10,6 @@ module Spree
10
10
 
11
11
  private
12
12
 
13
- def collection
14
- return @collection if @collection.present?
15
-
16
- @collection = super
17
-
18
- params[:q] ||= {}
19
- @search = @collection.ransack(params[:q])
20
- @collection = @search.result.all
21
- end
22
-
23
13
  def setup_new_option_value
24
14
  @option_type.option_values.build if @option_type.option_values.empty?
25
15
  end
@@ -1,6 +1,6 @@
1
1
  module Spree
2
2
  module Admin
3
- class OrdersController < Spree::Admin::BaseController
3
+ class OrdersController < Spree::Admin::ResourceController
4
4
  include Spree::Admin::OrderConcern
5
5
  include Spree::Admin::OrdersFiltersHelper
6
6
  include Spree::Admin::OrderBreadcrumbConcern
@@ -27,7 +27,7 @@ module Spree
27
27
  spree.edit_admin_theme_path(current_store.default_theme, page_id: object.id, **options)
28
28
  end
29
29
 
30
- def collection
30
+ def scope
31
31
  super.custom.without_previews
32
32
  end
33
33
 
@@ -22,16 +22,6 @@ module Spree
22
22
  end
23
23
  end
24
24
 
25
- def collection
26
- return @collection if @collection.present?
27
-
28
- params[:q] ||= {}
29
-
30
- @collection = super.order(position: :asc)
31
- @search = @collection.ransack(params[:q])
32
- @collection = @search.result.page(params[:page]).per(params[:per_page])
33
- end
34
-
35
25
  def require_payment_type
36
26
  redirect_to spree.admin_payment_methods_path unless params.dig(:payment_method, :type).present?
37
27
  end
@@ -7,6 +7,10 @@ module Spree
7
7
 
8
8
  private
9
9
 
10
+ def collection_includes
11
+ [:rich_text_translations]
12
+ end
13
+
10
14
  def permitted_resource_params
11
15
  params.require(:policy).permit(permitted_policy_attributes)
12
16
  end
@@ -14,16 +14,8 @@ module Spree
14
14
 
15
15
  private
16
16
 
17
- def collection
18
- return @collection if @collection.present?
19
-
20
- @collection = super
21
-
22
- params[:q] ||= {}
23
- params[:q][:s] ||= 'published_at desc'
24
-
25
- @search = @collection.ransack(params[:q])
26
- @collection = @search.result.page(params[:page]).per(params[:per_page])
17
+ def collection_includes
18
+ [:author, :post_category, :image_attachment]
27
19
  end
28
20
 
29
21
  def load_post_categories
@@ -12,18 +12,6 @@ module Spree
12
12
  true
13
13
  end
14
14
 
15
- def collection
16
- return @collection if @collection.present?
17
-
18
- # params[:q] can be blank upon pagination
19
- params[:q] = {} if params[:q].blank?
20
-
21
- @collection = super
22
- @search = @collection.ransack(params[:q])
23
- @collection = @search.result.
24
- page(params[:page])
25
- end
26
-
27
15
  def add_breadcrumbs
28
16
  if @property.present? && @property.persisted?
29
17
  add_breadcrumb @property.presentation, spree.edit_admin_property_path(@property)
@@ -1,12 +1,16 @@
1
1
  class Spree::Admin::ResourceController < Spree::Admin::BaseController
2
2
  include Spree::Admin::Callbacks
3
3
 
4
- helper_method :new_object_url, :edit_object_url, :object_url, :collection_url, :model_class, :search_collection, :paginated_collection
4
+ helper_method :new_object_url, :edit_object_url, :object_url, :collection_url, :model_class
5
5
  before_action :load_resource
6
6
  before_action :set_currency, :set_current_store, only: [:new, :create]
7
7
 
8
8
  rescue_from ActiveRecord::RecordNotFound, with: :resource_not_found
9
9
 
10
+ def index
11
+ @collection = collection
12
+ end
13
+
10
14
  # GET /admin/<resource_name>/new
11
15
  def new
12
16
  invoke_callbacks(:new_action, :before)
@@ -217,7 +221,7 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
217
221
 
218
222
  # Returns the collection of resources (as a scope)
219
223
  # @return [ActiveRecord::Relation]
220
- def collection
224
+ def scope
221
225
  return parent.send(controller_name) if parent_data.present?
222
226
 
223
227
  base_scope = model_class.try(:for_store, current_store) || model_class
@@ -227,30 +231,36 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
227
231
 
228
232
  if model_class.respond_to?(:accessible_by) &&
229
233
  !current_ability.has_block?(params[:action], model_class)
230
- base_scope.accessible_by(current_ability, action)
234
+ base_scope.accessible_by(current_ability, action).includes(collection_includes)
231
235
  else
232
- base_scope
236
+ base_scope.includes(collection_includes)
237
+ end
238
+ end
239
+
240
+ # keeping this as @search for backwards compatibility
241
+ # @return [Ransack::Search]
242
+ def search_collection
243
+ @search ||= begin
244
+ params[:q] ||= {}
245
+ params[:q][:s] ||= collection_default_sort if collection_default_sort.present?
246
+ scope.ransack(params[:q])
233
247
  end
234
248
  end
235
249
 
236
250
  # Returns the filtered and paginated ransack results
237
251
  # @return [ActiveRecord::Relation]
238
- def paginated_collection
239
- @paginated_collection ||= begin
240
- # Check if collection is already a ransack collection and return it
241
- return collection if collection.respond_to?(:current_page)
252
+ def collection
253
+ @collection ||= search_collection.result(distinct: true).page(params[:page]).per(params[:per_page])
254
+ end
242
255
 
243
- search_collection.result(distinct: true).page(params[:page]).per(params[:per_page])
244
- end
256
+ def collection_includes
257
+ []
245
258
  end
246
259
 
247
- # Returns the ransack search collection
248
- # @return [Ransack::Search]
249
- def search_collection
250
- @search_collection ||= begin
251
- params[:q] ||= {}
252
- collection.ransack(params[:q])
253
- end
260
+ # Override in child controllers to set default sort order
261
+ # @return [String, nil] Ransack sort string (e.g., "name asc", "created_at desc")
262
+ def collection_default_sort
263
+ nil
254
264
  end
255
265
 
256
266
  # Returns the URL to redirect to after destroying a resource
@@ -21,16 +21,6 @@ module Spree
21
21
  def location_after_destroy
22
22
  spree.edit_admin_order_path(@return_authorization.order)
23
23
  end
24
-
25
- def collection
26
- return @collection if @collection.present?
27
-
28
- params[:q] ||= {}
29
-
30
- # @search needs to be defined as this is passed to search_form_for
31
- @search = current_store.return_authorizations.accessible_by(current_ability, :index).ransack(params[:q])
32
- @collection = @search.result.order(created_at: :desc).page(params[:page]).per(params[:per_page])
33
- end
34
24
  end
35
25
  end
36
26
  end
@@ -8,6 +8,10 @@ module Spree
8
8
 
9
9
  private
10
10
 
11
+ def collection_includes
12
+ [:zones, :calculator]
13
+ end
14
+
11
15
  def set_default_values
12
16
  @shipping_method.display_on = 'both'
13
17
  @shipping_method.shipping_categories = [Spree::ShippingCategory.first]