1/** 2 * Advanced Wishlist | Favorites | Save for later 3 * 4 * @author Nxtal <[email protected]> 5 * @copyright Nxtal 2025 6 * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 7 * @version 3.8.0 8 * 9 */ 10 11var nxtalWishListObj = { 12 13 productCount: 0, 14 activeRequest: 0, 15 AllproductCount:0, 16 select_object:0, 17 id_product_selected :0, 18 id_product_attr_selected : 0, 19 id_wishlist_selected : 0, 20 21 init: function() { 22 var obj = this; 23 24 obj.removeModal(); 25 $("body").on("hidden.bs.modal", "#product-wishlist-modal, #create-wishlist-modal", function () { 26 obj.removeModal(); 27 }); 28 $("body").on("click", '#product-wishlist-modal .close, #create-wishlist-modal .close', function () { 29 obj.removeModal(); 30 }); 31 if (typeof wishlist_count != 'undefined') { 32 obj.productCount = wishlist_count; 33 } 34 35 if (typeof wishlist_mobile_link != 'undefined' && wishlist_mobile_link) { 36 var mobileLink = JSON.parse(wishlist_mobile_link); 37 $('#_mobile_user_info').after(mobileLink.icon); 38 } 39 40 $('.share-links-wishlist-list').on('click', 'a:not([data-toggle="modal"])', function(e){ 41 e.preventDefault(); 42 window.open($(this).attr('href'), 'share', 'toolbar=0,status=0,width=640,height=445'); 43 }); 44 45 $('.share-links-wishlist-list').on('click', 'a[data-toggle="modal"]', function(e){ 46 var idWishlistProduct = ''; 47 if(typeof $(this).attr('data-id_wishlist_product') !== 'undefined') { 48 idWishlistProduct = $(this).data('id_wishlist_product'); 49 } 50 $('#nxtalwishlist-modal .alert').remove(); 51 $('#nxtalwishlist-modal input[type="button"]').removeClass('disabled').prop('disabled', false); 52 $('#nxtalwishlist-modal input[name="id_wishlist_product"]').val(idWishlistProduct); 53 }); 54 55 obj.refreshTouchspin(); 56 57 $('body').on( 58 'change', '.nxtal-product-list [name="qty"]', function(e){ 59 e.stopPropagation(); 60 61 var $this = $(this); 62 var quantity = $(this).val(); 63 var id_wishlist_product = $this.data('id_wishlist_product'); 64 if (quantity && id_wishlist_product) { 65 $.ajax({
66 method: "POST", 67 dataType: "json", 68 url: nxtalwishlist_ajax_link, 69 data: { 70 ajax: true, 71 action: 'updateQuantity', 72 quantity: quantity, 73 id_wishlist_product: id_wishlist_product, 74 }, 75 success: function (res) { 76 if (res.status) { 77 obj.refreshWishList(); 78 obj.refreshTouchspin(); 79 obj.showSuccessMessage(res.message); 80 } else { 81 obj.showErrorMessage(res.message); 82 } 83 }, 84 error: function () { 85 obj.showErrorMessage(nxtal_error_text); 86 } 87 }); 88 } 89 } 90 ); 91 $('body').on( 92 'change', '.product-variants-wishlist input, .product-variants-wishlist select', function(e){ 93 e.stopPropagation(); 94 var $form = $(this).parents('form'); 95 $.ajax({ 96 method: "POST", 97 dataType: "json", 98 url: nxtalwishlist_ajax_link, 99 data: { 100 ajax: true, 101 action: 'setVariants', 102 id_wishlist_product: $(this).closest('.cart-item').data('id_wishlist_product'), 103 data: $form.serialize() 104 }, 105 success: function (res) { 106 if (res.status) { 107 obj.showSuccessMessage(res.message); 108 obj.refreshWishList(); 109 } else { 110 obj.showErrorMessage(res.message); 111 } 112 } 113 }); 114 }); 115 116 $('#created-wishlist').on('click', '.card-block:not(.active)', function(e) { 117 118 let $this = $(this); 119 120 $('#created-wishlist .card-block').removeClass('active'); 121 122 $this.addClass('active'); 123 124 setTimeout(function() { 125 $('html, body').animate({ 126scrollTop: $this.offset().top - 120 }, 500); 127 }, 300); 128 }); 129 130 $('#create-wishlist-modal').on('click', '.create-new-wishlist', function(e){ 131 e.stopPropagation(); 132 var name = $('#wishlist_name').val(); 133 var id_product = obj.id_product_selected; 134 var id_wishlist = obj.id_wishlist_selected; 135 136 if (typeof id_wishlist != 'undefined') { 137 $.ajax({
138 method: "POST", 139 dataType: "json", 140 url: nxtalwishlist_ajax_link, 141 data: { 142 ajax: true, 143 action: 'renameList', 144 id_wishlist : id_wishlist, 145 name : name, 146 }, 147 beforeSend: function() { 148 $('#create-wishlist-modal').attr('disabled', true); 149 }, 150 success: function (res) { 151 152 if (res.status) { 153 154 obj.showSuccessMessage(res.message); 155 156 obj.removeModal(); 157 158 $('[data-id_wishlist="'+id_wishlist+'"]').find('h2').text(name); 159 $('[data-id_wishlist="'+id_wishlist+'"]').find('h2').attr('title', name); 160 161 } else { 162 obj.showErrorMessage(res.message); 163 } 164 $('#wishlist_name').val(''); 165 }, 166 complete: function() { 167 $('#create-wishlist-modal').removeAttr('disabled'); 168 }, 169 }); 170 } else { 171 $.ajax({ 172 method: "POST", 173 dataType: "json", 174 url: nxtalwishlist_ajax_link, 175 data: { 176 ajax: true, 177 action: 'setNewWishList', 178 id_product : id_product, 179 id_product_attribute : obj.id_product_attr_selected, 180 name : name, 181 page_name:$('body').attr('id') 182 }, 183 beforeSend: function() { 184 $('#create-wishlist-modal').attr('disabled', true); 185 }, 186 success: function (res) { 187 if (res.status) { 188 obj.showSuccessMessage(res.message); 189 obj.removeModal(); 190 if (id_product && nxtal_enable_multiple) { 191 obj.showModal(); 192 if (res.html_modal){ 193 $('ul#created-wishlist').append(res.html_modal); 194 } 195 } 196 if (res.html){ 197 $('div#created-wishlist').append(res.html); 198 } 199 } else { 200 obj.showErrorMessage(res.message); 201 } 202 $('#wishlist_name').val(''); 203 }, 204 complete: function() { 205 $('#create-wishlist-modal').removeAttr('disabled'); 206 }, 207 }); 208 } 209 }); 210 211 $('#product-wishlist-modal').on('click', '.wishlist-list-item', function(e){ 212 e.preventDefault(); 213 214 if (obj.id_wishlist_selected) { 215 obj.addInWishList(obj.id_product_selected, obj.id_product_attr_selected); 216 } 217 }); 218 219 $('body').on('click', '.nxtal-wishlist-add-to-new, [nxtal-wishlist-list-edit]', function(e){ 220 e.preventDefault(); 221 obj.removeModal(); 222 var wishlist_name = ''; 223 obj.id_wishlist_selected = $(this).closest('.nxtal-wishlist-cart').data('id_wishlist'); 224 var btnobj = $('#create-wishlist-modal .create-new-wishlist'); 225 btnobj.text(btnobj.data('text-create')); 226 $(btnobj).closest('.modal-content').find('.modal-title').text(btnobj.data('text-create')); 227 if (obj.id_wishlist_selected) { 228 btnobj.text(btnobj.data('text-update')); 229 $(btnobj).closest('.modal-content').find('.modal-title').text(btnobj.data('text-update')); 230 wishlist_name = $(this).closest('.card-block').find('.h1').attr('title'); 231 } 232 $('#wishlist_name').val(wishlist_name); 233 obj.showModal("create-wishlist-modal"); 234 }); 235 236 $('body').on( 237 'click', '.nxtal-wishlist-icon:not(.modals):not([processing])', function(e){ 238 e.stopPropagation(); 239 var $this = $(this); 240 obj.select_object = $this; 241 var id_product = $this.data('id_product'); 242 var id_product_attribute = $this.data('id_product_attribute'); 243 244 if (id_product) { 245 if ($this.hasClass('multiple')) { 246 obj.id_product_selected = id_product; 247 obj.id_product_attr_selected = id_product_attribute; 248 249 $.ajax({
250 method: "POST", 251 dataType: "json", 252 url: nxtalwishlist_ajax_link, 253 254 data: { 255 ajax: true, 256 action: 'getWishListModal', 257 id_product : obj.id_product_selected, 258 id_product_attribute : obj.id_product_attr_selected 259 }, 260 beforeSend: function () { 261 $this.attr('processing', true); 262 }, 263 success: function (res) { 264 if (res.status) { 265 obj.showModal(); 266 267 $('#product-wishlist-modal #created-wishlist').html(res.html); 268 } 269 $this.removeAttr('processing'); 270 }, 271 error: function () { 272 nxtalWishListObj.showErrorMessage(nxtal_error_text); 273 $this.removeAttr('processing'); 274 } 275 }); 276 277 278 } else { 279 280 obj.addInWishList(id_product, id_product_attribute); 281 282 } 283 284 } 285 } 286 ); 287 288 $('body').on( 289 'click', '[nxtal-wishlist-list-cart-delete]', function(){ 290 291 var $this = $(this); 292 var id_wishlist_product = $this.data('id_wishlist_product'); 293 obj.removeWishList(id_wishlist_product, $this); 294 } 295 ); 296 297 $('body').on( 298 'click', '[nxtal-wishlist-list-delete]', function(){ 299 300 obj.removeMultyWishList(); 301 } 302 ); 303 304 $('body').on( 305 'click', '[nxtal-wishlist-list-order-now]:not(.disabled)', function(){ 306 obj.orderNowWishList('', $(this), 0); 307 } 308 ); 309 310 $('.nxtal-product-list').on('click', 'button.add-to-cart', function(){ 311 obj.select_object = $(this); 312 prestashop.emit("handleError", { 313 eventType: "addProductToCart", 314 resp: '' 315 }); 316 317 }); 318 $('#nxtalwishlist-modal').on( 319 'click', 'input[type="button"]:not(.disabled)', function(){ 320 var $this = $(this); 321 var $form = $(this).parents('form'); 322 323 $.ajax({
324 method: "POST", 325 dataType: "json", 326 url: $form.attr('action'), 327 data: $form.serialize(), 328 beforeSend: function() { 329 $('#nxtalwishlist-modal .alert').remove(); 330 $form.find('input, textarea, button').prop('disabled', true); 331 }, 332 success: function (res) { 333 if (res.status) { 334 obj.showSuccessMessage(res.message); 335 $("#nxtalwishlist-modal").modal('hide'); 336 337 } else { 338 $this.removeClass('disabled').prop('disabled', false); 339 $form.before('<div class="alert alert-danger">'+res.message+'</div>'); 340 } 341 }, 342 error: function () { 343 obj.showErrorMessage(nxtal_error_text); 344 }, 345 complete: function () { 346 $form.find('input, textarea, button').prop('disabled', false); 347 } 348 }); 349 } 350 ); 351 352 $('[data-action="copy-link"]').on('click', function (e) { 353 e.preventDefault(); 354 355 const copyLink = $(this).attr('href'); 356 357 if (navigator.clipboard) { 358 navigator.clipboard.writeText(copyLink).then(() => { 359 $('.share-action').trigger('click'); 360 }).catch(err => { 361 /* console.error('Clipboard copy failed:', err);*/ 362 }); 363 } else { 364 /* Fallback for older browsers */ 365 const $temp = $('<input>'); 366 $('body').append($temp); 367 $temp.val(copyLink).select(); 368 try { 369 document.execCommand('copy'); 370 $('.share-action').trigger('click'); 371 } catch (err) { 372 /*console.error('Fallback copy failed:', err);*/ 373 } 374 $temp.remove(); 375 } 376 377 return false; 378 }); 379 380 $('body #created-wishlist').on('click', '.nxtal-wishlist-cart, .wishlist-list-item', function(){ 381 382 obj.id_wishlist_selected = $(this).data('id_wishlist'); 383 384 }); 385 386 $('.bulk-action-element').on('click', 'ul a', function(e){ 387 388 e.preventDefault(); 389 390 var type = $(this).data('type') ; 391 var wishlistids = $(this).closest('.nxtal-wishlist-cart').find('input[name="checkbox_wishlist"]:checked').map(function() { 392 return $(this).val(); 393 }).get(); 394 395 if (type == '1') { 396 397 var checked = (wishlistids.length) ? false : true; 398 399 $(this).closest('.nxtal-wishlist-cart').find('.wishlist_checkbox input').prop('checked', checked); 400 401 } else if(type == '2') { 402 403 if (wishlistids.length) { 404 obj.removeWishList(wishlistids, $(this)); 405 } else { 406 nxtalWishListObj.showErrorMessage(nxtal_invalid_product_selection); 407 } 408 409 } else if(type == '3') { 410 411 if (wishlistids.length) { 412 obj.orderNowWishList(wishlistids); 413 } else { 414 nxtalWishListObj.showErrorMessage(nxtal_invalid_product_selection); 415 } 416 } 417 418 }); 419 420 if (nxtal_product_list_toggle) { 421 prestashop.on('updateCart', function() { 422 obj.refreshButton() 423 }) 424 } 425 426 $(document).ajaxComplete(function( event, xhr, settings ){ 427 428 if (nxtal_product_list_toggle 429 && settings.data != null 430 && (settings.data.indexOf('action=update') > 0 || settings.data.indexOf('action=add-to-cart') > 0) 431 ) { 432 obj.refreshWishList(); 433 } 434 obj.setIcon(); 435 obj.setProductIcon(); 436 obj.removeVariantOptions(); 437 }); 438 obj.setIcon(); 439 obj.setProductIcon(); 440 obj.removeVariantOptions(); 441 442 obj.refreshButton(); 443 444 prestashop.on('updateProductList', function() { 445 setTimeout(function() { 446 obj.refreshButton(); 447 }, 448 2000 449 ); 450 }); 451 452 }, 453 454 addInWishList : function (id_product, id_product_attribute = 0) { 455 var id_wishlist = this.id_wishlist_selected; 456 457 var productElementmodal = ''; 458 if (id_wishlist) { 459 productElementmodal = $('[data-id_wishlist="'+id_wishlist+'"]'); 460 } 461 var productElement = $('[data-id_product="'+id_product+'"][data-id_product_attribute="'+id_product_attribute+'"]'); 462 463 $.ajax({ 464 method: "POST", 465 dataType: "json", 466 url: nxtalwishlist_ajax_link, 467 data: { 468 ajax: true, 469 action: 'addToWishList', 470 id_product: id_product, 471 id_product_attribute: id_product_attribute, 472 id_wishlist : id_wishlist 473 }, 474 beforeSend: function () { 475 476 nxtalWishListObj.activeRequest++; 477 478 if (id_wishlist) { 479 if (productElementmodal.hasClass('active')) { 480 481 isAdded = true; 482 483 productElementmodal.removeClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 484 485 nxtalWishListObj.desc(); 486 487 } else { 488 489 isAdded = false; 490 491 productElementmodal.addClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 492 493 nxtalWishListObj.asc(); 494 495 } 496 if ($('ul#created-wishlist').find('.wishlist-list-item .active').length > 0){ 497 productElement.addClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 498 } else { 499 productElement.removeClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 500 } 501 502 } else { 503 504 if (productElement.hasClass('active')) { 505 506 isAdded = true; 507 508 productElement.removeClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 509 510 nxtalWishListObj.desc(); 511 512 } else { 513 514 isAdded = false; 515 productElement.addClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 516 517 nxtalWishListObj.asc(); 518 } 519 520 }
521 nxtalWishListObj.refreshCount(); 522 523 $('#product-wishlist-modal').attr('disabled', true); 524 }, 525 success: function (res) { 526 if (res.status) { 527 nxtalWishListObj.showSuccessMessage(res.message); 528 } else { 529 nxtalWishListObj.showErrorMessage(res.message); 530 531 if (id_wishlist) { 532 533 if (isAdded == true) { 534 nxtalWishListObj.asc(); 535 536 productElementmodal.addClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-added')); 537 538 } else { 539 540 productElementmodal.removeClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 541 542 nxtalWishListObj.desc(); 543 } 544 545 } else { 546 if (isAdded == true) { 547 nxtalWishListObj.asc(); 548 549 productElement.addClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-added')); 550 551 } else { 552 553 productElement.removeClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 554 555 nxtalWishListObj.desc(); 556 } 557 } 558 559 } 560 nxtalWishListObj.refreshCount(); 561 }, 562 complete: function() { 563 nxtalWishListObj.activeRequest--; 564 nxtalWishListObj.cartRefresh(id_product, id_product_attribute); 565 566 nxtalWishListObj.refreshWishList(); 567 $('#product-wishlist-modal').removeAttr('disabled'); 568 if (id_wishlist) { 569 if ($('ul#created-wishlist').find('.wishlist-list-item .active').length > 0){ 570 productElement.addClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 571 } else { 572 productElement.removeClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 573 } 574 } 575 576 }, 577 error: function() { 578 nxtalWishListObj.showErrorMessage(nxtal_error_text); 579 580 if (isAdded == true) { 581 582 nxtalWishListObj.asc(); 583 584 if (id_wishlist) { 585 586 productElementmodal.addClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-added')); 587 588 } else { 589 590 productElement.addClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-added')); 591 592 } 593 594 } else { 595 596 if (id_wishlist) { 597 productElementmodal.removeClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 598 } else { 599 productElement.removeClass('active').attr('title', nxtalWishListObj.select_object.data('title-to-add')); 600 } 601 602 nxtalWishListObj.desc(); 603 } 604 605 606 nxtalWishListObj.refreshCount(); 607 } 608 }); 609 }, 610 611 orderNowWishList: function(wishlistids = '', $this = '', isCheckSelected = 1) { 612 613 if ($this != '') { 614 $this.addClass('disabled'); 615 } 616 $.ajax({ 617 method: "POST", 618 dataType: "json", 619 url: nxtalwishlist_ajax_link, 620 data: { 621 ajax: true, 622 action: 'orderNow', 623 wishlistids : wishlistids, 624 isCheckSelected : isCheckSelected 625 }, 626 success: function (res) { 627 if (res.status) { 628 nxtalWishListObj.showSuccessMessage(res.message); 629 } else { 630 if ($this != '') { 631 $this.removeClass('disabled'); 632 } 633 nxtalWishListObj.showErrorMessage(res.message); 634 } 635 }, 636 complete: function() { 637 638 nxtalWishListObj.cartRefresh(); 639 640 }, 641 error: function () { 642 nxtalWishListObj.showErrorMessage(nxtal_error_text); 643 } 644 }); 645 646 }, 647 refreshButton: function() { 648 var id_wishlist = this.id_wishlist_selected; 649 var wishlist_products = $('.nxtal-wishlist-icon ').map(function() { 650 if ($(this).data('id_product')) { 651 return { 652 'id_product': $(this).data('id_product'), 653 'id_product_attribute': $(this).data('id_product_attribute'), 654 'id_wishlist':id_wishlist 655 } 656 } 657 658 }).get(); 659 660 if (wishlist_products) { 661 $.ajax({
662 method: "POST", 663 dataType: "json", 664 url: nxtalwishlist_ajax_link, 665 data: { 666 ajax: true, 667 action: 'validateWishlistProducts', 668 products: wishlist_products 669 }, 670 success: function(res) { 671 if (res) { 672 $.each(res, function(i, product) { 673 var list = $('body').find('#created-wishlist .nxtal-wishlist-icon[data-id_product="' + product.id_product + '"][data-id_product_attribute="' + product.id_product_attribute + '"][data-id_wishlist="' + product.id_wishlist + '"], .nxtal-wishlist-icon[data-id_product="' + product.id_product + '"][data-id_product_attribute="' + product.id_product_attribute + '"]'); 674 if (id_wishlist) { 675 var list = $('#created-wishlist [data-id_product="'+product.id_product+'"][data-id_product_attribute="'+product.id_product_attribute+'"][data-id_wishlist="'+product.id_wishlist+'"]'); 676 } else { 677 var list = $('[data-id_product="'+product.id_product+'"][data-id_product_attribute="'+product.id_product_attribute+'"]'); 678 } 679 if (product.added) { 680 list.addClass('active'); 681 } else { 682 list.removeClass('active'); 683 } 684 }) 685 } 686 } 687 }) 688 } 689 }, 690 691 removeWishList: function(id_wishlist_products, $this = '') { 692 693 if (!confirm(nxtal_delete_confirm_text)) { 694 return false; 695 } 696 var id_wishlist = nxtalWishListObj.id_wishlist_selected; 697 698 if (id_wishlist_products) { 699 $.ajax({ 700 method: "POST", 701 dataType: "json", 702 url: nxtalwishlist_ajax_link, 703 data: { 704 ajax: true, 705 action: 'removeProduct', 706 id_wishlist_product: id_wishlist_products, 707 id_wishlist:id_wishlist 708 }, 709 beforeSend: function () { 710 711 if (typeof id_wishlist_products == 'object') { 712 $.each(id_wishlist_products, function(i, id_wishlist_product) { 713 714 $('[data-id_wishlist="'+id_wishlist+'"] li.cart-item[data-id_wishlist_product="'+id_wishlist_product+'"]').slideUp("normal"); 715 716 nxtalWishListObj.desc(); 717 }); 718 } else { 719 720 $('[data-id_wishlist="'+id_wishlist+'"] li.cart-item[data-id_wishlist_product="'+id_wishlist_products+'"]').slideUp("normal"); 721 722 nxtalWishListObj.desc(); 723 } 724 725 726 }, 727 success: function (res) { 728 if (res.status) { 729 730 $.each(res, function(id_wishlist_product, product) { 731 732 if (typeof product == 'object') { 733 734 if (product.status) { 735 736 nxtalWishListObj.showSuccessMessage(product.message); 737 738 $('[data-id_wishlist="'+id_wishlist+'"] li.cart-item[data-id_wishlist_product="'+id_wishlist_product+'"]').remove(); 739 740 $('[data-id_wishlist="'+id_wishlist+'"] [data-id_product="'+product.id_product+'"][data-id_product_attribute="'+product.id_product_attribute+'"]').removeClass('active').attr('title', function() { 741 742 if ($this != '') { 743 744 return $this.attr('data-title-to-add'); 745 746 } 747 748 }); 749 750 } else { 751 752 nxtalWishListObj.showErrorMessage(product.message); 753 754 $('[data-id_wishlist="'+id_wishlist+'"] li.cart-item[data-id_wishlist_product="'+id_wishlist_product+'"]').slideDown("normal"); 755 756 nxtalWishListObj.asc(); 757 758 } 759 760 } 761 }); 762 763 } else { 764 765 nxtalWishListObj.showErrorMessage(res.message); 766 767 } 768 }, 769 complete: function() { 770 nxtalWishListObj.refreshCount(); 771 nxtalWishListObj.refreshWishList(); 772 }, 773 error: function() { 774 nxtalWishListObj.showErrorMessage(nxtal_error_text); 775 776 if (typeof id_wishlist_products == 'object') { 777 778 $.each(id_wishlist_products, function(i, id_wishlist_product) { 779 $('[data-id_wishlist="'+id_wishlist+'"] li.cart-item[data-id_wishlist_product="'+id_wishlist_product+'"]').slideDown("normal"); 780 781 nxtalWishListObj.asc(); 782 });
783 784 } else { 785 $('[data-id_wishlist="'+id_wishlist+'"] li.cart-item[data-id_wishlist_product="'+id_wishlist_products+'"]').slideDown("normal"); 786 787 nxtalWishListObj.asc(); 788 } 789 } 790 }); 791 } 792 }, 793 794 795 asc : function () { 796 797 var id_wishlist = nxtalWishListObj.id_wishlist_selected; 798 if (typeof nxtalWishListObj.productCount == 'object') { 799 if (typeof nxtalWishListObj.productCount[id_wishlist] == 'undefined') { 800 nxtalWishListObj.productCount[id_wishlist] = 0; 801 } 802 nxtalWishListObj.productCount[id_wishlist]++; 803 } else { 804 nxtalWishListObj.productCount++; 805 } 806 }, 807 808 countAssign : function (count = 0) { 809 810 var id_wishlist = nxtalWishListObj.id_wishlist_selected; 811 if (typeof nxtalWishListObj.productCount == 'object') { 812 if (typeof nxtalWishListObj.productCount[id_wishlist] == 'undefined') { 813 nxtalWishListObj.productCount[id_wishlist] = 0; 814 } 815 nxtalWishListObj.productCount[id_wishlist] = count; 816 } else { 817 nxtalWishListObj.productCount=count; 818 } 819 }, 820 821 desc : function () { 822 823 var id_wishlist = nxtalWishListObj.id_wishlist_selected; 824 if (typeof nxtalWishListObj.productCount == 'object') { 825 826 if (typeof nxtalWishListObj.productCount[id_wishlist] == 'undefined') { 827 nxtalWishListObj.productCount[id_wishlist] = 0; 828 } 829 nxtalWishListObj.productCount[id_wishlist]--; 830 831 } else { 832 nxtalWishListObj.productCount--; 833 } 834 }, 835 836 refreshCount: function() { 837 var id_wishlist = nxtalWishListObj.id_wishlist_selected; 838 var count = nxtalWishListObj.productCount || 0; 839 840 if (typeof nxtalWishListObj.productCount == 'object' && typeof id_wishlist != 'undefined') { 841 count = nxtalWishListObj.productCount[id_wishlist] || 0; 842 843 var headerCount = Object.values(wishlist_count).reduce((acc, val) => acc + val, 0); 844 } else { 845 var headerCount = count; 846 } 847 $('[data-id_wishlist="'+id_wishlist+'"] .count-wishlist-product').text('('+ count +')'); 848 849 850 id_wishlist ? $('.count-wishlist-product.multiple').text('('+ headerCount +')') : $('.count-wishlist-product').text('('+ headerCount +')'); 851 852 if (count < 1) { 853 $('[data-id_wishlist="'+id_wishlist+'"] .wishlist-noproduct').removeClass('hide'); 854 $('[data-id_wishlist="'+id_wishlist+'"] .nxtal-wishlist-overview .button-actions, #cart [data-id_wishlist="'+id_wishlist+'"] .nxtal-wishlist-cart').addClass('hide'); 855 } else { 856 $('[data-id_wishlist="'+id_wishlist+'"] .wishlist-noproduct').addClass('hide'); 857 $('[data-id_wishlist="'+id_wishlist+'"] .nxtal-wishlist-overview .button-actions, #cart [data-id_wishlist="'+id_wishlist+'"] .nxtal-wishlist-cart').removeClass('hide'); 858 } 859 860 }, 861 cartRefresh : function (idProduct = 0, idProductAttribute = 0) { 862 /*prestashop.emit("updateCart", {reason:{idProduct:idProduct,idProductAttribute:idProductAttribute},resp:{}});*/ 863 prestashop.emit("updateCart", {reason:{},resp:{}}); 864 }, 865 866 removeMultyWishList : function() { 867 if (! confirm(nxtal_wishlist_delete_confirm_text)) { 868 return false; 869 } 870 var id_wishlist = nxtalWishListObj.id_wishlist_selected; 871 if (id_wishlist) { 872 $.ajax({ 873 method: "POST", 874 dataType: "json", 875 url: nxtalwishlist_ajax_link, 876 data: { 877 ajax: true, 878 action: 'removeWishlist', 879 id_wishlist: id_wishlist 880 }, 881 beforeSend: function () { 882 883 $('[data-id_wishlist="'+id_wishlist+'"]').slideUp("normal"); 884 885 886 }, 887 success: function (res) { 888 889 if (res.status) { 890 nxtalWishListObj.countAssign(); 891 892 nxtalWishListObj.showSuccessMessage(res.message); 893 894 $('[data-id_wishlist="'+id_wishlist+'"]').remove(); 895 896 } else { 897 898 nxtalWishListObj.showErrorMessage(res.message); 899 900 $('[data-id_wishlist="'+id_wishlist+'"]').slideDown("normal"); 901 902 } 903 904 }, 905 complete: function() { 906 nxtalWishListObj.refreshCount(); 907 }, 908 error: function() { 909 nxtalWishListObj.showErrorMessage(nxtal_error_text); 910 911 $('[data-id_wishlist="'+id_wishlist+'"]').slideDown("normal"); 912 913 914 } 915 }); 916 } 917 }, 918 919 920 refreshWishList: function() { 921 922 var obj = this; 923 var id_wishlist = nxtalWishListObj.id_wishlist_selected; 924 925 /*if (nxtal_enable_multiple && !id_wishlist) { 926 return false; 927 }*/ 928 929 if (obj.activeRequest == 0) { 930 $.ajax({
931 method: "GET", 932 dataType: "json", 933 url: nxtalwishlist_ajax_link, 934 935 data: { 936 ajax: true, 937 action: 'refreshWishList', 938 id_wishlist : id_wishlist 939 }, 940 success: function (res) { 941 if (res.status) { 942 943 obj.countAssign(res.product_count); 944 obj.refreshCount(); 945 if (id_wishlist) { 946 947 $('#main [data-id_wishlist='+ id_wishlist+'] .nxtal-wishlist-products').html(res.main_html); 948 $('#left-column [data-id_wishlist='+ id_wishlist+'] .nxtal-wishlist-products , #right-column [data-id_wishlist='+ id_wishlist+'] .nxtal-wishlist-products').html(res.column_html); 949 } else { 950 951 $('#main [data-id_wishlist=0] .nxtal-wishlist-products').html(res.main_html); 952 $('#left-column [data-id_wishlist=0] .nxtal-wishlist-products, #right-column [data-id_wishlist=0] .nxtal-wishlist-products').html(res.column_html); 953 } 954 955 obj.refreshTouchspin(); 956 } 957 } 958 }); 959 } 960 }, 961 refreshTouchspin: function() { 962 963 $('.nxtal-product-list [name="qty"][type="text"]').each(function(){ 964 $(this).TouchSpin({ 965 verticalbuttons:!0, 966 verticalupclass:"material-icons touchspin-up", 967 verticaldownclass:"material-icons touchspin-down", 968 buttondown_class:"btn btn-touchspin js-touchspin js-increase-product-quantity", 969 buttonup_class:"btn btn-touchspin js-touchspin js-decrease-product-quantity", 970 min:parseInt($(this).attr("min"),10), 971 max:1e6 972 }); 973 }); 974 }, 975 976 setIcon: function() { 977 // $('.product-description ._desktop_wishlist_icon').each(function(){ 978 // $(this).closest('.thumbnail-container').append($(this).detach()); 979 // }); 980 }, 981 setProductIcon: function() { 982 // $('#product .product-cover').append($('#product .product-additional-info ._desktop_wishlist_icon').detach()); 983 984 // $('[id^="quickview-modal-"] .product-cover').append($('[id^="quickview-modal-"] .modal-footer ._desktop_wishlist_icon').detach()); 985 }, 986 987 showSuccessMessage: function(msg) { 988 $.growl.notice({ title: "", message:msg}); 989 }, 990 991 showErrorMessage: function(msg) { 992 $.growl.error({ title: "", message:msg}); 993 }, 994 showModal: function (modal = 'product-wishlist-modal') { 995 996 if (typeof $.fancybox == 'function') { 997 $.fancybox({'href': '#'+modal}); 998 } else { 999 $("#"+modal).modal("show"); 1000 } 1001 }, 1002 1003 removeModal: function() { 1004 if (typeof $.fancybox == 'function') { 1005 $.fancybox.close(); 1006 } else { 1007 $("#product-wishlist-modal, #create-wishlist-modal").modal("hide"); 1008 } 1009 }, 1010 1011 removeVariantOptions: function() { 1012 $('#left-column, #right-column').find('.product-variants-wishlist .control-label').siblings().remove(); 1013 }, 1014 1015 1016}; 1017$(document).ready(function() { 1018 nxtalWishListObj.init(); 1019}); 1020 1021 1022 1023function updateWishlistLabels() { 1024 if ($('body').attr('id') !== 'product') return; 1025 1026 $('.nxtal-wishlist-icon').each(function () { 1027 const $icon = $(this); 1028 const $label = $icon.find('.wishlist-label'); 1029 1030 if ($label.length) { 1031 if ($icon.hasClass('active')) { 1032 $label.text($label.attr('data-label-added') || 'Ulubione'); 1033 } else { 1034 $label.text($label.attr('data-label-add') || 'Dodaj do ulubionych'); 1035 } 1036 } 1037 }); 1038} 1039 1040// zmiana po klikniÄciu 1041$(document).on('click', '.nxtal-wishlist-icon', function () { 1042 setTimeout(updateWishlistLabels, 150); 1043}); 1044 1045// zmiana po AJAX (moduÅ nadpisuje HTML â trzeba poprawiÄ) 1046$(document).ajaxComplete(function () { 1047 setTimeout(updateWishlistLabels, 150); 1048});
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.