solidus_backend 2.9.6 → 2.11.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.
Files changed (270) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +5 -1
  3. data/app/assets/javascripts/spree/backend/adjustments.js +1 -1
  4. data/app/assets/javascripts/spree/backend/admin.js +18 -29
  5. data/app/assets/javascripts/spree/backend/collections/states.js +1 -1
  6. data/app/assets/javascripts/spree/backend/components/admin_nav.js +24 -0
  7. data/app/assets/javascripts/spree/backend/components/selectable_table.js +5 -0
  8. data/app/assets/javascripts/spree/backend/components/selectable_table/return_items.js +5 -0
  9. data/app/assets/javascripts/spree/backend/components/selectable_table/summary.js +7 -0
  10. data/app/assets/javascripts/spree/backend/components/sortable_table.js +31 -25
  11. data/app/assets/javascripts/spree/backend/components/tabs.js +1 -1
  12. data/app/assets/javascripts/spree/backend/models/order.js +11 -2
  13. data/app/assets/javascripts/spree/backend/models/payment.js +1 -1
  14. data/app/assets/javascripts/spree/backend/models/shipment.js +1 -1
  15. data/app/assets/javascripts/spree/backend/models/stock_item.js +1 -1
  16. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +2 -2
  17. data/app/assets/javascripts/spree/backend/option_value_picker.js +2 -2
  18. data/app/assets/javascripts/spree/backend/orders/cart.js +6 -0
  19. data/app/assets/javascripts/spree/backend/product_picker.js +2 -2
  20. data/app/assets/javascripts/spree/backend/routes.js +40 -21
  21. data/app/assets/javascripts/spree/backend/shipments.js +5 -67
  22. data/app/assets/javascripts/spree/backend/shipping_methods/stock_locations_picker.js +18 -0
  23. data/app/assets/javascripts/spree/backend/stock_management.js +4 -2
  24. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +2 -2
  25. data/app/assets/javascripts/spree/backend/taxons.js +3 -3
  26. data/app/assets/javascripts/spree/backend/templates/index.js +2 -1
  27. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +2 -2
  28. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +5 -1
  29. data/app/assets/javascripts/spree/backend/templates/tables/return_item_sum_amount.hbs +7 -0
  30. data/app/assets/javascripts/spree/backend/templates/tables/selectable_label.hbs +6 -0
  31. data/app/assets/javascripts/spree/backend/user_picker.js +3 -4
  32. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +2 -2
  33. data/app/assets/javascripts/spree/backend/views/cart/empty_cart_button.js +29 -0
  34. data/app/assets/javascripts/spree/backend/views/cart/line_item_table.js +5 -0
  35. data/app/assets/javascripts/spree/backend/views/index.js +5 -0
  36. data/app/assets/javascripts/spree/backend/views/order/address.js +8 -6
  37. data/app/assets/javascripts/spree/backend/views/order/customer_select.js +2 -3
  38. data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +4 -1
  39. data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +4 -0
  40. data/app/assets/javascripts/spree/backend/views/tables/return_items.js +9 -0
  41. data/app/assets/javascripts/spree/backend/views/tables/selectable_table.js +70 -0
  42. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/sum_return_item_amount.js +32 -0
  43. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/summary.js +45 -0
  44. data/app/assets/stylesheets/spree/backend/_bootstrap_custom.scss +2 -0
  45. data/app/assets/stylesheets/spree/backend/components/_breadcrumb.scss +3 -3
  46. data/app/assets/stylesheets/spree/backend/components/_messages.scss +4 -0
  47. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +181 -49
  48. data/app/assets/stylesheets/spree/backend/globals/{_mixins.css → _mixins.scss} +0 -0
  49. data/app/assets/stylesheets/spree/backend/globals/_variables.scss +2 -0
  50. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  51. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  52. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  53. data/app/assets/stylesheets/spree/backend/shared/_header.scss +5 -1
  54. data/app/assets/stylesheets/spree/backend/shared/_layout.scss +0 -9
  55. data/app/controllers/spree/admin/adjustments_controller.rb +1 -1
  56. data/app/controllers/spree/admin/base_controller.rb +7 -1
  57. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  58. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  59. data/app/controllers/spree/admin/images_controller.rb +2 -1
  60. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  61. data/app/controllers/spree/admin/orders_controller.rb +9 -4
  62. data/app/controllers/spree/admin/payment_methods_controller.rb +4 -4
  63. data/app/controllers/spree/admin/payments_controller.rb +5 -3
  64. data/app/controllers/spree/admin/product_properties_controller.rb +2 -2
  65. data/app/controllers/spree/admin/products_controller.rb +19 -25
  66. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  67. data/app/controllers/spree/admin/refunds_controller.rb +19 -0
  68. data/app/controllers/spree/admin/resource_controller.rb +39 -10
  69. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  70. data/app/controllers/spree/admin/root_controller.rb +1 -1
  71. data/app/controllers/spree/admin/search_controller.rb +1 -2
  72. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  73. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  74. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  75. data/app/controllers/spree/admin/style_guide_controller.rb +1 -1
  76. data/app/controllers/spree/admin/taxons/attachment_controller.rb +20 -0
  77. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  78. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  79. data/app/controllers/spree/admin/users_controller.rb +43 -22
  80. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  81. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  82. data/app/helpers/spree/admin/base_helper.rb +4 -0
  83. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  84. data/app/helpers/spree/admin/navigation_helper.rb +4 -3
  85. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  86. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  87. data/app/helpers/spree/promotion_rules_helper.rb +1 -1
  88. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  89. data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
  90. data/app/views/spree/admin/images/index.html.erb +25 -21
  91. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  92. data/app/views/spree/admin/option_types/edit.html.erb +4 -2
  93. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +1 -0
  94. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  95. data/app/views/spree/admin/orders/edit.html.erb +3 -4
  96. data/app/views/spree/admin/orders/index.html.erb +23 -13
  97. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  98. data/app/views/spree/admin/payment_methods/new.html.erb +1 -1
  99. data/app/views/spree/admin/payments/index.html.erb +3 -1
  100. data/app/views/spree/admin/prices/_master_variant_table.html.erb +41 -41
  101. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  102. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  103. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  104. data/app/views/spree/admin/products/_form.html.erb +13 -2
  105. data/app/views/spree/admin/products/index.html.erb +1 -1
  106. data/app/views/spree/admin/promotion_code_batches/new.html.erb +1 -1
  107. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  108. data/app/views/spree/admin/promotion_codes/new.html.erb +1 -1
  109. data/app/views/spree/admin/promotions/_actions.html.erb +2 -1
  110. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  111. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  112. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  113. data/app/views/spree/admin/promotions/index.html.erb +13 -6
  114. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  115. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  116. data/app/views/spree/admin/return_authorizations/new.html.erb +1 -1
  117. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  118. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  119. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  120. data/app/views/spree/admin/shared/_calculator_fields.html.erb +5 -0
  121. data/app/views/spree/admin/shared/_navigation.html.erb +3 -0
  122. data/app/views/spree/admin/shared/_new_resource_links.html.erb +1 -1
  123. data/app/views/spree/admin/shared/_order_submenu.html.erb +6 -6
  124. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  125. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  126. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +7 -7
  127. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  128. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  129. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  130. data/app/views/spree/admin/shipping_methods/_form.html.erb +19 -1
  131. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  132. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  133. data/app/views/spree/admin/stock_locations/index.html.erb +4 -2
  134. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  135. data/app/views/spree/admin/store_credit_reasons/index.html.erb +1 -1
  136. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  137. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  138. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  139. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  140. data/app/views/spree/admin/tax_rates/_form.html.erb +1 -1
  141. data/app/views/spree/admin/taxonomies/new.html.erb +1 -1
  142. data/app/views/spree/admin/taxons/_form.html.erb +1 -5
  143. data/app/views/spree/admin/taxons/attachment_forms/_paperclip.html.erb +16 -0
  144. data/app/views/spree/admin/users/_form.html.erb +14 -12
  145. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  146. data/app/views/spree/admin/users/edit.html.erb +5 -6
  147. data/app/views/spree/admin/users/items.html.erb +5 -3
  148. data/app/views/spree/admin/users/orders.html.erb +5 -3
  149. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  150. data/app/views/spree/admin/variants/index.html.erb +2 -2
  151. data/app/views/spree/layouts/admin.html.erb +1 -2
  152. data/config/initializers/form_builder.rb +2 -2
  153. data/config/routes.rb +4 -6
  154. data/lib/spree/backend.rb +1 -0
  155. data/lib/spree/backend/config.rb +9 -0
  156. data/lib/spree/backend/engine.rb +5 -5
  157. data/{app/models → lib}/spree/backend_configuration.rb +19 -3
  158. data/solidus_backend.gemspec +5 -4
  159. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_variables.scss +1 -1
  160. metadata +44 -124
  161. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  162. data/app/assets/javascripts/spree/backend/templates/variants/autocomplete_stock.hbs +0 -56
  163. data/app/views/spree/admin/orders/_add_product.html.erb +0 -12
  164. data/script/rails +0 -10
  165. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  166. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  167. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  168. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  169. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  170. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  171. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  172. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  173. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  174. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  175. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  176. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  177. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  178. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  179. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  180. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  181. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  182. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  183. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -190
  184. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  185. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  186. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  187. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  188. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  189. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  190. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  191. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  192. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -264
  193. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  194. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -167
  195. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -114
  196. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  197. data/spec/features/admin/configuration/store_spec.rb +0 -62
  198. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  199. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  200. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -54
  201. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  202. data/spec/features/admin/homepage_spec.rb +0 -86
  203. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  204. data/spec/features/admin/locale_spec.rb +0 -34
  205. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  206. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  207. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  208. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  209. data/spec/features/admin/orders/customer_details_spec.rb +0 -204
  210. data/spec/features/admin/orders/customer_returns_spec.rb +0 -28
  211. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  212. data/spec/features/admin/orders/listing_spec.rb +0 -186
  213. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  214. data/spec/features/admin/orders/new_order_spec.rb +0 -331
  215. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  216. data/spec/features/admin/orders/order_details_spec.rb +0 -581
  217. data/spec/features/admin/orders/payments_spec.rb +0 -330
  218. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -27
  219. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  220. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  221. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  222. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  223. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  224. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  225. data/spec/features/admin/products/edit/taxons_spec.rb +0 -51
  226. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  227. data/spec/features/admin/products/option_types_spec.rb +0 -116
  228. data/spec/features/admin/products/pricing_spec.rb +0 -127
  229. data/spec/features/admin/products/products_spec.rb +0 -336
  230. data/spec/features/admin/products/properties_spec.rb +0 -141
  231. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  232. data/spec/features/admin/products/variant_spec.rb +0 -89
  233. data/spec/features/admin/promotion_adjustments_spec.rb +0 -277
  234. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  235. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  236. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  237. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  238. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  239. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  240. data/spec/features/admin/reimbursements_spec.rb +0 -18
  241. data/spec/features/admin/store_credits_spec.rb +0 -132
  242. data/spec/features/admin/stores_spec.rb +0 -37
  243. data/spec/features/admin/style_guide_spec.rb +0 -14
  244. data/spec/features/admin/taxons_spec.rb +0 -78
  245. data/spec/features/admin/users_spec.rb +0 -402
  246. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  247. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  248. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  249. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  250. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  251. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  252. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  253. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  254. data/spec/javascripts/format_money_spec.js +0 -48
  255. data/spec/javascripts/spec_helper.js +0 -13
  256. data/spec/javascripts/support/show_errors.js +0 -8
  257. data/spec/javascripts/support/with_translations.js +0 -11
  258. data/spec/javascripts/translation_spec.js +0 -58
  259. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  260. data/spec/models/spree/backend_configuration/menu_item_spec.rb +0 -17
  261. data/spec/models/spree/backend_configuration_spec.rb +0 -22
  262. data/spec/spec_helper.rb +0 -122
  263. data/spec/support/appear_before_matcher.rb +0 -10
  264. data/spec/support/feature/base_feature_helper.rb +0 -12
  265. data/spec/support/feature/order_feature_helper.rb +0 -27
  266. data/spec/support/ror_ringer.jpeg +0 -0
  267. data/spec/teaspoon_env.rb +0 -51
  268. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  269. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  270. data/spec/views/spree/admin/shared/navigation_footer_spec.rb +0 -67
