spree_backend 3.2.9 → 3.3.0.rc1

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 (196) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend/admin.js +16 -15
  3. data/app/assets/javascripts/spree/backend/checkouts/edit.js +25 -26
  4. data/app/assets/javascripts/spree/backend/general_settings.js.coffee +10 -12
  5. data/app/assets/javascripts/spree/backend/payments/edit.js.coffee +4 -6
  6. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +7 -1
  7. data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +4 -1
  8. data/app/assets/javascripts/spree/backend/user_picker.js +3 -1
  9. data/app/assets/javascripts/spree/backend.js +3 -3
  10. data/app/controllers/spree/admin/countries_controller.rb +1 -0
  11. data/app/controllers/spree/admin/log_entries_controller.rb +2 -2
  12. data/app/controllers/spree/admin/orders/customer_details_controller.rb +5 -6
  13. data/app/controllers/spree/admin/orders_controller.rb +4 -4
  14. data/app/controllers/spree/admin/payments_controller.rb +21 -10
  15. data/app/controllers/spree/admin/products_controller.rb +5 -0
  16. data/app/controllers/spree/admin/promotion_rules_controller.rb +11 -7
  17. data/app/controllers/spree/admin/stock_transfers_controller.rb +1 -1
  18. data/app/controllers/spree/admin/taxons_controller.rb +31 -23
  19. data/app/helpers/spree/admin/base_helper.rb +1 -1
  20. data/app/helpers/spree/admin/navigation_helper.rb +10 -4
  21. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +2 -2
  22. data/app/views/spree/admin/general_settings/edit.html.erb +8 -8
  23. data/app/views/spree/admin/images/_form.html.erb +2 -2
  24. data/app/views/spree/admin/images/edit.html.erb +2 -2
  25. data/app/views/spree/admin/images/new.html.erb +1 -1
  26. data/app/views/spree/admin/option_types/_form.html.erb +2 -2
  27. data/app/views/spree/admin/option_types/index.html.erb +4 -4
  28. data/app/views/spree/admin/orders/_line_items.html.erb +40 -38
  29. data/app/views/spree/admin/orders/_shipment.html.erb +77 -76
  30. data/app/views/spree/admin/orders/customer_details/_form.html.erb +5 -5
  31. data/app/views/spree/admin/orders/index.html.erb +16 -16
  32. data/app/views/spree/admin/payment_methods/_form.html.erb +2 -2
  33. data/app/views/spree/admin/payments/_list.html.erb +1 -1
  34. data/app/views/spree/admin/products/_add_stock_form.html.erb +3 -3
  35. data/app/views/spree/admin/products/_form.html.erb +16 -16
  36. data/app/views/spree/admin/products/index.html.erb +4 -4
  37. data/app/views/spree/admin/products/new.html.erb +8 -8
  38. data/app/views/spree/admin/promotion_categories/index.html.erb +3 -3
  39. data/app/views/spree/admin/promotions/_form.html.erb +3 -3
  40. data/app/views/spree/admin/promotions/_promotion_rule.html.erb +1 -1
  41. data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +2 -2
  42. data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +2 -2
  43. data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +2 -4
  44. data/app/views/spree/admin/promotions/edit.html.erb +3 -3
  45. data/app/views/spree/admin/promotions/index.html.erb +6 -6
  46. data/app/views/spree/admin/promotions/rules/_item_total.html.erb +2 -2
  47. data/app/views/spree/admin/promotions/rules/_option_value.html.erb +4 -4
  48. data/app/views/spree/admin/properties/_form.html.erb +2 -2
  49. data/app/views/spree/admin/properties/index.html.erb +6 -6
  50. data/app/views/spree/admin/prototypes/index.html.erb +4 -4
  51. data/app/views/spree/admin/reimbursement_types/_form.html.erb +4 -4
  52. data/app/views/spree/admin/reimbursements/edit.html.erb +1 -1
  53. data/app/views/spree/admin/return_authorizations/_form.html.erb +13 -1
  54. data/app/views/spree/admin/return_index/customer_returns.html.erb +2 -2
  55. data/app/views/spree/admin/return_index/return_authorizations.html.erb +5 -5
  56. data/app/views/spree/admin/shared/_content_header.html.erb +2 -2
  57. data/app/views/spree/admin/shared/_header.html.erb +2 -2
  58. data/app/views/spree/admin/shared/_index_table_options.html.erb +2 -2
  59. data/app/views/spree/admin/shared/_order_summary.html.erb +1 -1
  60. data/app/views/spree/admin/shared/_table_filter.html.erb +1 -1
  61. data/app/views/spree/admin/shared/_translations.html.erb +0 -1
  62. data/app/views/spree/admin/shared/_update_order_state.js.erb +1 -1
  63. data/app/views/spree/admin/shipping_methods/_form.html.erb +10 -10
  64. data/app/views/spree/admin/state_changes/index.html.erb +3 -3
  65. data/app/views/spree/admin/states/_form.html.erb +2 -2
  66. data/app/views/spree/admin/stock_locations/_form.html.erb +2 -2
  67. data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +4 -4
  68. data/app/views/spree/admin/stock_transfers/index.html.erb +3 -3
  69. data/app/views/spree/admin/stock_transfers/new.html.erb +2 -2
  70. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  71. data/app/views/spree/admin/tax_rates/_form.html.erb +2 -2
  72. data/app/views/spree/admin/taxonomies/_list.html.erb +2 -2
  73. data/app/views/spree/admin/taxonomies/{edit.erb → edit.html.erb} +0 -0
  74. data/app/views/spree/admin/taxonomies/index.html.erb +2 -2
  75. data/app/views/spree/admin/taxons/_form.html.erb +5 -5
  76. data/app/views/spree/admin/taxons/edit.html.erb +3 -0
  77. data/app/views/spree/admin/trackers/_form.html.erb +2 -2
  78. data/app/views/spree/admin/users/_addresses_form.html.erb +2 -2
  79. data/app/views/spree/admin/users/_form.html.erb +2 -2
  80. data/app/views/spree/admin/users/_user_page_actions.html.erb +1 -1
  81. data/app/views/spree/admin/users/index.html.erb +5 -5
  82. data/app/views/spree/admin/users/items.html.erb +1 -1
  83. data/app/views/spree/admin/users/orders.html.erb +1 -1
  84. data/app/views/spree/admin/variants/_form.html.erb +2 -2
  85. data/app/views/spree/admin/zones/_form.html.erb +2 -2
  86. data/app/views/spree/layouts/admin.html.erb +3 -3
  87. data/config/initializers/assets.rb +1 -1
  88. data/lib/spree/backend/engine.rb +0 -1
  89. data/spec/controllers/spree/admin/base_controller_spec.rb +46 -0
  90. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +185 -0
  91. data/spec/controllers/spree/admin/general_settings_controller_spec.rb +41 -0
  92. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +18 -0
  93. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +199 -0
  94. data/spec/controllers/spree/admin/orders_controller_spec.rb +296 -0
  95. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +64 -0
  96. data/spec/controllers/spree/admin/payments_controller_spec.rb +97 -0
  97. data/spec/controllers/spree/admin/products_controller_spec.rb +137 -0
  98. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +21 -0
  99. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +21 -0
  100. data/spec/controllers/spree/admin/promotions_controller_spec.rb +44 -0
  101. data/spec/controllers/spree/admin/refunds_controller_spec.rb +32 -0
  102. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +74 -0
  103. data/spec/controllers/spree/admin/reports_controller_spec.rb +42 -0
  104. data/spec/controllers/spree/admin/resource_controller_spec.rb +252 -0
  105. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +225 -0
  106. data/spec/controllers/spree/admin/return_index_controller_spec.rb +37 -0
  107. data/spec/controllers/spree/admin/return_items_controller_spec.rb +27 -0
  108. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +14 -0
  109. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +19 -0
  110. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +41 -0
  111. data/spec/controllers/spree/admin/stock_transfers_controller_spec.rb +41 -0
  112. data/spec/controllers/spree/admin/tax_categories_controller_spec.rb +34 -0
  113. data/spec/controllers/spree/admin/users_controller_spec.rb +161 -0
  114. data/spec/controllers/spree/admin/variants_controller_spec.rb +32 -0
  115. data/spec/features/admin/configuration/analytics_tracker_spec.rb +47 -0
  116. data/spec/features/admin/configuration/countries_spec.rb +24 -0
  117. data/spec/features/admin/configuration/general_settings_spec.rb +44 -0
  118. data/spec/features/admin/configuration/payment_methods_spec.rb +63 -0
  119. data/spec/features/admin/configuration/roles_spec.rb +47 -0
  120. data/spec/features/admin/configuration/shipping_methods_spec.rb +62 -0
  121. data/spec/features/admin/configuration/states_spec.rb +68 -0
  122. data/spec/features/admin/configuration/stock_locations_spec.rb +48 -0
  123. data/spec/features/admin/configuration/store_credit_categories_spec.rb +50 -0
  124. data/spec/features/admin/configuration/tax_categories_spec.rb +56 -0
  125. data/spec/features/admin/configuration/tax_rates_spec.rb +18 -0
  126. data/spec/features/admin/configuration/zones_spec.rb +39 -0
  127. data/spec/features/admin/homepage_spec.rb +89 -0
  128. data/spec/features/admin/locale_spec.rb +31 -0
  129. data/spec/features/admin/orders/adjustments_promotions_spec.rb +53 -0
  130. data/spec/features/admin/orders/adjustments_spec.rb +124 -0
  131. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +47 -0
  132. data/spec/features/admin/orders/customer_details_spec.rb +154 -0
  133. data/spec/features/admin/orders/line_items_spec.rb +51 -0
  134. data/spec/features/admin/orders/listing_spec.rb +224 -0
  135. data/spec/features/admin/orders/log_entries_spec.rb +55 -0
  136. data/spec/features/admin/orders/new_order_spec.rb +186 -0
  137. data/spec/features/admin/orders/order_details_spec.rb +660 -0
  138. data/spec/features/admin/orders/payments_spec.rb +244 -0
  139. data/spec/features/admin/orders/risk_analysis_spec.rb +48 -0
  140. data/spec/features/admin/orders/shipments_spec.rb +64 -0
  141. data/spec/features/admin/orders/state_changes_spec.rb +21 -0
  142. data/spec/features/admin/products/edit/images_spec.rb +86 -0
  143. data/spec/features/admin/products/edit/products_spec.rb +56 -0
  144. data/spec/features/admin/products/edit/taxons_spec.rb +41 -0
  145. data/spec/features/admin/products/edit/variants_spec.rb +56 -0
  146. data/spec/features/admin/products/option_types_spec.rb +114 -0
  147. data/spec/features/admin/products/products_spec.rb +445 -0
  148. data/spec/features/admin/products/properties_spec.rb +147 -0
  149. data/spec/features/admin/products/prototypes_spec.rb +112 -0
  150. data/spec/features/admin/products/stock_management_spec.rb +124 -0
  151. data/spec/features/admin/products/taxonomies_spec.rb +52 -0
  152. data/spec/features/admin/products/variant_spec.rb +50 -0
  153. data/spec/features/admin/promotions/adjustments_spec.rb +258 -0
  154. data/spec/features/admin/promotions/option_value_rule_spec.rb +70 -0
  155. data/spec/features/admin/promotions/tiered_calculator_spec.rb +70 -0
  156. data/spec/features/admin/refund_reasons/refund_reasons_spec.rb +57 -0
  157. data/spec/features/admin/reimbursement_type/edit_reimbursement_type_spec.rb +36 -0
  158. data/spec/features/admin/reimbursement_type/new_reimbursement_type_spec.rb +62 -0
  159. data/spec/features/admin/reports_spec.rb +61 -0
  160. data/spec/features/admin/return_authorization_reasons/return_authorization_reasons_spec.rb +63 -0
  161. data/spec/features/admin/returns/customer_returns_spec.rb +80 -0
  162. data/spec/features/admin/returns/return_authorizations_spec.rb +152 -0
  163. data/spec/features/admin/stock_transfer_spec.rb +91 -0
  164. data/spec/features/admin/store_credits_spec.rb +93 -0
  165. data/spec/features/admin/taxons_spec.rb +53 -0
  166. data/spec/features/admin/users_spec.rb +286 -0
  167. data/spec/helpers/admin/base_helper_spec.rb +30 -0
  168. data/spec/helpers/admin/navigation_helper_spec.rb +111 -0
  169. data/spec/helpers/admin/promotion_rules_helper_spec.rb +12 -0
  170. data/spec/helpers/admin/stock_movements_helper_spec.rb +30 -0
  171. data/spec/models/spree/resource_spec.rb +48 -0
  172. data/spec/routing/admin_path_spec.rb +22 -0
  173. data/spec/spec_helper.rb +144 -0
  174. data/spec/support/appear_before_matcher.rb +8 -0
  175. data/spec/support/ror_ringer.jpeg +0 -0
  176. data/spec/test_views/spree/admin/submodule/posts/edit.html.erb +1 -0
  177. data/spec/test_views/spree/admin/submodule/posts/new.html.erb +1 -0
  178. data/spec/test_views/spree/admin/widgets/edit.html.erb +1 -0
  179. data/spec/test_views/spree/admin/widgets/new.html.erb +1 -0
  180. data/spree_backend.gemspec +4 -4
  181. data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +130 -154
  182. metadata +106 -29
  183. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  184. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  185. data/vendor/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
  186. data/vendor/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  187. data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  188. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  189. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  190. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  191. data/vendor/assets/images/jquery-ui/ui-icons_0073ea_256x240.png +0 -0
  192. data/vendor/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  193. data/vendor/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
  194. data/vendor/assets/images/jquery-ui/ui-icons_ff0084_256x240.png +0 -0
  195. data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  196. data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +0 -357
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7e296c87d77b2d45d2cf919aba665ec7fe0b2a36
4
- data.tar.gz: 13874762b73257402229a4d83bdd5c2025374514
3
+ metadata.gz: 43eb9d10aad328c6c7d69260f137280e3739c869
4
+ data.tar.gz: 2c4ddb4edbaebfc4972b3bd264db35ed0867858e
5
5
  SHA512:
6
- metadata.gz: 78787a7c315d20d3af652c496a9a36482f218299a212fba853b8fa94d51e52c63974b495fa1e975392cd30c8c328f727dd814f88c99c5b8bac42f7f981e26b7b
7
- data.tar.gz: 684ae3dc78c492629f7b576b0aba88dbb665c6eb6f1fe6445939a04ddd825f9393d1710f0eaf9e5b2b587c9c2fa601ad4f8aaa88f0b234a6aa1c81c2f587686e
6
+ metadata.gz: f2665aa69f0f9225880a43233890c36b530429a9e692b4ce7080698db87856a68d9eb95dce77fb535825145207aa8f81376bc55dfd57d3ce28775fa5e2fcd814
7
+ data.tar.gz: c7458d63d7a180a1a5295b104545c33bcc4cad2fb438088453ecd9c8191b27ce382011e5dff9765c9d57ad6b0d461559ce329d83de17fb3a651f23d215a565c9
@@ -28,24 +28,25 @@ jQuery(function($) {
28
28
 
29
29
  // Sidebar nav toggle functionality
30
30
  var sidebar_toggle = $('#sidebar-toggle');
31
-
32
- sidebar_toggle.on('click', function(){
31
+ sidebar_toggle.on('click', function() {
33
32
  var wrapper = $('#wrapper');
34
33
  var main = $('#main-part');
34
+ var sidebar = $('#main-sidebar');
35
35
 
36
- if(wrapper.hasClass('sidebar-minimized')){
37
- wrapper.removeClass('sidebar-minimized');
38
- main
39
- .removeClass('col-sm-12 col-md-12 sidebar-collapsed')
40
- .addClass('col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2');
41
- $.cookie('sidebar-minimized', 'false', { path: '/admin' });
42
- }
43
- else {
44
- wrapper.addClass('sidebar-minimized');
45
- main
46
- .removeClass('col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2')
47
- .addClass('col-sm-12 col-md-12 sidebar-collapsed');
36
+ // these should match `spree/backend/app/helpers/spree/admin/navigation_helper.rb#main_part_classes`
37
+ var mainWrapperCollapsedClasses = 'col-xs-12 sidebar-collapsed';
38
+ var mainWrapperExpandedClasses = 'col-xs-9 col-xs-offset-3 col-md-10 col-md-offset-2';
39
+
40
+ wrapper.toggleClass('sidebar-minimized');
41
+ sidebar.toggleClass('hidden-xs');
42
+ main
43
+ .toggleClass(mainWrapperCollapsedClasses)
44
+ .toggleClass(mainWrapperExpandedClasses);
45
+
46
+ if (wrapper.hasClass('sidebar-minimized')) {
48
47
  $.cookie('sidebar-minimized', 'true', { path: '/admin' });
48
+ } else {
49
+ $.cookie('sidebar-minimized', 'false', { path: '/admin' });
49
50
  }
50
51
  });
51
52
 
@@ -336,7 +337,7 @@ $(document).ready(function(){
336
337
  reg = /spree_(\w+_?)+_(\d+)/;
337
338
  parts = reg.exec($(obj).prop('id'));
338
339
  if (parts) {
339
- positions['positions['+parts[2]+']'] = position;
340
+ positions['positions['+parts[2]+']'] = position+1;
340
341
  }
341
342
  });
342
343
  $.ajax({
@@ -1,4 +1,14 @@
1
1
  //= require_self
2
+
3
+ var clear_address_fields = function() {
4
+ var fields = ['firstname', 'lastname', 'company', 'address1', 'address2',
5
+ 'city', 'zipcode', 'state_id', 'country_id', 'phone'];
6
+ $.each(fields, function(i, field) {
7
+ $('#order_bill_address_attributes_' + field).val('');
8
+ $('#order_ship_address_attributes_' + field).val('');
9
+ });
10
+ };
11
+
2
12
  $(document).ready(function() {
3
13
  if ($('#customer_autocomplete_template').length > 0) {
4
14
  window.customerTemplate = Handlebars.compile($('#customer_autocomplete_template').text());
@@ -12,8 +22,8 @@ $(document).ready(function() {
12
22
  })
13
23
  }
14
24
 
15
- if ($("#customer_search").length > 0) {
16
- $("#customer_search").select2({
25
+ if ($('#customer_search').length > 0) {
26
+ $('#customer_search').select2({
17
27
  placeholder: Spree.translations.choose_a_customer,
18
28
  ajax: {
19
29
  url: Spree.routes.users_api,
@@ -21,14 +31,7 @@ $(document).ready(function() {
21
31
  cache: true,
22
32
  data: function(term, page) {
23
33
  return {
24
- q: {
25
- 'm': 'or',
26
- 'email_start': term,
27
- 'ship_address_firstname_start': term,
28
- 'ship_address_lastname_start': term,
29
- 'bill_address_firstname_start': term,
30
- 'bill_address_lastname_start': term
31
- },
34
+ q: term,
32
35
  token: Spree.api_key
33
36
  }
34
37
  },
@@ -40,10 +43,10 @@ $(document).ready(function() {
40
43
  formatResult: formatCustomerResult,
41
44
  formatSelection: function (customer) {
42
45
  $('#order_email').val(customer.email);
43
- $('#user_id').val(customer.id);
44
- $('#guest_checkout_true').prop("checked", false);
45
- $('#guest_checkout_false').prop("checked", true);
46
- $('#guest_checkout_false').prop("disabled", false);
46
+ $('#order_user_id').val(customer.id);
47
+ $('#guest_checkout_true').prop('checked', false);
48
+ $('#guest_checkout_false').prop('checked', true);
49
+ $('#guest_checkout_false').prop('disabled', false);
47
50
 
48
51
  var billAddress = customer.bill_address;
49
52
  if(billAddress) {
@@ -55,11 +58,13 @@ $(document).ready(function() {
55
58
  $('#order_bill_address_attributes_zipcode').val(billAddress.zipcode);
56
59
  $('#order_bill_address_attributes_phone').val(billAddress.phone);
57
60
 
58
- $('#order_bill_address_attributes_country_id').select2("val", billAddress.country_id).promise().done(function () {
61
+ $('#order_bill_address_attributes_country_id').select2('val', billAddress.country_id).promise().done(function () {
59
62
  update_state('b', function () {
60
- $('#order_bill_address_attributes_state_id').select2("val", billAddress.state_id);
63
+ $('#order_bill_address_attributes_state_id').select2('val', billAddress.state_id);
61
64
  });
62
65
  });
66
+ } else {
67
+ clear_address_fields();
63
68
  }
64
69
  return Select2.util.escapeMarkup(customer.email);
65
70
  }
@@ -83,15 +88,9 @@ $(document).ready(function() {
83
88
  order_use_billing();
84
89
 
85
90
  $('#guest_checkout_true').change(function() {
86
- $('#customer_search').val("");
87
- $('#user_id').val("");
88
- $('#checkout_email').val("");
89
-
90
- var fields = ["firstname", "lastname", "company", "address1", "address2",
91
- "city", "zipcode", "state_id", "country_id", "phone"]
92
- $.each(fields, function(i, field) {
93
- $('#order_bill_address_attributes' + field).val("");
94
- $('#order_ship_address_attributes' + field).val("");
95
- })
91
+ $('#customer_search').val('');
92
+ $('#order_user_id').val('');
93
+ $('#order_email').val('');
94
+ clear_address_fields();
96
95
  });
97
96
  });
@@ -1,15 +1,13 @@
1
1
  $(@).ready( ->
2
2
  $('[data-hook=general_settings_clear_cache] #clear_cache').click ->
3
- response = confirm(Spree.translations.are_you_sure)
4
- if response
5
- $.ajax
6
- type: 'POST'
7
- url: Spree.routes.clear_cache
8
- success: ->
9
- show_flash 'success', "Cache was flushed."
10
- error: (msg) ->
11
- if msg.responseJSON["error"]
12
- show_flash 'error', msg.responseJSON["error"]
13
- else
14
- show_flash 'error', "There was a problem while flushing cache."
3
+ $.ajax
4
+ type: 'POST'
5
+ url: Spree.routes.clear_cache
6
+ success: ->
7
+ show_flash 'success', "Cache was flushed."
8
+ error: (msg) ->
9
+ if msg.responseJSON["error"]
10
+ show_flash 'error', msg.responseJSON["error"]
11
+ else
12
+ show_flash 'error', "There was a problem while flushing cache."
15
13
  )
@@ -2,10 +2,11 @@ jQuery ($) ->
2
2
  # Payment model
3
3
  order_id = $('#payments').data('order-id')
4
4
  class Payment
5
- constructor: (id) ->
6
- @url = Spree.url("#{Spree.routes.payments_api(order_id)}/#{id}.json" + '?token=' + Spree.api_key)
5
+ constructor: (number) ->
6
+ @url = Spree.url("#{Spree.routes.payments_api(order_id)}/#{number}.json" + '?token=' + Spree.api_key)
7
7
  @json = $.getJSON @url.toString(), (data) =>
8
8
  @data = data
9
+ @updating = false
9
10
 
10
11
  if_editable: (callback) ->
11
12
  @json.done (data) ->
@@ -128,9 +129,6 @@ jQuery ($) ->
128
129
  $('<input />')
129
130
  .prop(id: 'amount', value: amount)
130
131
  .width(width)
131
- .one
132
- blur: =>
133
- @save()
134
132
  .css('text-align': 'right')
135
133
 
136
134
  $input: ->
@@ -143,5 +141,5 @@ jQuery ($) ->
143
141
  # Attach ShowPaymentView to each editable payment in the table
144
142
  $('.admin tr[data-hook=payments_row]').each ->
145
143
  $el = $(@)
146
- payment = new Payment($el.prop('id').match(/\d+$/))
144
+ payment = new Payment($el.attr('data-number'))
147
145
  payment.if_editable -> new ShowPaymentView($el, payment)
@@ -12,7 +12,12 @@ $(document).ready(function() {
12
12
  var totalPretaxRefund = 0;
13
13
  var checkedItems = formFields.find('input.add-item:checked');
14
14
  $.each(checkedItems, function(i, checkbox) {
15
- totalPretaxRefund += parseFloat($(checkbox).parents('tr').find('.refund-amount-input').val());
15
+ var returnItemRow = $(checkbox).parents('tr'), returnQuantity, amount, purchasedQuantity;
16
+ returnQuantity = parseInt(returnItemRow.find('.refund-quantity-input').val(), 10);
17
+ purchasedQuantity = parseInt(returnItemRow.find('.purchased-quantity').text(), 10);
18
+ amount = (returnQuantity / purchasedQuantity) * parseFloat(returnItemRow.find('.charged-amount').data('chargedAmount'));
19
+ returnItemRow.find('.refund-amount-input').val(amount.toFixed(2));
20
+ totalPretaxRefund += amount;
16
21
  });
17
22
 
18
23
  var displayTotal = isNaN(totalPretaxRefund) ? '' : totalPretaxRefund.toFixed(2);
@@ -29,6 +34,7 @@ $(document).ready(function() {
29
34
 
30
35
  formFields.find('input.add-item').on('change', updateSuggestedAmount);
31
36
  formFields.find('.refund-amount-input').on('keyup', updateSuggestedAmount);
37
+ formFields.find('.refund-quantity-input').on('keyup', updateSuggestedAmount);
32
38
 
33
39
  formFields.find('input, select').not('.add-item').on('change', checkAddItemBox);
34
40
  }
@@ -97,7 +97,10 @@ $ ->
97
97
  'variant_product_name_or_variant_sku_cont')
98
98
 
99
99
  format_variant_result: (result) ->
100
- "#{result.name} - #{result.sku}"
100
+ if !!result.options_text
101
+ "#{result.name} - #{result.sku} (#{result.options_text})"
102
+ else
103
+ "#{result.name} - #{result.sku}"
101
104
 
102
105
  build_select: (url, query) ->
103
106
  $('#transfer_variant').select2
@@ -21,7 +21,9 @@ $.fn.userAutocomplete = function () {
21
21
  datatype: 'json',
22
22
  data: function (term) {
23
23
  return {
24
- q: term,
24
+ q: {
25
+ email_cont: term
26
+ },
25
27
  token: Spree.api_key
26
28
  };
27
29
  },
@@ -5,9 +5,9 @@
5
5
  //= require jquery.cookie
6
6
  //= require jquery.jstree/jquery.jstree
7
7
  //= require jquery_ujs
8
- //= require jquery-ui/datepicker
9
- //= require jquery-ui/sortable
10
- //= require jquery-ui/autocomplete
8
+ //= require jquery-ui/widgets/datepicker
9
+ //= require jquery-ui/widgets/sortable
10
+ //= require jquery-ui/widgets/autocomplete
11
11
  //= require select2
12
12
  //= require underscore-min.js
13
13
  //= require velocity
@@ -2,6 +2,7 @@ module Spree
2
2
  module Admin
3
3
  class CountriesController < ResourceController
4
4
 
5
+ private
5
6
  def collection
6
7
  super.order(:name)
7
8
  end
@@ -11,8 +11,8 @@ module Spree
11
11
  private
12
12
 
13
13
  def find_order_and_payment
14
- @order = Spree::Order.friendly.find(params[:order_id])
15
- @payment = @order.payments.friendly.find(params[:payment_id])
14
+ @order = Spree::Order.find_by!(number: params[:order_id])
15
+ @payment = @order.payments.find_by!(number: params[:payment_id])
16
16
  end
17
17
  end
18
18
  end
@@ -22,8 +22,8 @@ module Spree
22
22
  def update
23
23
  if @order.update_attributes(order_params)
24
24
  @order.associate_user!(@user, @order.email.blank?) unless guest_checkout?
25
- @order.next unless @order.complete?
26
- @order.refresh_shipment_rates(Spree::ShippingMethod::DISPLAY_ON_FRONT_AND_BACK_END)
25
+ @order.next if @order.address?
26
+ @order.refresh_shipment_rates(Spree::ShippingMethod::DISPLAY_ON_BACK_END)
27
27
 
28
28
  if @order.errors.empty?
29
29
  flash[:success] = Spree.t('customer_details_updated')
@@ -40,15 +40,14 @@ module Spree
40
40
 
41
41
  def order_params
42
42
  params.require(:order).permit(
43
- :email,
44
- :use_billing,
43
+ :email, :user_id, :use_billing,
45
44
  bill_address_attributes: permitted_address_attributes,
46
45
  ship_address_attributes: permitted_address_attributes
47
46
  )
48
47
  end
49
48
 
50
49
  def load_order
51
- @order = Order.includes(:adjustments).friendly.find(params[:order_id])
50
+ @order = Order.includes(:adjustments).find_by!(number: params[:order_id])
52
51
  end
53
52
 
54
53
  def model_class
@@ -56,7 +55,7 @@ module Spree
56
55
  end
57
56
 
58
57
  def load_user
59
- @user = (Spree.user_class.find_by(id: params[:user_id]) ||
58
+ @user = (Spree.user_class.find_by(id: order_params[:user_id]) ||
60
59
  Spree.user_class.find_by(email: order_params[:email]))
61
60
 
62
61
  unless @user
@@ -34,7 +34,7 @@ module Spree
34
34
  params[:q][:completed_at_lt] = params[:q].delete(:created_at_lt)
35
35
  end
36
36
 
37
- @search = Order.preload(:user).accessible_by(current_ability, :index).ransack(params[:q])
37
+ @search = Spree::Order.preload(:user).accessible_by(current_ability, :index).ransack(params[:q])
38
38
 
39
39
  # lazy loading other models here (via includes) may result in an invalid query
40
40
  # e.g. SELECT DISTINCT DISTINCT "spree_orders".id, "spree_orders"."created_at" AS alias_0 FROM "spree_orders"
@@ -49,14 +49,14 @@ module Spree
49
49
  end
50
50
 
51
51
  def new
52
- @order = Order.create(order_params)
52
+ @order = Spree::Order.create(order_params)
53
53
  redirect_to cart_admin_order_url(@order)
54
54
  end
55
55
 
56
56
  def edit
57
57
  can_not_transition_without_customer_info
58
58
 
59
- @order.refresh_shipment_rates(ShippingMethod::DISPLAY_ON_FRONT_AND_BACK_END)
59
+ @order.refresh_shipment_rates(ShippingMethod::DISPLAY_ON_BACK_END)
60
60
  end
61
61
 
62
62
  def cart
@@ -130,7 +130,7 @@ module Spree
130
130
  end
131
131
 
132
132
  def load_order
133
- @order = Order.includes(:adjustments).friendly.find(params[:id])
133
+ @order = Spree::Order.includes(:adjustments).find_by!(number: params[:id])
134
134
  authorize! action, @order
135
135
  end
136
136
 
@@ -24,22 +24,32 @@ module Spree
24
24
 
25
25
  def create
26
26
  invoke_callbacks(:create, :before)
27
- @payment ||= @order.payments.build(object_params)
28
- if @payment.payment_method.source_required? && params[:card].present? and params[:card] != 'new'
29
- @payment.source = @payment.payment_method.payment_source_class.find_by_id(params[:card])
30
- end
31
27
 
32
28
  begin
33
- if @payment.save
29
+ if @payment_method.store_credit?
30
+ payments = @order.add_store_credit_payments
31
+ else
32
+ @payment ||= @order.payments.build(object_params)
33
+ if @payment.payment_method.source_required? && params[:card].present? && params[:card] != 'new'
34
+ @payment.source = @payment.payment_method.payment_source_class.find_by_id(params[:card])
35
+ end
36
+ @payment.save
37
+ payments = [@payment]
38
+ end
39
+
40
+ if payments && (saved_payments = payments.select &:persisted?).any?
34
41
  invoke_callbacks(:create, :after)
42
+
35
43
  # Transition order as far as it will go.
36
44
  while @order.next; end
37
45
  # If "@order.next" didn't trigger payment processing already (e.g. if the order was
38
46
  # already complete) then trigger it manually now
39
- @payment.process! if @order.completed? && @payment.checkout?
40
- flash[:success] = flash_message_for(@payment, :successfully_created)
47
+
48
+ saved_payments.each { |payment| payment.process! if payment.reload.checkout? && @order.complete? }
49
+ flash[:success] = flash_message_for(saved_payments.first, :successfully_created)
41
50
  redirect_to admin_order_payments_path(@order)
42
51
  else
52
+ @payment ||= @order.payments.build(object_params)
43
53
  invoke_callbacks(:create, :fails)
44
54
  flash[:error] = Spree.t(:payment_could_not_be_created)
45
55
  render :new
@@ -83,18 +93,19 @@ module Spree
83
93
  if @payment and @payment.payment_method
84
94
  @payment_method = @payment.payment_method
85
95
  else
86
- @payment_method = @payment_methods.first
96
+ @payment_method = @payment_methods.find_by(id: params[:payment][:payment_method_id]) if params[:payment]
97
+ @payment_method ||= @payment_methods.first
87
98
  end
88
99
  end
89
100
 
90
101
  def load_order
91
- @order = Order.friendly.find(params[:order_id])
102
+ @order = Order.find_by!(number: params[:order_id])
92
103
  authorize! action, @order
93
104
  @order
94
105
  end
95
106
 
96
107
  def load_payment
97
- @payment = Payment.friendly.find(params[:id])
108
+ @payment = Payment.find_by!(number: params[:id])
98
109
  end
99
110
 
100
111
  def model_class
@@ -72,6 +72,11 @@ module Spree
72
72
  end
73
73
 
74
74
  redirect_to edit_admin_product_url(@new)
75
+
76
+ rescue ActiveRecord::RecordInvalid
77
+ # Handle error on uniqueness validation on product fields
78
+ flash[:error] = Spree.t('notice_messages.product_not_cloned')
79
+ redirect_to admin_products_url
75
80
  end
76
81
 
77
82
  def stock
@@ -5,11 +5,7 @@ class Spree::Admin::PromotionRulesController < Spree::Admin::BaseController
5
5
  before_action :validate_promotion_rule_type, only: :create
6
6
 
7
7
  def create
8
- # Remove type key from this hash so that we don't attempt
9
- # to set it when creating a new record, as this is raises
10
- # an error in ActiveRecord 3.2.
11
- promotion_rule_type = params[:promotion_rule].delete(:type)
12
- @promotion_rule = promotion_rule_type.constantize.new(params[:promotion_rule])
8
+ @promotion_rule = @promotion_rule_type.new(promotion_rule_params)
13
9
  @promotion_rule.promotion = @promotion
14
10
  if @promotion_rule.save
15
11
  flash[:success] = Spree.t(:successfully_created, resource: Spree.t(:promotion_rule))
@@ -38,8 +34,12 @@ class Spree::Admin::PromotionRulesController < Spree::Admin::BaseController
38
34
  end
39
35
 
40
36
  def validate_promotion_rule_type
41
- valid_promotion_rule_types = Rails.application.config.spree.promotions.rules.map(&:to_s)
42
- if !valid_promotion_rule_types.include?(params[:promotion_rule][:type])
37
+ requested_type = params[:promotion_rule].delete(:type)
38
+ promotion_rule_types = Rails.application.config.spree.promotions.rules
39
+ @promotion_rule_type = promotion_rule_types.detect do |klass|
40
+ klass.name == requested_type
41
+ end
42
+ if !@promotion_rule_type
43
43
  flash[:error] = Spree.t(:invalid_promotion_rule)
44
44
  respond_to do |format|
45
45
  format.html { redirect_to spree.edit_admin_promotion_path(@promotion)}
@@ -47,4 +47,8 @@ class Spree::Admin::PromotionRulesController < Spree::Admin::BaseController
47
47
  end
48
48
  end
49
49
  end
50
+
51
+ def promotion_rule_params
52
+ params[:promotion_rule].permit!
53
+ end
50
54
  end
@@ -13,7 +13,7 @@ module Spree
13
13
  end
14
14
 
15
15
  def show
16
- @stock_transfer = StockTransfer.friendly.find(params[:id])
16
+ @stock_transfer = StockTransfer.find_by!(number: params[:id])
17
17
  end
18
18
 
19
19
  def new; end
@@ -4,6 +4,7 @@ module Spree
4
4
 
5
5
  before_action :load_taxonomy, only: [:create, :edit, :update]
6
6
  before_action :load_taxon, only: [:edit, :update]
7
+ before_action :set_permalink_part, only: [:edit, :update]
7
8
  respond_to :html, :js
8
9
 
9
10
  def index
@@ -24,45 +25,52 @@ module Spree
24
25
  end
25
26
 
26
27
  def edit
27
- @permalink_part = @taxon.permalink.split("/").last
28
28
  end
29
29
 
30
30
  def update
31
- parent_id = params[:taxon][:parent_id]
32
- set_position
33
- set_parent(parent_id)
31
+ successful = @taxon.transaction do
34
32
 
35
- @taxon.save!
33
+ parent_id = params[:taxon][:parent_id]
34
+ set_position
35
+ set_parent(parent_id)
36
36
 
37
- # regenerate permalink
38
- regenerate_permalink if parent_id
37
+ @taxon.save!
39
38
 
40
- set_permalink_params
39
+ # regenerate permalink
40
+ regenerate_permalink if parent_id
41
41
 
42
- #check if we need to rename child taxons if parent name or permalink changes
43
- @update_children = true if params[:taxon][:name] != @taxon.name || params[:taxon][:permalink] != @taxon.permalink
42
+ set_permalink_params
44
43
 
45
- if @taxon.update_attributes(taxon_params)
46
- flash[:success] = flash_message_for(@taxon, :successfully_updated)
47
- end
44
+ #check if we need to rename child taxons if parent name or permalink changes
45
+ @update_children = true if params[:taxon][:name] != @taxon.name || params[:taxon][:permalink] != @taxon.permalink
48
46
 
49
- #rename child taxons
50
- rename_child_taxons if @update_children
47
+ @taxon.update_attributes(taxon_params)
51
48
 
52
- respond_with(@taxon) do |format|
53
- format.html { redirect_to edit_admin_taxonomy_url(@taxonomy) }
54
- format.json { render json: @taxon.to_json }
55
49
  end
56
- end
50
+ if successful
51
+ flash[:success] = flash_message_for(@taxon, :successfully_updated)
57
52
 
58
- def destroy
59
- @taxon = Taxon.find(params[:id])
60
- @taxon.destroy
61
- respond_with(@taxon) { |format| format.json { render json: '' } }
53
+ #rename child taxons
54
+ rename_child_taxons if @update_children
55
+
56
+ respond_with(@taxon) do |format|
57
+ format.html { redirect_to edit_admin_taxonomy_url(@taxonomy) }
58
+ format.json { render json: @taxon.to_json }
59
+ end
60
+ else
61
+ respond_with(@taxon) do |format|
62
+ format.html { render :edit }
63
+ format.json { render json: @taxon.errors.full_messages.to_sentence, status: 422 }
64
+ end
65
+ end
62
66
  end
63
67
 
64
68
  private
65
69
 
70
+ def set_permalink_part
71
+ @permalink_part = @taxon.permalink.split('/').last
72
+ end
73
+
66
74
  def taxon_params
67
75
  params.require(:taxon).permit(permitted_taxon_attributes)
68
76
  end
@@ -11,7 +11,7 @@ module Spree
11
11
  flash_class = "info" if flash[:notice]
12
12
  flash_class = "success" if flash[:success]
13
13
  flash_div = content_tag(:div, (close_button + message), class: "alert alert-#{flash_class} alert-auto-disappear")
14
- content_tag(:div, flash_div, class: 'col-md-12')
14
+ content_tag(:div, flash_div, class: 'col-xs-12')
15
15
  end
16
16
  end
17
17
 
@@ -210,17 +210,23 @@ module Spree
210
210
 
211
211
  def main_part_classes
212
212
  if cookies['sidebar-minimized'] == 'true'
213
- return 'col-sm-12 col-md-12 sidebar-collapsed'
213
+ 'col-xs-12 sidebar-collapsed'
214
214
  else
215
- return 'col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2'
215
+ 'col-xs-9 col-xs-offset-3 col-md-10 col-md-offset-2'
216
216
  end
217
217
  end
218
218
 
219
- def wrapper_classes
219
+ def main_sidebar_classes
220
220
  if cookies['sidebar-minimized'] == 'true'
221
- return 'sidebar-minimized'
221
+ 'col-xs-3 col-md-2 hidden-xs sidebar'
222
+ else
223
+ 'col-xs-3 col-md-2 sidebar'
222
224
  end
223
225
  end
226
+
227
+ def wrapper_classes
228
+ 'sidebar-minimized' if cookies['sidebar-minimized'] == 'true'
229
+ end
224
230
  end
225
231
  end
226
232
  end
@@ -20,10 +20,10 @@
20
20
  <% if can?(:edit, Spree::Adjustment) %>
21
21
  <div class="panel-footer">
22
22
  <div class="row text-center">
23
- <div class="col-md-6">
23
+ <div class="col-xs-12 col-md-6">
24
24
  <%= button_to Spree.t(:open_all_adjustments), open_adjustments_admin_order_path(@order), method: :get, class: "btn btn-success" %>
25
25
  </div>
26
- <div class="col-md-6">
26
+ <div class="col-xs-12 col-md-6">
27
27
  <%= button_to Spree.t(:close_all_adjustments), close_adjustments_admin_order_path(@order), method: :get, class: "btn btn-danger" %>
28
28
  </div>
29
29
  </div>