solidus_backend 2.2.2 → 2.3.0.beta1

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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +1 -2
  3. data/app/assets/javascripts/spree/backend/address_states.js +1 -1
  4. data/app/assets/javascripts/spree/backend/adjustments.js.coffee +1 -1
  5. data/app/assets/javascripts/spree/backend/admin.js +37 -41
  6. data/app/assets/javascripts/spree/backend/components/editable_table.js.coffee +3 -0
  7. data/app/assets/javascripts/spree/backend/images/index.js.coffee +1 -1
  8. data/app/assets/javascripts/spree/backend/images/upload.js +13 -189
  9. data/app/assets/javascripts/spree/backend/models/image_upload.js +76 -0
  10. data/app/assets/javascripts/spree/backend/models/index.js +2 -0
  11. data/app/assets/javascripts/spree/backend/models/taxonomy.js +3 -0
  12. data/app/assets/javascripts/spree/backend/namespaces.js +3 -1
  13. data/app/assets/javascripts/spree/backend/payments/new.js +8 -36
  14. data/app/assets/javascripts/spree/backend/promotions.js.coffee +1 -1
  15. data/app/assets/javascripts/spree/backend/select_payments.js.coffee +0 -12
  16. data/app/assets/javascripts/spree/backend/shipments.js +1 -1
  17. data/app/assets/javascripts/spree/backend/spree-select2.js +1 -1
  18. data/app/assets/javascripts/spree/backend/taxonomy.js.coffee +101 -95
  19. data/app/assets/javascripts/spree/backend/templates/products/upload_progress.hbs +5 -3
  20. data/app/assets/javascripts/spree/backend/views/images/upload_progress.js +48 -0
  21. data/app/assets/javascripts/spree/backend/views/images/upload_zone.js +39 -0
  22. data/app/assets/javascripts/spree/backend/views/index.js +6 -0
  23. data/app/assets/javascripts/spree/backend/views/order/address.js +1 -5
  24. data/app/assets/javascripts/spree/backend/views/payment/edit_credit_card.js +23 -0
  25. data/app/assets/javascripts/spree/backend/views/payment/new.js +25 -0
  26. data/app/assets/javascripts/spree/backend/views/state_select.js +4 -4
  27. data/app/assets/javascripts/spree/backend/views/tables/editable_table.js.coffee +14 -0
  28. data/app/assets/javascripts/spree/backend/views/tables/editable_table_row.js.coffee +45 -0
  29. data/app/assets/stylesheets/spree/backend/components/_date-picker.scss +0 -1
  30. data/app/assets/stylesheets/spree/backend/components/_editable_table.scss +37 -0
  31. data/app/assets/stylesheets/spree/backend/plugins/_bootstrap_tooltip.scss +2 -2
  32. data/app/assets/stylesheets/spree/backend/sections/_products.scss +0 -8
  33. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +15 -9
  34. data/app/assets/stylesheets/spree/backend/shared/_icons.scss +14 -14
  35. data/app/assets/stylesheets/spree/backend/shared/_tables.scss +1 -2
  36. data/app/assets/stylesheets/spree/backend/shared/_utilities.scss +13 -0
  37. data/app/assets/stylesheets/spree/backend/spree_admin.scss +1 -1
  38. data/app/controllers/spree/admin/cancellations_controller.rb +1 -1
  39. data/app/controllers/spree/admin/orders/customer_details_controller.rb +1 -1
  40. data/app/controllers/spree/admin/orders_controller.rb +3 -10
  41. data/app/controllers/spree/admin/payment_methods_controller.rb +19 -6
  42. data/app/controllers/spree/admin/payments_controller.rb +2 -2
  43. data/app/controllers/spree/admin/products_controller.rb +3 -9
  44. data/app/controllers/spree/admin/promotion_rules_controller.rb +5 -1
  45. data/app/controllers/spree/admin/promotions_controller.rb +1 -1
  46. data/app/controllers/spree/admin/properties_controller.rb +1 -1
  47. data/app/controllers/spree/admin/reports_controller.rb +24 -21
  48. data/app/controllers/spree/admin/resource_controller.rb +25 -14
  49. data/app/controllers/spree/admin/style_guide_controller.rb +4 -0
  50. data/app/controllers/spree/admin/users_controller.rb +1 -1
  51. data/app/controllers/spree/admin/variants_controller.rb +5 -0
  52. data/app/helpers/spree/admin/navigation_helper.rb +6 -2
  53. data/app/helpers/spree/promotion_rules_helper.rb +2 -2
  54. data/app/models/spree/backend_configuration.rb +1 -0
  55. data/app/views/spree/admin/adjustments/_form.html.erb +1 -1
  56. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -2
  57. data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
  58. data/app/views/spree/admin/images/_form.html.erb +1 -1
  59. data/app/views/spree/admin/images/_image_row.html.erb +22 -4
  60. data/app/views/spree/admin/images/create.js.erb +8 -5
  61. data/app/views/spree/admin/images/index.html.erb +4 -8
  62. data/app/views/spree/admin/orders/_risk_analysis.html.erb +6 -7
  63. data/app/views/spree/admin/orders/_shipment.html.erb +1 -1
  64. data/app/views/spree/admin/orders/confirm/_customer_details.html.erb +1 -1
  65. data/app/views/spree/admin/orders/confirm/_payments.html.erb +1 -1
  66. data/app/views/spree/admin/orders/index.html.erb +3 -3
  67. data/app/views/spree/admin/payment_methods/_form.html.erb +5 -5
  68. data/app/views/spree/admin/payments/_form.html.erb +2 -2
  69. data/app/views/spree/admin/payments/_list.html.erb +1 -1
  70. data/app/views/spree/admin/payments/show.html.erb +1 -1
  71. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +2 -7
  72. data/app/views/spree/admin/prices/_form.html.erb +2 -2
  73. data/app/views/spree/admin/prices/edit.html.erb +2 -0
  74. data/app/views/spree/admin/prices/index.html.erb +5 -4
  75. data/app/views/spree/admin/prices/new.html.erb +4 -0
  76. data/app/views/spree/admin/product_properties/index.html.erb +1 -1
  77. data/app/views/spree/admin/products/_form.html.erb +4 -3
  78. data/app/views/spree/admin/products/index.html.erb +3 -3
  79. data/app/views/spree/admin/products/new.html.erb +2 -2
  80. data/app/views/spree/admin/products/new.js.erb +0 -3
  81. data/app/views/spree/admin/promotion_actions/create.js.erb +2 -6
  82. data/app/views/spree/admin/promotion_rules/create.js.erb +0 -8
  83. data/app/views/spree/admin/promotions/_actions.html.erb +2 -2
  84. data/app/views/spree/admin/promotions/_form.html.erb +1 -1
  85. data/app/views/spree/admin/promotions/_promotion_action.html.erb +3 -4
  86. data/app/views/spree/admin/promotions/_promotion_rule.html.erb +3 -3
  87. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  88. data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +6 -2
  89. data/app/views/spree/admin/promotions/actions/_promotion_calculators_with_custom_fields.html.erb +1 -1
  90. data/app/views/spree/admin/promotions/calculators/distributed_amount/_fields.html.erb +54 -0
  91. data/app/views/spree/admin/promotions/calculators/tiered_flat_rate/_fields.html.erb +33 -14
  92. data/app/views/spree/admin/promotions/calculators/tiered_percent/_fields.html.erb +33 -14
  93. data/app/views/spree/admin/promotions/index.html.erb +1 -1
  94. data/app/views/spree/admin/promotions/rules/_first_repeat_purchase_since.html.erb +1 -1
  95. data/app/views/spree/admin/promotions/rules/_item_total.html.erb +1 -1
  96. data/app/views/spree/admin/promotions/rules/_landing_page.html.erb +1 -1
  97. data/app/views/spree/admin/promotions/rules/_nth_order.html.erb +1 -1
  98. data/app/views/spree/admin/promotions/rules/_product.html.erb +1 -1
  99. data/app/views/spree/admin/promotions/rules/_taxon.html.erb +1 -1
  100. data/app/views/spree/admin/promotions/rules/_user_role.html.erb +2 -2
  101. data/app/views/spree/admin/refunds/edit.html.erb +1 -1
  102. data/app/views/spree/admin/refunds/new.html.erb +1 -1
  103. data/app/views/spree/admin/reimbursements/edit.html.erb +2 -2
  104. data/app/views/spree/admin/reports/sales_total.html.erb +1 -1
  105. data/app/views/spree/admin/return_authorizations/_form.html.erb +4 -4
  106. data/app/views/spree/admin/shared/_address_form.html.erb +2 -2
  107. data/app/views/spree/admin/shared/_calculator_fields.html.erb +1 -1
  108. data/app/views/spree/admin/shared/_product_tabs.html.erb +4 -4
  109. data/app/views/spree/admin/shared/_report_order_criteria.html.erb +1 -1
  110. data/app/views/spree/admin/shared/_variant_search.html.erb +1 -1
  111. data/app/views/spree/admin/shipping_methods/_form.html.erb +1 -1
  112. data/app/views/spree/admin/states/index.html.erb +1 -1
  113. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  114. data/app/views/spree/admin/stock_locations/_form.html.erb +1 -1
  115. data/app/views/spree/admin/stock_transfers/edit.html.erb +1 -1
  116. data/app/views/spree/admin/stock_transfers/index.html.erb +1 -1
  117. data/app/views/spree/admin/stock_transfers/new.html.erb +1 -1
  118. data/app/views/spree/admin/store_credits/_form.html.erb +1 -1
  119. data/app/views/spree/admin/store_credits/_update_reason_field.html.erb +1 -1
  120. data/app/views/spree/admin/stores/_form.html.erb +1 -1
  121. data/app/views/spree/admin/style_guide/topics/forms/_building_forms.html.erb +4 -8
  122. data/app/views/spree/admin/style_guide/topics/forms/_buttons.html.erb +6 -0
  123. data/app/views/spree/admin/style_guide/topics/forms/_helper_text.html.erb +13 -0
  124. data/app/views/spree/admin/style_guide/topics/forms/_inputs.html.erb +96 -0
  125. data/app/views/spree/admin/style_guide/topics/forms/_labels.html.erb +6 -0
  126. data/app/views/spree/admin/style_guide/topics/forms/_validation.html.erb +8 -1
  127. data/app/views/spree/admin/style_guide/topics/layout/_full_width_table_layout.html.erb +10 -0
  128. data/app/views/spree/admin/style_guide/topics/layout/_helpful_layout.html.erb +0 -0
  129. data/app/views/spree/admin/style_guide/topics/layout/_sidebar_layout.html.erb +4 -0
  130. data/app/views/spree/admin/style_guide/topics/messaging/_flashes.html.erb +10 -4
  131. data/app/views/spree/admin/style_guide/topics/messaging/_tooltips.html.erb +45 -0
  132. data/app/views/spree/admin/style_guide/topics/tables/_forms_in_tables.html.erb +4 -0
  133. data/app/views/spree/admin/style_guide/topics/typography/_lists.html.erb +1 -1
  134. data/app/views/spree/admin/tax_rates/_form.html.erb +17 -3
  135. data/app/views/spree/admin/tax_rates/index.html.erb +12 -3
  136. data/app/views/spree/admin/taxonomies/edit.erb +1 -8
  137. data/app/views/spree/admin/taxons/_form.html.erb +6 -4
  138. data/app/views/spree/admin/taxons/edit.html.erb +0 -15
  139. data/app/views/spree/admin/taxons/index.html.erb +1 -1
  140. data/app/views/spree/admin/variants/_form.html.erb +8 -9
  141. data/app/views/spree/admin/variants/new.js.erb +0 -1
  142. data/config/routes.rb +1 -1
  143. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +1 -1
  144. data/spec/controllers/spree/admin/orders_controller_spec.rb +16 -4
  145. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +2 -2
  146. data/spec/controllers/spree/admin/payments_controller_spec.rb +1 -1
  147. data/spec/controllers/spree/admin/products_controller_spec.rb +33 -0
  148. data/spec/controllers/spree/admin/variants_controller_spec.rb +39 -13
  149. data/spec/features/admin/configuration/payment_methods_spec.rb +11 -11
  150. data/spec/features/admin/configuration/shipping_methods_spec.rb +1 -1
  151. data/spec/features/admin/configuration/states_spec.rb +4 -4
  152. data/spec/features/admin/configuration/store_spec.rb +3 -3
  153. data/spec/features/admin/configuration/tax_rates_spec.rb +1 -1
  154. data/spec/features/admin/orders/adjustments_spec.rb +1 -1
  155. data/spec/features/admin/orders/customer_details_spec.rb +10 -11
  156. data/spec/features/admin/orders/listing_spec.rb +1 -1
  157. data/spec/features/admin/orders/new_order_spec.rb +4 -11
  158. data/spec/features/admin/orders/order_details_spec.rb +20 -30
  159. data/spec/features/admin/orders/return_payment_state_spec.rb +60 -0
  160. data/spec/features/admin/orders/shipments_spec.rb +7 -0
  161. data/spec/features/admin/products/edit/images_spec.rb +48 -9
  162. data/spec/features/admin/products/edit/variants_spec.rb +1 -1
  163. data/spec/features/admin/products/option_types_spec.rb +2 -2
  164. data/spec/features/admin/products/products_spec.rb +49 -3
  165. data/spec/features/admin/products/stock_management_spec.rb +1 -3
  166. data/spec/features/admin/products/variant_spec.rb +20 -0
  167. data/spec/features/admin/promotion_adjustments_spec.rb +35 -34
  168. data/spec/features/admin/promotions/option_value_rule_spec.rb +2 -2
  169. data/spec/features/admin/promotions/product_rule_spec.rb +1 -1
  170. data/spec/features/admin/promotions/tiered_calculator_spec.rb +2 -2
  171. data/spec/features/admin/promotions/user_rule_spec.rb +2 -2
  172. data/spec/features/admin/stock_transfer_spec.rb +11 -8
  173. data/spec/helpers/admin/navigation_helper_spec.rb +23 -0
  174. metadata +26 -18
  175. data/app/assets/javascripts/spree/backend/images/new.js.coffee +0 -7
  176. data/app/assets/stylesheets/spree/backend/sections/_payments.scss +0 -14
  177. data/app/helpers/spree/admin/images_helper.rb +0 -17
  178. data/app/views/spree/admin/orders/_add_line_item.html.erb +0 -15
  179. data/app/views/spree/admin/prices/new.js.erb +0 -2
  180. data/app/views/spree/admin/products/_properties_form.erb +0 -10
  181. data/app/views/spree/admin/promotions/_tab.html.erb +0 -1
  182. data/app/views/spree/admin/shared/_report_criteria.html.erb +0 -17
  183. data/app/views/spree/admin/states/_new.html.erb +0 -7
  184. data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +0 -38
  185. data/app/views/spree/admin/stock_transfers/_stock_movements.html.erb +0 -27
  186. data/app/views/spree/admin/taxons/_taxon_table.html.erb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6acc4cfee78b4706bcd2d07f7a66a5e7bec16195