@@ -47,7 +47,7 @@ module Spree
47
47
  end
48
48
 
49
49
  def load_reimbursement_types
50
- @reimbursement_types = Spree::ReimbursementType.accessible_by(current_ability, :read).active
50
+ @reimbursement_types = Spree::ReimbursementType.accessible_by(current_ability).active
51
51
  end
52
52
 
53
53
  def load_return_reasons
@@ -12,7 +12,7 @@ module Spree
12
12
  private
13
13
 
14
14
  def admin_root_redirect_path
15
- if can?(:display, Spree::Order) && can?(:admin, Spree::Order)
15
+ if can?(:show, Spree::Order) && can?(:admin, Spree::Order)
16
16
  spree.admin_orders_path
17
17
  elsif can?(:admin, :dashboards) && can?(:home, :dashboards)
18
18
  spree.home_admin_dashboards_path
@@ -16,8 +16,7 @@ module Spree
16
16
  @users = Spree.user_class.ransack({
17
17
  m: 'or',
18
18
  email_start: params[:q],
19
- addresses_firstname_start: params[:q],
20
- addresses_lastname_start: params[:q]
19
+ firstname_or_lastname_start: params[:q]
21
20
  }).result.limit(10)
22
21
  end
23
22
  end
@@ -15,8 +15,8 @@ module Spree
15
15
  private
