solidus_backend 2.10.2 → 2.11.3

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 (234) 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/components/_navigation.scss +4 -5
  41. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  42. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  43. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  44. data/app/controllers/spree/admin/base_controller.rb +6 -0
  45. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  46. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  47. data/app/controllers/spree/admin/images_controller.rb +2 -1
  48. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  49. data/app/controllers/spree/admin/orders_controller.rb +7 -2
  50. data/app/controllers/spree/admin/payments_controller.rb +3 -1
  51. data/app/controllers/spree/admin/product_properties_controller.rb +1 -1
  52. data/app/controllers/spree/admin/products_controller.rb +18 -24
  53. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  54. data/app/controllers/spree/admin/refunds_controller.rb +20 -0
  55. data/app/controllers/spree/admin/resource_controller.rb +27 -7
  56. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  57. data/app/controllers/spree/admin/root_controller.rb +1 -1
  58. data/app/controllers/spree/admin/search_controller.rb +1 -2
  59. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  60. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  61. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  62. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  63. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  64. data/app/controllers/spree/admin/users_controller.rb +37 -20
  65. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  66. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  67. data/app/helpers/spree/admin/base_helper.rb +4 -0
  68. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  69. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  70. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  71. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  72. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  73. data/app/views/spree/admin/images/index.html.erb +25 -21
  74. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  75. data/app/views/spree/admin/option_types/edit.html.erb +3 -1
  76. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  77. data/app/views/spree/admin/orders/index.html.erb +23 -13
  78. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  79. data/app/views/spree/admin/payments/index.html.erb +3 -1
  80. data/app/views/spree/admin/prices/_master_variant_table.html.erb +3 -3
  81. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  82. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  83. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  84. data/app/views/spree/admin/products/_form.html.erb +13 -2
  85. data/app/views/spree/admin/products/index.html.erb +2 -2
  86. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  87. data/app/views/spree/admin/promotions/_actions.html.erb +1 -1
  88. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  89. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  90. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  91. data/app/views/spree/admin/promotions/index.html.erb +12 -5
  92. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  93. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  94. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  95. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  96. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  97. data/app/views/spree/admin/shared/_order_submenu.html.erb +4 -4
  98. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  99. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  100. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +6 -6
  101. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  102. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  103. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  104. data/app/views/spree/admin/shipping_methods/_form.html.erb +18 -0
  105. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  106. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  107. data/app/views/spree/admin/stock_locations/index.html.erb +3 -1
  108. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  109. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  110. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  111. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  112. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  113. data/app/views/spree/admin/users/_form.html.erb +2 -2
  114. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  115. data/app/views/spree/admin/users/edit.html.erb +4 -4
  116. data/app/views/spree/admin/users/items.html.erb +5 -3
  117. data/app/views/spree/admin/users/orders.html.erb +5 -3
  118. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  119. data/app/views/spree/admin/variants/index.html.erb +2 -2
  120. data/config/initializers/form_builder.rb +2 -2
  121. data/lib/spree/backend/engine.rb +0 -2
  122. data/lib/spree/backend_configuration.rb +14 -1
  123. data/solidus_backend.gemspec +4 -4
  124. metadata +24 -123
  125. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  126. data/script/rails +0 -10
  127. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  128. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  129. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  130. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  131. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  132. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  133. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  134. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  135. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  136. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  137. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  138. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  139. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  140. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  141. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  142. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  143. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  144. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  145. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -201
  146. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  147. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  148. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  149. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  150. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  151. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  152. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  153. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  154. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -287
  155. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  156. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -176
  157. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -126
  158. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  159. data/spec/features/admin/configuration/store_spec.rb +0 -62
  160. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  161. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  162. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -61
  163. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  164. data/spec/features/admin/homepage_spec.rb +0 -86
  165. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  166. data/spec/features/admin/locale_spec.rb +0 -34
  167. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  168. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  169. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  170. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  171. data/spec/features/admin/orders/customer_details_spec.rb +0 -203
  172. data/spec/features/admin/orders/customer_returns_spec.rb +0 -41
  173. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  174. data/spec/features/admin/orders/listing_spec.rb +0 -186
  175. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  176. data/spec/features/admin/orders/new_order_spec.rb +0 -379
  177. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  178. data/spec/features/admin/orders/order_details_spec.rb +0 -591
  179. data/spec/features/admin/orders/payments_spec.rb +0 -330
  180. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -56
  181. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  182. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  183. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  184. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  185. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  186. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  187. data/spec/features/admin/products/edit/taxons_spec.rb +0 -57
  188. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  189. data/spec/features/admin/products/option_types_spec.rb +0 -116
  190. data/spec/features/admin/products/pricing_spec.rb +0 -127
  191. data/spec/features/admin/products/products_spec.rb +0 -348
  192. data/spec/features/admin/products/properties_spec.rb +0 -141
  193. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  194. data/spec/features/admin/products/variant_spec.rb +0 -89
  195. data/spec/features/admin/promotion_adjustments_spec.rb +0 -286
  196. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  197. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  198. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  199. data/spec/features/admin/promotions/promotion_code_batches_spec.rb +0 -37
  200. data/spec/features/admin/promotions/promotion_code_spec.rb +0 -31
  201. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  202. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  203. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  204. data/spec/features/admin/reimbursements_spec.rb +0 -18
  205. data/spec/features/admin/store_credits_spec.rb +0 -132
  206. data/spec/features/admin/stores_spec.rb +0 -37
  207. data/spec/features/admin/style_guide_spec.rb +0 -14
  208. data/spec/features/admin/taxons_spec.rb +0 -90
  209. data/spec/features/admin/users_spec.rb +0 -412
  210. data/spec/fixtures/files/ror_ringer.jpeg +0 -0
  211. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  212. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  213. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  214. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  215. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  216. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  217. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  218. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  219. data/spec/javascripts/format_money_spec.js +0 -48
  220. data/spec/javascripts/spec_helper.js +0 -13
  221. data/spec/javascripts/support/show_errors.js +0 -8
  222. data/spec/javascripts/support/with_translations.js +0 -11
  223. data/spec/javascripts/translation_spec.js +0 -58
  224. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  225. data/spec/lib/spree/backend_configuration/menu_item_spec.rb +0 -17
  226. data/spec/lib/spree/backend_configuration_spec.rb +0 -22
  227. data/spec/spec_helper.rb +0 -123
  228. data/spec/support/appear_before_matcher.rb +0 -10
  229. data/spec/support/feature/base_feature_helper.rb +0 -17
  230. data/spec/support/feature/order_feature_helper.rb +0 -27
  231. data/spec/teaspoon_env.rb +0 -51
  232. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  233. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  234. data/spec/views/spree/admin/shared/navigation_footer_spec.rb +0 -67