4
- data.tar.gz: fc469241223bd6813067ce6512b4e7309fc112d4
3
+ metadata.gz: cebe06f697d76eeeeb4f0127598a92a3bac822e1
4
+ data.tar.gz: f6d8aadac696b01eddbe0eeeb20ebc350b086991
5
5
  SHA512:
6
- metadata.gz: a8cc397b8f83c1adeb7ec297977cca5216e43b0f1469c8373f661d570917d625ca1ddbc9cb3db176de0b5acf534a7ed2d5af5987447aa28f96b4935242ccf2b5
7
- data.tar.gz: 4a4d53b91eeb7ff9c5de2a4fabc3f04ea03ec1845de84b3d0f708d7511daccd39010a48e7ae9a29cb20f3e1a5336313b4c6eb2f989b70b0a512bd70656bf810d
6
+ metadata.gz: d66d74dc75f5cd2c9f9cc2e793896e7a938ec3549f4a0d2e92096a8f36041a943a19a10e8c776af35691f33cc325a13d6d50c04a7da8e5842ba53a33ee6638f0
7
+ data.tar.gz: bd40e9bf6e7e06f667970d34cbb7389b320b0752a68fc7d112acfec8d8d959253eac2fa555e55218aa83e8564a58a4664092fb468dc33111e10746e3fbb89078
@@ -32,11 +32,11 @@
32
32
  //= require spree/backend/components/number_with_currency