16
16
 
17
17
  def build_resource
18
- variant = Spree::Variant.accessible_by(current_ability, :read).find(params[:variant_id])
19
- stock_location = Spree::StockLocation.accessible_by(current_ability, :read).find(params[:stock_location_id])
18
+ variant = Spree::Variant.accessible_by(current_ability, :show).find(params[:variant_id])
19
+ stock_location = Spree::StockLocation.accessible_by(current_ability, :show).find(params[:stock_location_id])
20
20
  stock_location.stock_movements.build(stock_movement_params).tap do |stock_movement|
21
21
  stock_movement.originator = try_spree_current_user
22
22
  stock_movement.stock_item = stock_location.set_up_stock_item(variant)
@@ -36,11 +36,11 @@ module Spree
36
36
  end
37
37
 
38
38
  def load_product
39
- @product = Spree::Product.accessible_by(current_ability, :read).friendly.find(params[:product_slug]) if params[:product_slug]
39
+ @product = Spree::Product.accessible_by(current_ability, :show).friendly.find(params[:product_slug]) if params[:product_slug]
40
40
  end
41
41
 
42
42
  def load_stock_management_data
43
- @stock_locations = Spree::StockLocation.accessible_by(current_ability, :read)
43
+ @stock_locations = Spree::StockLocation.accessible_by(current_ability)
44
44
  @stock_item_stock_locations = params[:stock_location_id].present? ? @stock_locations.where(id: params[:stock_location_id]) : @stock_locations
