Jump to content

Ajax cart effect not working


Recommended Posts

This is my theme demo that has the Ajax cart effect installed:

 

http://addons.prestashop.com/demo/FO7601.html

 

If you click on the product's "Add to cart" tab, a little image flows to the cart that is located in the upper right corner of the site. In my website this effect doesn't work, even though the Ajax cart is activated in the cart block module. Instead, I have a window pop up each time I add a product to the cart (see the screenshot below). I'd like to have the flying ajax effect. Can anyone help me fix this, please?

 

Screenshot2014-06-14at123404PM_zps1fd65e

 

Link to comment
Share on other sites

Hi,

 

I would propose the following.

Open your FTP, go to ROOT/Themes/YourTheme/Modules/Blockcart, download this entire folder and then delete it. This should force Prestashop to use the ROOT/modules/blockcart folder instead..

If this does not help, try contacting the author of the theme..they always know best ;)

Link to comment
Share on other sites

PSfever, sorry, I wasn't able to upload that file. I found a thread on this forum and someone gave a code for the ajax cart. http://www.prestashop.com/forums/topic/326529-add-to-cart-animation-in-16/

 

I used the code and it worked, halfway though. In the demo the product flies to the cart a bit slower and you then get a little window open in the upper right corner, like on the screenshot below. On my site now it flies too fast, it's unclear what's going on as I can't see the actual product fly to the cart. And then that little window doesn't pop up like in the demo. Is there perhaps anything to adjust in the code? I'll paste the entire code below.

 

This is what the demo shows and the demo is located here: http://addons.prestashop.com/demo/FO7601.html

 

And my site is here: www.postcardfair.com

 

You can compare both effects. I like the demo much better and would like my site cart effect be the same. Any suggestions?

 

Screenshot2014-06-14at52600PM_zps33884f6

 

 

This is the code I pasted to the themes/PRS050117/js/modules/blockcart/ajax-cart.js folder:

 

 

 

/*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2014 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
$(document).ready(function(){
    ajaxCart.overrideButtonsInThePage();

    $(document).on('click', '.block_cart_collapse', function(e){
        e.preventDefault();
        ajaxCart.collapse();
    });
    $(document).on('click', '.block_cart_expand', function(e){
        e.preventDefault();
        ajaxCart.expand();
    });

    var cart_qty = 0;
    var current_timestamp = parseInt(new Date().getTime() / 1000);

    if (typeof $('.ajax_cart_quantity').html() == 'undefined' || (typeof generated_date != 'undefined' && generated_date != null && (parseInt(generated_date) + 30) < current_timestamp))
        ajaxCart.refresh();
    else
        cart_qty = parseInt($('.ajax_cart_quantity').html());

    /* roll over cart */
    var cart_block = new HoverWatcher('#header .cart_block');
    var shopping_cart = new HoverWatcher('#header .shopping_cart');

    if ('ontouchstart' in document.documentElement)
    {
        $('.shopping_cart > a:first').on('click', function(e){
            e.preventDefault();
        });

        $(document).on('touchstart', '#header .shopping_cart a:first', function(){
            if ($(this).next('.cart_block:visible').length)
                $("#header .cart_block").stop(true, true).slideUp(450);
            else
                $("#header .cart_block").stop(true, true).slideDown(450);
            e.preventDefault();
            e.stopPropagation();
        });
    }
    else
        $("#header .shopping_cart a:first").hover(
            function(){
                if (ajaxCart.nb_total_products > 0 || cart_qty > 0)
                    $("#header .cart_block").stop(true, true).slideDown(450);
            },
            function(){
                setTimeout(function(){
                    if (!shopping_cart.isHoveringOver() && !cart_block.isHoveringOver())
                        $("#header .cart_block").stop(true, true).slideUp(450);
                        
                }, 200);
            }
        );

    $("#header .cart_block").hover(
        function(){
        },
        function(){
            setTimeout(function(){
                if (!shopping_cart.isHoveringOver())
                    $("#header .cart_block").stop(true, true).slideUp(450);
            }, 200);
        }
    );

    $(document).on('click', '.delete_voucher', function(e){
        e.preventDefault();
        $.ajax({
            type: 'POST',
            headers: { "cache-control": "no-cache" },
            async: true,
            cache: false,
            url:$(this).attr('href') + '?rand=' + new Date().getTime()
        });
        $(this).parent().parent().remove();
        if ($('body').attr('id') == 'order' || $('body').attr('id') == 'order-opc')
        {
            if (typeof(updateAddressSelection) != 'undefined')
                updateAddressSelection();
            else
                location.reload();
        }
    });

    $(document).on('click', '#cart_navigation input', function(e){
        $(this).prop('disabled', 'disabled').addClass('disabled');
        $(this).closest("form").get(0).submit();
    });

    $(document).on('click', '#layer_cart .cross, #layer_cart .continue, .layer_cart_overlay', function(e){
        e.preventDefault();
        $('.layer_cart_overlay').hide();
        $('#layer_cart').fadeOut('fast');
    });
    
    $('#columns #layer_cart, #columns .layer_cart_overlay').detach().prependTo('#columns');
});

