solidus_backend 2.10.3 → 2.11.4

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 (241) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +4 -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/selectable_table.js +5 -0
  7. data/app/assets/javascripts/spree/backend/components/selectable_table/return_items.js +5 -0
  8. data/app/assets/javascripts/spree/backend/components/selectable_table/summary.js +7 -0
  9. data/app/assets/javascripts/spree/backend/components/sortable_table.js +31 -25
  10. data/app/assets/javascripts/spree/backend/models/order.js +3 -3
  11. data/app/assets/javascripts/spree/backend/models/payment.js +1 -1
  12. data/app/assets/javascripts/spree/backend/models/shipment.js +1 -1
  13. data/app/assets/javascripts/spree/backend/models/stock_item.js +1 -1
  14. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +2 -2
  15. data/app/assets/javascripts/spree/backend/option_value_picker.js +2 -2
  16. data/app/assets/javascripts/spree/backend/product_picker.js +2 -2
  17. data/app/assets/javascripts/spree/backend/routes.js +40 -21
  18. data/app/assets/javascripts/spree/backend/shipments.js +5 -5
  19. data/app/assets/javascripts/spree/backend/shipping_methods/stock_locations_picker.js +18 -0
  20. data/app/assets/javascripts/spree/backend/stock_management.js +4 -2
  21. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +2 -2
  22. data/app/assets/javascripts/spree/backend/taxons.js +3 -3
  23. data/app/assets/javascripts/spree/backend/templates/index.js +2 -0
  24. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +2 -2
  25. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +5 -1
  26. data/app/assets/javascripts/spree/backend/templates/tables/return_item_sum_amount.hbs +7 -0
  27. data/app/assets/javascripts/spree/backend/templates/tables/selectable_label.hbs +6 -0
  28. data/app/assets/javascripts/spree/backend/user_picker.js +3 -4
  29. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +2 -2
  30. data/app/assets/javascripts/spree/backend/views/cart/empty_cart_button.js +2 -2
  31. data/app/assets/javascripts/spree/backend/views/index.js +4 -0
  32. data/app/assets/javascripts/spree/backend/views/order/address.js +1 -1
  33. data/app/assets/javascripts/spree/backend/views/order/customer_select.js +2 -3
  34. data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +4 -1
  35. data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +4 -0
  36. data/app/assets/javascripts/spree/backend/views/tables/return_items.js +9 -0
  37. data/app/assets/javascripts/spree/backend/views/tables/selectable_table.js +70 -0
  38. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/sum_return_item_amount.js +32 -0
  39. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/summary.js +45 -0
  40. data/app/assets/stylesheets/spree/backend/_bootstrap_custom.scss +1 -1
  41. data/app/assets/stylesheets/spree/backend/components/_actions.scss +62 -0
  42. data/app/assets/stylesheets/spree/backend/components/_messages.scss +6 -6
  43. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +4 -5
  44. data/app/assets/stylesheets/spree/backend/globals/_deprecation.scss +1 -1
  45. data/app/assets/stylesheets/spree/backend/globals/_variables.scss +3 -28
  46. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  47. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  48. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  49. data/app/controllers/spree/admin/base_controller.rb +6 -0
  50. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  51. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  52. data/app/controllers/spree/admin/images_controller.rb +2 -1
  53. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  54. data/app/controllers/spree/admin/orders_controller.rb +7 -2
  55. data/app/controllers/spree/admin/payments_controller.rb +3 -1
  56. data/app/controllers/spree/admin/product_properties_controller.rb +1 -1
  57. data/app/controllers/spree/admin/products_controller.rb +18 -24
  58. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  59. data/app/controllers/spree/admin/refunds_controller.rb +20 -0
  60. data/app/controllers/spree/admin/resource_controller.rb +27 -7
  61. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  62. data/app/controllers/spree/admin/root_controller.rb +1 -1
  63. data/app/controllers/spree/admin/search_controller.rb +1 -2
  64. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  65. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  66. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  67. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  68. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  69. data/app/controllers/spree/admin/users_controller.rb +37 -20
  70. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  71. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  72. data/app/helpers/spree/admin/base_helper.rb +4 -0
  73. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  74. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  75. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  76. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  77. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  78. data/app/views/spree/admin/images/index.html.erb +25 -21
  79. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  80. data/app/views/spree/admin/option_types/edit.html.erb +3 -1
  81. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  82. data/app/views/spree/admin/orders/index.html.erb +23 -13
  83. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  84. data/app/views/spree/admin/payments/index.html.erb +3 -1
  85. data/app/views/spree/admin/prices/_master_variant_table.html.erb +3 -3
  86. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  87. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  88. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  89. data/app/views/spree/admin/products/_form.html.erb +13 -2
  90. data/app/views/spree/admin/products/index.html.erb +2 -2
  91. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  92. data/app/views/spree/admin/promotions/_actions.html.erb +1 -1
  93. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  94. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  95. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  96. data/app/views/spree/admin/promotions/index.html.erb +12 -5
  97. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  98. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  99. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  100. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  101. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  102. data/app/views/spree/admin/shared/_order_submenu.html.erb +4 -4
  103. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  104. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  105. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +6 -6
  106. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  107. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  108. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  109. data/app/views/spree/admin/shipping_methods/_form.html.erb +18 -0
  110. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  111. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  112. data/app/views/spree/admin/stock_locations/index.html.erb +3 -1
  113. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  114. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  115. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  116. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  117. data/app/views/spree/admin/style_guide/topics/typography/_colors.html.erb +3 -3
  118. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  119. data/app/views/spree/admin/taxons/attachment_forms/_paperclip.html.erb +1 -1
  120. data/app/views/spree/admin/users/_form.html.erb +2 -2
  121. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  122. data/app/views/spree/admin/users/edit.html.erb +4 -4
  123. data/app/views/spree/admin/users/items.html.erb +5 -3
  124. data/app/views/spree/admin/users/orders.html.erb +5 -3
  125. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  126. data/app/views/spree/admin/variants/index.html.erb +2 -2
  127. data/config/initializers/form_builder.rb +2 -2
  128. data/lib/spree/backend/engine.rb +0 -2
  129. data/lib/spree/backend_configuration.rb +14 -1
  130. data/solidus_backend.gemspec +4 -4
  131. metadata +20 -119
  132. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  133. data/script/rails +0 -10
  134. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  135. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  136. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  137. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  138. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  139. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  140. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  141. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  142. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  143. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  144. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  145. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  146. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  147. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  148. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  149. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  150. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  151. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  152. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -201
  153. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  154. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  155. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  156. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  157. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  158. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  159. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  160. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  161. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -287
  162. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  163. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -176
  164. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -126
  165. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  166. data/spec/features/admin/configuration/store_spec.rb +0 -62
  167. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  168. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  169. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -61
  170. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  171. data/spec/features/admin/homepage_spec.rb +0 -86
  172. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  173. data/spec/features/admin/locale_spec.rb +0 -34
  174. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  175. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  176. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  177. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  178. data/spec/features/admin/orders/customer_details_spec.rb +0 -203
  179. data/spec/features/admin/orders/customer_returns_spec.rb +0 -41
  180. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  181. data/spec/features/admin/orders/listing_spec.rb +0 -186
  182. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  183. data/spec/features/admin/orders/new_order_spec.rb +0 -379
  184. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  185. data/spec/features/admin/orders/order_details_spec.rb +0 -591
  186. data/spec/features/admin/orders/payments_spec.rb +0 -330
  187. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -56
  188. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  189. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  190. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  191. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  192. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  193. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  194. data/spec/features/admin/products/edit/taxons_spec.rb +0 -57
  195. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  196. data/spec/features/admin/products/option_types_spec.rb +0 -116
  197. data/spec/features/admin/products/pricing_spec.rb +0 -127
  198. data/spec/features/admin/products/products_spec.rb +0 -348
  199. data/spec/features/admin/products/properties_spec.rb +0 -141
  200. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  201. data/spec/features/admin/products/variant_spec.rb +0 -89
  202. data/spec/features/admin/promotion_adjustments_spec.rb +0 -286
  203. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  204. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  205. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  206. data/spec/features/admin/promotions/promotion_code_batches_spec.rb +0 -37
  207. data/spec/features/admin/promotions/promotion_code_spec.rb +0 -31
  208. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  209. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  210. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  211. data/spec/features/admin/reimbursements_spec.rb +0 -18
  212. data/spec/features/admin/store_credits_spec.rb +0 -132
  213. data/spec/features/admin/stores_spec.rb +0 -37
  214. data/spec/features/admin/style_guide_spec.rb +0 -14
  215. data/spec/features/admin/taxons_spec.rb +0 -90
  216. data/spec/features/admin/users_spec.rb +0 -412
  217. data/spec/fixtures/files/ror_ringer.jpeg +0 -0
  218. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  219. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  220. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  221. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  222. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  223. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  224. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  225. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  226. data/spec/javascripts/format_money_spec.js +0 -48
  227. data/spec/javascripts/spec_helper.js +0 -13
  228. data/spec/javascripts/support/show_errors.js +0 -8
  229. data/spec/javascripts/support/with_translations.js +0 -11
  230. data/spec/javascripts/translation_spec.js +0 -58
  231. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  232. data/spec/lib/spree/backend_configuration/menu_item_spec.rb +0 -17
  233. data/spec/lib/spree/backend_configuration_spec.rb +0 -22
  234. data/spec/spec_helper.rb +0 -123
  235. data/spec/support/appear_before_matcher.rb +0 -10
  236. data/spec/support/feature/base_feature_helper.rb +0 -17
  237. data/spec/support/feature/order_feature_helper.rb +0 -27
  238. data/spec/teaspoon_env.rb +0 -51
  239. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  240. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  241. 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
