/** * 2007-2017 Leotheme * * NOTICE OF LICENSE * * Leo feature for prestashop 1.7: ajax cart, review, compare, wishlist at product list * * DISCLAIMER * * @Module Name: Leo Feature * @author leotheme * @copyright 2007-2018 Leotheme * @license http://leotheme.com - prestashop template provider */ $(document).ready(function(){ createLeoCompareModalPopup(); LeoCompareButtonAction(); prestashop.on('updateProductList', function() { LeoCompareButtonAction(); }); //DONGND:: recall button action if need when change attribute at product page prestashop.on('updatedProduct', function() { LeoCompareButtonAction(); }); prestashop.on('clickQuickView', function() { check_active_compare = setInterval(function(){ if($('.quickview.modal').length) { $('.quickview.modal').on('shown.bs.modal', function (e) { LeoCompareButtonAction(); }) clearInterval(check_active_compare); } }, 300); }); activeEventModalCompare(); }); function createLeoCompareModalPopup() { var leoCompareModalPopup = ''; leoCompareModalPopup += ''; $('body').append(leoCompareModalPopup); } function LeoCompareButtonAction() { $('.leo-compare-button').click(function(){ if (!$('.leo-compare-button.active').length) { var total_product_compare = compared_products.length; var id_product = $(this).data('id-product'); var content_product_compare_mess_remove = productcompare_remove+'. '+productcompare_viewlistcompare+'.'; var content_product_compare_mess_add = productcompare_add+'. '+productcompare_viewlistcompare+'.'; var content_product_compare_mess_max = productcompare_max_item+'. '+productcompare_viewlistcompare+'.'; $(this).addClass('active'); $(this).find('.leo-compare-bt-loading').css({'display':'block'}); $(this).find('.leo-compare-bt-content').hide(); var object_e = $(this); if ($(this).hasClass('added') || $(this).hasClass('delete')) { //DONGND:: remove product form list product compare //DONGND:: add product to list product compare $.ajax({ type: 'POST', headers: {"cache-control": "no-cache"}, url: productcompare_url+ '?rand=' + new Date().getTime(), async: true, cache: false, data: { "ajax": 1, "action": "remove", "id_product": id_product, "token": leo_token }, success: function (result) { // console.log(result); if (result == 1) { //Leotheme add: update number product on icon compare if ($('.ap-btn-compare .ap-total-compare').length) { var old_num_compare = parseInt($('.ap-btn-compare .ap-total-compare').data('compare-total')); var new_num_compare = old_num_compare-1; $('.ap-btn-compare .ap-total-compare').data('compare-total',new_num_compare); $('.ap-btn-compare .ap-total-compare').text(new_num_compare); } compared_products.splice($.inArray(parseInt(id_product), compared_products), 1); if (object_e.hasClass('delete')) { //DONGND:: remove from page product compare if ($('.leo-productscompare-item').length == 1) { window.location.replace(productcompare_url); } else { $('td.product-'+id_product).fadeOut(function(){ $(this).remove(); }); } } else { //DONGND:: remove from page product list $('.leo-modal-compare .modal-title').html(content_product_compare_mess_remove); $('.leo-modal-compare').modal('show'); $('.leo-compare-button[data-id-product='+id_product+']').removeClass('added'); $('.leo-compare-button[data-id-product='+id_product+']').attr('title',buttoncompare_title_add); // object_e.find('.leo-compare-bt-loading').hide(); // object_e.find('.leo-compare-bt-content').show(); } } else { $('.leo-modal-compare .modal-title').html(productcompare_remove_error); $('.leo-modal-compare').modal('show'); } object_e.find('.leo-compare-bt-loading').hide(); object_e.find('.leo-compare-bt-content').show(); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); } }); } else { if (total_product_compare < comparator_max_item) { //DONGND:: add product to list product compare $.ajax({ type: 'POST', headers: {"cache-control": "no-cache"}, url: productcompare_url+ '?rand=' + new Date().getTime(), async: true, cache: false, data: { "ajax": 1, "action": "add", "id_product": id_product, "token": leo_token, }, success: function (result) { // console.log(result); if (result == 1) { $('.leo-modal-compare .modal-title').html(content_product_compare_mess_add); $('.leo-modal-compare').modal('show'); //Leotheme add: update number product on icon compare if ($('.ap-btn-compare .ap-total-compare').length) { var old_num_compare = parseInt($('.ap-btn-compare .ap-total-compare').data('compare-total')); var new_num_compare = old_num_compare+1; $('.ap-btn-compare .ap-total-compare').data('compare-total',new_num_compare); $('.ap-btn-compare .ap-total-compare').text(new_num_compare); } compared_products.push(id_product); $('.leo-compare-button[data-id-product='+id_product+']').addClass('added'); $('.leo-compare-button[data-id-product='+id_product+']').attr('title',buttoncompare_title_remove); } else { $('.leo-modal-compare .modal-title').html(productcompare_add_error); $('.leo-modal-compare').modal('show'); } object_e.find('.leo-compare-bt-loading').hide(); object_e.find('.leo-compare-bt-content').show(); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); } }); } else { //DONGND:: list product compare limited $('.leo-modal-compare .modal-title').html(content_product_compare_mess_max); $('.leo-modal-compare').modal('show'); object_e.find('.leo-compare-bt-loading').hide(); object_e.find('.leo-compare-bt-content').show(); } } } return false; }) } function activeEventModalCompare() { $('.leo-modal-compare').on('hide.bs.modal', function (e) { // console.log($('.leo-modal-review-bt').length); if ($('.leo-compare-button.active').length) { // console.log('aaa'); $('.leo-compare-button.active').removeClass('active'); } }) $('.leo-modal-compare').on('hidden.bs.modal', function (e) { $('body').css('padding-right', ''); }) $('.leo-modal-compare').on('shown.bs.modal', function (e) { if ($('.quickview.modal').length) { $('.quickview.modal').modal('hide'); } }); }