//JS Object : update the cart by ajax actions
var ajaxCart = {
    nb_total_products: 0,
    //override every button in the page in relation to the cart
    overrideButtonsInThePage : function(){
        //for every 'add' buttons...
        $(document).on('click', '.ajax_add_to_cart_button', function(e){
            e.preventDefault();
            var idProduct =  $(this).data('id-product');
            if ($(this).prop('disabled') != 'disabled')
                ajaxCart.add(idProduct, null, false, this);
        });
        //for product page 'add' button...
        $(document).on('click', '#add_to_cart button', function(e){
            e.preventDefault();
            ajaxCart.add( $('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null);
        });

        //for 'delete' buttons in the cart block...
        $(document).on('click', '.cart_block_list .ajax_cart_block_remove_link', function(e){
            e.preventDefault();
            // Customized product management
            var customizationId = 0;
            var productId = 0;
            var productAttributeId = 0;
            var customizableProductDiv = $($(this).parent().parent()).find("div[data-id^=deleteCustomizableProduct_]");
            var idAddressDelivery = false;

            if (customizableProductDiv && $(customizableProductDiv).length)
            {
                var ids = customizableProductDiv.data('id').split('_');
                if (typeof(ids[1]) != 'undefined')
                {
                    customizationId = parseInt(ids[1]);
                    productId = parseInt(ids[2]);
                    if (typeof(ids[3]) != 'undefined')
                        productAttributeId = parseInt(ids[3]);
                    if (typeof(ids[4]) != 'undefined')
                        idAddressDelivery = parseInt(ids[4]);
                }
            }

            // Common product management
            if (!customizationId)
            {
                //retrieve idProduct and idCombination from the displayed product in the block cart
                var firstCut = $(this).parent().parent().data('id').replace('cart_block_product_', '');
                firstCut = firstCut.replace('deleteCustomizableProduct_', '');
                ids = firstCut.split('_');
                productId = parseInt(ids[0]);

                if (typeof(ids[1]) != 'undefined')
                    productAttributeId = parseInt(ids[1]);
                if (typeof(ids[2]) != 'undefined')
                    idAddressDelivery = parseInt(ids[2]);
            }

            // Removing product from the cart
            ajaxCart.remove(productId, productAttributeId, customizationId, idAddressDelivery);
        });
    },

    // try to expand the cart
    expand : function(){
        if ($('.cart_block_list').hasClass('collapsed'))
        {
            $('.cart_block_list.collapsed').slideDown({
                duration: 450,
                complete: function(){
                    $(this).addClass('expanded').removeClass('collapsed');
                }
            });

            // save the expand statut in the user cookie
            $.ajax({
                type: 'POST',
                headers: { "cache-control": "no-cache" },
                url: baseDir + 'modules/blockcart/blockcart-set-collapse.php' + '?rand=' + new Date().getTime(),
                async: true,
                cache: false,
                data: 'ajax_blockcart_display=expand',
                complete: function(){
                    $('.block_cart_expand').fadeOut('fast', function(){
                        $('.block_cart_collapse').fadeIn('fast');
                    });
                }            
            });
        }
    },

    // try to collapse the cart
    collapse : function(){
        if ($('.cart_block_list').hasClass('expanded'))
        {
            $('.cart_block_list.expanded').slideUp('slow', function(){
                $(this).addClass('collapsed').removeClass('expanded');
            });

            // save the expand statut in the user cookie
            $.ajax({
                type: 'POST',
                headers: { "cache-control": "no-cache" },
                url: baseDir + 'modules/blockcart/blockcart-set-collapse.php' + '?rand=' + new Date().getTime(),
                async: true,
                cache: false,
                data: 'ajax_blockcart_display=collapse' + '&rand=' + new Date().getTime(),
                complete: function(){
                    $('.block_cart_collapse').fadeOut('fast', function(){
                        $('.block_cart_expand').fadeIn('fast');
                    });
                }
            });
        }
    },
    // Fix display when using back and previous browsers buttons
    refresh : function(){
        $.ajax({
            type: 'POST',
            headers: { "cache-control": "no-cache" },
            url: baseUri + '?rand=' + new Date().getTime(),
            async: true,
            cache: false,
            dataType : "json",
            data: 'controller=cart&ajax=true&token=' + static_token,
            success: function(jsonData)
            {
                ajaxCart.updateCart(jsonData);
            }
        });
    },

    // Update the cart information
    updateCartInformation : function (jsonData, addedFromProductPage){
        ajaxCart.updateCart(jsonData);
        //reactive the button when adding has finished
        if (addedFromProductPage)
        {
            $('#add_to_cart button').removeProp('disabled').removeClass('disabled');
            if (!jsonData.hasError || jsonData.hasError == false)
                $('#add_to_cart button').addClass('added');
            else
                $('#add_to_cart button').removeClass('added');
        }
        else
            $('.ajax_add_to_cart_button').removeProp('disabled');
    },
    // close fancybox
    updateFancyBox : function (){},
    // add a product in the cart via ajax
    add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist){
        if (addedFromProductPage && !checkCustomizations())
        {
            if (!!$.prototype.fancybox)
                $.fancybox.open([
                    {
                        type: 'inline',
                        autoScale: true,
                        minHeight: 30,
                        content: '<p class="fancybox-error">' + fieldRequired + '</p>'
                    }
                ], {
                    padding: 0
                });
            else
                alert(fieldRequired);
            return;
        }
        emptyCustomizations();
        //disabled the button when adding to not double add if user double click
        if (addedFromProductPage)
        {
            $('#add_to_cart button').prop('disabled', 'disabled').addClass('disabled');
            $('.filled').removeClass('filled');

        }
        else
            $(callerElement).prop('disabled', 'disabled');

        if ($('.cart_block_list').hasClass('collapsed'))
            this.expand();
        //send the ajax request to the server
        $.ajax({
            type: 'POST',
            headers: { "cache-control": "no-cache" },
            url: baseUri + '?rand=' + new Date().getTime(),
            async: true,
            cache: false,
            dataType : "json",
            data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''),
            success: function(jsonData,textStatus,jqXHR)
            {
                // add appliance to whishlist module
                if (whishlist && !jsonData.errors)
                    WishlistAddProductCart(whishlist[0], idProduct, idCombination, whishlist[1]);
                
                                
                           /*opensum modification for flying image to cart start*/
                          var $element = $(callerElement).parent().parent().find('a.product_image img,a.product_img_link img');
                          var pr_id='.pr_'+idProduct;
                            if(addedFromProductPage){
                                if (!$element.length) $element = $('#bigpic,.zoomPad img:first');
                            }
                            else{$element =$(pr_id);}
                            var $picture = $element.clone();
                            var pictureOffsetOriginal = $element.offset();
                            if ($picture.size()) $picture.css({'position': 'absolute', 'top': pictureOffsetOriginal.top, 'left': pictureOffsetOriginal.left,'z-index':9999999});
                var pictureOffset = $picture.offset();
                var cartBlockOffset = $('.shopping_cart').offset();
                                if(!cartBlockOffset){
                                    cartBlockOffset = window.parent.$(".shopping_cart").offset();
                                }
                                $picture.appendTo('body');
              if(!addedFromProductPage){
                          $('html, body').animate({scrollTop : 0},500);
                         $picture.animate({ 'width': $element.attr('width')*0.66, 'height': $element.attr('height')*0.66, 'opacity': 0.2, 'top': cartBlockOffset.top + 30, 'left': cartBlockOffset.left + 15,'z-index':9999999 }, 1000)
                .fadeOut(100, function() {
                                        $picture.remove();        
                });
                            }
                            else {
                                 $picture.animate({ 'width':'150px', 'height': '150px', 'opacity': 0.2, 'top': cartBlockOffset.top + 30, 'left': cartBlockOffset.left + 15,'z-index':9999999 },1000)
                .fadeOut(100, function() {
                                        $picture.remove();        
                });
                                
                            }
                                
                                
                                
                                
                           /*opensum modification for flying image to cart end*/     
                if (!jsonData.hasError)
                {
                    window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);

                    if (jsonData.crossSelling)
                        $('.crossseling').html(jsonData.crossSelling);

                    if (idCombination)
                        $(jsonData.products).each(function(){
                            if (this.id != undefined && this.id == parseInt(idProduct) && this.idCombination == parseInt(idCombination))
                                window.parent.ajaxCart.updateLayer(this);
                        });
                    else
                        $(jsonData.products).each(function(){
                            if (this.id != undefined && this.id == parseInt(idProduct))
                                window.parent.ajaxCart.updateLayer(this);
                        });
                    if (contentOnly)
                        parent.$.fancybox.close();
                }
                else
                {
                    if (addedFromProductPage)
                        $('#add_to_cart button').removeProp('disabled').removeClass('disabled');
                    else
                        $(callerElement).removeProp('disabled');
                }

            },
            error: function(XMLHttpRequest, textStatus, errorThrown)
            {
                var error = "Impossible to add the product to the cart.<br/>textStatus: '" + textStatus + "'<br/>errorThrown: '" + errorThrown + "'<br/>responseText:<br/>" + XMLHttpRequest.responseText;
                if (!!$.prototype.fancybox)
                    $.fancybox.open([
                    {
                        type: 'inline',
                        autoScale: true,
                        minHeight: 30,
                        content: '<p class="fancybox-error">' + error + '</p>'
                    }],
                    {
                        padding: 0
                    });
                else
                    alert(error);
                //reactive the button when adding has finished
                if (addedFromProductPage)
                    $('#add_to_cart button').removeProp('disabled').removeClass('disabled');
                else
                    $(callerElement).removeProp('disabled');
            }
        });
    },

    //remove a product from the cart via ajax
    remove : function(idProduct, idCombination, customizationId, idAddressDelivery){
        //send the ajax request to the server
        $.ajax({
            type: 'POST',
            headers: { "cache-control": "no-cache" },
            url: baseUri + '?rand=' + new Date().getTime(),
            async: true,
            cache: false,
            dataType : "json",
            data: 'controller=cart&delete=1&id_product=' + idProduct + '&ipa=' + ((idCombination != null && parseInt(idCombination)) ? idCombination : '') + ((customizationId && customizationId != null) ? '&id_customization=' + customizationId : '') + '&id_address_delivery=' + idAddressDelivery + '&token=' + static_token + '&ajax=true',
            success: function(jsonData)    {
                ajaxCart.updateCart(jsonData);
                if ($('body').attr('id') == 'order' || $('body').attr('id') == 'order-opc')
                    deleteProductFromSummary(idProduct+'_'+idCombination+'_'+customizationId+'_'+idAddressDelivery);
            },
            error: function()
            {
                var error = 'ERROR: unable to delete the product';
                if (!!$.prototype.fancybox)
                {
                    $.fancybox.open([
                        {
                            type: 'inline',
                            autoScale: true,
                            minHeight: 30,
                            content: error
                        }
                    ], {
                        padding: 0
                    });
                }
                else
                    alert(error);
            }
        });
    },

    //hide the products displayed in the page but no more in the json data
    hideOldProducts : function(jsonData){
        //delete an eventually removed product of the displayed cart (only if cart is not empty!)
        if ($('.cart_block_list:first dl.products').length > 0)
        {
            var removedProductId = null;
            var removedProductData = null;
            var removedProductDomId = null;
            //look for a product to delete...
            $('.cart_block_list:first dl.products dt').each(function(){
                //retrieve idProduct and idCombination from the displayed product in the block cart
                var domIdProduct = $(this).data('id');
                var firstCut = domIdProduct.replace('cart_block_product_', '');
                var ids = firstCut.split('_');

                //try to know if the current product is still in the new list
                var stayInTheCart = false;
                for (aProduct in jsonData.products)
                {
                    //we've called the variable aProduct because IE6 bug if this variable is called product
                    //if product has attributes
                    if (jsonData.products[aProduct]['id'] == ids[0] && (!ids[1] || jsonData.products[aProduct]['idCombination'] == ids[1]))
                    {
                        stayInTheCart = true;
                        // update the product customization display (when the product is still in the cart)
                        ajaxCart.hideOldProductCustomizations(jsonData.products[aProduct], domIdProduct);
                    }
                }
                //remove product if it's no more in the cart
                if (!stayInTheCart)
                {
                    removedProductId = $(this).data('id');
                    if (removedProductId != null)
                    {
                        var firstCut =  removedProductId.replace('cart_block_product_', '');
                        var ids = firstCut.split('_');

                        $('dt[data-id="' + removedProductId + '"]').addClass('strike').fadeTo('slow', 0, function(){
                            $(this).slideUp('slow', function(){
                                $(this).remove();
                                // If the cart is now empty, show the 'no product in the cart' message and close detail
                                if($('.cart_block:first dl.products dt').length == 0)
                                {
                                    $("#header .cart_block").stop(true, true).slideUp(200);
                                    $('.cart_block_no_products:hidden').slideDown(450);
                                    $('.cart_block dl.products').remove();
                                }
                            });
                        });
                        $('dd[data-id="cart_block_combination_of_' + ids[0] + (ids[1] ? '_'+ids[1] : '') + (ids[2] ? '_'+ids[2] : '') + '"]').fadeTo('fast', 0, function(){
                            $(this).slideUp('fast', function(){
                                $(this).remove();
                            });
                        });
                    }
                }
            });
        }
    },

    hideOldProductCustomizations : function (product, domIdProduct){
        var customizationList = $('ul[data-id="customization_' + product['id'] + '_' + product['idCombination'] + '"]');
        if(customizationList.length > 0)
        {
            $(customizationList).find("li").each(function(){
                $(this).find("div").each(function(){
                    var customizationDiv = $(this).data('id');
                    var tmp = customizationDiv.replace('deleteCustomizableProduct_', '');
                    var ids = tmp.split('_');
                    if ((parseInt(product.idCombination) == parseInt(ids[2])) && !ajaxCart.doesCustomizationStillExist(product, ids[0]))
                        $('div[data-id="' + customizationDiv + '"]').parent().addClass('strike').fadeTo('slow', 0, function(){
                            $(this).slideUp('slow');
                            $(this).remove();
                        });
                });
            });
        }

        var removeLinks = $('.deleteCustomizableProduct[data-id="' + domIdProduct + '"]').find('.ajax_cart_block_remove_link');
        if (!product.hasCustomizedDatas && !removeLinks.length)
            $('div[data-id="' + domIdProduct + '"]' + ' span.remove_link').html('<a class="ajax_cart_block_remove_link" rel="nofollow" href="' + baseUri + '?controller=cart&delete=1&id_product=' + product['id'] + '&ipa=' + product['idCombination'] + '&token=' + static_token + '"> </a>');
        if (product.is_gift)
            $('div[data-id="' + domIdProduct + '"]' + ' span.remove_link').html('');
    },

    doesCustomizationStillExist : function (product, customizationId){
        var exists = false;

        $(product.customizedDatas).each(function(){
            if (this.customizationId == customizationId)
            {
                exists = true;
                // This return does not mean that we found nothing but simply break the loop
                return false;
            }
        });
        return (exists);
    },

    //refresh display of vouchers (needed for vouchers in % of the total)
    refreshVouchers : function (jsonData){
        if (typeof(jsonData.discounts) == 'undefined' || jsonData.discounts.length == 0)
            $('.vouchers').hide();
        else
        {
            $('.vouchers tbody').html('');

            for (i=0;i<jsonData.discounts.length;i++)
            {
                if (parseFloat(jsonData.discounts[i].price_float) > 0)
                {
                    var delete_link = '';
                    if (jsonData.discounts[i].code.length)
                        delete_link = '<a class="delete_voucher" href="'+jsonData.discounts[i].link+'" title="'+delete_txt+'"><i class="icon-remove-sign"></i></a>';
                    $('.vouchers tbody').append($(
                        '<tr class="bloc_cart_voucher" data-id="bloc_cart_voucher_'+jsonData.discounts[i].id+'">'
                        +'    <td class="quantity">1x</td>'
                        +'    <td class="name" title="'+jsonData.discounts[i].description+'">'+jsonData.discounts[i].name+'</td>'
                        +'    <td class="price">-'+jsonData.discounts[i].price+'</td>'
                        +'    <td class="delete">' + delete_link + '</td>'
                        +'</tr>'
                    ));
                }
            }
            $('.vouchers').show();
        }

    },

    // Update product quantity
    updateProductQuantity : function (product, quantity){
        $('dt[data-id=cart_block_product_' + product.id + '_' + (product.idCombination ? product.idCombination : '0')+ '_' + (product.idAddressDelivery ? product.idAddressDelivery : '0') + '] .quantity').fadeTo('fast', 0, function(){
            $(this).text(quantity);
            $(this).fadeTo('fast', 1, function(){
                $(this).fadeTo('fast', 0, function(){
                    $(this).fadeTo('fast', 1, function(){
                        $(this).fadeTo('fast', 0, function(){
                            $(this).fadeTo('fast', 1);
                        });
                    });
                });
            });
        });
    },

    //display the products witch are in json data but not already displayed
    displayNewProducts : function(jsonData){
        //add every new products or update displaying of every updated products
        $(jsonData.products).each(function(){
            //fix ie6 bug (one more item 'undefined' in IE6)
            if (this.id != undefined)
            {
                //create a container for listing the products and hide the 'no product in the cart' message (only if the cart was empty)

                if ($('.cart_block:first dl.products').length == 0)
                {
                    $('.cart_block_no_products').before('<dl class="products"></dl>');
                    $('.cart_block_no_products').hide();
                }
                //if product is not in the displayed cart, add a new product's line
                var domIdProduct = this.id + '_' + (this.idCombination ? this.idCombination : '0') + '_' + (this.idAddressDelivery ? this.idAddressDelivery : '0');
                var domIdProductAttribute = this.id + '_' + (this.idCombination ? this.idCombination : '0');

                if ($('dt[data-id="cart_block_product_' + domIdProduct + '"]').length == 0)
                {
                    var productId = parseInt(this.id);
                    var productAttributeId = (this.hasAttributes ? parseInt(this.attributes) : 0);
                    var content =  '<dt class="unvisible" data-id="cart_block_product_' + domIdProduct + '">';
                    var name = $.trim($('<span />').html(this.name).text());
                    name = (name.length > 12 ? name.substring(0, 10) + '...' : name);
                    content += '<a class="cart-images" href="' + this.link + '" title="' + name + '"><img  src="' + this.image_cart + '" alt="' + this.name +'"></a>';
                    content += '<div class="cart-info"><div class="product-name">' + '<span class="quantity-formated"><span class="quantity">' + this.quantity + '</span> x </span><a href="' + this.link + '" title="' + this.name + '" class="cart_block_product_name">' + name + '</a></div>';
                    if (this.hasAttributes)
                          content += '<div class="product-atributes"><a href="' + this.link + '" title="' + this.name + '">' + this.attributes + '</a></div>';
                    if (typeof(freeProductTranslation) != 'undefined')
                        content += '<span class="price">' + (parseFloat(this.price_float) > 0 ? this.priceByLine : freeProductTranslation) + '</span></div>';

                    if (typeof(this.is_gift) == 'undefined' || this.is_gift == 0)
                        content += '<span class="remove_link"><a rel="nofollow" class="ajax_cart_block_remove_link" href="' + baseUri + '?controller=cart&delete=1&id_product=' + productId + '&token=' + static_token + (this.hasAttributes ? '&ipa=' + parseInt(this.idCombination) : '') + '"> </a></span>';
                    else
                        content += '<span class="remove_link"></span>';
                    content += '</dt>';
                    if (this.hasAttributes)
                        content += '<dd data-id="cart_block_combination_of_' + domIdProduct + '" class="unvisible">';
                    if (this.hasCustomizedDatas)
                        content += ajaxCart.displayNewCustomizedDatas(this);
                    if (this.hasAttributes) content += '</dd>';

                    $('.cart_block dl.products').append(content);
                }
                //else update the product's line
                else
                {
                    var jsonProduct = this;
                    if($.trim($('dt[data-id="cart_block_product_' + domIdProduct + '"] .quantity').html()) != jsonProduct.quantity || $.trim($('dt[data-id="cart_block_product_' + domIdProduct + '"] .price').html()) != jsonProduct.priceByLine)
                    {
                        // Usual product
                        if (!this.is_gift)
                            $('dt[data-id="cart_block_product_' + domIdProduct + '"] .price').text(jsonProduct.priceByLine);
                        else
                            $('dt[data-id="cart_block_product_' + domIdProduct + '"] .price').html(freeProductTranslation);
                        ajaxCart.updateProductQuantity(jsonProduct, jsonProduct.quantity);

                        // Customized product
                        if (jsonProduct.hasCustomizedDatas)
                        {
                            customizationFormatedDatas = ajaxCart.displayNewCustomizedDatas(jsonProduct);
                            if (!$('ul[data-id="customization_' + domIdProductAttribute + '"]').length)
                            {
                                if (jsonProduct.hasAttributes)
                                    $('dd[data-id="cart_block_combination_of_' + domIdProduct + '"]').append(customizationFormatedDatas);
                                else
                                    $('.cart_block dl.products').append(customizationFormatedDatas);
                            }
                            else
                            {
                                $('ul[data-id="customization_' + domIdProductAttribute + '"]').html('');
                                $('ul[data-id="customization_' + domIdProductAttribute + '"]').append(customizationFormatedDatas);
                            }
                        }
                    }
                }
                $('.cart_block dl.products .unvisible').slideDown(450).removeClass('unvisible');

            var removeLinks = $('dt[data-id="cart_block_product_' + domIdProduct + '"]').find('a.ajax_cart_block_remove_link');
            if (this.hasCustomizedDatas && removeLinks.length)
                $(removeLinks).each(function(){
                    $(this).remove();
                });
            }
        });
    },

    displayNewCustomizedDatas : function(product){
        var content = '';
        var productId = parseInt(product.id);
        var productAttributeId = typeof(product.idCombination) == 'undefined' ? 0 : parseInt(product.idCombination);
        var hasAlreadyCustomizations = $('ul[data-id="customization_' + productId + '_' + productAttributeId + '"]').length;

        if (!hasAlreadyCustomizations)
        {
            if (!product.hasAttributes)
                content += '<dd data-id="cart_block_combination_of_' + productId + '" class="unvisible">';
            if ($('ul[data-id="customization_' + productId + '_' + productAttributeId + '"]').val() == undefined)
                content += '<ul class="cart_block_customizations" data-id="customization_' + productId + '_' + productAttributeId + '">';
        }

        $(product.customizedDatas).each(function(){
            var done = 0;
            customizationId = parseInt(this.customizationId);
            productAttributeId = typeof(product.idCombination) == 'undefined' ? 0 : parseInt(product.idCombination);
            content += '<li name="customization"><div class="deleteCustomizableProduct" data-id="deleteCustomizableProduct_' + customizationId + '_' + productId + '_' + (productAttributeId ?  productAttributeId : '0') + '"><a rel="nofollow" class="ajax_cart_block_remove_link" href="' + baseUri + '?controller=cart&delete=1&id_product=' + productId + '&ipa=' + productAttributeId + '&id_customization=' + customizationId + '&token=' + static_token + '"></a></div>';

            // Give to the customized product the first textfield value as name
            $(this.datas).each(function(){
                if (this['type'] == CUSTOMIZE_TEXTFIELD)
                {
                    $(this.datas).each(function(){
                        if (this['index'] == 0)
                        {
                            content += ' ' + this.truncatedValue.replace(/<br \/>/g, ' ');
                            done = 1;
                            return false;
                        }
                    })
                }
            });

            // If the customized product did not have any textfield, it will have the customizationId as name
            if (!done)
                content += customizationIdMessage + customizationId;
            if (!hasAlreadyCustomizations) content += '</li>';
            // Field cleaning
            if (customizationId)
            {
                $('#uploadable_files li div.customizationUploadBrowse img').remove();
                $('#text_fields input').attr('value', '');
            }
        });

        if (!hasAlreadyCustomizations)
        {
            content += '</ul>';
            if (!product.hasAttributes) content += '</dd>';
        }
        return (content);
    },

    updateLayer : function(product){
        $('#layer_cart_product_title').text(product.name);
        $('#layer_cart_product_attributes').text('');
        if (product.hasAttributes && product.hasAttributes == true)
            $('#layer_cart_product_attributes').html(product.attributes);
        $('#layer_cart_product_price').text(product.price);
        $('#layer_cart_product_quantity').text(product.quantity);
        $('.layer_cart_img').html('<img class="layer_cart_img img-responsive" src="' + product.image + '" alt="' + product.name + '" title="' + product.name + '" />');

    //    var n = parseInt($(window).scrollTop()) + 'px';

    //    $('.layer_cart_overlay').css('width','100%');
    //    $('.layer_cart_overlay').css('height','100%');
    //    $('.layer_cart_overlay').show();
    //    $('#layer_cart').css({'top': n}).fadeIn('fast');
        crossselling_serialScroll();
    },

    //genarally update the display of the cart
    updateCart : function(jsonData){
        //user errors display
        if (jsonData.hasError)
        {
            var errors = '';
            for (error in jsonData.errors)
                //IE6 bug fix
                if (error != 'indexOf')
                    errors += $('<div />').html(jsonData.errors[error]).text() + "\n";
            if (!!$.prototype.fancybox)
                $.fancybox.open([
                    {
                        type: 'inline',
                        autoScale: true,
                        minHeight: 30,
                        content: '<p class="fancybox-error">' + errors + '</p>'
                    }
                ], {
                    padding: 0
                });
            else
                alert(errors);
        }
        else
        {
            ajaxCart.updateCartEverywhere(jsonData);
            ajaxCart.hideOldProducts(jsonData);
            ajaxCart.displayNewProducts(jsonData);
            ajaxCart.refreshVouchers(jsonData);

            //update 'first' and 'last' item classes
            $('.cart_block .products dt').removeClass('first_item').removeClass('last_item').removeClass('item');
            $('.cart_block .products dt:first').addClass('first_item');
            $('.cart_block .products dt:not(:first,:last)').addClass('item');
            $('.cart_block .products dt:last').addClass('last_item');
        }
    },

    //update general cart informations everywhere in the page
    updateCartEverywhere : function(jsonData){
        $('.ajax_cart_total').text($.trim(jsonData.productTotal));

        if (parseFloat(jsonData.shippingCostFloat) > 0)
            $('.ajax_cart_shipping_cost').text(jsonData.shippingCost);
        else if (typeof(freeShippingTranslation) != 'undefined')
                $('.ajax_cart_shipping_cost').html(freeShippingTranslation);

        $('.ajax_cart_tax_cost').text(jsonData.taxCost);
        $('.cart_block_wrapping_cost').text(jsonData.wrappingCost);
        $('.ajax_block_cart_total').text(jsonData.total);
        $('.ajax_block_products_total').text(jsonData.productTotal);
        $('.ajax_total_price_wt').text(jsonData.total_price_wt);

        if (parseFloat(jsonData.freeShippingFloat) > 0)
        {
            $('.ajax_cart_free_shipping').html(jsonData.freeShipping);
            $('.freeshipping').fadeIn(0);
        }
        else if (parseFloat(jsonData.freeShippingFloat) == 0)
            $('.freeshipping').fadeOut(0);

        this.nb_total_products = jsonData.nbTotalProducts;

        if (parseInt(jsonData.nbTotalProducts) > 0)
        {
            $('.ajax_cart_no_product').hide();
            $('.ajax_cart_quantity').text(jsonData.nbTotalProducts);
            $('.ajax_cart_quantity').fadeIn('slow');
            $('.ajax_cart_total').fadeIn('slow');

            if (parseInt(jsonData.nbTotalProducts) > 1)
            {
                $('.ajax_cart_product_txt').each( function (){
                    $(this).hide();
                });

                $('.ajax_cart_product_txt_s').each( function (){
                    $(this).show();
                });
            }
            else
            {
                $('.ajax_cart_product_txt').each( function (){
                    $(this).show();
                });

                $('.ajax_cart_product_txt_s').each( function (){
                    $(this).hide();
                });
            }
        }
        else
        {
            $('.ajax_cart_quantity, .ajax_cart_product_txt_s, .ajax_cart_product_txt, .ajax_cart_total').each(function(){
                $(this).hide();
            });
            $('.ajax_cart_no_product').show('slow');
        }
    }
};