45
45
  @variant_display_attributes = self.class.variant_display_attributes
46
46
  @variants = Spree::Config.variant_search_class.new(params[:variant_search_term], scope: variant_scope).results
@@ -50,8 +50,9 @@ module Spree
50
50
  end
51
51
 
52
52
  def variant_scope
53
- scope = Spree::Variant.accessible_by(current_ability, :read)
53
+ scope = Spree::Variant.accessible_by(current_ability)
54
54
  scope = scope.where(product: @product) if @product
55
+ scope = scope.order(:sku)
55
56
  scope
56
57
  end
57
58
 
@@ -13,6 +13,10 @@ module Spree
13
13
  flash[:error] = t('spree.stock_locations_need_a_default_country')
14
14
  redirect_to(admin_stock_locations_path) && return
15
15
  end
16
+
17
+ def collection
18
+ super.page(params[:page]).per(Spree::Config[:admin_products_per_page])
19
+ end
16
20
  end
17
21
  end
18
22
  end
@@ -6,6 +6,13 @@ module Spree
6
6
  belongs_to 'spree/stock_location'
7
7
  before_action :parent
8
8
 
9
+ def index
10
+ params[:q] ||= {}
11
+
12
+ @search = collection.ransack(params[:q])
13
+ @stock_movements = @search.result.page(params[:page])
14
+ end
15
+
9
16
  private
