1/** 2 * 2007-2017 Leotheme 3 * 4 * NOTICE OF LICENSE 5 * 6 * Leo feature for prestashop 1.7: ajax cart, review, compare, wishlist at product list 7 * 8 * DISCLAIMER 9 * 10 * @Module Name: Leo Feature 11 * @author leotheme <[email protected]> 12 * @copyright 2007-2018 Leotheme 13 * @license http://leotheme.com - prestashop template provider 14 */ 15$(document).ready(function(){ 16 if(typeof leo_allow_ajax !== "undefined" && !leo_allow_ajax){ 17 return; 18 } 19 //DONGND:: check safari on window 20 var is_safari = false; 21 if (navigator.userAgent.toLowerCase().indexOf("chrome/") !== -1) 22 { 23 is_safari = false; 24 } 25 else if (navigator.userAgent.toLowerCase().indexOf("safari/") !== -1) 26 { 27 is_safari = true; 28 } 29 if (navigator.appVersion.indexOf("Win")!=-1 && is_safari) 30 { 31 $('html').addClass('safari-win'); 32 } 33 //DONGND:: clone blockcart when turn off show popup 34 if (typeof show_popup != 'undefined' && !show_popup) 35 { 36 $(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart'); 37 } 38 39 createModalAndDropdown(0, 0); 40 41 leoSelectAttr(); 42 leoChooseAttr(); 43 leoBtCart(); 44 45 prestashop.on('updateProductList', function() { 46 leoSelectAttr(); 47 leoChooseAttr(); 48 leoBtCart(); 49 }); 50 51 // prestashop.on('updatedCart', function (event) { 52 // console.log('aaa111'); 53 // console.log($('#blockcart-modal')); 54 // $('#blockcart-modal').on('hidden.bs.modal', function (e) { 55 56 // $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast'); 57 // $('.leo-bt-cart.active').find('.leo-loading').hide(); 58 // $('.leo-bt-cart.active').removeClass('active reset'); 59 // }); 60 // }); 61 62 // $('.blockcart.cart-preview').data('refresh-url',''); 63 // $('.blockcart.cart-preview').removeAttr('refresh-url'); 64 // $('.blockcart.cart-preview').wrap('<div class="leo-blockcart-wapper"></div>'); 65 prestashop.on('updateCart', function (event) { 66 67 // console.log('aaa'); 68 // console.log(event); 69 //DONGND:: refresh cart if turn off show popup 70 if (typeof show_popup != 'undefined' && !show_popup) 71 { 72 //DONGND:: loading default cart 73 if ($('.leo-blockcart.cart-preview .cssload-piano').length) 74 { 75 $('.leo-blockcart.cart-preview .cssload-piano').show(); 76 } 77 // console.log('test'); 78 var refresh_url = $('.leo-blockcart').data('refresh-url'); 79 $.ajax({ 80 type: 'POST', 81 headers: {"cache-control": "no-cache"}, 82 url: refresh_url, 83 async: true, 84 cache: false, 85 success: function (resp) 86 { 87 $('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart')); 88 $(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart'); 89 // createModalAndDropdown(1, 0); 90 //DONGND:: refresh at product page with cart button default 91 if (event.reason.linkAction == 'add-to-cart' && event.resp.success) 92 { 93 // console.log('test'); 94 prestashop.emit('updateProduct', { 95 reason: '' 96 }); 97 } 98 }, 99 error: function (XMLHttpRequest, textStatus, errorThrown) { 100 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 101 } 102 }); 103 } 104 //DONGND:: show notification if add cart success 105 if (event.reason.linkAction == 'add-to-cart' && event.resp.success) 106 { 107 // console.log($('.leo-bt-cart.active')); 108 109 //DONGND:: run fly cart 110 if (typeof enable_flycart_effect != 'undefined' && enable_flycart_effect) 111 { 112 if ($('.leo-bt-cart.active').length) 113 { 114 //DONGND:: product list 115 flyCartEffect($('.leo-bt-cart.active')); 116 } 117 else if (prestashop.page.page_name == 'product' || $('.product-add-to-cart .add-to-cart').length) 118 { 119 //DONGND:: product page or quickview 120 flyCartEffect($('.product-add-to-cart .add-to-cart')); 121 } 122 } 123 124 if ($('.leo-notification').length && typeof enable_notification != 'undefined' && enable_notification) 125 { 126 //DONGND:: show notification 127 var id_product = event.resp.id_product; 128 var product_name = false; 129 $.each(event.resp.cart.products, function(key, value){ 130 // console.log(value); 131 // console.log(value.id_product); 132 // console.log(value.name); 133 if (id_product == value.id_product) 134 { 135 product_name = value.name; 136 return false;
137 } 138 }) 139 showLeoNotification('success', 'add', product_name); 140 } 141 } 142 143 //DONGND:: hide cart item has been deleted from page cart 144 // if ($('.leo-dropdown-cart-item.deleting').length) 145 // { 146 // if (event.reason.idProduct) 147 // { 148 // var id_product = event.reason.idProduct; 149 // var id_product_attribute = event.reason.idProductAttribute; 150 // var id_customization = event.reason.idCustomization; 151 152 // var object_parent = $('.leo-remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').parents('.leo-dropdown-cart-item'); 153 // object_parent.find('.leo-dropdown-overlay').hide(); 154 // object_parent.find('.leo-dropdown-cssload-speeding-wheel').hide(); 155 // object_parent.fadeOut(function(){ 156 157 // object_parent.remove(); 158 // updateClassCartItem(); 159 // }); 160 161 // showLeoNotification('success','delete', false); 162 // } 163 // else 164 // { 165 // showLeoNotification('error','delete', false); 166 // } 167 // } 168 169 //DONGND:: update cart item has been updated from page cart 170 // if ($('.leo-dropdown-cart-item.updating').length) 171 // { 172 // if (event.reason.success) 173 // { 174 // var id_product = event.reason.id_product; 175 // var id_product_attribute = ''; 176 // if (event.reason.id_product_attribute) 177 // { 178 // id_product_attribute = event.reason.id_product_attribute; 179 // } 180 // var object_element = $('.leo-input-product-quantity[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"]'); 181 // var object_parent = object_element.parents('.leo-dropdown-cart-item'); 182 // if (object_parent.hasClass('updating')) 183 // { 184 // object_parent.find('.leo-dropdown-overlay').hide(); 185 // object_parent.find('.leo-dropdown-cssload-speeding-wheel').hide(); 186 // object_parent.removeClass('updating'); 187 188 // object_parent.find('.leo-input-product-quantity').data('product-quantity', object_parent.find('.leo-input-product-quantity').val()); 189 // var id_customization = object_parent.find('.leo-input-product-quantity').data('id-customization'); 190 // $('.leo-input-product-quantity[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').val(object_parent.find('.leo-input-product-quantity').val()).data('product-quantity', object_parent.find('.leo-input-product-quantity').val()); 191 // } 192 193 // showLeoNotification('success','update', false); 194 // } 195 // else 196 // { 197 // showLeoNotification('error','update', false); 198 // } 199 // $('.leo-dropdown-cart-item.updating').removeClass('updating'); 200 201 // } 202 203 // console.log('test1'); 204 if (typeof show_popup != 'undefined' && show_popup) 205 { 206 // console.log('test'); 207 check_active_modal_cart = setInterval(function(){ 208 209 if ($('.leo-bt-cart.active').length && $('#blockcart-modal').length && $('#blockcart-modal').hasClass('modal fade in')) 210 { 211 212 $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast'); 213 $('.leo-bt-cart.active').find('.leo-loading').hide(); 214 $('.leo-bt-cart.active').removeClass('active reset'); 215 216 clearInterval(check_active_modal_cart); 217 } 218 219 }, 200); 220 } 221 222 if (typeof show_popup != 'undefined' && !show_popup) 223 { 224 if ($('.leo-bt-cart.active').length) 225 { 226 $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast'); 227 $('.leo-bt-cart.active').find('.leo-loading').hide(); 228 $('.leo-bt-cart.active').removeClass('active reset'); 229 } 230 } 231 232 // createModalAndDropdown(1, 0); 233 //DONGND:: loading fly cart 234 if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length) 235 { 236 $('.leo-fly-cart .leo-fly-cart-cssload-loader').show(); 237 } 238 239 240 //prestashop.on('updatedCart', function (event) { 241 // console.log(event); 242 // var scrollToElement = false; 243 244 // console.log('bbb'); 245 // console.log(event); 246 247 if ($('.leo-dropdown-cart-item.deleting').length) 248 { 249 $('.leo-dropdown-cart-item.deleting .leo-dropdown-overlay').hide(); 250 $('.leo-dropdown-cart-item.deleting .leo-dropdown-cssload-speeding-wheel').hide(); 251 $('.leo-dropdown-cart-item.deleting').fadeOut(function(){ 252 $('.leo-dropdown-cart-item.deleting').remove();
253 updateClassCartItem(); 254 }) 255 showLeoNotification('success','delete', false); 256 } 257 258 if ($('.leo-dropdown-cart-item.updating').length) 259 { 260 $('.leo-dropdown-cart-item.updating .leo-dropdown-overlay').hide(); 261 $('.leo-dropdown-cart-item.updating .leo-dropdown-cssload-speeding-wheel').hide(); 262 $('.leo-dropdown-cart-item.updating').removeClass('updating'); 263 showLeoNotification('success','update', false); 264 } 265 266 // if ($('.leo-dropdown-cart-item.deleting').length || $('.leo-dropdown-cart-item.updating').length) 267 // { 268 269 // createModalAndDropdown(1, 1); 270 // } 271 // else 272 // { 273 // if (typeof show_popup && show_popup) 274 // { 275 //DONGND:: remove do not close dropdown-dropup when delete at page cart 276 $('.leo-dropdown-cart.dropdown').removeClass('disable-close'); 277 $('.leo-dropdown-cart.dropup').removeClass('disable-close'); 278 createModalAndDropdown(1, 0); 279 // } 280 281 // } 282 283 //}); 284 285 286 }); 287 288 //DONGND:: call event for fly cart slide bar 289 activeEventFlyCartSlideBar(); 290 $('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon-wrapper').click(function(){ 291 $('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon').trigger('click'); 292 }); 293 $('.leo-fly-cart.enable-slidebar .leo-fly-cart-icon').click(function(){ 294 showSlideBarCart($(this)); 295 return false; 296 }); 297 298 $('.leo-fly-cart.enable-dropdown .leo-fly-cart-icon-wrapper , .leo-fly-cart.enable-dropdown .leo-fly-cart-icon').click(function(){ 299 showDropDownCart($(this), 'flycart'); 300 return false; 301 }); 302 303 //DONGND:: click out to close dropdown-dropup cart 304 $(document).click(function (e) { 305 e.stopPropagation(); 306 var container = $(".leo-dropdown-cart.dropdown.show"); 307 308 //check if the clicked area is dropDown or not 309 if (container.length && container.has(e.target).length === 0) { 310 if (!container.hasClass('disable-close')) 311 { 312 container.removeClass('show'); 313 } 314 315 } 316 var container1 = $(".leo-dropdown-cart.dropup.show"); 317 318 //check if the clicked area is dropDown or not 319 if (container1.length && container1.has(e.target).length === 0) { 320 if (!container1.hasClass('disable-close')) 321 { 322 container1.removeClass('show'); 323 } 324 325 } 326 }) 327 328 getOffsetFlycartIcon(); 329 330 //DONGND:: resize update scroll bar of fly cart slide bar 331 $(window).resize(function(){ 332 //DONGND:: active scroll bar 333 $('.leo-dropdown-list-item').each(function(){ 334 335 //DONGND:: scroll bar for slidebar 336 if ($(this).parents('.leo-fly-cart-slidebar').length) 337 { 338 checkFlyCartScrollBar($(this)); 339 } 340 //DONGND:: scroll bar for dropup/dropdown 341 if ($(this).parents('.leo-fly-cart.type-fixed.enable-dropdown').length) 342 { 343 checkFlyCartScrollBarDropDown($(this)); 344 } 345 346 }) 347 getOffsetFlycartIcon(); 348 }) 349}); 350 351//DONGND:: event for button add cart 352function leoBtCart() 353{ 354 $('.leo-bt-cart').each(function(){ 355 if (!$(this).hasClass('leo-enable')) 356 { 357 $(this).addClass('leo-enable'); 358 $(this).click(function(event){ 359 if ($(this).hasClass('active') || $(this).hasClass('reset') || $('.leo-bt-cart.active').length || $(this).hasClass('disabled')) 360 { 361 return false; 362 } 363 364 $(this).find('.leo-bt-cart-content').hide(); 365 $(this).find('.leo-loading').css({'display':'block'}); 366 $(this).addClass('active'); 367 // console.log('aaa'); 368 // return false; 369 // var object_button_container = $(this).parents('.button-container'); 370 var object_button_container = $(this).parents('.product-miniature'); 371 if (object_button_container.find('.leo_cart_quantity').length) 372 { 373 object_button_container.find('.qty_product').val(object_button_container.find('.leo_cart_quantity').val()); 374 } 375 376 var qty_product = object_button_container.find('.qty_product').val(); 377 var min_qty = object_button_container.find('.minimal_quantity').val(); 378 var quantity_product = object_button_container.find('.quantity_product').val(); 379 // console.log(qty_product); 380 // console.log(min_qty); 381 // console.log(quantity_product); 382 if(Math.floor(qty_product) == qty_product && $.isNumeric(qty_product) && qty_product > 0) 383 { 384 // return true; 385 } 386 else 387 { 388 $(this).addClass('reset'); 389 // $(this).siblings('.qty_product').val(min_qty); 390 $('.leo-modal-cart .modal-header').addClass('warning-mess'); 391 $('.leo-modal-cart .leo-warning').show(); 392 $('.leo-modal-cart').modal('show'); 393 return false;
394 } 395 // $('.leo-modal-cart .modal-header').addClass('block-mess'); 396 // $('.leo-modal-cart .leo-block').show(); 397 // $('.leo-modal-cart').modal('show'); 398 if (parseInt(qty_product) < parseInt(min_qty)) 399 { 400 $(this).addClass('reset'); 401 $('.leo-modal-cart .modal-header').addClass('info-mess'); 402 $('.leo-modal-cart .leo-info .alert-min-qty').text(min_qty); 403 $('.leo-modal-cart .leo-info').show(); 404 $('.leo-modal-cart').modal('show'); 405 return false; 406 } 407 408 //DONGND:: check product out stock 409 var id_product = object_button_container.find('.id_product').val(); 410 var id_product_attribute = object_button_container.find('.id_product_attribute').val(); 411 var id_customization = object_button_container.find('.id_customization').val(); 412 // var check_product_outstock = checkProductOutStock(id_product, id_product_attribute, qty_product); 413 // console.log(check_product_outstock); 414 // if (parseInt(qty_product) > parseInt(quantity_product)) 415 // { 416 // $(this).addClass('reset'); 417 // $('.leo-modal-cart .modal-header').addClass('block-mess'); 418 // $('.leo-modal-cart .leo-block').show(); 419 // $('.leo-modal-cart').modal('show'); 420 // return false; 421 // } 422 // return false; 423 // console.log(check_product_outstock); 424 var $element = $(this); 425 $(this).removeData('check-outstock'); 426 427 // $.when(checkProductOutStock(id_product, id_product_attribute, id_customization, qty_product, $element, true)).done(function(data){ 428 checkProductOutStock(id_product, id_product_attribute, id_customization, qty_product, $element, true); 429 check_data_outstock = setInterval(function(){ 430 if (typeof $element.data('check-outstock') != 'undefined') 431 { 432 clearInterval(check_data_outstock); 433 if (!$element.data('check-outstock')) 434 { 435 // console.log('bbbb'); 436 $element.addClass('reset'); 437 $('.leo-modal-cart .modal-header').addClass('block-mess'); 438 $('.leo-modal-cart .leo-block').show(); 439 $('.leo-modal-cart').modal('show'); 440 // return false; 441 event.preventDefault(); 442 event.stopPropagation(); 443 // check_product_outstock = false; 444 } 445 else 446 { 447 var $form = $element.closest('form'); 448 var query = $form.serialize() + '&add=1&action=update'; 449 var actionURL = $form.attr('action'); 450 451 //DONGND:: run add to cart 452 $.ajax({ 453 type: 'POST', 454 headers: {"cache-control": "no-cache"}, 455 url: actionURL, 456 async: true, 457 cache: false, 458 data: query, 459 dataType: 'json', 460 success: function (result) 461 { 462 if(result.success) 463 { 464 if ($('.leo-notification').length && typeof enable_notification != 'undefined' && enable_notification) 465 { 466 //DONGND:: show notification 467 var id_product = result.id_product; 468 var product_name = false; 469 $.each(result.cart.products, function(key, value){ 470 // console.log(value); 471 // console.log(value.id_product); 472 // console.log(value.name); 473 if (id_product == value.id_product) 474 { 475 product_name = value.name; 476 return false; 477 } 478 }) 479 showLeoNotification('success', 'add', product_name); 480 } 481 482 //DONGND:: run fly cart 483 if (typeof enable_flycart_effect != 'undefined' && enable_flycart_effect) 484 { 485 if ($('.leo-bt-cart.active').length) 486 { 487 //DONGND:: product list 488 flyCartEffect($('.leo-bt-cart.active')); 489 } 490 } 491 492 //DONGND:: loading fly cart 493 if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length) 494 { 495 $('.leo-fly-cart .leo-fly-cart-cssload-loader').show(); 496 } 497 498 //DONGND:: loading default cart 499 if ($('.leo-blockcart.cart-preview .cssload-piano').length) 500 { 501 $('.leo-blockcart.cart-preview .cssload-piano').show(); 502 } 503 504 //DONGND:: reset button add cart 505 if (typeof show_popup != 'undefined' && !show_popup) 506 { 507 if ($('.leo-bt-cart.active').length) 508 { 509 $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast'); 510 $('.leo-bt-cart.active').find('.leo-loading').hide(); 511 $('.leo-bt-cart.active').removeClass('active reset'); 512 } 513 514 //DONGND:: refresh default cart 515 var refresh_url = $('.leo-blockcart').data('refresh-url'); 516 $.ajax({ 517 type: 'POST', 518 headers: {"cache-control": "no-cache"}, 519 url: refresh_url, 520 async: true, 521 cache: false, 522 success: function (resp) 523 { 524 $('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart')); 525 $(".blockcart.cart-preview").addClass('leo-blockcart').removeClass('blockcart'); 526 //DONGND:: refresh default cart 527 createModalAndDropdown(1, 0); 528 529 }, 530 error: function (XMLHttpRequest, textStatus, errorThrown) { 531 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 532 } 533 }); 534 } 535 536 if (typeof show_popup != 'undefined' && show_popup) 537 { 538 var refreshURL = $('.blockcart').data('refresh-url'); 539 var requestData = {}; 540 541 requestData = { 542 id_product_attribute: result.id_product_attribute, 543 id_product: result.id_product, 544 action: 'add-to-cart' 545 }; 546 547 $.ajax({ 548 type: 'POST', 549 headers: {"cache-control": "no-cache"}, 550 url: refreshURL, 551 async: true, 552 cache: false, 553 data: requestData, 554 dataType: 'json', 555 success: function (resp) 556 { 557 if ($('.leo-bt-cart.active').length) 558 { 559 $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast'); 560 $('.leo-bt-cart.active').find('.leo-loading').hide(); 561 $('.leo-bt-cart.active').removeClass('active reset'); 562 } 563 564 //DONGND:: refresh default cart 565 $('.blockcart').replaceWith($(resp.preview).find('.blockcart')); 566 //DONGND:: show modal popup 567 if (resp.modal) { 568 showModalPopupCart(resp.modal); 569 } 570 571 //DONGND:: refresh dropdown cart 572 createModalAndDropdown(1, 0); 573 }, 574 error: function (XMLHttpRequest, textStatus, errorThrown) { 575 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 576 } 577 }); 578 579 } 580 581 } 582 else 583 { 584 //DONGND:: show notification 585 showLeoNotification('error','add', false); 586 } 587 }, 588 error: function (XMLHttpRequest, textStatus, errorThrown) { 589 // alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 590 showLeoNotification('error','add', false); 591 } 592 }); 593 } 594 } 595 }, 10); 596 // console.log($element); 597 // console.log($element.data('check-outstock')); 598 599 // }); 600 601 602 return false;
603 }); 604 }; 605 }); 606 607 $('.leo_cart_quantity').each(function(){ 608 //DONGND:: hide input quantity when cart buton does not show 609 if ($(this).parents('.product-miniature').find('.qty_product').val()) 610 { 611 $(this).val($(this).parents('.product-miniature').find('.qty_product').val()); 612 } 613 else 614 { 615 $(this).hide(); 616 } 617 }) 618 // $('.leo_cart_quantity').change(function(){ 619 // console.log($(this).val()); 620 // $(this).parents('.product-miniature').find('.qty_product').val($(this).val()); 621 // }) 622} 623 624//DONGND:: event for button add cart 625function leoSelectAttr() 626{ 627 $('.leo-select-attr').click(function(e){ 628 e.preventDefault(); 629 var id_product = $(this).data('id-product'); 630 var attr_txt = $(this).text(); 631 var id_attr = $(this).data('id-attr'); 632 var qty_attr = $(this).data('qty-attr'); 633 var min_qty_attr = $(this).data('min-qty-attr'); 634 // var parent_e = $(this).parents('.button-container'); 635 var parent_e = $(this).parents('.product-miniature'); 636 637 // console.log(attr_txt); 638 if (!$(this).hasClass('selected')) 639 { 640 $(this).siblings().removeClass('selected'); 641 $(this).addClass('selected'); 642 parent_e.find('.dropdownListAttrButton_'+id_product).text(attr_txt); 643 if($(this).hasClass('disable')) 644 { 645 if(!parent_e.find('.leo-bt-cart_'+id_product).hasClass('disabled')) 646 { 647 parent_e.find('.leo-bt-cart_'+id_product).addClass('disabled'); 648 } 649 } 650 else 651 { 652 if(parent_e.find('.leo-bt-cart_'+id_product).hasClass('disabled')) 653 { 654 parent_e.find('.leo-bt-cart_'+id_product).removeClass('disabled'); 655 } 656 }; 657 658 var $product_article_e = $(this).parents('.product-miniature[data-id-product=' + id_product+']'); 659 // console.log($product_article_e); 660 $product_article_e.find('.leo-bt-cart .leo-bt-cart-content').hide(); 661 $product_article_e.find('.leo-bt-cart .leo-loading').css({'display':'block'}); 662 $product_article_e.find('.leo-bt-cart').addClass('active'); 663 664 $.ajax({ 665 type: 'POST', 666 headers: {"cache-control": "no-cache"}, 667 url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(), 668 async: true, 669 cache: false, 670 data: { 671 "action": "get-attribute-data", 672 "id_product": id_product, 673 "id_product_attribute": id_attr, 674 "token": leo_token 675 }, 676 success: function (result) 677 { 678 if(result != '') 679 { 680 var obj = $.parseJSON(result); 681 // console.log($(this)); 682 // console.log($('.product-miniature[data-id-product=' + id_product+']')); 683 684 $product_article_e.find('.product-thumbnail img').attr('src', obj.product_cover.bySize.home_default.url).attr('alt', obj.product_cover.legend); 685 $product_article_e.find('.product-thumbnail').attr('href', obj.product_url); 686 $product_article_e.find('.product-price-and-shipping').empty().append(obj.price_attribute); 687 // if (typeof enable_product_label != 'undefined' && enable_product_label) 688 // { 689 // updatePostionLabel($product_article_e); 690 // } 691 } 692 else 693 { 694 alert(add_cart_error); 695 } 696 $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast'); 697 $('.leo-bt-cart.active').find('.leo-loading').hide(); 698 $('.leo-bt-cart.active').removeClass('active reset'); 699 }, 700 error: function (XMLHttpRequest, textStatus, errorThrown) { 701 alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 702 } 703 }); 704 } 705 706 // $('#quantity_product_'+id_product).val(qty_attr); 707 // $('#id_product_attribute_'+id_product).val(id_attr); 708 // $('#minimal_quantity_'+id_product).val(min_qty_attr); 709 // $('#qty_product_'+id_product).val(min_qty_attr).attr('min',min_qty_attr); 710 711 parent_e.find('.quantity_product_'+id_product).val(qty_attr); 712 parent_e.find('.id_product_attribute_'+id_product).val(id_attr); 713 parent_e.find('.minimal_quantity_'+id_product).val(min_qty_attr); 714 parent_e.find('.qty_product_'+id_product).val(min_qty_attr).data('min',min_qty_attr); 715 716 parent_e.find('.leo_cart_quantity').val(min_qty_attr); 717 // $('#dropdownListAttrButton_'+id_product).trigger('click'); 718 parent_e.find('.dropdownListAttrButton_'+id_product).trigger('click'); 719 720 // leoBtCart(); 721 // return false;
722 723 }); 724 725 // leoBtCart(); 726} 727 728//DONGND:: event for module popup after add cart 729function activeEventModal() 730{ 731 $('.leo-modal-cart').on('hide.bs.modal', function (e) { 732 // console.log('test'); 733 $('.leo-modal-cart .modal-header').removeClass('block-mess info-mess warning-mess'); 734 $('.leo-modal-cart .modal-title').hide(); 735 var min_qty = $('.leo-bt-cart.reset').parents('.button-container').find('.minimal_quantity').val(); 736 $('.leo-bt-cart.reset').parents('.button-container').find('.qty_product').val(min_qty); 737 $('.leo-bt-cart.reset').parents('.product-miniature').find('.leo_cart_quantity').val(min_qty); 738 $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast'); 739 $('.leo-bt-cart.active').find('.leo-loading').hide(); 740 $('.leo-bt-cart.active').removeClass('active reset'); 741 742 // do something... 743 }); 744 745 // $('.leo-modal-cart').on('show.bs.modal', function (e) { 746 // $('.leo-bt-cart.active').find('.leo-bt-cart-content').show(); 747 // $('.leo-bt-cart.active').find('.leo-loading').hide(); 748 // }) 749} 750 751//DONGND:: update position label 752function updatePostionLabel($parent) 753{ 754 var FLAG_MARGIN = 10; 755 var $percent = $parent.find('.discount-percentage'); 756 var $onsale = $parent.find('.on-sale'); 757 var $new = $parent.find('.new'); 758 if($percent.length){ 759 $new.css('top', $percent.height() * 2 + FLAG_MARGIN); 760 $percent.css('top',-$parent.find('.thumbnail-container').height() + $parent.find('.product-description').height() + FLAG_MARGIN); 761 } 762 if($onsale.length){ 763 $percent.css('top', parseFloat($percent.css('top')) + $onsale.height() + FLAG_MARGIN); 764 $new.css('top', ($percent.height() * 2 + $onsale.height()) + FLAG_MARGIN * 2); 765 } 766} 767 768//DONGND:: show dropdown cart 769function showDropDownCart($element, $type) 770{ 771 var object_element = ''; 772 if ($type == 'defaultcart') 773 { 774 object_element = $element.siblings('.leo-dropdown-cart'); 775 } 776 if ($type == 'flycart') 777 { 778 object_element = $element.parents('.leo-fly-cart').find('.leo-dropdown-cart'); 779 } 780 781 if (!object_element.hasClass('show')) 782 { 783 object_element.addClass('show'); 784 } 785 else 786 { 787 object_element.removeClass('show'); 788 } 789 790} 791 792//DONGND:: show dropdown cart 793function showSlideBarCart($element) 794{ 795 if (!$('.leo-fly-cart-slidebar.disable').length) 796 { 797 if (!$element.hasClass('active-slidebarcart')) 798 { 799 var type = $element.data('type'); 800 var pusheffect = $element.data('pusheffect'); 801 $element.addClass('active-slidebarcart'); 802 803 $('.leo-fly-cart-slidebar.'+type).addClass('active'); 804 if ($('.leo-fly-cart-mask').length) 805 { 806 $('.leo-fly-cart-mask').first().addClass('active'); 807 $('body').addClass('leoflycart-active-slidebar'); 808 } 809 //DONGND:: update scrollbar of slidebar cart for safari win 810 if ($('html').hasClass('safari-win')) 811 { 812 $('.leo-fly-cart-slidebar .leo-dropdown-list-item').each(function(){ 813 //DONGND:: scroll bar for slidebar 814 checkFlyCartScrollBar($(this)); 815 }) 816 }; 817 818 if (pusheffect) 819 { 820 $('.leo-fly-cart-slidebar.'+type).addClass('push'); 821 $('body').addClass('leoflycart-active-push'); 822 var push_value; 823 var push_type; 824 if (type == 'slidebar_top' || type == 'slidebar_bottom') 825 { 826 push_type = "Y"; 827 if (type == 'slidebar_top') 828 { 829 // push_value = $('.leo-fly-cart-slidebar.push.'+type).outerHeight()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerHeight(); 830 push_value = $('.leo-fly-cart-slidebar.push.'+type).outerHeight(); 831 } 832 if (type == 'slidebar_bottom') 833 { 834 // push_value = -($('.leo-fly-cart-slidebar.push.'+type).outerHeight()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerHeight()); 835 push_value = -$('.leo-fly-cart-slidebar.push.'+type).outerHeight(); 836 } 837 838 } 839 if (type == 'slidebar_right' || type == 'slidebar_left') 840 { 841 push_type = "X"; 842 if (type == 'slidebar_left') 843 { 844 // push_value = $('.leo-fly-cart-slidebar.push.'+type).outerWidth()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerWidth(); 845 push_value = $('.leo-fly-cart-slidebar.push.'+type).outerWidth(); 846 } 847 if (type == 'slidebar_right') 848 { 849 // push_value = -($('.leo-fly-cart-slidebar.push.'+type).outerWidth()+$('.leo-fly-cart-slidebar.push.'+type+' .leo-fly-cart').outerWidth()); 850 push_value = -$('.leo-fly-cart-slidebar.push.'+type).outerWidth(); 851 } 852 853 } 854 $('body.leoflycart-active-push main').css({ 855 "-moz-transform": "translate"+push_type+"("+push_value+"px)", 856 "-webkit-transform": "translate"+push_type+"("+push_value+"px)", 857 "-o-transform": "translate"+push_type+"("+push_value+"px)", 858 "-ms-transform": "translate"+push_type+"("+push_value+"px)", 859 "transform": "translate"+push_type+"("+push_value+"px)", 860 }) 861 } 862 863 } 864 else 865 { 866 $('.leo-fly-cart-slidebar .leo-fly-cart-icon').trigger('click'); 867 } 868 } 869} 870 871//DONGND:: event for dropdown cart 872function activeDropdownEvent() 873{ 874 //DONGND:: active scroll bar 875 $('.leo-dropdown-list-item').each(function(){ 876 // console.log($(this).parents('.leo-fly-cart-slidebar')); 877 var check_number_cartitem = 3; 878 if (typeof number_cartitem_display != 'undefined') 879 { 880 check_number_cartitem = number_cartitem_display; 881 } 882 //DONGND:: scroll bar for dropdown 883 // checkFlyCartScrollBarDropDown($(this)); 884 // if (!$(this).parents('.leo-fly-cart-slidebar').length && $(this).find('.leo-dropdown-cart-item').length > check_number_cartitem) 885 // { 886 if (!$(this).parents('.leo-fly-cart-slidebar').length) 887 { 888 // if (typeof height_cart_item != 'undefined') 889 // { 890 // $(this).addClass('active-scrollbar').css({'max-height': height_cart_item*number_cartitem_display}); 891 // } 892 // else 893 // { 894 // $(this).addClass('active-scrollbar').css({'max-height': $(this).find('.leo-dropdown-cart-item').outerHeight()*check_number_cartitem}); 895 // } 896 897 898 // $(this).mCustomScrollbar({ 899 // theme:"dark", 900 // scrollInertia: 200, 901 // callbacks:{ 902 // onInit:function(){ 903 904 // } 905 // }, 906 // keyboard:{ 907 // enable:true, 908 // } 909 // }); 910 911 // $(this).mCustomScrollbar('update'); 912 // console.log('test'); 913 checkFlyCartScrollBarDropDown($(this)); 914 // if ($scrollToElement != false) 915 // { 916 // $(this).mCustomScrollbar('scrollTo',$(this).find('.mCSB_container').find('.leo-dropdown-cart-item:eq('+$scrollToElement+')'),{scrollInertia:0}); 917 // } 918 919 // $(this).scrollbar(); 920 } 921 922 //DONGND:: scroll bar for slidebar 923 if ($(this).parents('.leo-fly-cart-slidebar').length) 924 { 925 checkFlyCartScrollBar($(this)); 926 927 } 928 }) 929 930 //DONGND:: highlight dropdown cart item 931 $('.leo-remove-from-cart, .view-leo-dropdown-additional').hover(function(){ 932 933 if ($(this).hasClass('leo-remove-from-cart')) 934 { 935 $(this).parents('.leo-dropdown-cart-item').addClass('high-light'); 936 } 937 938 },function(){ 939 if ($(this).hasClass('leo-remove-from-cart')) 940 { 941 $(this).parents('.leo-dropdown-cart-item').removeClass('high-light'); 942 } 943 }) 944 945 //DONGND:: show additional info 946 $('.view-leo-dropdown-additional').click(function(){ 947 var parent_obj = $(this).parents('.leo-dropdown-cart-item'); 948 949 var wrapper_parent_obj = $(this).parents('.leo-dropdown-list-item'); 950 951 if (!$(this).hasClass('show')) 952 { 953 if (wrapper_parent_obj.find('.leo-dropdown-cart-item.show-additional')) 954 { 955 wrapper_parent_obj.find('.leo-dropdown-cart-item.show-additional').removeClass('show-additional'); 956 wrapper_parent_obj.find('.view-leo-dropdown-additional.show').removeClass('show'); 957 wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){ 958 $(this).remove(); 959 }); 960 wrapper_parent_obj.mCustomScrollbar("update"); 961 962 setTimeout(function() { 963 wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update"); 964 },500); 965 } 966 $(this).addClass('show'); 967 968 if (wrapper_parent_obj.hasClass('active-scrollbar') && parent_obj.hasClass('last')) 969 { 970 // if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top').length || $(this).parents('.leo-fly-cart-slidebar.
970slidebar_top').length || $(this).parents('.leo-fly-cart-slidebar.push_slidebar_bottom').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_bottom').length) 971 // { 972 // var width_clone_obj = parent_obj.width(); 973 // wrapper_parent_obj.find('.leo-dropdown-list-item').append('<li class="fake-element" style="width:'+width_clone_obj+'px"></li>'); 974 // wrapper_parent_obj.mCustomScrollbar("update"); 975 // wrapper_parent_obj.mCustomScrollbar("scrollTo","100%",{ 976 // callbacks: parent_obj.addClass('show-additional') 977 // }); 978 // } 979 // else 980 // { 981 var height_clone_obj = parent_obj.find('.leo-dropdown-additional').height(); 982 wrapper_parent_obj.find('.mCSB_container').append('<p class="fake-element" style="height:'+height_clone_obj+'px"></p>'); 983 wrapper_parent_obj.mCustomScrollbar("update"); 984 wrapper_parent_obj.mCustomScrollbar("scrollTo","bottom",{ 985 callbacks: parent_obj.addClass('show-additional') 986 }); 987 // } 988 989 } else if(wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').hasClass('active-scrollbar') && parent_obj.hasClass('last') && parent_obj.hasClass('first')) 990 { 991 wrapper_parent_obj.append('<li class="leo-dropdown-cart-item clearfix has-view-additional fake-element" style="width:'+width_cart_item+'px; height:'+height_cart_item+'px"></p>'); 992 wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update"); 993 wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("scrollTo","last",{ 994 callbacks: parent_obj.addClass('show-additional') 995 }); 996 } 997 else 998 { 999 parent_obj.addClass('show-additional'); 1000 } 1001 //DONGND:: disable scrollbar with fly cart slide bar top 1002 // if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top.active-scroll').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_top.active-scroll').length) 1003 // { 1004 // $(this).parents('.leo-fly-cart-slidebar').find('.leo-dropdown-list-item-warpper.active-scrollbar').mCustomScrollbar("destroy"); 1005 // $(this).parents('.leo-fly-cart-slidebar').addClass('disable-scrollbar'); 1006 // } 1007 } 1008 else 1009 { 1010 parent_obj.removeClass('show-additional'); 1011 if (wrapper_parent_obj.hasClass('active-scrollbar') && parent_obj.hasClass('last')) 1012 { 1013 wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){ 1014 $(this).remove(); 1015 }); 1016 wrapper_parent_obj.mCustomScrollbar("update"); 1017 1018 } 1019 else if(wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').hasClass('active-scrollbar') && parent_obj.hasClass('last') && parent_obj.hasClass('first')) 1020 { 1021 wrapper_parent_obj.find('.fake-element').fadeOut('200',function(){ 1022 $(this).remove(); 1023 }); 1024 parent_obj.removeClass('show-additional'); 1025 $(this).removeClass('show'); 1026 // wrapper_parent_obj.find('.fake-element').remove(); 1027 setTimeout(function() { 1028 wrapper_parent_obj.parents('.leo-dropdown-list-item-warpper').mCustomScrollbar("update"); 1029 },500); 1030 1031 } 1032 parent_obj.removeClass('show-additional'); 1033 $(this).removeClass('show'); 1034 //DONGND:: disable scrollbar with fly cart slide bar top 1035 // if ($(this).parents('.leo-fly-cart-slidebar.push_slidebar_top.active-scroll').length || $(this).parents('.leo-fly-cart-slidebar.slidebar_top.active-scroll').length) 1036 // { 1037 // if ($(this).parents('.leo-fly-cart-slidebar').hasClass('disable-scrollbar')) 1038 // { 1039 // $(this).parents('.leo-fly-cart-slidebar').removeClass('disable-scrollbar'); 1040 // $(this).parents('.leo-fly-cart-slidebar').find('.leo-dropdown-list-item-warpper.active-scrollbar').mCustomScrollbar("update"); 1041 // } 1042 1043 // } 1044 } 1045 return false; 1046 }) 1047 1048 //DONGND:: remove dropdown cart item 1049 $('.leo-remove-from-cart').click(function(){ 1050 var id_product = $(this).data('id-product'); 1051 var id_product_attribute = $(this).data('id-product-attribute'); 1052 var id_customization = $(this).data('id-customization'); 1053 1054 var parent_obj = $(this).parents('.leo-dropdown-cart-item'); 1055 1056 parent_obj.addClass('deleting'); 1057 if (parent_obj.hasClass('show-additional')) 1058 { 1059 parent_obj.find('.view-leo-dropdown-additional').trigger('click'); 1060 } 1061 parent_obj.find('.leo-dropdown-overlay').show(); 1062 parent_obj.find('.leo-dropdown-cssload-speeding-wheel').show(); 1063 if ($('.remove-from-cart').length) 1064 { 1065 //DONGND:: do not close dropdown-dropup when delete at page cart 1066 $('.leo-dropdown-cart.dropdown').addClass('disable-close'); 1067 $('.leo-dropdown-cart.dropup').addClass('disable-close'); 1068 //DONGND:: page cart 1069 // console.log($('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]')); 1070 $('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').trigger('click'); 1071 } 1072 else 1073 { 1074 var link_url = $(this).data('link-url'); 1075 var refresh_url = $('.leo-blockcart.cart-preview').data('refresh-url'); 1076 // var scrollToElement = parent_obj.index()-1; 1077 1078 $.ajax({ 1079 type: 'POST', 1080 headers: {"cache-control": "no-cache"}, 1081 url: link_url, 1082 async: true, 1083 cache: false, 1084 data: { 1085 "ajax": 1, 1086 "action": "update", 1087 }, 1088 success: function (result) 1089 { 1090 var obj = $.parseJSON(result); 1091 parent_obj.find('.leo-dropdown-overlay').hide(); 1092 parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide(); 1093 1094 // console.log(obj); 1095 if(obj.success) 1096 { 1097 parent_obj.fadeOut(function(){ 1098 // if (parent_obj.hasClass('last')) 1099 // { 1100 // parent_obj.prev().addClass('last'); 1101 // } 1102 // if (parent_obj.hasClass('first')) 1103 // { 1104 // parent_obj.next().addClass('first'); 1105 // } 1106 parent_obj.remove(); 1107 $('.leo-remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').parents('.leo-dropdown-cart-item').remove();
1108 updateClassCartItem(); 1109 1110 }); 1111 //DONGND:: show notification 1112 showLeoNotification('success','delete', false); 1113 1114 //DONGND:: refresh cart 1115 $.ajax({ 1116 type: 'POST', 1117 headers: {"cache-control": "no-cache"}, 1118 url: refresh_url, 1119 async: true, 1120 cache: false, 1121 success: function (resp) 1122 { 1123 $('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart')); 1124 $(".blockcart.cart-preview").addClass('leo-blockcart'); 1125 if (typeof show_popup != 'undefined' && !show_popup) 1126 { 1127 $(".blockcart.cart-preview").removeClass('blockcart') 1128 } 1129 createModalAndDropdown(1, 1); 1130 1131 }, 1132 error: function (XMLHttpRequest, textStatus, errorThrown) { 1133 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 1134 } 1135 }); 1136 1137 } 1138 else 1139 { 1140 //DONGND:: show notification 1141 showLeoNotification('error','delete', false); 1142 } 1143 1144 }, 1145 error: function (XMLHttpRequest, textStatus, errorThrown) { 1146 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 1147 } 1148 }); 1149 } 1150 1151 return false; 1152 }) 1153 1154 //DONGND:: change quantity product dropdown with input 1155 // $("body").on('focusout','.leo-input-product-quantity',function (event) { 1156 // updateQuantityProductDropDown(event.currentTarget); 1157 1158 // }); 1159 // $("body").on('keyup','.leo-input-product-quantity',function (event) { 1160 // if (event.keyCode == 13) { 1161 // updateQuantityProductDropDown(event.currentTarget); 1162 // } 1163 // }); 1164 $('.leo-input-product-quantity').focusout(function(){ 1165 updateQuantityProductDropDown($(this)); 1166 }) 1167 $('.leo-input-product-quantity').keyup(function(event){ 1168 if (event.keyCode == 13) { 1169 updateQuantityProductDropDown($(this)); 1170 } 1171 }) 1172 1173 // var update_quantity = false; 1174 var timer; 1175 var flag = false; 1176 1177 //DONGND:: change quantity product dropdown with button up-down 1178 $('.leo-bt-product-quantity-down, .leo-bt-product-quantity-up').on('touchstart click', function(){ 1179 if(flag == true) 1180 { 1181 flag = false; 1182 clearTimeout(timer); 1183 } 1184 flag = true; 1185 // console.log('test'); 1186 var action = 'up'; 1187 var input_target = $(this).parents('.leo-dropdown-cart-item').find('.leo-input-product-quantity'); 1188 var input_quantity = parseInt(input_target.val()); 1189 var quantity_update; 1190 if ($(this).hasClass('leo-bt-product-quantity-down')) 1191 { 1192 action = 'down'; 1193 } 1194 1195 if (action == 'up') 1196 { 1197 quantity_update = input_quantity+1; 1198 } 1199 if (action == 'down') 1200 { 1201 quantity_update = input_quantity-1; 1202 } 1203 input_target.val(quantity_update); 1204 // updateQuantityProductDropDown(input_target); 1205 // console.log(update_quantity); 1206 1207 timer = setTimeout( 1208 function() 1209 { 1210 flag = false; 1211 // update_quantity = true; 1212 // if (update_quantity) 1213 // { 1214 // console.log(update_quantity); 1215 updateQuantityProductDropDown(input_target); 1216 // } 1217 }, 800); 1218 1219 return false; 1220 }) 1221} 1222 1223function updateQuantityProductDropDown($element) 1224{ 1225 // var $this = $(event.currentTarget); 1226 // if (obj instanceof jQuery) 1227 var $this = $element; 1228 var product_quantity = $this.data('product-quantity'); 1229 var min_quantity = $this.data('min-quantity'); 1230 var max_quantity = $this.data('quantity-available'); 1231 var input_quantity = $this.val(); 1232 // console.log(product_quantity); 1233 // console.log(input_quantity); 1234 1235 // if (input_quantity != parseInt(input_quantity) || input_quantity < 0 || isNaN(input_quantity)) { 1236 // console.log('test'); 1237 // showLeoNotification('normal','check'); 1238 // $this.val(product_quantity); 1239 // return; 1240 // } 1241 1242 //DONGND:: validate input 1243 if(Math.floor(input_quantity) == input_quantity && $.isNumeric(input_quantity) && input_quantity > 0) 1244 { 1245 // return true; 1246 } 1247 else 1248 { 1249 showLeoNotification('normal', 'check', false); 1250 $this.val(product_quantity); 1251 return; 1252 } 1253 1254 //DONGND:: check min quantity 1255 if (parseInt(input_quantity) < parseInt(min_quantity)) 1256 { 1257 showLeoNotification('warning', 'min', min_quantity); 1258 $this.val(product_quantity); 1259 return false;
1260 } 1261 1262 //DONGND:: do not change 1263 var qty = parseInt(input_quantity) - parseInt(product_quantity); 1264 // console.log(qty); 1265 // console.log(product_quantity); 1266 1267 if (qty == 0) { 1268 return; 1269 } 1270 1271 //DONGND:: check stock 1272 // if (parseInt(input_quantity) > parseInt(max_quantity)) 1273 // { 1274 // showLeoNotification('warning', 'max', false); 1275 // $this.val(product_quantity); 1276 // return false; 1277 // } 1278 var id_product = $this.data('id-product'); 1279 var id_product_attribute = $this.data('id-product-attribute'); 1280 var id_customization = $this.data('id-customization'); 1281 1282 $this.removeData('check-outstock'); 1283 1284 var check_product_outstock = true; 1285 var parent_obj = $this.parents('.leo-dropdown-cart-item'); 1286 1287 parent_obj.addClass('updating'); 1288 1289 parent_obj.find('.leo-dropdown-overlay').show(); 1290 parent_obj.find('.leo-dropdown-cssload-speeding-wheel').show(); 1291 // $.when(checkProductOutStock(id_product, id_product_attribute, id_customization, input_quantity, $this, false)).done(function(data){ 1292 checkProductOutStock(id_product, id_product_attribute, id_customization, input_quantity, $this, false); 1293 // console.log($element); 1294 // console.log($this.data('check-outstock')); 1295 check_data_outstock = setInterval(function(){ 1296 if (typeof $element.data('check-outstock') != 'undefined') 1297 { 1298 clearInterval(check_data_outstock); 1299 if (!$this.data('check-outstock')) 1300 { 1301 // console.log('bbbb'); 1302 showLeoNotification('warning', 'max', false); 1303 $this.val(product_quantity); 1304 // console.log(event); 1305 // return false; 1306 // return; 1307 // break; 1308 // event.preventDefault(); 1309 // event.stopPropagation(); 1310 check_product_outstock = false; 1311 parent_obj.find('.leo-dropdown-overlay').hide(); 1312 parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide(); 1313 parent_obj.removeClass('updating'); 1314 } 1315 if (!check_product_outstock) 1316 { 1317 return false; 1318 } 1319 1320 if ($('.js-cart-line-product-quantity').length) 1321 { 1322 //DONGND:: page cart 1323 var e = $.Event("keyup"); 1324 e.keyCode = 13; // # Some key code value 1325 // console.log($('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]')); 1326 $('.remove-from-cart[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').parents('.cart-item').find('.js-cart-line-product-quantity').val(input_quantity).trigger(e); 1327 } 1328 else 1329 { 1330 var link_url = $this.data('update-url'); 1331 var refresh_url = $('.leo-blockcart.cart-preview').data('refresh-url'); 1332 var op = ''; 1333 if (qty > 0) 1334 { 1335 op = 'up'; 1336 } 1337 else 1338 { 1339 op = 'down'; 1340 } 1341 // var scrollToElement = parent_obj.index()-1; 1342 1343 $.ajax({ 1344 type: 'POST', 1345 headers: {"cache-control": "no-cache"}, 1346 url: link_url, 1347 async: true, 1348 cache: false, 1349 data: { 1350 "ajax": 1, 1351 "action": "update", 1352 "qty": Math.abs(qty), 1353 "op": op, 1354 }, 1355 success: function (result) 1356 { 1357 var obj = $.parseJSON(result); 1358 parent_obj.find('.leo-dropdown-overlay').hide(); 1359 parent_obj.find('.leo-dropdown-cssload-speeding-wheel').hide(); 1360 parent_obj.removeClass('updating'); 1361 1362 // console.log(obj); 1363 if(obj.success) 1364 { 1365 // $this.data('product-quantity', input_quantity); 1366 $('.leo-input-product-quantity[data-id-product="'+id_product+'"][data-id-product-attribute="'+id_product_attribute+'"][data-id-customization="'+id_customization+'"]').val(input_quantity).data('product-quantity', input_quantity); 1367 //DONGND:: show notification 1368 showLeoNotification('success','update', false); 1369 1370 //DONGND:: refresh cart 1371 $.ajax({ 1372 type: 'POST', 1373 headers: {"cache-control": "no-cache"}, 1374 url: refresh_url, 1375 async: true, 1376 cache: false, 1377 success: function (resp) 1378 { 1379 $('.leo-blockcart').replaceWith($(resp.preview).find('.blockcart')); 1380 $(".blockcart.cart-preview").addClass('leo-blockcart'); 1381 if (typeof show_popup != 'undefined' && !show_popup) 1382 { 1383 $(".blockcart.cart-preview").removeClass('blockcart') 1384 } 1385 createModalAndDropdown(1, 1); 1386 1387 }, 1388 error: function (XMLHttpRequest, textStatus, errorThrown) { 1389 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 1390 } 1391 }); 1392 1393 } 1394 else 1395 { 1396 //DONGND:: show notification 1397 showLeoNotification('error','update', false); 1398 } 1399 1400 }, 1401 error: function (XMLHttpRequest, textStatus, errorThrown) { 1402 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 1403 } 1404 }); 1405 } 1406 } 1407 }, 10); 1408 1409 // }); 1410 1411} 1412 1413function createModalAndDropdown($only_dropdown, $only_total) 1414{ 1415 1416 //DONGD:: add loading 1417 // $('.blockcart.cart-preview .header').append('<span class="leo-dropdown-cssload-speeding-wheel"></span>'); 1418 // $('.blockcart.cart-preview .leo-dropdown-cssload-speeding-wheel').css({'display':'inline-block'}); 1419 // console.log(enable_dropdown_defaultcart); 1420 if (typeof enable_dropdown_defaultcart != 'undefined') 1421 { 1422 // console.log(enable_dropdown_defaultcart); 1423 if (enable_dropdown_defaultcart) 1424 { 1425 if ($('.blockcart.cart-preview').length) 1426 { 1427 $('.blockcart.cart-preview').addClass('leo-blockcart show-leo-loading').append('<div class="cssload-piano"><div class="cssload-rect1"></div><div class="cssload-rect2"></div><div class="cssload-rect3"></div></div>'); 1428 } 1429 else 1430 {
1431 $('.leo-blockcart.cart-preview').addClass('show-leo-loading').append('<div class="cssload-piano"><div class="cssload-rect1"></div><div class="cssload-rect2"></div><div class="cssload-rect3"></div></div>'); 1432 } 1433 1434 $('.leo-blockcart.cart-preview .cssload-piano').show(); 1435 // $('.blockcart.cart-preview a').attr('href', 'javascript:void(0)'); 1436 // $('.blockcart.cart-preview').addClass('dropdown-toggle').data('toggle','dropdown').attr('aria-haspopup','true').attr('aria-expanded','false').attr('id','dropdownCartNormal'); 1437 // $('.blockcart.cart-preview').parent().addClass('dropdown'); 1438 $('.leo-blockcart.cart-preview.show-leo-loading').data('type',type_dropdown_defaultcart); 1439 // if (typeof enable_dropdown_defaultcart != 'undefined') 1440 // { 1441 // $('.leo-blockcart.cart-preview.show-leo-loading').data('pusheffect', enable_pusheffect_defaultcart); 1442 // } 1443 //DONGND:: action dropdown 1444 if (typeof type_dropdown_defaultcart != 'undefined') 1445 { 1446 if (type_dropdown_defaultcart == 'dropdown' || type_dropdown_defaultcart == 'dropup') 1447 { 1448 $('.leo-blockcart.cart-preview.show-leo-loading').click(function(){ 1449 // console.log('test'); 1450 showDropDownCart($(this), 'defaultcart'); 1451 return false; 1452 }) 1453 } 1454 if (type_dropdown_defaultcart == 'slidebar_left' || type_dropdown_defaultcart == 'slidebar_right' || type_dropdown_defaultcart == 'slidebar_top' || type_dropdown_defaultcart == 'slidebar_bottom') 1455 { 1456 $('.leo-blockcart.cart-preview.show-leo-loading').click(function(){ 1457 showSlideBarCart($(this)); 1458 return false; 1459 }) 1460 } 1461 } 1462 } 1463 else 1464 { 1465 // console.log('test'); 1466 $('.blockcart.cart-preview').addClass('leo-blockcart'); 1467 } 1468 } 1469 1470 //DONGND:: loading fly cart 1471 if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length) 1472 { 1473 $('.leo-fly-cart .leo-fly-cart-cssload-loader').show(); 1474 } 1475 $.ajax({ 1476 type: 'POST', 1477 headers: {"cache-control": "no-cache"}, 1478 url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(), 1479 async: true, 1480 cache: false, 1481 data: { 1482 "action": "render-modal", 1483 "only_dropdown": $only_dropdown, 1484 "only_total": $only_total, 1485 "token": leo_token 1486 }, 1487 success: function (result) 1488 { 1489 if (result != '') 1490 { 1491 // $('.blockcart.cart-preview .leo-dropdown-cssload-speeding-wheel').hide(); 1492 $('.leo-blockcart.cart-preview .cssload-piano').hide(); 1493 if ($('.leo-fly-cart .leo-fly-cart-cssload-loader').length) 1494 { 1495 setTimeout(function(){ 1496 $('.leo-fly-cart .leo-fly-cart-cssload-loader').hide(); 1497 }, 2000); 1498 } 1499 if(result.dropdown != '') 1500 { 1501 if ($('.leo-fly-cart-slidebar.disable').length) 1502 { 1503 $('.leo-fly-cart-slidebar').removeClass('disable'); 1504 } 1505 if (!$('.leo-dropdown-cart').length) 1506 { 1507 if (typeof type_dropdown_defaultcart != 'undefined' && (type_dropdown_defaultcart == 'dropdown' || type_dropdown_defaultcart == 'dropup')) 1508 { 1509 $('.leo-blockcart.cart-preview.show-leo-loading').after('<div class="leo-dropdown-cart defaultcart '+type_dropdown_defaultcart+'"></div>'); 1510 } 1511 1512 //DONGND:: add dropdown to flycart 1513 if ($('.leo-fly-cart.enable-dropdown').length) 1514 { 1515 $('.leo-fly-cart.enable-dropdown').append('<div class="leo-dropdown-cart flycart '+$('.leo-fly-cart.enable-dropdown').data('type')+'"></div>'); 1516 } 1517 1518 //DONGND:: add dropdown to flycart slide bar 1519 if ($('.leo-fly-cart-slidebar').length) 1520 { 1521 1522 $('.leo-fly-cart-slidebar').append('<div class="leo-dropdown-cart"></div>'); 1523 } 1524 } 1525 else 1526 { 1527 $('.leo-dropdown-cart').addClass('update'); 1528 } 1529 1530 if ($('.leo-dropdown-cart-content').length) 1531 { 1532 // console.log('test'); 1533 // $('.leo-dropdown-cart-content').remove(); 1534 // $('.leo-dropdown-cart-content').replaceWith(result.dropdown); 1535 1536 if ($only_total == 1) 1537 { 1538 $('.leo-dropdown-cart-content .leo-dropdown-total').replaceWith(result.dropdown); 1539 var check_number_cartitem = 3; 1540 if (typeof number_cartitem_display != 'undefined') 1541 { 1542 check_number_cartitem = number_cartitem_display; 1543 } 1544 //DONGND:: turn off scroll bar 1545 $('.leo-dropdown-list-item').each(function(){ 1546 // if (!$(this).parents('.leo-fly-cart-slidebar').length && $(this).find('.leo-dropdown-cart-item').length <= check_number_cartitem && $(this).hasClass('active-scrollbar')) 1547 // { 1548 if (!$(this).parents('.leo-fly-cart-slidebar').length) 1549 { 1550 // $(this).removeClass("active-scrollbar").css({'max-height': 'none'}); 1551 // $(this).mCustomScrollbar("destroy"); 1552 // $(this).mCustomScrollbar("disable",true); 1553 checkFlyCartScrollBarDropDown($(this)); 1554 } 1555 //DONGND:: scroll bar for slidebar 1556 if ($(this).parents('.leo-fly-cart-slidebar').length && $(this).parents('.leo-fly-cart-slidebar').find('.active-scrollbar')) 1557 { 1558 // console.log('test'); 1559 checkFlyCartScrollBar($(this)); 1560 } 1561 }) 1562 } 1563 else 1564 { 1565 $('.leo-dropdown-cart-content').replaceWith(result.dropdown); 1566 activeDropdownEvent(); 1567 } 1568 1569 } 1570 else 1571 { 1572 // console.log('test1'); 1573 $('.leo-dropdown-cart').append(result.dropdown); 1574 activeDropdownEvent(); 1575 } 1576 1577 1578 } 1579 else 1580 { 1581 //DONGND:: clear cart 1582 if ($('.leo-dropdown-cart').length) 1583 { 1584 $('.leo-dropdown-cart').remove(); 1585 } 1586 $('.leo-fly-cart-slidebar').addClass('disable'); 1587 if ($('.leo-fly-cart-slidebar.active').length) 1588 { 1589 $('.leo-fly-cart-slidebar.active').find('.leo-fly-cart-icon').trigger('click'); 1590 } 1591 } 1592 1593 //DONGND:: create modal popup 1594 if(result.modal != '') 1595 { 1596 $('body').append(result.modal); 1597 activeEventModal(); 1598 } 1599 //DONGND:: create notification 1600 if(result.notification != '') 1601 { 1602 $('body').append(result.notification); 1603 } 1604 1605 //DONGND:: update cart total for fly cart 1606 if ($('.leo-fly-cart-total').length) 1607 { 1608 if ($('.leo-dropdown-total').length) 1609 { 1610 $('.leo-fly-cart-total').text($('.leo-dropdown-total').data('cart-total')); 1611 } 1612 else 1613 { 1614 $('.leo-fly-cart-total').text("0"); 1615 } 1616 1617 } 1618 } 1619 else 1620 {
1621 alert(add_cart_error); 1622 } 1623 1624 }, 1625 error: function (XMLHttpRequest, textStatus, errorThrown) { 1626 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 1627 // alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 1628 } 1629 }); 1630} 1631 1632//DONGND:: event for notification 1633function activeEventNotification() 1634{ 1635 $(".leo-notification .notification").click(function(){ 1636 $(this).removeClass('show').addClass("closed").parent().addClass('disable'); 1637 // var obj = $(this); 1638 // setTimeout( 1639 // function() 1640 // { 1641 // obj.parent().addClass('disable'); 1642 // }, 700); 1643 // if (!$(".leo-notification .notification.show").length) 1644 // { 1645 // setTimeout( 1646 // function() 1647 // { 1648 // $(".leo-notification").removeClass('active'); 1649 // }, 700); 1650 1651 // } 1652 }) 1653} 1654 1655function showLeoNotification($status, $action, $special_parameter) 1656{ 1657 if (!$('.leo-notification').hasClass('active')) 1658 { 1659 $('.leo-notification').addClass('active'); 1660 } 1661 var clone_obj = ''; 1662 1663 clone_obj = $('.leo-temp-'+$status+'>div').clone(); 1664 clone_obj.find('.noti-'+$action).addClass('active'); 1665 if ($special_parameter && $special_parameter != '') 1666 { 1667 clone_obj.find('.noti-'+$action).find('.noti-special').text($special_parameter); 1668 } 1669 // clone_obj.height(clone_obj.find('.notification').height()); 1670 // clone_obj.find('.notification').addClass('show'); 1671 $('.leo-notification').append(clone_obj); 1672 setTimeout( 1673 function() 1674 { 1675 // $('.leo-notification .notification').last().addClass('show'); 1676 clone_obj.find('.notification').addClass('show'); 1677 // var height_wrapper = $('.leo-notification .notification').last().height(); 1678 // $('.leo-notification .notification-wrapper').last().height(height_wrapper); 1679 }, 100); 1680 1681 activeEventNotification(); 1682 setTimeout( 1683 function() 1684 { 1685 // clone_obj.find('.notification').trigger('click'); 1686 clone_obj.find('.notification').removeClass('show').addClass("closed").parent().addClass('disable'); 1687 }, 5000); 1688} 1689 1690//DONGND:: check product out stock 1691function checkProductOutStock($id_product, $id_product_attribute, $id_customization, $quantity, $element, $check_product_in_cart) 1692{ 1693 // console.log($element); 1694 // return $.ajax({ 1695 $.ajax({ 1696 type: 'POST', 1697 headers: {"cache-control": "no-cache"}, 1698 url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(), 1699 async: true, 1700 cache: false, 1701 data: { 1702 "action": "check-product-outstock", 1703 "id_product": $id_product, 1704 "id_product_attribute": $id_product_attribute, 1705 "id_customization": $id_customization, 1706 "quantity": $quantity, 1707 "check_product_in_cart": $check_product_in_cart, 1708 "token": leo_token 1709 }, 1710 success: function (result) 1711 { 1712 if (result != '') 1713 { 1714 var obj = $.parseJSON(result); 1715 // console.log('bbb'); 1716 // console.log(obj.success); 1717 1718 $element.data('check-outstock', obj.success) 1719 // console.log($element.data('check-outstock')); 1720 } 1721 else 1722 { 1723 alert(add_cart_error); 1724 } 1725 1726 }, 1727 error: function (XMLHttpRequest, textStatus, errorThrown) { 1728 console.log("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 1729 // alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 1730 } 1731 }); 1732} 1733 1734//DONGND:: update class first last of cart item 1735function updateClassCartItem() 1736{ 1737 $('.leo-dropdown-list-item').each(function(){ 1738 $(this).find('.leo-dropdown-cart-item').first().addClass('first'); 1739 $(this).find('.leo-dropdown-cart-item').last().addClass('last'); 1740 }) 1741} 1742 1743//DONGND:: create fly cart effect 1744function flyCartEffect($element) 1745{ 1746 if ($element.hasClass('leo-bt-cart')) 1747 { 1748 var parent_e = $element.parents('.product-miniature'); 1749 var product_img = parent_e.find('.product-thumbnail').find("img").eq(0); 1750 } 1751 else 1752 { 1753 var product_img = ''; 1754 if ($('.quickview .product-cover').length) 1755 { 1756 //DONGND:: quickview in produc page 1757 product_img = $('.quickview .product-cover').find("img").eq(0); 1758 } 1759 else 1760 { 1761 //DONGND:: product page 1762 product_img = $('.product-cover').find("img").eq(0); 1763 } 1764 } 1765 if (typeof product_img != 'undefined' && product_img.length) 1766 { 1767 var obj_element = ''; 1768 if ($('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length) 1769 { 1770 obj_element = $('.leo-fly-cart-slidebar.active .leo-fly-cart-icon'); 1771 } 1772 else if ($('.leo-fly-cart.solo .leo-fly-cart-icon').length) 1773 { 1774 obj_element = $('.leo-fly-cart.solo .leo-fly-cart-icon'); 1775 } 1776 else if ($('.leo-blockcart.cart-preview').length) 1777 { 1778 obj_element = $('.leo-blockcart.cart-preview'); 1779 } 1780 else if ($('.blockcart.cart-preview').length) 1781 { 1782 obj_element = $('.blockcart.cart-preview'); 1783 }else 1784 { 1785 return; 1786 } 1787 $('body').addClass('enable-leo-fly-cart'); 1788 var divider = 4; 1789 var flyerClone = product_img.clone(); 1790 1791 var clone_offset_top = product_img.offset().top; 1792 var clone_offset_left = product_img.offset().left; 1793 //DONGND:: update for body boxed 1794 if ($('body').offset().left != 0) 1795 { 1796 clone_offset_left = clone_offset_left - $('body').offset().left; 1797 } 1798 flyerClone.css({position: 'absolute', top: clone_offset_top + "px", left: clone_offset_left + "px", opacity: 1, 'z-index': 1000, width: product_img.width(), height: product_img.height()}); 1799 1800 $('body').append(flyerClone); 1801 var gotoX = obj_element.offset().left + (obj_element.width() / 2) - (product_img.width()/divider)/2; 1802 //DONGND:: update for body boxed 1803 if ($('body').offset().left != 0) 1804 { 1805 gotoX = gotoX - $('body').offset().left; 1806 } 1807 if ($('html').hasClass('safari-win') && $('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length) 1808 { 1809 //DONGND:: update position of fly cart icon on slidebar cart for safari win 1810 var gotoY = $(window).scrollTop()+obj_element.offset().top + (obj_element.height() / 2) - (product_img.height()/divider)/2; 1811 } 1812 else 1813 { 1814 var gotoY = obj_element.offset().top + (obj_element.height() / 2) - (product_img.height()/divider)/2; 1815 } 1816 1817 flyerClone.animate({ 1818 opacity: 0.4, 1819 left: gotoX, 1820 top: gotoY, 1821 width: product_img.width()/divider, 1822 height: product_img.height()/divider 1823 }, 1000, 1824 function () { 1825 flyerClone.fadeOut('fast', function () { 1826 flyerClone.remove(); 1827 $('body').removeClass('enable-leo-fly-cart'); 1828 }); 1829 if (typeof type_flycart_effect != 'undefined') 1830 { 1831 if (type_flycart_effect == 'shake') 1832 { 1833 obj_element.parents('.leo-fly-cart').find('.leo-fly-cart-total').css({'opacity':0}); 1834 setTimeout(function () { 1835 obj_element.effect("shake", { 1836 times: 2 1837 }, 200, function(){ 1838 obj_element.parents('.leo-fly-cart').find('.leo-fly-cart-total').css({'opacity':1}); 1839 }); 1840 }, 500); 1841 } 1842 if (type_flycart_effect == 'fade') 1843 { 1844 obj_element.fadeOut('fast', function () { 1845 obj_element.fadeIn('fast', function () { 1846 }); 1847 }); 1848 } 1849 } 1850 // obj_element.fadeOut('fast', function () { 1851 // obj_element.fadeIn('fast', function () { 1852 // flyerClone.fadeOut('fast', function () { 1853 // flyerClone.remove(); 1854 // }); 1855 // }); 1856 // }); 1857 }); 1858 1859 // var divider = 1; 1860 // var imgclone = product_img.clone() 1861 // .offset({ 1862 // top: product_img.offset().top, 1863 // left: product_img.offset().left 1864 // }) 1865 // .css({ 1866 // 'opacity': '0.5', 1867 // 'position': 'absolute', 1868 // 'height': product_img.width()/divider, 1869 // 'width': product_img.height()/divider, 1870 // 'z-index': '100' 1871 // }) 1872 // .appendTo($('body')) 1873 // .animate({ 1874 // 'top': obj_element.offset().top + 10, 1875 // 'left': obj_element.offset().left + 10, 1876 // 'width': product_img.width()/divider/2, 1877 // 'height': product_img.height()/divider/2 1878 // }, 1000, 'easeInOutExpo'); 1879 1880 // setTimeout(function () { 1881 // obj_element.effect("shake", { 1882 // times: 2 1883 // }, 200); 1884 // }, 1500); 1885 1886 // imgclone.animate({ 1887 // 'width': 0, 1888 // 'height': 0 1889 // }, function () { 1890 // $(this).detach() 1891 // }); 1892 } 1893} 1894 1895//DONGND:: event for fly cart slidebar 1896function activeEventFlyCartSlideBar() 1897{ 1898 $('.leo-fly-cart-mask, .leo-fly-cart-slidebar .leo-fly-cart-icon, .leo-fly-cart-slidebar .leo-fly-cart-icon-wrapper, .leo-fly-cart-slidebar .leo-fly-cart').click(function(){ 1899 // console.log('test'); 1900 $('.leo-fly-cart-mask.active').removeClass('active'); 1901 $('.leo-fly-cart-icon.active-slidebarcart').removeClass('active-slidebarcart'); 1902 $('.leo-blockcart.cart-preview.active-slidebarcart').removeClass('active-slidebarcart'); 1903 $('body.leoflycart-active-push main').css({ 1904 "-moz-transform": "translateX(0px)", 1905 "-webkit-transform": "translateX(0px)", 1906 "-o-transform": "translateX(0px)", 1907 "-ms-transform": "translateX(0px)", 1908 "transform": "translateX(0px)", 1909 "-moz-transform": "translateY(0px)", 1910 "-webkit-transform": "translateY(0px)", 1911 "-o-transform": "translateY(0px)", 1912 "-ms-transform": "translateY(0px)", 1913 "transform": "translateY(0px)", 1914 }); 1915 setTimeout(function(){ 1916 $('body').removeClass('leoflycart-active-slidebar leoflycart-active-push'); 1917 },300); 1918 1919 $('.leo-fly-cart-slidebar.active').removeClass('active'); 1920 }); 1921 1922 $(document).keyup(function(e) { 1923 //DONGND:: press esc 1924 if (e.keyCode == 27) { 1925 if ($('.leo-fly-cart-mask').hasClass('active')) 1926 { 1927 $('.leo-fly-cart-mask.active').trigger('click'); 1928 } 1929 else if ($('.leo-fly-cart-slidebar.active .leo-fly-cart-icon').length) 1930 { 1931 $('.leo-fly-cart-slidebar .leo-fly-cart-icon').trigger('click'); 1932 } 1933 } 1934 }); 1935} 1936 1937//DONGND:: update scroll bar for slidebar cart 1938function checkFlyCartScrollBar($element) 1939{ 1940 var object_parent = $element.parents('.leo-fly-cart-slidebar'); 1941 if (object_parent.hasClass('slidebar_top') || object_parent.hasClass('slidebar_bottom')) 1942 { 1943 // console.log('test'); 1944 var width_bottom = object_parent.find('.leo-dropdown-bottom').outerWidth(); 1945 var window_width = $(window).width(); 1946 var element_width = ''; 1947 if (typeof width_cart_item != 'undefined') 1948 { 1949 element_width = $element.find('.leo-dropdown-cart-item').length * width_cart_item; 1950 } 1951 else 1952 { 1953 element_width = $element.find('.leo-dropdown-cart-item').length * $element.find('.leo-dropdown-cart-item').outerWidth(); 1954 } 1955 // console.log(width_bottom); 1956 // console.log(element_width); 1957 // console.log(window_width); 1958 if (element_width+width_bottom > window_width) 1959 { 1960 object_parent.addClass('active-scroll'); 1961 object_parent.find('.leo-dropdown-list-item-warpper').addClass('active-scrollbar'); 1962 object_parent.find('.leo-dropdown-list-item-warpper').css({'width': window_width-width_bottom}); 1963 object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar({ 1964 theme:"dark", 1965 axis: "x", 1966 scrollInertia: 200, 1967 callbacks:{ 1968 onInit:function(){ 1969 1970 } 1971 }, 1972 advanced:{ 1973 autoExpandHorizontalScroll:true 1974 }, 1975 keyboard:{ 1976 enable:true, 1977 // scrollType:"stepless", 1978 // scrollAmount:"auto" 1979 } 1980 }); 1981 object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar('update'); 1982 } 1983 else 1984 { 1985 object_parent.removeClass('active-scroll'); 1986 object_parent.find('.leo-dropdown-list-item-warpper').removeClass("active-scrollbar").css({'width': 'auto'}); 1987 object_parent.find('.leo-dropdown-list-item-warpper').mCustomScrollbar("destroy"); 1988 } 1989 } 1990 1991 if (object_parent.hasClass('slidebar_left') || object_parent.hasClass('slidebar_right')) 1992 { 1993 var height_bottom = object_parent.find('.leo-dropdown-bottom').outerHeight(); 1994 var window_height = $(window).height(); 1995 var element_height = ''; 1996 if (typeof height_cart_item != 'undefined') 1997 { 1998 element_height = $element.find('.leo-dropdown-cart-item').length * height_cart_item; 1999 } 2000 else 2001 { 2002 element_height = $element.find('.leo-dropdown-cart-item').length * $element.find('.leo-dropdown-cart-item').outerHeight(); 2003 } 2004 if (element_height+height_bottom > window_height) 2005 { 2006 object_parent.addClass('active-scroll'); 2007 $element.addClass('active-scrollbar'); 2008 $element.css({'max-height': window_height-height_bottom}); 2009 $element.mCustomScrollbar({ 2010 theme:"dark", 2011 scrollInertia: 200, 2012 callbacks:{ 2013 onInit:function(){ 2014 2015 } 2016 }, 2017 keyboard:{ 2018 enable:true, 2019 // scrollType:"stepless", 2020 // scrollAmount:"auto" 2021 } 2022 2023 }); 2024 $element.mCustomScrollbar('update'); 2025 } 2026 else 2027 { 2028 object_parent.removeClass('active-scroll'); 2029 $element.removeClass("active-scrollbar").css({'max-height': 'none'}); 2030 $element.mCustomScrollbar("destroy"); 2031 } 2032 } 2033 2034} 2035 2036//DONGND:: update scroll bar for dropdown/dropup 2037function checkFlyCartScrollBarDropDown($element) 2038{ 2039 var object_parent = $element.parents('.leo-fly-cart.type-fixed.enable-dropdown'); 2040 var type = object_parent.data('type'); 2041 var height_bottom = object_parent.find('.leo-dropdown-bottom').outerHeight(); 2042 2043 var height_real = height_cart_item*$element.find('.leo-dropdown-cart-item').length; 2044 var height_icon = object_parent.find('.leo-fly-cart-icon-wrapper').outerHeight(); 2045 var window_height = $(window).height(); 2046 var check_number_cartitem = 3; 2047 if (typeof number_cartitem_display != 'undefined') 2048 { 2049 check_number_cartitem = number_cartitem_display; 2050 } 2051 var height_default = height_cart_item*number_cartitem_display; 2052 2053 if (object_parent.length > 0 && type == 'dropup' && height_real+height_bottom > object_parent.position().top && height_default+height_bottom > object_parent.position().top) 2054 { 2055 // console.log('test0'); 2056 $element.addClass('active-scrollbar').css({'max-height': object_parent.position().top-height_icon-height_bottom}); 2057 $element.mCustomScrollbar({ 2058 theme:"dark", 2059 scrollInertia: 200, 2060 callbacks:{ 2061 onInit:function(){ 2062 2063 } 2064 }, 2065 keyboard:{ 2066 enable:true, 2067 } 2068 2069 }); 2070 $element.mCustomScrollbar('update'); 2071 } 2072 else if (object_parent.length > 0 && type == 'dropdown' && height_real+height_bottom > $(window).height()-object_parent.position().top && height_default+height_bottom > $(window).height()-object_parent.position().top) 2073 { 2074 // console.log('test1'); 2075 $element.addClass('active-scrollbar').css({'max-height': $(window).height()-object_parent.position().top-height_icon-height_bottom}); 2076 $element.mCustomScrollbar({ 2077 theme:"dark", 2078 scrollInertia: 200, 2079 callbacks:{ 2080 onInit:function(){ 2081 2082 } 2083 }, 2084 keyboard:{ 2085 enable:true, 2086 } 2087 2088 }); 2089 $element.mCustomScrollbar('update'); 2090 } 2091 else if ($element.find('.leo-dropdown-cart-item').length > check_number_cartitem) 2092 { 2093 // console.log('test2'); 2094 // console.log($(this).find('.leo-dropdown-cart-item').innerHeight()); 2095 if (typeof height_cart_item != 'undefined') 2096 { 2097 $element.addClass('active-scrollbar').css({'max-height': height_cart_item*number_cartitem_display}); 2098 } 2099 else 2100 { 2101 $element.addClass('active-scrollbar').css({'max-height': $element.find('.leo-dropdown-cart-item').outerHeight()*check_number_cartitem}); 2102 } 2103 2104 $element.mCustomScrollbar({ 2105 theme:"dark", 2106 scrollInertia: 200, 2107 callbacks:{ 2108 onInit:function(){ 2109 2110 } 2111 }, 2112 keyboard:{ 2113 enable:true, 2114 // scrollType:"stepless", 2115 // scrollAmount:"auto" 2116 } 2117 }); 2118 // $(this).mCustomScrollbar('update'); 2119 2120 // if ($scrollToElement != false) 2121 // { 2122 // $(this).mCustomScrollbar('scrollTo',$(this).find('.mCSB_container').find('.leo-dropdown-cart-item:eq('+$scrollToElement+')'),{scrollInertia:0}); 2123 // } 2124 2125 // $(this).scrollbar(); 2126 } 2127 else 2128 { 2129 // console.log('test3'); 2130 // object_parent.removeClass('active-scroll'); 2131 $element.removeClass("active-scrollbar").css({'max-height': 'none'}); 2132 $element.mCustomScrollbar("destroy"); 2133 } 2134} 2135 2136//DONGND:: set class by position of fly cart icon 2137function getOffsetFlycartIcon() 2138{ 2139 if ($('.leo-fly-cart.solo .leo-fly-cart-icon').length) 2140 { 2141 var offset_top = $('.leo-fly-cart.solo .leo-fly-cart-icon').offset().top; 2142 var offset_left = $('.leo-fly-cart.solo .leo-fly-cart-icon').offset().left; 2143 var window_width = $(window).width(); 2144 2145 if (offset_left <= window_width/2) 2146 { 2147 $('.leo-fly-cart.solo').removeClass('offset-right').addClass('offset-left'); 2148 } 2149 else 2150 { 2151 $('.leo-fly-cart.solo').removeClass('offset-left').addClass('offse
2151t-right'); 2152 } 2153 2154 //DONGND:: update rtl 2155 if (lf_is_gen_rtl && prestashop.language.is_rtl == 1) 2156 { 2157 if ($('.leo-fly-cart.solo').hasClass('offset-right')) 2158 { 2159 $('.leo-fly-cart.solo').removeClass('offset-right').addClass('offset-left'); 2160 } 2161 else if ($('.leo-fly-cart.solo').hasClass('offset-left')) 2162 { 2163 $('.leo-fly-cart.solo').removeClass('offset-left').addClass('offset-right'); 2164 } 2165 } 2166 } 2167} 2168 2169//DONGND:: show modal popup cart 2170function showModalPopupCart(modal) 2171{ 2172 if ($('#blockcart-modal').length) 2173 { 2174 $('#blockcart-modal').remove(); 2175 } 2176 2177 $('body').append(modal); 2178 2179 $('#blockcart-modal').modal('show'); 2180} 2181 2182function leoChooseAttr() 2183{ 2184 $(document).on('change','.variants-product [data-product-attribute]', function(e) { 2185 var id_product = parseInt($(this).parents('.addToCartFormWrapper:eq(0)').attr('data-product-id')); 2186 var group_value = $(this).parents('.addToCartFormWrapper:eq(0)').find('.addToCartForm').serialize() ; 2187 var parent_e = $(this).parents('.product-miniature'); 2188 2189 var $product_article_e = $(this).parents('.product-miniature[data-id-product=' + id_product+']'); 2190 $product_article_e.find('.leo-bt-cart .leo-bt-cart-content').hide(); 2191 $product_article_e.find('.leo-bt-cart .leo-loading').css({'display':'block'}); 2192 $product_article_e.find('.leo-bt-cart').addClass('active'); 2193 2194 $.ajax({ 2195 type: 'GET', 2196 headers: {"cache-control": "no-cache"}, 2197// url: prestashop.urls.base_url + 'modules/leofeature/psajax.php?rand=' + new Date().getTime(), 2198 url: 'http://localhost/prestashop_17/ps_1765_dev/module/leofeature/leoproductattribute?ajax=1&action=getproductattribute&' + group_value, 2199 url: url_leoproductattribute + '?' + group_value, 2200 async: true, 2201 cache: false, 2202 data: { 2203 'ajax' : '1', 2204 'action' : 'getproductattribute', 2205 "id_product": id_product, 2206 }, 2207 success: function (result) 2208 { 2209 if(result != '') 2210 { 2211 var obj = $.parseJSON(result); 2212 2213 $product_article_e.find('.product-thumbnail img').attr('src', obj.product_cover.bySize.home_default.url).attr('alt', obj.product_cover.legend); 2214 $product_article_e.find('.product-thumbnail').attr('href', obj.product_url); 2215 $product_article_e.find('.product-price-and-shipping').empty().append(obj.price_attribute); 2216 2217 parent_e.find('.id_product_attribute_'+id_product).val(obj.id_attr); 2218 if(!obj.add_to_cart_url){ 2219 parent_e.find('.leo-bt-cart_'+id_product).addClass('disabled'); 2220 }else{ 2221 parent_e.find('.leo-bt-cart_'+id_product).removeClass('disabled'); 2222 } 2223 } 2224 else 2225 { 2226 alert(add_cart_error); 2227 } 2228 $('.leo-bt-cart.active').find('.leo-bt-cart-content').fadeIn('fast'); 2229 $('.leo-bt-cart.active').find('.leo-loading').hide(); 2230 $('.leo-bt-cart.active').removeClass('active reset'); 2231 }, 2232 error: function (XMLHttpRequest, textStatus, errorThrown) { 2233 alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); 2234 } 2235 }); 2236 }); 2237}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.