@@ -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
@@ -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,10 @@ 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
+
134
148
  unless can? :update_password, @user
135
149
  attributes -= [:password, :password_confirmation]
136
150
  end
@@ -151,24 +165,27 @@ module Spree
151
165
  end
152
166
 
153
167
  def load_roles
154
- @roles = Spree::Role.all
168
+ @roles = Spree::Role.accessible_by(current_ability)
155
169
  if @user
156
170
  @user_roles = @user.spree_roles
157
171
  end
158
172
  end
159
173
 
160
174
  def load_stock_locations
161
- @stock_locations = Spree::StockLocation.all
175
+ @stock_locations = Spree::StockLocation.accessible_by(current_ability)
162
176
  end
163
177
 
164
178
  def set_roles
165
- if user_params[:spree_role_ids] && can?(:manage, Spree::Role)
166
- @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])
167
181
  end
168
182
  end
169
183
 
170
184
  def set_stock_locations
171
- @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
172
189
  end
173
190
  end
174
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?
@@ -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
@@ -1,8 +1,7 @@
1
- <table class="index return-items-table">
1
+ <table class="index return-items-table selectable-table">
2
2
  <thead>
3
3
  <tr>
4
4
  <th>
5
- <%= check_box_tag 'select-all' %>
6
5
  </th>