33
33
  //= require spree/backend/components/tabs
34
34
  //= require spree/backend/components/tooltips
35
+ //= require spree/backend/components/editable_table
35
36
  //= require spree/backend/flash
36
37
  //= require spree/backend/gateway
37
38
  //= require spree/backend/handlebars_extensions
38
39
  //= require spree/backend/images/index
39
- //= require spree/backend/images/new
40
40
  //= require spree/backend/images/upload
41
41
  //= require spree/backend/navigation
42
42
  //= require spree/backend/number_field_updater
@@ -51,7 +51,6 @@
51
51
  //= require spree/backend/promotions/activation
52
52
  //= require spree/backend/returns/return_item_selection
53
53
  //= require spree/backend/routes
54
- //= require spree/backend/select_payments
55
54
  //= require spree/backend/shipments
56
55
  //= require spree/backend/spree-select2
57
56
  //= require spree/backend/states
@@ -1,7 +1,7 @@
1
1
  window.update_state = function (region, done) {
2
2
  'use strict';
3
3
 
4
- var country = $('span#' + region + 'country .select2').select2('val');
4
+ var country = $('span#' + region + 'country select.select2').select2('val');
5
5
  var state_select = $('span#' + region + 'state select.select2');
6
6
  var state_input = $('span#' + region + 'state input.state_name');
7
7
 
@@ -1,4 +1,4 @@
1
- $(@).ready( ->
1
+ Spree.ready( ->
2
2
  $('[data-hook=adjustments_new_coupon_code] #add_coupon_code').click ->
3
3
  return if $("#coupon_code").val().length == 0
4
4
  Spree.ajax
@@ -14,7 +14,7 @@ under the spree namespace that do stuff we find helpful.
14
14
  Hopefully, this will evolve into a propper class.
15
15
  **/
16
16
 
17
- jQuery(function($) {
17
+ Spree.ready(function() {
18
18
  // Highlight hovered table column
19
19
  $('table').on("mouseenter", 'td.actions a, td.actions button', function(){
20
20
  var tr = $(this).closest('tr');
@@ -159,48 +159,44 @@ $(document).ready(function(){
159
159
  return ui;
160
160
  };
161
161
 
162
- $('table.sortable').ready(function(){
163
- var td_count = $(this).find('tbody tr:first-child td').length
164
- $('table.sortable tbody').sortable(
165
- {
166
- handle: '.handle',
167
- helper: fixHelper,
168
- placeholder: 'ui-sortable-placeholder',
169
- update: function(event, ui) {
170
- $("#progress").show();
171
- var tableEl = $(ui.item).closest("table.sortable")
172
- var positions = {};
173
- $.each(tableEl.find('tbody tr'), function(position, obj){
174
- var idAttr = $(obj).prop('id');
175
- if (idAttr) {
176
- var objId = idAttr.split('_').slice(-1);
177
- if (!isNaN(objId)) {
178
- positions['positions['+objId+']'] = position+1;
179
- }
180
- }
181
- });
182
- Spree.ajax({
183
- type: 'POST',
184
- dataType: 'script',
185
- url: tableEl.data("sortable-link"),
186
- data: positions,
187
- success: function(data){ $("#progress").hide(); }
188
- });
189
- },
190
- start: function (event, ui) {
191
- // Set correct height for placehoder (from dragged tr)
192
- ui.placeholder.height(ui.item.height())
193
- // Fix placeholder content to make it correct width
194
- ui.placeholder.html("<td colspan='"+(td_count-1)+"'></td><td class='actions'></td>")
195
- },
196
- stop: function (event, ui) {
197
- var tableEl = $(ui.item).closest("table.sortable")
198
- // Fix odd/even classes after reorder
199
- tableEl.find("tr:even").removeClass("odd even").addClass("even");
200
- tableEl.find("tr:odd").removeClass("odd even").addClass("odd");
162
+ var td_count = $(this).find('tbody tr:first-child td').length
163
+ $('table.sortable tbody').sortable({
164
+ handle: '.handle',
165
+ helper: fixHelper,
166
+ placeholder: 'ui-sortable-placeholder',
167
+ update: function(event, ui) {
168
+ $("#progress").show();
169
+ var tableEl = $(ui.item).closest("table.sortable")
170
+ var positions = {};
171
+ $.each(tableEl.find('tbody tr'), function(position, obj){
172
+ var idAttr = $(obj).prop('id');
173
+ if (idAttr) {
174
+ var objId = idAttr.split('_').slice(-1);
175
+ if (!isNaN(objId)) {
176
+ positions['positions['+objId+']'] = position+1;
177
+ }
201
178
  }
202
-
203
179
  });
180
+ Spree.ajax({
181
+ type: 'POST',
182
+ dataType: 'script',
183
+ url: tableEl.data("sortable-link"),
184
+ data: positions,
185
+ success: function(data){ $("#progress").hide(); }
186
+ });
187
+ },
188
+ start: function (event, ui) {
189
+ // Set correct height for placehoder (from dragged tr)
190
+ ui.placeholder.height(ui.item.height())
191
+ // Fix placeholder content to make it correct width
192
+ ui.placeholder.html("<td colspan='"+(td_count-1)+"'></td><td class='actions'></td>")
193
+ },
194
+ stop: function (event, ui) {
195
+ var tableEl = $(ui.item).closest("table.sortable")
196
+ // Fix odd/even classes after reorder
197
+ tableEl.find("tr:even").removeClass("odd even").addClass("even");
198
+ tableEl.find("tr:odd").removeClass("odd even").addClass("odd");
199
+ }
204
200
  });
205
201
 
206
202
  window.Spree.advanceOrder = function() {
@@ -0,0 +1,3 @@
1
+ Spree.ready ->
2
+ $('.inline-editable-table tr').each ->
3
+ Spree.Views.Tables.EditableTable.add $(this)
@@ -10,4 +10,4 @@ $ ->
10
10
  url: @href
11
11
  success: (r) ->
12
12
  ($ '#images').html r
13
- ($ '.select2').select2()
13
+ ($ 'select.select2').select2()
@@ -3,199 +3,23 @@ Spree.prepareImageUploader = function () {
3
3
  var uploadZone = document.getElementById('upload-zone');
4
4
  if(!uploadZone) return;
5
5
 
6
- var UploadZone = Backbone.View.extend({
7
- el: uploadZone,
8
-
9
- events: {
10
- "dragover" : "onDragOver",
11
- "dragleave" : "onDragLeave",
12
- "drop" : "onDrop",
13
- 'change input[type="file"]' : "onFileBrowserSelect"
14
- },
15
-
16
- progressZone: document.getElementById('progress-zone'),
17
-
18
- // Hide or highlight supported browser features
19
- initialize: function() {
20
- "filereader formdata progress".split(' ').forEach(function (api) {
21
- this.support[api].className = (this.tests[api] === false) ? 'red' : 'hidden'
22
- }, this);
23
- },
24
-
25
- upload: function(file) {
26
- if (!FormData) return;
27
-
28
- var progressModel = new ProgressModel({file: file});
29
- progressModel.previewFile();
30
- progressModel.uploadFile();
31
-
32
- var progressView = new ProgressView({model: progressModel});
33
- this.progressZone.appendChild(progressView.render().el);
34
- },
35
-
36
- dragClass: 'with-images',
37
-
38
- onDragOver: function(e) {
39
- this.el.classList.add(this.dragClass);
40
- e.preventDefault();
41
- },
42
-
43
- onDragLeave: function() {
44
- this.el.classList.remove(this.dragClass);
45
- },
46
-
47
- onDrop: function(e) {
48
- this.el.classList.remove(this.dragClass);
49
- e.preventDefault();
50
-
51
- _.each(e.originalEvent.dataTransfer.files, this.upload, this);
52
- },
53
-
54
- onFileBrowserSelect: function(e) {
55
- _.each(e.target.files, this.upload, this);
56
- },
57
-
58
- tests: {
59
- filereader: typeof FileReader != 'undefined',
60
- dnd: 'draggable' in document.createElement('span'),
61
- formdata: !!window.FormData,
62
- progress: "upload" in new XMLHttpRequest
63
- },
6
+ // Kick off by binding the events on the upload zone
7
+ var imageUploads = new Backbone.Collection();
8
+ var progressZone = document.getElementById('progress-zone');
9
+ var variantId = document.querySelector('input[name="image[viewable_id]"]').value;
64
10
 
65
- support: {
66
- filereader: document.getElementById('filereader'),
67
- formdata: document.getElementById('formdata'),
68
- progress: document.getElementById('progress')
69
- }
11
+ new Spree.Views.Images.UploadZone({
12
+ el: uploadZone,
13
+ collection: imageUploads
70
14
  });
71
15
 
72
- var ProgressModel = Backbone.Model.extend({
73
- initialize: function() {
74
- this.set({summary: this.get("file").name});
75
- },
76
-
77
- defaults: function() {
78
- return {
79
- file: null,
80
- imgSrc: '',
81
- progress: 0,
82
- serverError: false,
83
- summary: ''
84
- }
85
- },
86
-
87
- acceptedTypes: {
88
- 'image/png': true,
89
- 'image/jpeg': true,
90
- 'image/gif': true
91
- },
92
-
93
- variantId: document.querySelector('input[name="image[viewable_id]"]').value,
94
-
95
- previewFile: function () {
96
- var file = this.get('file'),
97
- that = this;
16
+ imageUploads.on('add', function(progressModel) {
17
+ progressModel.set({variant_id: variantId});
98
18
 
99
- if (FileReader && this.acceptedTypes[file.type] === true) {
100
- var reader = new FileReader();
101
- reader.onload = function (event) {
102
- that.set({imgSrc: event.target.result});
103
- };
104
-
105
- reader.readAsDataURL(file);
106
- } else {
107
- var summary = 'Uploading ' + file.name + ' ' + (file.size ? (file.size/1024|0) + 'K' : '');
108
- this.set({summary: summary});
109
- }
110
- },
111
-
112
- uploadFile: function () {
113
- var formData = new FormData(),
114
- that = this;
115
-
116
- formData.append('image[attachment]', this.get('file'));
117
- formData.append('image[viewable_id]', this.variantId);
118
- formData.append('upload_id', this.cid);
119
-
120
- // send the image to the server
121
- Spree.ajax({
122
- url: window.location.pathname,
123
- type: "POST",
124
- dataType: 'script',
125
- data: formData,
126
- processData: false, // tell jQuery not to process the data
127
- contentType: false, // tell jQuery not to set contentType
128
- xhr: function () {
129
- var xhr = $.ajaxSettings.xhr();
130
- if (xhr.upload) {
131
- xhr.upload.onprogress = function (event) {
132
- if (event.lengthComputable) {
133
- var complete = (event.loaded / event.total * 100 | 0);
134
- that.set({progress: complete})
135
- }
136
- };
137
- }
138
- return xhr;
139
- }
140
- }).done(function() {
141
- that.set({progress: 100})
142
- }).error(function(jqXHR, textStatus, errorThrown) {
143
- that.set({serverError: true});
144
- });
145
- }
146
- }); // end ProgressModel
147
-
148
-
149
- var ProgressView = Backbone.View.extend({
150
- tagName: "div",
151
-
152
- // Cache the template function for a single item.
153
- template: HandlebarsTemplates["products/upload_progress"],
154
-
155
- initialize: function() {
156
- this.listenTo(this.model, 'change:progress', this.updateProgressBar);
157
- this.listenTo(this.model, 'change', this.render);
158
- this.listenTo(this.model, 'destroy', this.remove);
159
- },
160
-
161
- events: {
162
- "clear" : "clear"
163
- },
164
-
165
- className: 'col-sm-6 col-md-4 margin-bottom-one',
166
-
167
- attributes: function() {
168
- return {
169
- "data-upload-id": this.model.cid
170
- }
171
- },
172
-
173
- render: function() {
174
- // Skip progress bar update for better performance
175
- var changedAttrs = Object.keys(this.model.changed);
176
- if(changedAttrs.length === 1 && changedAttrs[0] == 'progress') return this;
177
-
178
- this.el.innerHTML = this.template(this.model.attributes);
179
- return this;
180
- },
181
-
182
- updateProgressBar: function() {
183
- var progressBar = this.el.querySelector('progress');
184
- progressBar.value = progressBar.innerHTML = this.model.get('progress');
185
- return this;
186
- },
187
-
188
- // Remove the item, destroy the model
189
- clear: function() {
190
- this.model.destroy();
191
- }
192
- }); // end ProgressView
193
-
194
-
195
- // Kick off by binding the events on the upload zone
196
- new UploadZone();
197
-
198
- }; // end prepareImageUploader
19
+ var progressView = new Spree.Views.Images.UploadProgress({model: progressModel});
20
+ progressZone.appendChild(progressView.render().el);
21
+ });
22
+ };
199
23
 
200
24
 
201
25
  Spree.ready(function () {
@@ -0,0 +1,76 @@
1
+ Spree.Models.ImageUpload = Backbone.Model.extend({
2
+ initialize: function() {
3
+ var file = this.get("file");
4
+ this.set({
5
+ filename: file.name,
6
+ size: file.size ? (file.size/1024|0) + 'K' : ''
7
+ });
8
+ },
9
+
10
+ defaults: function() {
11
+ return {
12
+ file: null,
13
+ imgSrc: '',
14
+ progress: 0,
15
+ serverError: false,
16
+ filename: '',
17
+ size: ''
18
+ }
19
+ },
20
+
21
+ acceptedTypes: {
22
+ 'image/png': true,
23
+ 'image/jpeg': true,
24
+ 'image/gif': true
25
+ },
26
+
27
+
28
+ previewFile: function () {
29
+ var file = this.get('file'),
30
+ that = this;
31
+
32
+ if (FileReader && this.acceptedTypes[file.type] === true) {
33
+ var reader = new FileReader();
34
+ reader.onload = function (event) {
35
+ that.set({imgSrc: event.target.result});
36
+ };
37
+
38
+ reader.readAsDataURL(file);
39
+ }
40
+ },
41
+
42
+ uploadFile: function () {
43
+ var formData = new FormData(),
44
+ that = this;
45
+
46
+ formData.append('image[attachment]', this.get('file'));
47
+ formData.append('image[viewable_id]', this.get('variant_id'));
48
+ formData.append('upload_id', this.cid);
49
+
50
+ // send the image to the server
51
+ Spree.ajax({
52
+ url: window.location.pathname,
53
+ type: "POST",
54
+ dataType: 'script',
55
+ data: formData,
56
+ processData: false, // tell jQuery not to process the data
57
+ contentType: false, // tell jQuery not to set contentType
58
+ xhr: function () {
59
+ var xhr = $.ajaxSettings.xhr();
60
+ if (xhr.upload) {
61
+ xhr.upload.onprogress = function (event) {
62
+ if (event.lengthComputable) {
63
+ var complete = (event.loaded / event.total * 100 | 0);
64
+ that.set({progress: complete})
65
+ }
66
+ };
67
+ }
68
+ return xhr;
69
+ }
70
+ }).done(function() {
71
+ that.set({progress: 100})
72
+ }).error(function(jqXHR, textStatus, errorThrown) {
73
+ that.set({serverError: true});
74
+ });
75
+ }
76
+ });
@@ -1,2 +1,4 @@
1
+ //= require spree/backend/models/image_upload
1
2
  //= require spree/backend/models/line_item
2
3
  //= require spree/backend/models/order
4
+ //= require spree/backend/models/taxonomy