FruitBank/Presentation/Nop.Web/wwwroot/js/public.ajaxcart.js

136 lines
4.0 KiB
JavaScript

/*
** nopCommerce ajax cart implementation
*/
var AjaxCart = {
loadWaiting: false,
usepopupnotifications: false,
topcartselector: '',
topwishlistselector: '',
flyoutcartselector: '',
localized_data: false,
init: function (usepopupnotifications, topcartselector, topwishlistselector, flyoutcartselector, localized_data) {
this.loadWaiting = false;
this.usepopupnotifications = usepopupnotifications;
this.topcartselector = topcartselector;
this.topwishlistselector = topwishlistselector;
this.flyoutcartselector = flyoutcartselector;
this.localized_data = localized_data;
},
setLoadWaiting: function (display) {
displayAjaxLoading(display);
this.loadWaiting = display;
},
//add a product to the cart/wishlist from the catalog pages
addproducttocart_catalog: function (urladd) {
if (this.loadWaiting !== false) {
return;
}
this.setLoadWaiting(true);
var postData = {};
addAntiForgeryToken(postData);
$.ajax({
cache: false,
url: urladd,
type: "POST",
data: postData,
success: this.success_process,
complete: this.resetLoadWaiting,
error: this.ajaxFailure
});
},
//add a product to the cart/wishlist from the product details page
addproducttocart_details: function (urladd, formselector) {
if (this.loadWaiting !== false) {
return;
}
this.setLoadWaiting(true);
$.ajax({
cache: false,
url: urladd,
data: $(formselector).serialize(),
type: "POST",
success: this.success_process,
complete: this.resetLoadWaiting,
error: this.ajaxFailure
});
},
//add a product to compare list
addproducttocomparelist: function (urladd) {
if (this.loadWaiting !== false) {
return;
}
this.setLoadWaiting(true);
var postData = {};
addAntiForgeryToken(postData);
$.ajax({
cache: false,
url: urladd,
type: "POST",
data: postData,
success: this.success_process,
complete: this.resetLoadWaiting,
error: this.ajaxFailure
});
},
success_process: function (response) {
if (response.updatetopcartsectionhtml) {
$(AjaxCart.topcartselector).html(response.updatetopcartsectionhtml);
}
if (response.updatetopwishlistsectionhtml) {
$(AjaxCart.topwishlistselector).html(response.updatetopwishlistsectionhtml);
}
if (response.updateflyoutcartsectionhtml) {
$(AjaxCart.flyoutcartselector).replaceWith(response.updateflyoutcartsectionhtml);
}
if (response.message) {
//display notification
if (response.success === true) {
//success
if (AjaxCart.usepopupnotifications === true) {
displayPopupNotification(response.message, 'success', true);
}
else {
//specify timeout for success messages
displayBarNotification(response.message, 'success', 3500);
}
}
else {
//error
if (AjaxCart.usepopupnotifications === true) {
displayPopupNotification(response.message, 'error', true);
}
else {
//no timeout for errors
displayBarNotification(response.message, 'error', 0);
}
}
return false;
}
if (response.redirect) {
location.href = response.redirect;
return true;
}
return false;
},
resetLoadWaiting: function () {
AjaxCart.setLoadWaiting(false);
},
ajaxFailure: function () {
alert(this.localized_data.AjaxCartFailure);
}
};