10
17
 
11
18
  def permitted_resource_params
@@ -4,7 +4,7 @@ module Spree
4
4
  module Admin
5
5
  class StyleGuideController < Spree::Admin::BaseController
6
6
  respond_to :html
7
- layout '/spree/layouts/admin_style_guide'
7
+ layout 'spree/layouts/admin_style_guide'
8
8
 
9
9
  def index
10
10
  @topics = {
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Admin
5
+ module Taxons
6
+ class AttachmentController < Spree::Admin::BaseController
7
+ def destroy
8
+ taxonomy = Spree::Taxonomy.find(params[:taxonomy_id])
9
+ taxon = taxonomy.taxons.find(params[:taxon_id])
10
+ if taxon.destroy_attachment(params[:attachment_definition])
11
+ flash[:success] = t('spree.successfully_removed', resource: params[:attachment_definition].titleize)
12
+ else
13
+ flash[:error] = t('spree.taxon_attachment_removal_error')
14
+ end
15
+ redirect_to edit_admin_taxonomy_taxon_path(taxonomy, taxon.id)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -3,6 +3,7 @@
3
3
  module Spree
4
4
  module Admin
5
5
  class TaxonsController < Spree::Admin::BaseController
6
+ rescue_from ActiveRecord::RecordNotFound, with: :resource_not_found
6
7
  respond_to :html, :json, :js
7
8
 
8
9
  def index
@@ -62,7 +63,13 @@ module Spree
62
63
  end
63
64
 
64
65
  respond_with(@taxon) do |format|
65
- format.html { redirect_to edit_admin_taxonomy_url(@taxonomy) }
66
+ format.html do
67
+ if @taxon.valid?
68
+ redirect_to edit_admin_taxonomy_url(@taxonomy)
69
+ else
70
+ render :edit
71
+ end
72
+ end
66
73
  end
67
74
  end
68
75
 
@@ -77,6 +84,10 @@ module Spree
77
84
  def taxon_params
78
85
  params.require(:taxon).permit(permitted_taxon_attributes)
79
86
  end
87
+
88
+ def resource_not_found
89
+ super(flash_class: Taxon, redirect_url: admin_taxonomies_path)
90
+ end
80
91
  end
81
92
  end
82
93
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Admin
5
+ module Users
6
+ class ApiKeyController < Spree::Admin::BaseController
7
+ def create
8
+ if user.generate_spree_api_key!
9
+ flash[:success] = t('spree.admin.api.key_generated')
10
+ end
11
+ redirect_to edit_admin_user_path(user)
12
+ end
13
+
14
+ def destroy
15
+ if user.clear_spree_api_key!
16
+ flash[:success] = t('spree.admin.api.key_cleared')
17
+ end
18
+ redirect_to edit_admin_user_path(user)
19
+ end
20
+
21
+ private
22
+
23
+ def user
24
+ @user ||= Spree.user_class.find(params[:user_id])
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -38,7 +38,7 @@ module Spree
38
38
  end
39
39
 
40
40
  def update
41
- if @user.update_attributes(user_params)
41
+ if @user.update(user_params)
42
42
  set_roles
43
43
  set_stock_locations
44
44
 
@@ -55,7 +55,7 @@ module Spree
55
55
 
56
56
  def addresses
57
57
  if request.put?
58
- if @user.update_attributes(user_params)
58
+ if @user.update(user_params)
59
59
  flash.now[:success] = t('spree.account_updated')
60
60
  end
61
61
 
@@ -82,6 +82,16 @@ module Spree
82
82
  end
83
83
 
84
84
  def generate_api_key
85
+ Spree::Deprecation.warn <<-WARN.strip_heredoc, caller
86
+ The route or controller action you are using is deprecated.
87
+
88
+ Instead of:
89
+ generate_api_key_admin_user PUT /admin/users/:id/generate_api_key
90
+
91
+ Please use:
92
+ admin_user_api_key POST /admin/users/:user_id/api_key
93
+ WARN
94
+
85
95
  if @user.generate_spree_api_key!
86
96
  flash[:success] = t('spree.admin.api.key_generated')
87
97
  end
@@ -89,6 +99,16 @@ module Spree
89
99
  end
90
100
 
91
101
  def clear_api_key
102
+ Spree::Deprecation.warn <<-WARN.strip_heredoc, caller
103
+ The route or controller action you are using is deprecated.
104
+
105
+ Instead of:
106
+ clear_api_key_admin_user PUT /admin/users/:id/clear_api_key
107
+
108
+ Please use:
109
+ admin_user_api_key DELETE /admin/users/:user_id/api_key
110
+ WARN
111
+
92
112
  if @user.clear_spree_api_key!
93
113
  flash[:success] = t('spree.admin.api.key_cleared')
94
114
  end
@@ -103,21 +123,11 @@ module Spree
103
123
 
104
124
  def collection
105
125
  return @collection if @collection
106
- if request.xhr? && params[:q].present?
107
- @collection = Spree.user_class.includes(:bill_address, :ship_address)
108
- .where("#{Spree.user_class.table_name}.email #{LIKE} :search
109
- OR (spree_addresses.firstname #{LIKE} :search AND spree_addresses.id = #{Spree.user_class.table_name}.bill_address_id)
110
- OR (spree_addresses.lastname #{LIKE} :search AND spree_addresses.id = #{Spree.user_class.table_name}.bill_address_id)
111
- OR (spree_addresses.firstname #{LIKE} :search AND spree_addresses.id = #{Spree.user_class.table_name}.ship_address_id)
112
- OR (spree_addresses.lastname #{LIKE} :search AND spree_addresses.id = #{Spree.user_class.table_name}.ship_address_id)",
113
- { search: "#{params[:q].strip}%" })
114
- .limit(params[:limit] || 100)
115
- else
116
- @search = Spree.user_class.ransack(params[:q])
117
- @collection = @search.result.includes(:spree_roles)
118
- @collection = @collection.includes(:spree_orders)
119
- @collection = @collection.page(params[:page]).per(Spree::Config[:admin_products_per_page])
120
- end
126
+
127
+ @search = super.ransack(params[:q])
128
+ @collection = @search.result.includes(:spree_roles)
129
+ @collection = @collection.includes(:spree_orders)
130
+ @collection = @collection.page(params[:page]).per(Spree::Config[:admin_products_per_page])
121
131
  end
122
132
 
123
133
  def user_params
@@ -131,6 +141,14 @@ module Spree
131
141
  attributes += [{ spree_role_ids: [] }]
132
142
  end
133
143
 
144
+ if can? :manage, Spree::StockLocation
145
+ attributes += [{ stock_location_ids: [] }]
146
+ end
147
+
148
+ unless can? :update_password, @user
149
+ attributes -= [:password, :password_confirmation]
150
+ end
151
+
134
152
  params.require(:user).permit(attributes)
135
153
  end
136
154
 
@@ -147,24 +165,27 @@ module Spree
147
165
  end
148
166
 
149
167
  def load_roles
150
- @roles = Spree::Role.all
168
+ @roles = Spree::Role.accessible_by(current_ability)
151
169
  if @user
152
170
  @user_roles = @user.spree_roles
153
171
  end
154
172
  end
155
173
 
156
174
  def load_stock_locations
157
- @stock_locations = Spree::StockLocation.all
175
+ @stock_locations = Spree::StockLocation.accessible_by(current_ability)
158
176
  end
159
177
 
160
178
  def set_roles
161
- if user_params[:spree_role_ids] && can?(:manage, Spree::Role)
162
- @user.spree_roles = Spree::Role.where(id: user_params[:spree_role_ids])
179
+ if user_params[:spree_role_ids]
180
+ @user.spree_roles = Spree::Role.accessible_by(current_ability).where(id: user_params[:spree_role_ids])
163
181
  end
164
182
  end
165
183
 
166
184
  def set_stock_locations
167
- @user.stock_locations = Spree::StockLocation.where(id: (params[:user][:stock_location_ids] || []))
185
+ if user_params[:stock_location_ids]
186
+ @user.stock_locations =
187
+ Spree::StockLocation.accessible_by(current_ability).where(id: user_params[:stock_location_ids])
188
+ end
168
189
  end
169
190
  end
170
191
  end
@@ -21,7 +21,7 @@ module Spree
21
21
 
22
22
  def collection
23
23
  if params[:deleted] == "on"
24
- base_variant_scope ||= super.with_deleted
24
+ base_variant_scope ||= super.with_discarded
25
25
  else
26
26
  base_variant_scope ||= super
27
27
  end
@@ -43,8 +43,10 @@ module Spree
43
43
  end
44
44
 
45
45
  def parent
46
- @parent ||= Spree::Product.with_deleted.find_by(slug: params[:product_id])
46
+ @parent ||= Spree::Product.with_discarded.find_by!(slug: params[:product_id])
47
47
  @product = @parent
48
+ rescue ActiveRecord::RecordNotFound
49
+ resource_not_found(flash_class: Spree::Product, redirect_url: admin_products_path)
48
50
  end
49
51
  end
50
52
  end
@@ -20,7 +20,7 @@ module Spree
20
20
 
21
21
  def load_data
22
22
  @countries = Spree::Country.order(:name)
23
- @states = Spree::State.order(:name)
23
+ @states = Spree::State.includes(:country).order(:name)
24
24
  @zones = Spree::Zone.order(:name)
25
25
  end
26
26
  end
@@ -120,6 +120,8 @@ module Spree
120
120
  css_classes = options[:class] ? options[:class] + " spree_add_fields" : "spree_add_fields"
121
121
  link_to_with_icon('plus', name, 'javascript:', data: { target: target }, class: css_classes)
122
122
  end
123
+ deprecate link_to_add_fields: "Please use button_tag instead, Example: \n" \
124
+ "button_tag \"Name\", type: \"button\", data: { target: \"tbody#div\" }", deprecator: Spree::Deprecation
123
125
 
124
126
  # renders hidden field and link to remove record using nested_attributes
125
127
  def link_to_remove_fields(name, form, options = {})
@@ -130,6 +132,8 @@ module Spree
130
132
  link_to_with_icon('trash', name, url, class: "spree_remove_fields #{options[:class]}", data: { action: 'remove' }, title: t('spree.actions.remove')) +
131
133
  form.hidden_field(:_destroy)
132
134
  end
135
+ deprecate link_to_remove_fields: "Please use link_to_delete instead, Example: \n" \
136
+ "link_to_delete \"form.object\"", deprecator: Spree::Deprecation
133
137
 
134
138
  def spree_dom_id(record)
135
139
  dom_id(record, 'spree')
@@ -4,7 +4,7 @@ module Spree
4
4
  module Admin
5
5
  module CustomerReturnsHelper
6
6
  def reimbursement_types
7
- @reimbursement_types ||= Spree::ReimbursementType.accessible_by(current_ability, :read).active
7
+ @reimbursement_types ||= Spree::ReimbursementType.accessible_by(current_ability).active
8
8
  end
9
9
  end
10
10
  end
@@ -7,7 +7,7 @@ module Spree
7
7
  @admin_breadcrumbs ||= []
8
8
  end
9
9
 
10
- # Add items to current page breadcrumb heirarchy
10
+ # Add items to current page breadcrumb hierarchy
11
11
  def admin_breadcrumb(*ancestors, &block)
12
12
  admin_breadcrumbs.concat(ancestors) if ancestors.present?
13
13
  admin_breadcrumbs.push(capture(&block)) if block_given?
@@ -33,7 +33,7 @@ module Spree
33
33
  elsif content_for?(:page_title)
34
34
  content_for(:page_title)
35
35
  elsif admin_breadcrumbs.any?
36
- admin_breadcrumbs.map{ |x| strip_tags(x) }.reverse.join(' - ')
36
+ admin_breadcrumbs.map { |breadcrumb| strip_tags(breadcrumb) }.reverse.join(' - ')
37
37
  else
38
38
  t(controller.controller_name, default: controller.controller_name.titleize, scope: 'spree')
39
39
  end
@@ -181,7 +181,8 @@ module Spree
181
181
  url.ends_with?("#{controller.controller_name.singularize}/edit")
182
182
  options[:class] = 'fa'
183
183
  options[:class] += ' active' if is_active
184
- options[:datahook] = "admin_settings_#{link_text.downcase.tr(' ', '_')}"
184
+ options[:data] ||= {}
185
+ options[:data][:hook] = "admin_settings_#{link_text.downcase.tr(' ', '_')}"
185
186
  content_tag(:li, options) do
186
187
  link_to(link_text, url)
187
188
  end
@@ -8,11 +8,15 @@ module Spree
8
8
  links = []
9
9
  @order_events.sort.each do |event|
10
10
  next unless @order.send("can_#{event}?")
11
- links << button_to(t(event, scope: 'spree'), [event, :admin, @order],
12
- method: :put,
13
- data: { confirm: t('spree.order_sure_want_to', event: t(event, scope: 'spree')) })
11
+ translated_event = t(event, scope: [:spree, :admin, :order, :events])
12
+ links << button_to(
13
+ translated_event,
14
+ [event, :admin, @order],
15
+ method: :put,
16
+ data: { confirm: t(:order_sure_want_to, event: translated_event, scope: :spree) }
17
+ )
14
18
  end
15
- safe_join(links, '&nbsp;'.html_safe)
19
+ safe_join(links, "&nbsp;".html_safe)
16
20
  end
17
21
 
18
22
  def line_item_shipment_price(line_item, quantity)
@@ -4,12 +4,16 @@ module Spree
4
4
  module Admin
5
5
  module StockMovementsHelper
6
6
  def pretty_originator(stock_movement)
7
- if stock_movement.originator.respond_to?(:number)
8
- if stock_movement.originator.respond_to?(:order)
9
- link_to stock_movement.originator.number, [:edit, :admin, stock_movement.originator.order]
7
+ originator = stock_movement.originator
8
+
9
+ if originator.respond_to?(:number)
10
+ if originator.respond_to?(:order)
11
+ link_to originator.number, [:edit, :admin, originator.order]
10
12
  else
11
- stock_movement.originator.number
13
+ originator.number
12
14
  end
15
+ elsif originator.respond_to?(:email)
16
+ originator.email
13
17
  else
14
18
  ""
15
19
  end
@@ -4,7 +4,7 @@ module Spree
4
4
  module PromotionRulesHelper
5
5
  def options_for_promotion_rule_types(promotion)
6
6
  existing = promotion.rules.map { |rule| rule.class.name }
7
- rules = Rails.application.config.spree.promotions.rules.reject { |r| existing.include? r.name }
7
+ rules = Rails.application.config.spree.promotions.rules.reject { |rule| existing.include? rule.name }
8
8
  options = rules.map { |rule| [rule.model_name.human, rule.name] }
9
9
  options_for_select(options)
10
10
  end