@@ -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
 
@@ -7,5 +7,12 @@
7
7
  </td>
8
8
  <td class="name"><%= f.text_field :name %></td>
9
9
  <td class="presentation"><%= f.text_field :presentation %></td>
10
- <td class="actions"><%= link_to_remove_fields t('spree.actions.remove'), f, no_text: true %></td>
10
+ <td class="actions">
11
+ <% if f.object.persisted? %>
12
+ <%= link_to_delete f.object, no_text: true %>
13
+ <% else %>
14
+ <%= link_to_with_icon('trash', 'remove', '#', no_text: true, class: "spree_remove_fields",
15
+ data: { action: 'remove' }, title: t('spree.actions.remove')) %>
16
+ <% end %>
17
+ </td>
11
18
  </tr>
@@ -6,7 +6,9 @@
6
6
  <% content_for :page_actions do %>
7
7
  <li>
8
8
  <span id="new_add_option_value" data-hook>
9
- <%= link_to_add_fields t('spree.add_option_value'), "tbody#option_values", class: 'btn btn-primary' %>
9
+ <%= button_tag t('spree.add_option_value'), type: 'button',
10
+ data: { target: 'tbody#option_values' },
11
+ class: 'btn btn-primary spree_add_fields' %>
10
12
  </span>
11
13
  </li>
12
14
  <% end %>
@@ -41,6 +41,19 @@
41
41
  </fieldset>
42
42
 
43
43
  <div class="row">
44
+ <% if Spree::Config[:order_bill_address_used] %>
45
+ <div class="col-6" data-hook="bill_address_wrapper">
46
+ <fieldset class="no-border-bottom">
47
+ <legend align="center"><%= t('spree.billing_address') %></legend>
48
+ <div class="js-billing-address">
49
+ <%= f.fields_for :bill_address do |ba_form| %>
50
+ <%= render partial: 'spree/admin/shared/address_form', locals: { f: ba_form, type: "billing" } %>
51
+ <% end %>
52
+ </div>
53
+ </fieldset>
54
+ </div>
55
+ <% end %>
56
+
44
57
  <div class="col-6" data-hook="ship_address_wrapper">
