spree_backend 3.2.9 → 3.3.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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>