/*
* Ajax helper function.
* Takes optional payload for POST and optional callback.
*/
function ajax(action, payload = null, cb = null, failcb = null) {
var data = {
'action': action,
};
if (payload){
for (var attrname in payload) { data[attrname] = payload[attrname]; }
}
// Since Wordpress 2.8 ajaxurl is always defined in admin header and
// points to admin-ajax.php
jQuery.post(ajaxurl, data, function(response) {
if(cb) {
cb(response);
}
}).fail(function(errorResponse){
if(failcb) {
failcb(errorResponse);
}
});
}
function fb_reset_product(wp_id) {
if(confirm('Resetting Facebook metadata will not remove this product from your shop. ' +
'If you have duplicated another product and are trying to publish a new Facebook product, ' +
'click OK to proceed. ' +
'Otherwise, Facebook metadata will be restored when this product is updated again.')) {
var metadata = document.querySelector('#fb_metadata');
if(metadata) {
metadata.innerHTML =
"This product is not yet synced to Facebook.";
}
return ajax(
'ajax_reset_single_fb_product',
{'wp_id': wp_id}
);
}
}
function fb_delete_product(wp_id) {
if(confirm('Are you sure you want to delete this product on Facebook? If you only want to "hide" the product, '+
'uncheck the "Visible" checkbox and hit "Update". If you delete a product on Facebook and hit "Update" after, ' +
'this product will be recreated. To permanently remove this product from Facebook, hit "OK" and close the window.'+
'This will not delete the product from WooCommerce.')) {
var metadata = document.querySelector('#fb_metadata');
if(metadata) {
metadata.innerHTML =
"This product is not yet synced to Facebook.";
}
return ajax(
'ajax_delete_fb_product',
{'wp_id': wp_id}
);
}
}