45
58
  <fieldset class="no-border-bottom">
46
59
  <legend align="center"><%= t('spree.shipping_address') %></legend>
@@ -62,19 +75,6 @@
62
75
  </div>
63
76
  </fieldset>
64
77
  </div>
65
-
66
- <% if Spree::Config[:order_bill_address_used] %>
67
- <div class="col-6" data-hook="bill_address_wrapper">
68
- <fieldset class="no-border-bottom">
69
- <legend align="center"><%= t('spree.billing_address') %></legend>
70
- <div class="js-billing-address">
71
- <%= f.fields_for :bill_address do |ba_form| %>
72
- <%= render partial: 'spree/admin/shared/address_form', locals: { f: ba_form, type: "billing" } %>
73
- <% end %>
74
- </div>
75
- </fieldset>
76
- </div>
77
- <% end %>
78
78
  </div>
79
79
 
80
80
  <div class="clear"></div>
@@ -7,7 +7,7 @@
7
7
  <li>
8
8
  <%= link_to t('spree.new_order'), new_admin_order_url, id: 'admin_new_order', class: 'btn btn-primary' %>
9
9
  </li>
10
- <% end if can? :create, Spree::Order %>
10
+ <% end if can? :manage, Spree::Order %>
11
11
 
12
12
  <% content_for :table_filter_title do %>
13
13
  <%= t('spree.filter') %>
@@ -65,14 +65,21 @@
65
65
  </div>
66
66
 
67
67
  <div class="col-12 col-xl-6">
68
- <div class="field">
69
- <%= label_tag :q_bill_address_firstname_start, t('spree.first_name_begins_with') %>
70
- <%= f.text_field :bill_address_firstname_start, size: 25 %>
71
- </div>
72
- <div class="field">
73
- <%= label_tag :q_bill_address_lastname_start, t('spree.last_name_begins_with') %>
74
- <%= f.text_field :bill_address_lastname_start, size: 25%>
75
- </div>
68
+ <% if Spree::Config.use_combined_first_and_last_name_in_address %>
69
+ <div class="field">
70
+ <%= label_tag :q_bill_address_firstname_or_lastname_start, t('spree.name_contains') %>
71
+ <%= f.text_field :bill_address_firstname_or_lastname_start, size: 25 %>
72
+ </div>
73
+ <% else %>
74
+ <div class="field">
75
+ <%= label_tag :q_bill_address_firstname_start, t('spree.first_name_begins_with') %>
76
+ <%= f.text_field :bill_address_firstname_start, size: 25 %>
77
+ </div>
78
+ <div class="field">
79
+ <%= label_tag :q_bill_address_lastname_start, t('spree.last_name_begins_with') %>
80
+ <%= f.text_field :bill_address_lastname_start, size: 25 %>
81
+ </div>
82
+ <% end %>
76
83
  </div>
77
84
 
78
85
  <div class="col-12 col-xl-6">
@@ -177,8 +184,9 @@
177
184
  <% if order.user %>
178
185
  <%= link_to order.email, edit_admin_user_path(order.user) %>
179
186
  <% else %>
180
- <%= mail_to order.email %>
187
+ <%= order.email %>
181
188
  <% end %>
189
+ <%= link_to_with_icon('email', t('spree.actions.send_email'), "mailto:#{order.email}", no_text: true) %>
182
190
  </td>
183
191
  <td class="align-right"><%= order.display_total.to_html %></td>
184
192
  <td class='actions align-center' data-hook="admin_orders_index_row_actions">
@@ -190,9 +198,11 @@
190
198
  </table>
191
199
  <% else %>
192
200
  <div class="no-objects-found">
193
- <%= render 'spree/admin/shared/no_objects_found',
194
- resource: Spree::Order,
195
- new_resource_url: spree.new_admin_order_path %>
201
+ <% if can? :manage, Spree::Order %>
202
+ <%= render 'spree/admin/shared/no_objects_found',
203
+ resource: Spree::Order,
204
+ new_resource_url: spree.new_admin_order_path %>
205
+ <% end %>
196
206
  </div>
197
207
  <% end %>
198
208