7
6
  <th><%= Spree::Product.model_name.human %></th>
8
7
  <th><%= Spree::Variant.human_attribute_name(:sku) %></th>
@@ -25,7 +24,7 @@
25
24
  <%= item_fields.hidden_field :return_authorization_id %>
26
25
  <%= item_fields.hidden_field :amount %>
27
26
  </div>
28
- <%= item_fields.check_box :returned, {checked: false, class: 'add-item', "data-price" => return_item.amount}, '1', '0' %>
27
+ <%= item_fields.check_box :returned, {checked: false, class: 'selectable add-item', "data-price" => return_item.amount}, '1', '0' %>
29
28
  </td>
30
29
  <td>
31
30
  <div class="variant-name"><%= return_item.inventory_unit.variant.name %></div>
@@ -5,7 +5,9 @@
5
5
 
6
6
  <% content_for :page_actions do %>
7
7
  <% if can?(:create, Spree::Image) %>
8
- <li><%= link_to_with_icon('plus', t('spree.new_image'), new_admin_product_image_url(@product), id: 'new_image_link', class: 'btn btn-primary') %></li>
8
+ <li>
9
+ <%= link_to t('spree.new_image'), new_admin_product_image_url(@product), id: 'new_image_link', class: 'btn btn-primary' %>
10
+ </li>
9
11
  <% end %>
10
12
  <% end %>
11
13
 
@@ -13,29 +15,31 @@
13
15
  <%= render 'new', product: @product, image: Spree::Image.new(viewable: @product) %>
14
16
  </div>
15
17
 
16
- <fieldset class="no-border-bottom">
17
- <legend align="center"><%= t(".upload_images") %></legend>
18
+ <% if can?(:create, Spree::Image) %>
19
+ <fieldset class="no-border-bottom">
20
+ <legend align="center"><%= t(".upload_images") %></legend>
18
21
 
19
- <div id="upload-zone">
20
- <%= form_for [:admin, @product, Spree::Image.new],
21
- html: { multipart: true, id: 'upload-form' } do |f| %>
22
- <label class="upload">
23
- <i class="fa fa-5x fa-cloud-upload"></i>
24
- <p>
25
- <span class="button"><%= t(".choose_files") %></span>
26
- </p>
27
- <p>
28
- <%= t(".drag_and_drop") %>
29
- </p>
22
+ <div id="upload-zone">
23
+ <%= form_for [:admin, @product, Spree::Image.new],
24
+ html: { multipart: true, id: 'upload-form' } do |f| %>
25
+ <label class="upload">
26
+ <i class="fa fa-5x fa-cloud-upload"></i>
27
+ <p>
28
+ <span class="button"><%= t(".choose_files") %></span>
29
+ </p>
30
+ <p>
31
+ <%= t(".drag_and_drop") %>
32
+ </p>
30
33
 
31
- <%= f.file_field :attachment, multiple: '', class: 'hidden' %>
32
- <%= f.hidden_field :viewable_id, value: @product.master.id %>
33
- </label>
34
- <% end %>
35
- </div>
34
+ <%= f.file_field :attachment, multiple: '', class: 'hidden' %>
35
+ <%= f.hidden_field :viewable_id, value: @product.master.id %>
36
+ </label>
37
+ <% end %>
38
+ </div>
36
39
 
37
- <div id="progress-zone" class="row"></div>
38
- </fieldset>
40
+ <div id="progress-zone" class="row"></div>
41
+ </fieldset>
42
+ <% end %>
39
43
 
40
44
  <% no_images = @product.gallery.images.empty? %>
41
45