spree_backend 3.6.6 → 3.7.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +7 -7
  3. data/app/assets/javascripts/spree/backend/address_states.js +21 -21
  4. data/app/assets/javascripts/spree/backend/adjustments.js +25 -0
  5. data/app/assets/javascripts/spree/backend/admin.js +253 -244
  6. data/app/assets/javascripts/spree/backend/calculator.js +14 -13
  7. data/app/assets/javascripts/spree/backend/checkouts/edit.js +48 -52
  8. data/app/assets/javascripts/spree/backend/gateway.js +11 -10
  9. data/app/assets/javascripts/spree/backend/general_settings.js +18 -0
  10. data/app/assets/javascripts/spree/backend/handlebar_extensions.js +6 -6
  11. data/app/assets/javascripts/spree/backend/line_items.js +72 -0
  12. data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +48 -47
  13. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +10 -10
  14. data/app/assets/javascripts/spree/backend/option_value_picker.js +13 -14
  15. data/app/assets/javascripts/spree/backend/orders/edit.js +3 -4
  16. data/app/assets/javascripts/spree/backend/payments/edit.js +230 -0
  17. data/app/assets/javascripts/spree/backend/payments/new.js +31 -31
  18. data/app/assets/javascripts/spree/backend/product_picker.js +15 -15
  19. data/app/assets/javascripts/spree/backend/progress.js +8 -0
  20. data/app/assets/javascripts/spree/backend/promotions.js +102 -107
  21. data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.js +5 -0
  22. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +32 -33
  23. data/app/assets/javascripts/spree/backend/shipments.js +246 -241
  24. data/app/assets/javascripts/spree/backend/spree-select2.js +3 -3
  25. data/app/assets/javascripts/spree/backend/states.js +8 -8
  26. data/app/assets/javascripts/spree/backend/stock_location.js +4 -3
  27. data/app/assets/javascripts/spree/backend/stock_management.js +13 -0
  28. data/app/assets/javascripts/spree/backend/stock_movement.js +35 -0
  29. data/app/assets/javascripts/spree/backend/stock_transfer.js +260 -0
  30. data/app/assets/javascripts/spree/backend/tag_picker.js +21 -21
  31. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +13 -13
  32. data/app/assets/javascripts/spree/backend/taxon_permalink_preview.js +8 -9
  33. data/app/assets/javascripts/spree/backend/taxon_tree_menu.js +35 -0
  34. data/app/assets/javascripts/spree/backend/taxonomy.js +165 -0
  35. data/app/assets/javascripts/spree/backend/taxons.js +122 -0
  36. data/app/assets/javascripts/spree/backend/user_picker.js +11 -11
  37. data/app/assets/javascripts/spree/backend/users/edit.js +14 -15
  38. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +61 -0
  39. data/app/assets/javascripts/spree/backend/variant_management.js +14 -0
  40. data/app/assets/javascripts/spree/backend/zone.js +44 -0
  41. data/app/controllers/spree/admin/countries_controller.rb +3 -3
  42. data/app/controllers/spree/admin/customer_returns_controller.rb +1 -0
  43. data/app/controllers/spree/admin/general_settings_controller.rb +1 -0
  44. data/app/controllers/spree/admin/orders_controller.rb +4 -4
  45. data/app/controllers/spree/admin/payment_methods_controller.rb +1 -0
  46. data/app/controllers/spree/admin/payments_controller.rb +3 -2
  47. data/app/controllers/spree/admin/products_controller.rb +3 -1
  48. data/app/controllers/spree/admin/promotions_controller.rb +1 -0
  49. data/app/controllers/spree/admin/properties_controller.rb +1 -0
  50. data/app/controllers/spree/admin/reports_controller.rb +4 -4
  51. data/app/controllers/spree/admin/resource_controller.rb +3 -1
  52. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  53. data/app/controllers/spree/admin/return_index_controller.rb +1 -0
  54. data/app/controllers/spree/admin/shipping_methods_controller.rb +2 -0
  55. data/app/controllers/spree/admin/store_credits_controller.rb +1 -2
  56. data/app/controllers/spree/admin/users_controller.rb +3 -1
  57. data/app/helpers/spree/admin/base_helper.rb +8 -5
  58. data/app/helpers/spree/admin/{general_settings_helper.rb → currency_helper.rb} +4 -3
  59. data/app/helpers/spree/admin/navigation_helper.rb +0 -8
  60. data/app/helpers/spree/admin/orders_helper.rb +2 -1
  61. data/app/models/spree/admin/resource.rb +1 -0
  62. data/app/views/spree/admin/orders/_line_items.html.erb +3 -1
  63. data/app/views/spree/admin/orders/_shipment_manifest.html.erb +3 -1
  64. data/app/views/spree/admin/orders/index.html.erb +15 -8
  65. data/app/views/spree/admin/products/index.html.erb +2 -2
  66. data/app/views/spree/admin/promotions/index.html.erb +4 -4
  67. data/app/views/spree/admin/properties/index.html.erb +2 -2
  68. data/app/views/spree/admin/return_index/customer_returns.html.erb +1 -1
  69. data/app/views/spree/admin/return_index/return_authorizations.html.erb +2 -2
  70. data/app/views/spree/admin/shared/_order_summary.html.erb +6 -0
  71. data/app/views/spree/admin/store_credits/_form.html.erb +15 -6
  72. data/app/views/spree/admin/store_credits/edit.html.erb +1 -1
  73. data/app/views/spree/admin/store_credits/new.html.erb +1 -1
  74. data/app/views/spree/admin/users/_addresses_form.html.erb +1 -1
  75. data/app/views/spree/admin/users/index.html.erb +8 -8
  76. data/app/views/spree/admin/users/items.html.erb +3 -1
  77. data/app/views/spree/admin/variants/index.html.erb +2 -2
  78. data/lib/generators/spree/backend/copy_views/copy_views_generator.rb +1 -1
  79. data/lib/spree/backend/callbacks.rb +1 -0
  80. data/spree_backend.gemspec +2 -2
  81. data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +4358 -4358
  82. data/vendor/assets/javascripts/js.cookie.js +165 -0
  83. metadata +28 -28
  84. data/app/assets/javascripts/spree/backend/adjustments.js.coffee +0 -17
  85. data/app/assets/javascripts/spree/backend/general_settings.js.coffee +0 -15
  86. data/app/assets/javascripts/spree/backend/line_items.js.coffee +0 -64
  87. data/app/assets/javascripts/spree/backend/payments/edit.js.coffee +0 -145
  88. data/app/assets/javascripts/spree/backend/progress.js.coffee +0 -6
  89. data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.coffee +0 -4
  90. data/app/assets/javascripts/spree/backend/stock_management.js.coffee +0 -9
  91. data/app/assets/javascripts/spree/backend/stock_movement.js.coffee +0 -19
  92. data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +0 -201
  93. data/app/assets/javascripts/spree/backend/taxon_tree_menu.js.coffee +0 -22
  94. data/app/assets/javascripts/spree/backend/taxonomy.js.coffee +0 -153
  95. data/app/assets/javascripts/spree/backend/taxons.js.coffee +0 -82
  96. data/app/assets/javascripts/spree/backend/variant_autocomplete.js.coffee +0 -38
  97. data/app/assets/javascripts/spree/backend/variant_management.js.coffee +0 -10
  98. data/app/assets/javascripts/spree/backend/zone.js.coffee +0 -43
  99. data/vendor/assets/javascripts/jquery.cookie.js +0 -117
