You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

157 lines
6.1 KiB

$.fn.extend({
cartProductClassMissingForm: function(settings){
settings = $.extend({
informationForm: ''
}, settings);
$(this).each(function() {
var formParent = $(this).submit(function(){
if (formParent.attr('satisfied')) return true;
formParent.addClass('hasMissingForm');
var formDialog = window.formDialog = $('<div id="formDialog" />').load('tiki-index_raw.php?page=' + tiki_encodeURIComponent(settings.informationForm), function(){
formDialog.dialog({
title: settings.informationForm,
modal: true,
height: $(window).height() * 0.8,
width: $(window).width() * 0.8
});
var loading = $('<div><span>Loading...</span><img src=\"img/loading.gif\" /></div>').hide().appendTo(formDialog);
var forms = formDialog.find('form');
forms.each(function(){
var form = $(this).submit(function(){
var satisfied = true;
$('.mandatory_field').each(function(){
var field = $(this).children().first();
if (!field.val()) {
$(this).addClass('ui-state-error');
satisfied = false;
}
});
if (!satisfied)
return false;
$.post(form.attr('action'), form.serialize(), function(){
form
.slideUp(function(){
formDialog.animate({
scrollTop: form.next().offset().top
});
})
.attr('satisfied', true);
satisfied = true;
forms.each(function(){
if (!$(this).attr('satisfied')) {
satisfied = false;
}
});
if (satisfied) {
loading.show()
.prevAll()
.hide();
formParent
.attr('satisfied', true)
.submit();
}
});
return false;
});
});
});
return false;
});
});
},
cartAjaxAdd: function() {
$(this).each(function() {
var form = $(this);
form.submit(function() {
if (form.hasClass('hasMissingForm') && !form.attr('satisfied')) return false;
$("div.box-cart").tikiModal(" ");
var itemData = {}, params = form.data("params");
$.each(params, function (k, v) {
itemData["params~" + k] = v;
});
$("input[type!=submit]", form).each( function (k, el) {
var $el = $(el);
if ($el.attr("name")) {
itemData[$el.attr("name")] = $el.val();
}
});
$(document).trigger("cart.addtocart.start", [itemData]);
$.post($.service("payment", "addtocart"), itemData, function(data) {
if(data) {
$("div.box-cart").each(function () {
var $this = $(this);
$.get($.service("module", "execute"), {
module: "cart",
moduleId: $(this).attr("id").replace("module_", "")
}, function (html) {
$this.tikiModal();
$this.replaceWith(html);
$("form.mod-cart-form").submit(cartSubmit);
$(document).trigger("cart.addtocart.complete", [itemData]);
});
});
} else {
$("div.box-cart").tikiModal();
}
if (window.formDialog) {
window.formDialog.dialog("destroy");
window.formDialog = null;
}
}, "json").error(function (jqxhr, error, type) {
$("div.box-cart").tikiModal();
$(document).trigger("cart.addtocart.error", [itemData]);
});
return false;
});
});
}
});
var cartSubmit = function () {
var data = {
module: "cart",
moduleId: $(this).parents("div.box-cart").attr("id").replace("module_", "")
};
var $form = $(this);
$form.tikiModal(" ");
if (! $.trim(data.moduleId) || isNaN(data.moduleId)) { // module in wikiplugin?
delete data.moduleId; // get the params from the data on the form
var params = $(".mod-cart-checkout-form", $form.parent()).data("params");
$.each(params, function (k, v) {
data["params~" + k] = v;
});
}
$("input", $form).each(function (k, v) {
data[v['name']] = v['value'];
});
$.post($.service("module", "execute"), data, function (html) {
$form.tikiModal();
$form.parents("div.box-cart").replaceWith(html);
$("form.mod-cart-form").submit(cartSubmit);
$(document).trigger("cart.addtocart.complete");
}, "html");
return false;
};
$(document).ready(function () {
$("form.mod-cart-form").on("submit", cartSubmit);
});