function HoverWatcher(selector)
{
    this.hovering = false;
    var self = this;

    this.isHoveringOver = function(){
        return self.hovering;
    }

    $(selector).hover(function(){
        self.hovering = true;
    }, function(){
        self.hovering = false;
    })
}

function crossselling_serialScroll()
{
    if (!!$.prototype.bxSlider)
        $('#blockcart_caroucel').bxSlider({
            minSlides: 2,
            maxSlides: 4,
            slideWidth: 178,
            slideMargin: 20,
            moveSlides: 1,
            infiniteLoop: false,
              hideControlOnEnd: true,
            pager: false
        });
}
Link to comment
Share on other sites

OK, I replaced the entire code with the one you gave me in the link. I tried to see how the ajax effect works and from the homepage added a product to cart. I still didn't see anything fly to the cart above, no animation at all.

 

And also, now the product is not being added to cart - the amount of products that were already in cart did not change. When I try to add a product from the categories sections, the same thing happens - nothing adds to the cart.

 

Also, now when I point at my cart, it does not open for preview. In the demo I can just click on the cart and a little window opens down where I can preview the cart content and total. On my site though, if I click on the cart, it redirects me to a new page where I can see the cart. I'd like it to be like it is in the demo. I just pointed at the cart and took a screenshot with that little window opening down:

 

