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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/backend.js +7 -7
- data/app/assets/javascripts/spree/backend/address_states.js +21 -21
- data/app/assets/javascripts/spree/backend/adjustments.js +25 -0
- data/app/assets/javascripts/spree/backend/admin.js +253 -244
- data/app/assets/javascripts/spree/backend/calculator.js +14 -13
- data/app/assets/javascripts/spree/backend/checkouts/edit.js +48 -52
- data/app/assets/javascripts/spree/backend/gateway.js +11 -10
- data/app/assets/javascripts/spree/backend/general_settings.js +18 -0
- data/app/assets/javascripts/spree/backend/handlebar_extensions.js +6 -6
- data/app/assets/javascripts/spree/backend/line_items.js +72 -0
- data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +48 -47
- data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +10 -10
- data/app/assets/javascripts/spree/backend/option_value_picker.js +13 -14
- data/app/assets/javascripts/spree/backend/orders/edit.js +3 -4
- data/app/assets/javascripts/spree/backend/payments/edit.js +230 -0
- data/app/assets/javascripts/spree/backend/payments/new.js +31 -31
- data/app/assets/javascripts/spree/backend/product_picker.js +15 -15
- data/app/assets/javascripts/spree/backend/progress.js +8 -0
- data/app/assets/javascripts/spree/backend/promotions.js +102 -107
- data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.js +5 -0
- data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +32 -33
- data/app/assets/javascripts/spree/backend/shipments.js +246 -241
- data/app/assets/javascripts/spree/backend/spree-select2.js +3 -3
- data/app/assets/javascripts/spree/backend/states.js +8 -8
- data/app/assets/javascripts/spree/backend/stock_location.js +4 -3
- data/app/assets/javascripts/spree/backend/stock_management.js +13 -0
- data/app/assets/javascripts/spree/backend/stock_movement.js +35 -0
- data/app/assets/javascripts/spree/backend/stock_transfer.js +260 -0
- data/app/assets/javascripts/spree/backend/tag_picker.js +21 -21
- data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +13 -13
- data/app/assets/javascripts/spree/backend/taxon_permalink_preview.js +8 -9
- data/app/assets/javascripts/spree/backend/taxon_tree_menu.js +35 -0
- data/app/assets/javascripts/spree/backend/taxonomy.js +165 -0
- data/app/assets/javascripts/spree/backend/taxons.js +122 -0
- data/app/assets/javascripts/spree/backend/user_picker.js +11 -11
- data/app/assets/javascripts/spree/backend/users/edit.js +14 -15
- data/app/assets/javascripts/spree/backend/variant_autocomplete.js +61 -0
- data/app/assets/javascripts/spree/backend/variant_management.js +14 -0
- data/app/assets/javascripts/spree/backend/zone.js +44 -0
- data/app/controllers/spree/admin/countries_controller.rb +3 -3
- data/app/controllers/spree/admin/customer_returns_controller.rb +1 -0
- data/app/controllers/spree/admin/general_settings_controller.rb +1 -0
- data/app/controllers/spree/admin/orders_controller.rb +4 -4
- data/app/controllers/spree/admin/payment_methods_controller.rb +1 -0
- data/app/controllers/spree/admin/payments_controller.rb +3 -2
- data/app/controllers/spree/admin/products_controller.rb +3 -1
- data/app/controllers/spree/admin/promotions_controller.rb +1 -0
- data/app/controllers/spree/admin/properties_controller.rb +1 -0
- data/app/controllers/spree/admin/reports_controller.rb +4 -4
- data/app/controllers/spree/admin/resource_controller.rb +3 -1
- data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
- data/app/controllers/spree/admin/return_index_controller.rb +1 -0
- data/app/controllers/spree/admin/shipping_methods_controller.rb +2 -0
- data/app/controllers/spree/admin/store_credits_controller.rb +1 -2
- data/app/controllers/spree/admin/users_controller.rb +3 -1
- data/app/helpers/spree/admin/base_helper.rb +8 -5
- data/app/helpers/spree/admin/{general_settings_helper.rb → currency_helper.rb} +4 -3
- data/app/helpers/spree/admin/navigation_helper.rb +0 -8
- data/app/helpers/spree/admin/orders_helper.rb +2 -1
- data/app/models/spree/admin/resource.rb +1 -0
- data/app/views/spree/admin/orders/_line_items.html.erb +3 -1
- data/app/views/spree/admin/orders/_shipment_manifest.html.erb +3 -1
- data/app/views/spree/admin/orders/index.html.erb +15 -8
- data/app/views/spree/admin/products/index.html.erb +2 -2
- data/app/views/spree/admin/promotions/index.html.erb +4 -4
- data/app/views/spree/admin/properties/index.html.erb +2 -2
- data/app/views/spree/admin/return_index/customer_returns.html.erb +1 -1
- data/app/views/spree/admin/return_index/return_authorizations.html.erb +2 -2
- data/app/views/spree/admin/shared/_order_summary.html.erb +6 -0
- data/app/views/spree/admin/store_credits/_form.html.erb +15 -6
- data/app/views/spree/admin/store_credits/edit.html.erb +1 -1
- data/app/views/spree/admin/store_credits/new.html.erb +1 -1
- data/app/views/spree/admin/users/_addresses_form.html.erb +1 -1
- data/app/views/spree/admin/users/index.html.erb +8 -8
- data/app/views/spree/admin/users/items.html.erb +3 -1
- data/app/views/spree/admin/variants/index.html.erb +2 -2
- data/lib/generators/spree/backend/copy_views/copy_views_generator.rb +1 -1
- data/lib/spree/backend/callbacks.rb +1 -0
- data/spree_backend.gemspec +2 -2
- data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +4358 -4358
- data/vendor/assets/javascripts/js.cookie.js +165 -0
- metadata +28 -28
- data/app/assets/javascripts/spree/backend/adjustments.js.coffee +0 -17
- data/app/assets/javascripts/spree/backend/general_settings.js.coffee +0 -15
- data/app/assets/javascripts/spree/backend/line_items.js.coffee +0 -64
- data/app/assets/javascripts/spree/backend/payments/edit.js.coffee +0 -145
- data/app/assets/javascripts/spree/backend/progress.js.coffee +0 -6
- data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.coffee +0 -4
- data/app/assets/javascripts/spree/backend/stock_management.js.coffee +0 -9
- data/app/assets/javascripts/spree/backend/stock_movement.js.coffee +0 -19
- data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +0 -201
- data/app/assets/javascripts/spree/backend/taxon_tree_menu.js.coffee +0 -22
- data/app/assets/javascripts/spree/backend/taxonomy.js.coffee +0 -153
- data/app/assets/javascripts/spree/backend/taxons.js.coffee +0 -82
- data/app/assets/javascripts/spree/backend/variant_autocomplete.js.coffee +0 -38
- data/app/assets/javascripts/spree/backend/variant_management.js.coffee +0 -10
- data/app/assets/javascripts/spree/backend/zone.js.coffee +0 -43
- data/vendor/assets/javascripts/jquery.cookie.js +0 -117
@@ -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()
|