jQuery(document).ready(function($){ var xoo_cp_text = JSON.parse(xoo_cp_localize.xcp_text); //Add to cart ajax function function xoo_cp_atc(atc_btn,variation_id,product_id,quantity){ $.ajax({ url: xoo_cp_localize.adminurl, type: 'POST', data: {action: 'xoo_cp_cart_ajax', variation_id: variation_id, product_id: product_id, quantity: quantity}, success: function(response,status,jqXHR){ if(!atc_btn.hasClass('.ajax_add_to_cart')){ atc_btn.find('span.xoo-cp-atc-icon').html(''); } if(jqXHR.getResponseHeader('content-type').indexOf('text/html') >= 0){ $('.xoo-cp-atcn').html(response); } else{ $('.xoo-cp-atcn').html('
'+response.pname+' '+xoo_cp_text.added+'
'); $('.xoo-cp-content').html(response.cp_html); xoo_cp_ajax_fragm(response.ajax_fragm); } $('.xoo-cp-opac').show(); $('.xoo-cp-modal').addClass('xoo-cp-active'); } }) } //Refresh ajax fragments function xoo_cp_ajax_fragm(ajax_fragm){ var fragments = ajax_fragm.fragments; var cart_hash = ajax_fragm.cart_hash; // Block fragments class if ( fragments ) { $.each( fragments, function( key ) { $( key ).addClass( 'updating' ); }); } // Replace fragments if ( fragments ) { $.each( fragments, function( key, value ) { $( key ).replaceWith( value ); }); } // Unblock $( '.widget_shopping_cart, .updating' ).stop( true ).css( 'opacity', '1' ).unblock(); } //Add to cart on single page $(document).on('submit','form.cart',function(e){ e.preventDefault(); var atc_btn = $(this).find('.single_add_to_cart_button'); if(atc_btn.find('.xoo-cp-atc-icon').length !== 0){ atc_btn.find('.xoo-cp-atc-icon').html(''); } else{ atc_btn.append(''); } if(atc_btn.length === 0){ var atc_btn = $(this).find('button'); } var variation_id = parseInt($(this).find('[name=variation_id]').val()); var product_id = parseInt($(this).find('[name=add-to-cart]').val()); var quantity = parseInt($(this).find('.quantity').find('.qty').val()); xoo_cp_atc(atc_btn,variation_id,product_id,quantity);//Ajax add to cart }) //Add to cart on shop page if(xoo_cp_localize.enshop){ $('.ajax_add_to_cart').on('click',function(e){ e.preventDefault(); var atc_btn = $(this); var product_id = atc_btn.data('product_id'); var variation_id = 0; var quantity = 1; xoo_cp_atc(atc_btn,variation_id,product_id,quantity);//Ajax add to cart }) } //CLose Popup function xoo_cp_close_popup(e){ $.each(e.target.classList,function(key,value){ if(value == 'xoo-cp-close' || value == 'xoo-cp-modal'){ $('.xoo-cp-opac').hide(); $('.xoo-cp-modal').removeClass('xoo-cp-active'); $('.xoo-cp-atcn').html(''); } }) } $(document).on('click','.xoo-cp-close',xoo_cp_close_popup); $('.xoo-cp-modal').on('click',xoo_cp_close_popup); //Ajax function to update cart (In a popup) function xoo_cp_update_ajax(cart_key,new_qty,pid){ return $.ajax({ url: xoo_cp_localize.adminurl, type: 'POST', data: {action: 'xoo_cp_change_ajax', cart_key: cart_key, new_qty: new_qty, pid: pid } }) } //Update cart (In a popup) function xoo_cp_update_cart(_this,new_qty){ $('.xoo-cp-outer').show(); var pmain = _this.parents('.xoo-cp-pdetails'); var pdata = pmain.data('cp'); var cart_key = pdata.key; var pid = parseInt(pdata.pid); var pname = pdata.pname; var qty_field= pmain.find('.xoo-cp-qty'); var old_qty = qty_field.attr('xcp-old'); xoo_cp_update_ajax(cart_key,new_qty,pid).done(function(response,status,jqXHR){ $('.xoo-cp-outer').hide(); if(jqXHR.getResponseHeader('content-type').indexOf('text/html') >= 0){ $('.xoo-cp-atcn').html(response); qty_field.val(old_qty); } else{ $('.xoo-cp-atcn').html('
'+pname+' '+xoo_cp_text.updated+'
'); $('.xcp-ptotal').html(response.ptotal); qty_field.val(new_qty); xoo_cp_ajax_fragm(response.ajax_fragm); } }) } //Save Value on focus $(document).on('focusin','.xoo-cp-qty',function(){ $(this).attr('xcp-old',$(this).val()); }) //Qty input on change $(document).on('change','.xoo-cp-qty',function(e){ var _this = $(this); var new_qty = parseInt(_this.val()); if(new_qty <= 0){ _this.parents('.xoo-cp-pdetails').find('.xoo-cp-remove .fa').trigger('click'); } else{ xoo_cp_update_cart(_this,new_qty); } }) //Plus minus buttons $(document).on('click', '.xcp-chng' ,function(){ var _this = $(this); var qty_element = _this.siblings('.xoo-cp-qty'); qty_element.trigger('focusin'); var input_qty = parseInt(qty_element.val()); if(_this.hasClass('xcp-plus')){ var new_qty = input_qty + 1; } else if(_this.hasClass('xcp-minus')){ if(input_qty === 1){ _this.parents('.xoo-cp-pdetails').find('.xoo-cp-remove .fa').trigger('click'); return; } else if(input_qty <= 0){ alert('Invalid'); return; } var new_qty = input_qty - 1; } xoo_cp_update_cart(_this,new_qty); }) //Remove item from cart $(document).on('click','.xoo-cp-remove .fa',function(){ $('.xoo-cp-outer').show(); var _this = $(this); var pdata = _this.parents('.xoo-cp-pdetails').data('cp'); var cart_key = pdata.key; var pid = parseInt(pdata.pid); var new_qty = 0; var pname = pdata.pname; xoo_cp_update_ajax(cart_key,0,pid).done(function(response){ $('.xoo-cp-content').html(''); $('.xoo-cp-atcn').html('
'+pname+' '+xoo_cp_text.removed+'
'); $('.xoo-cp-outer').hide(); xoo_cp_ajax_fragm(response.ajax_fragm); }) }) })