Screenshot2014-06-15at25554PM_zps856395a

 

 

 

Is it at all possible for someone to look at that demo that is posted on Prestashop site and give me the exact code from it? I need the ajax cart code the way they have it in the demo. Only wanted to notice that in the demo the products aren't being added to the cart either, they only fly there but the cart stays empty and the total price stays $0.00. Here's a screenshot from the demo I took after adding a product to cart (I tried three times, it's not working but it used to before!):

 

Screenshot2014-06-15at30042PM_zps886d98d

Link to comment
Share on other sites

I had to change the code back to what I had because it's a pain to see the products not be added to the cart. Now they're back to where it was, still no flying animation but at least they add to the cart. Does anyone know how to do that? Or to have some indication that the product was added to the cart? Like the little window opening down from the cart block. How can I do that? I really need to get done with this site before it drives me crazy! Been fiddling with it almost for a month now and still not done.

Link to comment
Share on other sites

Please, somebody, help me fix this cart problem! Are there any support people here who can help???

 

It's been so long that I'm waiting for help for such a simple thing, it's surreal. I read so many good reviews about PS support that I decided to go with them and not OpenCart or others. I knew it won't be easy to build a website because I never did it, so I needed a good support. Please don't tell me I made a mistake going with PS! I'm so close to have my site finished, if not these few tweaks that need to be done (and I don't know how, I'm not a programmer). I feel helpless, banging my head against the wall.  :( If I knew where else I can ask for help, I'd go there and wouldn't bother anyone here.

 

If there are knowledgeable people here willing to help, it'll be greatly appreciated. You don't even know how much!

 

Anyway, if someone could help me figure this cart thing out... Another issue I noticed. My cart pop-up window shows "Free shipping" when it's empty. How can I remove this misleading info and put $0.00 like it is in the demo?

 

Here's a screenshot of my site:

 

Screenshot2014-06-16at120628AM_zpsb3deee

 

 

My theme demo has it like this, which I'd like to have too. And the Ajax effect as well, of course.

 

Screenshot2014-06-16at124350AM_zpsecb657

Edited by BlueBell (see edit history)
Link to comment
Share on other sites

Hi BlueBell,

 

please stop with the highlighting...we are not paid from Prestashop, we do this in our free time and it really takes time to go through tens and hundreds of threads every day. If you want support, contact the author of the theme. If you bought it on Prestashop Addons and he is not reacting, write directly to Prestashop (use contact form from Prestashop.com) and they might force the author of the theme to answer you.

This problem seems to be behind the scope of just a simple edit that can be done on this forum. The ajax-cart.tpl and whole blockcart module with JSON is quite complicated and I'm afraid that you will get help only from the author of a theme, or from a freelancer that you hire here on forum, or on sites like Freelancer..

 

Kind regards

Oskar

Link to comment
Share on other sites

Oskar, I wrote to the theme developers several times - still no response for a week. I gave them all the FTP access details and also the links to my threads on this forum so they could see the screenshots. No response at all. I wrote to technical support on PS twice - same thing, no response. I don't know where to turn for help, and I'm far from being a website designer who  knows everything. In fact, I assumed that things are already pre-installed in the theme that I bought, and it would look just the way they did in the demo. Ha! You have to fiddle for weeks to make it look like in the demo, and even then things still don't work properly. I asked PS for a refund and wanted to buy another theme that hopefully would work better, but they said "no refunds". I'm not buying another theme, and then another, and another, until things work as promised. I want to get what I paid for and not have to lose sleep over this. I'm getting 4 hours of sleep each day because I'm on a deadline and have to get this done soon. And no matter where I turn, I don't get help. What am I supposed to do? I can't jump over my head!

 

If this was an American company, they'd be out of business already if they ignored their customers.

Link to comment
Share on other sites

And also, why do people have to buy a theme that wouldn't work like it should, and then have to hire a freelancer to make it work??? This is funny, to say the least. If PS knows that there are bugs in the products they sell, they have to request that the developers fix those bugs and offer a legitimate and working products for sale. Or issue a refund for a defective product. Otherwise it diminishes the reputation of PS as a legitimate and serious business. After a while, customers won't trust their products and would vote with their feet. This is what happens in the US all the time.

 

All I want is the product that I purchased work as it was advertised. And if it doesn't, it'd the seller's responsibility to either fix the problems, replace the product with the working one, or refund the purchase. Just like a normal business would do. I'd assume you wouldn't want to buy a car that has a transmission problem a week after you bought it. Same here - people want their products work properly. You wouldn't hire a mechanic to fix it - you'd bring it back to the dealer, wouldn't you? It isn't my fault that the theme isn't working correctly and I have to beg for help here. I'm sick of it myself and I have other things to do too.

Link to comment
Share on other sites

I understand your frustration and I'm very sorry...thought I still think of Prestashop Addons as customer friendly store, this only gives them bad reputation

 

There are some Ppl who are directly employed or in a way involved with Prestashop. I would suggest you to contact them here on Forum (p.e. Benjamin Utterback). This should get you help much faster than a contact form. I normally wouldn't suggest that, but if you've already spent so many hours trying to contact them, it seems like there's no other choice.

Btw, next time, try and take a look at ThemeForest, I found those themes to have perfect support and they're also cheaper. 

 

If you're really desperate, send me a PM with all the lists of things that are not working, however I am a freelancer and I could not do this job for free..

Edited by PSfever.com (see edit history)
Link to comment
Share on other sites

PSFever, thank you for your time and response! I'm considering changing the theme because I finally heard back from my theme developers and their message was so rude that I won't even bother responding to them. They wouldn't even apologize for causing their buyers so many issues. Anyway, I'm over with them.

 

They said the Ajax cart isn't working with the 1.6 version, only with 1.5, and I don't want to downgrade my PS software. Yet in the demo they still use the ajax fly effect and the info says the theme is for v.1.6 as well. Yes, mostly it is, but they're not telling you that you won't get all you see, which is quite misleading. I spent a week looking at all themes and deciding what I need, and now have to do that all over. Sigh!

 

I'd rather go with another theme that is more up-to-date and has everything already installed. If worst comes to worst, I might just get a website designer make some adjustments for me that I can't do myself.

 

I contacted Prestashop about this issue and hopefully will get a refund or store credit to buy another theme.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...