@@ -1,6 +0,0 @@
1
- $(document).ready ->
2
- $(document).ajaxStart ->
3
- $("#progress").stop(true, true).fadeIn()
4
-
5
- $(document).ajaxStop ->
6
- $("#progress").fadeOut()
@@ -1,4 +0,0 @@
1
- $ ->
2
- $(document).on("change", ".return-items-table .return-item-exchange-selection", ->
3
- $(".expedited-exchanges-warning").fadeIn()
4
- )
@@ -1,9 +0,0 @@
1
- jQuery ->
2
- $('.stock_item_backorderable').on 'click', ->
3
- $(@).parent('form').submit()
4
- $('.toggle_stock_item_backorderable').on 'submit', ->
5
- $.ajax
6
- type: @method
7
- url: @action
8
- data: $(@).serialize()
9
- false
@@ -1,19 +0,0 @@
1
- jQuery ->
2
- el = $('#stock_movement_stock_item_id')
3
- el.select2
4
- placeholder: "Find a stock item" # translate
5
- ajax:
6
- url: Spree.url(Spree.routes.stock_items_api(el.data('stock-location-id')))
7
- data: (term, page) ->
8
- q:
9
- variant_product_name_cont: term
10
- per_page: 50
11
- page: page
12
- token: Spree.api_key
13
- results: (data, page) ->
14
- more = (page * 50) < data.count
15
- return { results: data.stock_items, more: more }
16
- formatResult: (stock_item) ->
17
- variantTemplate({ variant: stock_item.variant })
18
- formatSelection: (stock_item, container, excapeMarkup) ->
19
- Select2.util.escapeMarkup("#{stock_item.variant.name} (#{stock_item.variant.options_text})")
@@ -1,201 +0,0 @@
1
- $ ->
2
- # Base Model for transfer line items
3
- class TransferVariant
4
- constructor: (@variant) ->
5
- @id = @variant.id
6
- @name = "#{@variant.name} - #{@variant.sku}"
7
- @quantity = 0
8
-
9
- add: (quantity) ->
10
- @quantity += quantity
11
-
12
- # Model for stock items which validate quantity with count on hand
13
- class TransferStockItem extends TransferVariant
14
- constructor: (@stock_item) ->
15
- super(@stock_item.variant)
16
- @count_on_hand = @stock_item.count_on_hand
17
- @name = "#{@variant.name} - #{@variant.sku} (#{@count_on_hand})"
18
-
19
- add: (quantity) ->
20
- @quantity += quantity
21
- @quantity = @count_on_hand if @quantity > @count_on_hand
22
-
23
- # Manages source and destination selections
24
- class TransferLocations
25
- constructor: ->
26
- @source = $('#transfer_source_location_id')
27
- @destination = $('#transfer_destination_location_id')
28
-
29
- @source.change => @populate_destination()
30
-
31
- $('#transfer_receive_stock').change (event) => @receive_stock_change(event)
32
-
33
- $.getJSON Spree.url(Spree.routes.stock_locations_api) + '?token=' + Spree.api_key, (data) =>
34
- @locations = (location for location in data.stock_locations)
35
- @force_receive_stock() if @locations.length < 2
36
-
37
- @populate_source()
38
- @populate_destination()
39
-
40
- force_receive_stock: ->
41
- $('#receive_stock_field').hide()
42
- $('#transfer_receive_stock').prop('checked', true)
43
- @toggle_source_location true
44
-
45
- is_source_location_hidden: ->
46
- $('#transfer_source_location_id_field').css('visibility') == 'hidden'
47
-
48
- toggle_source_location: (hide=false) ->
49
- @source.trigger('change')
50
- if @is_source_location_hidden() and not hide
51
- $('#transfer_source_location_id_field').css('visibility', 'visible')
52
- $('#transfer_source_location_id_field').show()
53
- else
54
- $('#transfer_source_location_id_field').css('visibility', 'hidden')
55
- $('#transfer_source_location_id_field').hide()
56
-
57
- receive_stock_change: (event) ->
58
- @toggle_source_location event.target.checked
59
- @populate_destination(!event.target.checked)
60
-
61
- populate_source: ->
62
- @populate_select @source
63
- @source.trigger('change')
64
-
65
- populate_destination: (except_source=true) ->
66
- if @is_source_location_hidden()
67
- @populate_select @destination
68
- else
69
- @populate_select @destination, parseInt(@source.val())
70
-
71
- populate_select: (select, except=0) ->
72
- select.children('option').remove()
73
- for location in @locations when location.id isnt except
74
- select.append $('<option></option>').text(location.name).attr('value', location.id)
75
- select.select2()
76
-
77
- # Populates variants drop down
78
- class TransferVariants
79
- constructor: ->
80
- $('#transfer_source_location_id').change => @refresh_variants()
81
-
82
- receiving_stock: ->
83
- $( "#transfer_receive_stock:checked" ).length > 0
84
-
85
- refresh_variants: ->
86
- if @receiving_stock()
87
- @_search_transfer_variants()
88
- else
89
- @_search_transfer_stock_items()
90
-
91
- _search_transfer_variants: ->
92
- @build_select(Spree.url(Spree.routes.variants_api), 'product_name_or_sku_cont')
93
-
94
- _search_transfer_stock_items: ->
95
- stock_location_id = $('#transfer_source_location_id').val()
96
- @build_select(Spree.url(Spree.routes.stock_locations_api + "/#{stock_location_id}/stock_items"),
97
- 'variant_product_name_or_variant_sku_cont')
98
-
99
- format_variant_result: (result) ->
100
- if !!result.options_text
101
- "#{result.name} - #{result.sku} (#{result.options_text})"
102
- else
103
- "#{result.name} - #{result.sku}"
104
-
105
- build_select: (url, query) ->
106
- $('#transfer_variant').select2
107
- minimumInputLength: 3
108
- ajax:
109
- url: url
110
- datatype: "json"
111
- data: (term, page) ->
112
- query_object = {}
113
- query_object[query] = term
114
- q: query_object
115
- token: Spree.api_key
116
-
117
- results: (data, page) ->
118
- result = data["variants"] || data["stock_items"]
119
- # Format stock items as variants
120
- if data["stock_items"]?
121
- result = _(result).map (variant) ->
122
- variant.variant
123
- window.variants = result
124
- results: result
125
-
126
- formatResult: @format_variant_result
127
- formatSelection: (variant) ->
128
- if !!variant.options_text
129
- variant.name + " (#{variant.options_text})" + " - #{variant.sku}"
130
- else
131
- variant.name + " - #{variant.sku}"
132
-
133
-
134
- # Add/Remove variant line items
135
- class TransferAddVariants
136
- constructor: ->
137
- @variants = []
138
- @template = Handlebars.compile $('#transfer_variant_template').html()
139
-
140
- $('#transfer_source_location_id').change (event) => @clear_variants()
141
-
142
- $('button.transfer_add_variant').click (event) =>
143
- event.preventDefault()
144
- if $('#transfer_variant').select2('data')?
145
- @add_variant()
146
- else
147
- alert('Please select a variant first')
148
-
149
- $('#transfer-variants-table').on 'click', '.transfer_remove_variant', (event) =>
150
- event.preventDefault()
151
- @remove_variant $(event.target)
152
-
153
- $('button.transfer_transfer').click =>
154
- unless @variants.length > 0
155
- alert('no variants to transfer')
156
- false
157
-
158
- add_variant: ->
159
- variant = $('#transfer_variant').select2('data')
160
- quantity = parseInt $('#transfer_variant_quantity').val()
161
-
162
- variant = @find_or_add(variant)
163
- variant.add(quantity)
164
- @render()
165
-
166
- find_or_add: (variant) ->
167
- if existing = _.find(@variants, (v) -> v.id == variant.id)
168
- return existing
169
- else
170
- variant = new TransferVariant($.extend({}, variant))
171
- @variants.push variant
172
- return variant
173
-
174
- remove_variant: (target) ->
175
- variant_id = parseInt(target.data('variantId'))
176
- @variants = (v for v in @variants when v.id isnt variant_id)
177
- @render()
178
-
179
- clear_variants: ->
180
- @variants = []
181
- @render()
182
-
183
- contains: (id) ->
184
- _.contains(_.pluck(@variants, 'id'), id)
185
-
186
- render: ->
187
- if @variants.length is 0
188
- $('#transfer-variants-table').hide()
189
- $('.no-objects-found').show()
190
- else
191
- $('#transfer-variants-table').show()
192
- $('.no-objects-found').hide()
193
-
194
- rendered = @template { variants: @variants }
195
- $('#transfer_variants_tbody').html(rendered)
196
-
197
- # Main
198
- if $('#transfer_source_location_id').length > 0
199
- transfer_locations = new TransferLocations
200
- transfer_variants = new TransferVariants
201
- transfer_add_variants = new TransferAddVariants
@@ -1,22 +0,0 @@
1
- root = exports ? this
2
-
3
- root.taxon_tree_menu = (obj, context) ->
4
-
5
- base_url = Spree.url(Spree.routes.taxonomy_taxons_path)
6
- admin_base_url = Spree.url(Spree.routes.admin_taxonomy_taxons_path)
7
- edit_url = admin_base_url.clone()
8
- edit_url.setPath(edit_url.path() + '/' + obj.attr("id") + "/edit");
9
-
10
- create:
11
- label: "<span class='icon icon-plus'></span> " + Spree.translations.add,
12
- action: (obj) -> context.create(obj)
13
- rename:
14
- label: "<span class='icon icon-pencil'></span> " + Spree.translations.rename,
15
- action: (obj) -> context.rename(obj)
16
- remove:
17
- label: "<span class='icon icon-trash'></span> " + Spree.translations.remove,
18
- action: (obj) -> context.remove(obj)
19
- edit:
20
- separator_before: true,
21
- label: "<span class='icon icon-cog'></span> " + Spree.translations.edit,
22
- action: (obj) -> window.location = edit_url.toString()
@@ -1,153 +0,0 @@
1
- handle_ajax_error = (last_rollback) ->
2
- $.jstree.rollback(last_rollback)
3
- show_flash("error", "<strong>" + Spree.translations.server_error + "</strong><br />" + Spree.translations.taxonomy_tree_error)
4
-
5
- handle_move = (e, data) ->
6
- last_rollback = data.rlbk
7
- position = data.rslt.cp
8
- node = data.rslt.o
9
- new_parent = data.rslt.np
10
-
11
- url = Spree.url(base_url).clone()
12
- url.setPath url.path() + '/' + node.prop("id")
13
- $.ajax
14
- type: "POST",
15
- dataType: "json",
16
- url: url.toString(),
17
- data: {
18
- _method: "put",
19
- "taxon[parent_id]": new_parent.prop("id"),
20
- "taxon[child_index]": position,
21
- token: Spree.api_key
22
- },
23
- error: (XMLHttpRequest, textStatus, errorThrown) ->
24
- handle_ajax_error(last_rollback)
25
-
26
- true
27
-
28
- handle_create = (e, data) ->
29
- last_rollback = data.rlbk
30
- node = data.rslt.obj
31
- name = data.rslt.name
32
- position = data.rslt.position
33
- new_parent = data.rslt.parent
34
-
35
- $.ajax
36
- type: "POST",
37
- dataType: "json",
38
- url: base_url.toString(),
39
- data: {
40
- "taxon[name]": name,
41
- "taxon[parent_id]": new_parent.prop("id"),
42
- "taxon[child_index]": position,
43
- token: Spree.api_key
44
- },
45
- error: (XMLHttpRequest, textStatus, errorThrown) ->
46
- handle_ajax_error(last_rollback)
47
- success: (data,result) ->
48
- node.prop('id', data.id)
49
-
50
- handle_rename = (e, data) ->
51
- last_rollback = data.rlbk
52
- node = data.rslt.obj
53
- name = data.rslt.new_name
54
-
55
- url = Spree.url(base_url).clone()
56
- url.setPath(url.path() + '/' + node.prop("id"))
57
-
58
- $.ajax
59
- type: "POST",
60
- dataType: "json",
61
- url: url.toString(),
62
- data: {
63
- _method: "put",
64
- "taxon[name]": name,
65
- token: Spree.api_key
66
- },
67
- error: (XMLHttpRequest, textStatus, errorThrown) ->
68
- handle_ajax_error(last_rollback)
69
-
70
- handle_delete = (e, data) ->
71
- last_rollback = data.rlbk
72
- node = data.rslt.obj
73
- delete_url = base_url.clone()
74
- delete_url.setPath delete_url.path() + '/' + node.prop("id")
75
- response = confirm(Spree.translations.are_you_sure_delete)
76
- if response
77
- $.ajax
78
- type: "POST",
79
- dataType: "json",
80
- url: delete_url.toString(),
81
- data: {
82
- _method: "delete",
83
- token: Spree.api_key
84
- },
85
- error: (XMLHttpRequest, textStatus, errorThrown) ->
86
- handle_ajax_error(last_rollback)
87
- else
88
- $.jstree.rollback(last_rollback)
89
- last_rollback = null
90
-
91
- root = exports ? this
92
- root.setup_taxonomy_tree = (taxonomy_id) ->
93
- $taxonomy_tree = $("#taxonomy_tree")
94
-
95
- if taxonomy_id != undefined
96
- # this is defined within admin/taxonomies/edit
97
- root.base_url = Spree.url(Spree.routes.taxonomy_taxons_path)
98
-
99
- $.ajax
100
- url: Spree.url(base_url.path().replace("/taxons", "/jstree")).toString(),
101
- data:
102
- token: Spree.api_key
103
- success: (taxonomy) ->
104
- last_rollback = null
105
-
106
- conf =
107
- json_data:
108
- data: taxonomy,
109
- ajax:
110
- url: (e) ->
111
- Spree.url(base_url.path() + '/' + e.prop('id') + '/jstree' + '?token=' + Spree.api_key).toString()
112
- themes:
113
- theme: "spree",
114
- url: Spree.url(Spree.routes.jstree_theme_path)
115
- strings:
116
- new_node: Spree.translations.new_taxon,
117
- loading: Spree.translations.loading + "..."
118
- crrm:
119
- move:
120
- check_move: (m) ->
121
- position = m.cp
122
- node = m.o
123
- new_parent = m.np
124
-
125
- # no parent or cant drag and drop
126
- if !new_parent || node.prop("rel") == "root"
127
- return false
128
-
129
- # can't drop before root
130
- if new_parent.prop("id") == "taxonomy_tree" && position == 0
131
- return false
132
-
133
- true
134
- contextmenu:
135
- items: (obj) ->
136
- taxon_tree_menu(obj, this)
137
- plugins: ["themes", "json_data", "dnd", "crrm", "contextmenu"]
138
-
139
- $taxonomy_tree.jstree(conf)
140
- .bind("move_node.jstree", handle_move)
141
- .bind("remove.jstree", handle_delete)
142
- .bind("create.jstree", handle_create)
143
- .bind("rename.jstree", handle_rename)
144
- .bind "loaded.jstree", ->
145
- $(this).jstree("core").toggle_node($('.jstree-icon').first())
146
-
147
- $taxonomy_tree.on "dblclick", "a", (e) ->
148
- $taxonomy_tree.jstree("rename", this)
149
-
150
- # surpress form submit on enter/return
151
- $(document).keypress (e) ->
152
- if e.keyCode == 13
153
- e.preventDefault()
@@ -1,82 +0,0 @@
1
- $(document).ready ->
2
- window.productTemplate = Handlebars.compile($('#product_template').text());
3
- $('#taxon_products').sortable({
4
- handle: ".js-sort-handle"
5
- });
6
- formatTaxon = (taxon) ->
7
- Select2.util.escapeMarkup(taxon.pretty_name)
8
- $('#taxon_products').on "sortstop", (event, ui) ->
9
- $.ajax
10
- url: Spree.routes.classifications_api,
11
- method: 'PUT',
12
- dataType:'json',
13
- data:
14
- token: Spree.api_key,
15
- product_id: ui.item.data('product-id'),
16
- taxon_id: $('#taxon_id').val(),
17
- position: ui.item.index()
18
-
19
- if $('#taxon_id').length > 0
20
- $('#taxon_id').select2
21
- dropdownCssClass: "taxon_select_box",
22
- placeholder: Spree.translations.find_a_taxon,
23
- ajax:
24
- url: Spree.routes.taxons_api,
25
- datatype: 'json',
26
- data: (term, page) ->
27
- per_page: 50,
28
- page: page,
29
- without_children: true,
30
- token: Spree.api_key,
31
- q:
32
- name_cont: term
33
- results: (data, page) ->
34
- more = page < data.pages;
35
- results: data['taxons'],
36
- more: more
37
- formatResult: formatTaxon,
38
- formatSelection: formatTaxon
39
-
40
- $('#taxon_id').on "change", (e) ->
41
- el = $('#taxon_products')
42
- $.ajax
43
- url: Spree.routes.taxon_products_api,
44
- data:
45
- id: e.val,
46
- token: Spree.api_key
47
- success: (data) ->
48
- el.empty()
49
- if data.products.length == 0
50
- $('#taxon_products').html("<div class='alert alert-info'>" + Spree.translations.no_results + "</div>")
51
- else
52
- for product in data.products
53
- if product.master.images[0] != undefined && product.master.images[0].small_url != undefined
54
- product.image = product.master.images[0].small_url
55
- else
56
- for variant in product.variants
57
- if variant.images[0] != undefined && variant.images[0].small_url != undefined
58
- product.image = variant.images[0].small_url
59
- break
60
- el.append(productTemplate({ product: product }))
61
-
62
- $('#taxon_products').on "click", ".js-delete-product", (e) ->
63
- current_taxon_id = $("#taxon_id").val()
64
- product = $(this).parents(".product")
65
- product_id = product.data("product-id")
66
- product_taxons = String(product.data("taxons")).split(',').map(Number)
67
- product_index = product_taxons.indexOf(parseFloat(current_taxon_id))
68
- product_taxons.splice(product_index, 1)
69
- taxon_ids = if product_taxons.length > 0 then product_taxons else [""]
70
-
71
- $.ajax
72
- url: Spree.routes.products_api + "/" + product_id
73
- data:
74
- product:
75
- taxon_ids: taxon_ids
76
- token: Spree.api_key
77
- type: "PUT",
78
- success: (data) ->
79
- product.fadeOut 400, (e) ->
80
- product.remove()
81
-
82
- $(".variant_autocomplete").variantAutocomplete()