1"use strict"; 2jQuery(document).ready(function ($) { 3 // Debug AJAX settings 4 // console.log("Gift plugin AJAX settings:", { 5 // ajax_url: pw_wc_gift_adv_ajax.ajaxurl, 6 // security: pw_wc_gift_adv_ajax.security, 7 // add_gift_ajax_manual: pw_wc_gift_adv_ajax.add_gift_ajax_manual, 8 // is_block_cart: pw_wc_gift_adv_ajax.is_block_cart, 9 // is_block_checkout: pw_wc_gift_adv_ajax.is_block_checkout, 10 // }); 11 12 //DataTable 13 if (jQuery("html").find(".it-gift-products-table").length > 0 && jQuery.fn.DataTable) { 14 jQuery(".it-gift-products-table").DataTable({ 15 ordering: false, 16 bDestroy: true, 17 language: { 18 search: pw_wc_gift_adv_ajax.language_search, 19 info: pw_wc_gift_adv_ajax.language_info, 20 paginate: { 21 first: pw_wc_gift_adv_ajax.language_first, 22 previous: pw_wc_gift_adv_ajax.language_previous, 23 next: pw_wc_gift_adv_ajax.language_next, 24 last: pw_wc_gift_adv_ajax.language_last, 25 }, 26 }, 27 }); 28 jQuery(".scrollbar-macosx").scrollbar(); 29 } 30 31 jQuery(document.body).on("updated_cart_totals", function () { 32 if (jQuery("html").find(".it-gift-products-table").length > 0 && jQuery.fn.DataTable) { 33 jQuery(".it-gift-products-table").DataTable({ 34 ordering: false, 35 bDestroy: true, 36 }); 37 } 38 39 //DropDown 40 if (jQuery("html").find(".wgb-gift-products-dropdown").length > 0) { 41 jQuery(".wgb-gift-products-dropdown").ddslick("destroy"); 42 jQuery(".wgb-gift-products-dropdown").ddslick({ 43 imagePosition: "left", 44 selectText: pw_wc_gift_adv_ajax.language_select_your_gift, 45 onSelected: function (data) { 46 if (data.selectedData && data.selectedData != "") { 47 if (pw_wc_gift_adv_ajax.add_gift_ajax_manual == "true") { 48 AjaxCall_addToCart(data.selectedData.value); 49 } else { 50 ReloadCall_addToCart(data.selectedData.value); 51 } 52 } 53 }, 54 }); 55 } 56 }); 57 58 $(document.body).on("it-enhanced-carousel", function () { 59 if (jQuery("html").find(".wgb-gift-products-dropdown").length > 0) { 60 jQuery(".wgb-gift-products-dropdown").ddslick({ 61 selectText: pw_wc_gift_adv_ajax.language_select_your_gift, 62 imagePosition: "left", 63 onSelected: function (data) { 64 if (data.selectedData && data.selectedData != "") { 65 if (pw_wc_gift_adv_ajax.add_gift_ajax_manual == "true") { 66 AjaxCall_addToCart(data.selectedData.value); 67 } else { 68 ReloadCall_addToCart(data.selectedData.value); 69 } 70 } 71 }, 72 }); 73 } 74 }); 75 76 //DropDown 77 if (jQuery("html").find(".wgb-gift-products-dropdown").length > 0) { 78 jQuery(".wgb-gift-products-dropdown").ddslick({ 79 selectText: pw_wc_gift_adv_ajax.language_select_your_gift, 80 imagePosition: "left", 81 onSelected: function (data) { 82 if (data.selectedData && data.selectedData != "") { 83 if (pw_wc_gift_adv_ajax.add_gift_ajax_manual == "true") { 84 AjaxCall_addToCart(data.selectedData.value); 85 } else { 86 ReloadCall_addToCart(data.selectedData.value); 87 } 88 } 89 }, 90 }); 91 } 92 93 //Add Gift Button 94 jQuery(document).on("click", ".btn-click-add-gift-button", function (e) { 95 e.preventDefault(); 96 97 jQuery(this).css({ color: "transparent" }); 98 jQuery(".gift_cart_ajax").show(); 99 jQuery(this).find(".wgb-loading-icon").removeClass("wgb-d-none"); 100 jQuery(".popup-inner-loader").removeClass("wgb-d-none"); 101 102 var gift_id = jQuery(this).data("gift_id"); 103 104 var qty = 1; 105 var qunatity_field = 1;
106 qunatity_field = jQuery(this).closest(".itg-gift-product-add-to-cart-actions").find(".itg-gift-product-qty"); 107 if (qunatity_field.length && qunatity_field.val()) { 108 qty = qunatity_field.val(); 109 } 110 111 var mode = jQuery(this).data("itg_mode"); 112 113 // Check if AJAX is enabled and working 114 if (pw_wc_gift_adv_ajax.add_gift_ajax_manual == "true" && pw_wc_gift_adv_ajax.ajaxurl) { 115 116 // Add a fallback for status 204 issues 117 var ajaxTimeout = setTimeout(function () { 118 $(".wgb-loading-icon").addClass("wgb-d-none"); 119 $(".popup-inner-loader").addClass("wgb-d-none"); 120 ReloadCall_addToCart(gift_id, qty); 121 }, 10000); 122 123 AjaxCall_addToCart(gift_id, qty, mode); 124 125 // Clear timeout on success 126 $(document).one("ajaxSuccess", function () { 127 clearTimeout(ajaxTimeout); 128 }); 129 } else { 130 ReloadCall_addToCart(gift_id, qty); 131 } 132 }); 133 134 //Select Gift Button 135 jQuery(document).on("click", ".btn-select-gift-button", function (e) { 136 e.preventDefault(); 137 $(".wgb-popup-box").removeClass("wgb-page-scaleDownUp"); 138 $(".wgb-popup-box").addClass("wgb-page-scaleUp"); 139 $(".wgb-popup-box .popup-inner-loader").removeClass("wgb-d-none"); 140 $(".wgb-popup-posts").html(""); 141 142 if ($("#wgb-modal").length) { 143 $(".wgb-popup-loading").show(); 144 $("#wgb-modal").css("display", "block"); 145 $.ajax({ 146 url: pw_wc_gift_adv_ajax.ajaxurl, 147 type: "POST", 148 data: { 149 action: pw_wc_gift_adv_ajax.action_show_variation, 150 pw_gift_variable: jQuery(this).data("id"), 151 pw_gift_uid: jQuery(this).data("rule-id"), 152 security: pw_wc_gift_adv_ajax.security, 153 }, 154 success: function (resp) { 155 $(".wgb-popup-loading").hide(); 156 $(".wgb-popup-box .popup-inner-loader").addClass("wgb-d-none"); 157 $(".wgb-popup-posts") 158 .html(resp) 159 .ready(function () { 160 let bodyHeight = parseInt($(".wgb-list-items").height()) + parseInt($(".wgb-popup-footer").height()); 161 if (bodyHeight > 100) { 162 $(".wgb-popup-box").css({ height: parseInt(bodyHeight) + "px" }); 163 } 164 $("body").addClass("modal-opened"); 165 $(".wgb-popup-box").addClass("wgb-page-current"); 166 $(".wgb-popup").addClass("wgb-active-modal"); 167 jQuery(".scrollbar-macosx").scrollbar(); 168 }); 169 }, 170 error: function () { 171 $(".wgb-popup-box .popup-inner-loader").addClass("wgb-d-none"); 172 }, 173 }); 174 } 175 176 //Close on Click out of modal 177 // $("#wgb-modal").on('click', function (e) { 178 // $("#wgb-modal").remove(); 179 // }); 180 }); 181 182 //Close on ESC 183 $(document).keyup(function (e) { 184 if (e.key === "Escape") { 185 // escape key maps to keycode `27` 186 $(".wgb-popup-close").trigger("click"); 187 } 188 }); 189 190 jQuery(document).on("click", ".btn-select-gift-popup-button", function (e) { 191 e.preventDefault(); 192 193 $(".wgb-popup-box").removeClass("wgb-page-scaleDownUp"); 194 $(".wgb-popup-box").addClass("wgb-page-scaleUp"); 195 196 show_popup_in_checkout(); 197 198 //Close on Click out of modal 199 // $("#wgb-modal").on('click', function (e) { 200 // $("#wgb-modal").remove(); 201 // }); 202 }); 203 204 jQuery(document).on("click", ".itg-popup-close", function (e) { 205 let modal = $(this).closest(".wgb-popup"); 206 $(".wgb-loading-icon").addClass("wgb-d-none"); 207 $(".wgb-popup-box").removeClass("wgb-page-scaleUp"); 208 $(".wgb-popup-box").addClass("wgb-page-scaleDownUp"); 209 setTimeout(function () { 210 $("body").removeClass("modal-opened"); 211 modal.hide(); 212 }, 700); 213 214 // jQuery('.scrollbar-macosx').scrollbar('destroy'); 215 }); 216
217 if (jQuery("html").find(".itg-auto-show-popup").length > 0) { 218 show_popup_in_checkout(); 219 } 220 221 $(document).on("click", ".wgb-qty-decrease-btn", function () { 222 let input = $(this).closest(".qty").find('input[type="number"]'); 223 if (input.attr("min") && parseInt(input.attr("min")) < parseInt(input.val())) { 224 input.val(parseInt(input.val()) - 1); 225 } 226 }); 227 228 $(document).on("click", ".wgb-qty-increase-btn", function () { 229 let input = $(this).closest(".qty").find('input[type="number"]'); 230 if (input.attr("max") && parseInt(input.attr("max")) > parseInt(input.val())) { 231 input.val(parseInt(input.val()) + 1); 232 } 233 }); 234 235 /** 236 * Update on payment method change 237 */ 238 239 jQuery("body").on("updated_checkout", set_up_payment_method_checkout_update); 240 set_up_payment_method_checkout_update(); 241 242 /** 243 * Update on payment method change 244 */ 245 function set_up_payment_method_checkout_update() { 246 jQuery('form.checkout input[name="payment_method"]').each(function () { 247 if (typeof jQuery(this).data("itg_payment_method_checkout_update") === "undefined") { 248 jQuery(this).on("change", function () { 249 $.ajax({ 250 url: pw_wc_gift_adv_ajax.ajaxurl, 251 type: "POST", 252 dataType: "json", 253 data: { 254 action: "wgb_check_rule_after_update_checkout", 255 }, 256 success: function (response) { 257 if (response.data.gift_avilible == "yes") { 258 if (pw_wc_gift_adv_ajax.checkout_auto_load == "true") { 259 show_popup_in_checkout(); 260 } 261 //if($(".itg-checkout-notice").length>0){ 262 // $(".itg-checkout-notice").parent().show(); 263 //} 264 } else { 265 if ($(".itg-checkout-notice").length > 0) { 266 $(".itg-checkout-notice").parent().hide(); 267 } 268 } 269 }, 270 error: function () { }, 271 }); 272 jQuery("body").trigger("update_checkout"); 273 }); 274 jQuery(this).data("itg_payment_method_checkout_update", true); 275 } 276 }); 277 } 278 279 function show_popup_in_checkout() { 280 $(".popup-inner-loader").removeClass("wgb-d-none"); 281 $(".wgb-popup-posts").html(""); 282 $(".wgb-popup-loading").show(); 283 284 if ($("#wgb-modal").length) { 285 $("#wgb-modal").css("display", "block"); 286 287 $.ajax({ 288 url: pw_wc_gift_adv_ajax.ajaxurl, 289 type: "POST", 290 data: { 291 action: pw_wc_gift_adv_ajax.action_gift_show_popup_checkout, 292 security: pw_wc_gift_adv_ajax.security, 293 }, 294 success: function (response) { 295 $(".wgb-popup-posts") 296 .html(response.data.result) 297 .ready(function () { 298 let bodyHeight = parseInt($(".wgb-list-items").height()) + parseInt($(".wgb-popup-footer").height()); 299 if (bodyHeight > 100) { 300 $(".wgb-popup-box").css({ height: parseInt(bodyHeight) + "px" }); 301 } 302 303 $(".wgb-popup-loading").hide(); 304 $(".popup-inner-loader").addClass("wgb-d-none"); 305 $("body").addClass("modal-opened"); 306 $(".wgb-popup-box").removeClass("wgb-page-scaleDownUp"); 307 $(".wgb-popup-box").addClass("wgb-page-scaleUp"); 308 $(".wgb-popup-box").addClass("wgb-page-current"); 309 $(".wgb-popup").addClass("wgb-active-modal"); 310 jQuery(".scrollbar-macosx").scrollbar(); 311 if (response.data.layout == "carousel") { 312 $(document.body).trigger("it-enhanced-carousel"); 313 } 314 setTimeout(function () { 315 $(window).trigger("resize"); 316 }, 150); 317 }); 318 }, 319 error: function () { 320 $(".wgb-popup-box .popup-inner-loader").addClass("wgb-d-none"); 321 }, 322 }); 323 324 //Close on ESC 325 $(document).keyup(function (e) { 326 if (e.key === "Escape") { 327 // escape key maps to keycode `27` 328 $(".itg-popup-close").trigger("click"); 329 } 330 }); 331 } 332 } 333 334 function run_ajax_owl_carousels() { 335 var owl_carousels = $(".it-owl-carousel-items"); 336 if (!owl_carousels.length) { 337 return; 338 } 339 owl_carousels.each(function (e) { 340 $(this).owlCarousel({ 341 margin: 10, 342 responsiveClass: true, 343 rtl: "true" == pw_wc_gift_adv_ajax.rtl, 344 autoplayHoverPause: true, 345 autoplayTimeout: parseInt(pw_wc_gift_adv_ajax.speed), 346 loop: "true" == pw_wc_gift_adv_ajax.loop, 347 dots: "true" == pw_wc_gift_adv_ajax.dots, 348 nav: "true" == pw_wc_gift_adv_ajax.nav, 349 responsive: { 350 0: { 351 items: parseInt(pw_wc_gift_adv_ajax.mobile), 352 }, 353 600: { 354 items: parseInt(pw_wc_gift_adv_ajax.tablet), 355 }, 356 1000: { 357 items: parseInt(pw_wc_gift_adv_ajax.desktop), 358 }, 359 }, 360 }); 361 }); 362 } 363 364 function pagination_gifts(selectedPage) { 365 $("#wgb-cart-pagination-current-page").text(selectedPage); 366 var selected_page = "page_" + selectedPage; 367 $(".wgb-frontend-gifts").find(".0").addClass("pw-gift-active"); 368 369 $(".wgb-frontend-gifts") 370 .find(".pw_gift_pagination_num") 371 .click(function (e) { 372 e.preventDefault(); 373 $(".wgb-frontend-gifts") 374 .find("." + selected_page)
375 .addClass("pw-gift-deactive"); 376 var page = $(this).attr("data-page-id"); 377 $(".wgb-frontend-gifts") 378 .find("." + page) 379 .siblings(".pw_gift_pagination_div") 380 .removeClass("pw-gift-active"); 381 $(".wgb-frontend-gifts") 382 .find("." + page) 383 .addClass("pw-gift-active"); 384 $(".wgb-frontend-gifts") 385 .find("." + page) 386 .removeClass("pw-gift-deactive"); 387 $(".wgb-frontend-gifts").find(this).parents(".wgb-paging-item").find(".pw_gift_pagination_num").removeClass("wgb-active-page"); 388 $(".wgb-frontend-gifts").find(this).addClass("wgb-active-page"); 389 selected_page = page; 390 pagination_gifts($(this).attr("data-page-id").replace("page_", "")); 391 }); 392 } 393 394 function Reloaditempopup() { 395 $.ajax({ 396 url: pw_wc_gift_adv_ajax.ajaxurl, 397 type: "POST", 398 dataType: "json", 399 data: { 400 action: "itg_reloaditempopup", 401 itg_security: pw_wc_gift_adv_ajax.security, 402 }, 403 success: function (response) { 404 if (response.data.result == "unselectable") { 405 $(".itg-popup-close").trigger("click"); 406 //$('.loader-item').addClass('wgb-d-none'); 407 } else { 408 $(".wgb-popup-posts").html(response.data.result); 409 $(".wgb-popup-box").addClass("wgb-page-scaleUp"); 410 $(".wgb-popup-box").addClass("wgb-page-current"); 411 jQuery(".scrollbar-macosx").scrollbar(); 412 $(document.body).trigger("it-enhanced-carousel"); 413 $(".popup-inner-loader").addClass("wgb-d-none"); 414 } 415 }, 416 error: function (response) { }, 417 }); 418 /**/ 419 } 420 421 $(document.body).on("updated_cart_totals", function () { 422 pagination_gifts(1); 423 }); 424 425 // A more robust and modern AjaxCall_addToCart function 426 async function AjaxCall_addToCart(gift_id, qty = 1, mode = "") { 427 // Show loading state immediately 428 $(".wgb-loading-icon").removeClass("wgb-d-none"); 429 $(".popup-inner-loader").removeClass("wgb-d-none"); 430 431 try { 432 // First AJAX call to add the gift to the cart 433 const response = await $.ajax({ 434 url: pw_wc_gift_adv_ajax.ajaxurl, 435 type: "POST", 436 dataType: "json", 437 data: { 438 action: "ajax_add_free_gifts", 439 itg_security: pw_wc_gift_adv_ajax.security, 440 gift_product_id: gift_id, 441 add_qty: qty, 442 }, 443 }); 444 445 // Hide loading state on success 446 $(".wgb-loading-icon").addClass("wgb-d-none"); 447 $(".popup-inner-loader").addClass("wgb-d-none"); 448 449 // Check for success from the server 450 if (response && response.success) { 451 updateCart(response.data.notice ? response.data.notice : ""); 452 453 // Handle the Woodmart update with a separate async function for clarity 454 if (typeof woodmartThemeModule !== "undefined") { 455 await woodmartUpdateGiftsTable(); 456 } 457 458 // Handle popup mode 459 if (mode == "popup") { 460 Reloaditempopup(); 461 } else { 462 $(".itg-popup-close").trigger("click"); 463 } 464 } else { 465 // Handle error response from server 466 const errorMessage = response && response.data && response.data.error ? "Error: " + response.data.error : "An unknown error occurred while adding the gift to cart."; 467 alert(errorMessage); 468 } 469 } catch (xhr) { 470 // Hide loading state on error 471 $(".wgb-loading-icon").addClass("wgb-d-none"); 472 $(".popup-inner-loader").addClass("wgb-d-none"); 473 474 // const errorResponse = parseErrorResponse(xhr); 475 // alert(errorResponse); 476 } 477 } 478 479 // A separate async function for the Woodmart update call 480 async function woodmartUpdateGiftsTable() { 481 try { 482 await $.ajax({ 483 url: pw_wc_gift_adv_ajax.ajaxurl, 484 type: "POST", 485 data: { 486 action: "woodmart_update_gifts_table", 487 security: pw_wc_gift_adv_ajax.security, 488 }, 489 }); 490 jQuery(document.body).trigger("wc_update_cart"); 491 } catch (xhr) { 492 // You can add a silent failure here, as it's a secondary function 493 } 494 } 495 496 // A helper function to parse error responses 497 function parseErrorResponse(xhr) { 498 if (xhr.status === 204) { 499 return "Server returned no content. This might be a configuration issue. Please contact support."; 500 } 501 if (xhr.status === 0) { 502 return "Request was blocked or a network error occurred. Please check your connection."; 503 } 504 try { 505 const errorData = JSON.parse(xhr.responseText); 506 if (errorData && errorData.data && errorData.data.error) {
507 return "Error: " + errorData.data.error; 508 } 509 } catch (e) { 510 // Fallback for non-JSON or unparsable responses 511 } 512 return "Network error occurred. Please try again."; 513 } 514 function ReloadCall_addToCart(gift_id, qty = 1) { 515 if ("" == gift_id) { 516 return false; 517 } 518 519 var url = pw_wc_gift_adv_ajax.add_to_cart_link; 520 url = url.replace("%s", gift_id); 521 url = url.replace("%q", qty); 522 523 window.location.href = url; 524 } 525 526 /** 527 * Update the cart after any action done. 528 * @since 2.0.0 529 * @returns {undefined} 530 */ 531 function updateCart(notice) { 532 if (pw_wc_gift_adv_ajax.is_block_cart || pw_wc_gift_adv_ajax.is_block_checkout) { 533 if (window.wc && window.wc.blocksCheckout) { 534 window.wc.blocksCheckout 535 .extensionCartUpdate({ 536 namespace: "wgb-free-gifts", 537 data: { 538 action: "refresh_cart", 539 }, 540 }) 541 .then(() => { 542 jQuery(document.body).trigger("it-enhanced-carousel"); 543 }) 544 .finally(() => { 545 // show result 546 if (notice && $(".wc-block-store-notices .woocommerce-notices-wrapper").length) { 547 $(".wc-block-store-notices .woocommerce-notices-wrapper").html(notice); 548 } 549 }); 550 } else { 551 // Fallback for block cart/checkout without proper WC blocks 552 $(document.body).trigger("wc_update_cart"); 553 $(document.body).trigger("update_checkout"); 554 } 555 } else { 556 // For classic cart/checkout 557 $(document.body).trigger("wc_update_cart"); 558 $(document.body).trigger("update_checkout"); 559 560 // Add notice if available 561 $(document.body).on('updated_cart_totals', function () { 562 if (notice && $(".woocommerce-notices-wrapper").length) { 563 $(".woocommerce-notices-wrapper").html(notice); 564 } else if (notice && $(".woocommerce-message").length) { 565 $(".woocommerce-message").html(notice); 566 } 567 }); 568 } 569 } 570}); 571 572jQuery(function ($) { 573 "use strict"; 574 575 try { 576 $(document.body).on("it-enhanced-carousel", function () { 577 var owl_carousels = $(".it-owl-carousel-items"); 578 if (!owl_carousels.length) { 579 return; 580 } 581 owl_carousels.each(function (e) { 582 $(this).owlCarousel({ 583 margin: 10, 584 responsiveClass: true, 585 rtl: "true" == pw_wc_gift_adv_ajax.rtl, 586 autoplayHoverPause: true, 587 autoplayTimeout: parseInt(pw_wc_gift_adv_ajax.speed), 588 loop: "true" == pw_wc_gift_adv_ajax.loop, 589 dots: "true" == pw_wc_gift_adv_ajax.dots, 590 nav: "true" == pw_wc_gift_adv_ajax.nav, 591 responsive: { 592 0: { 593 items: parseInt(pw_wc_gift_adv_ajax.mobile), 594 }, 595 600: { 596 items: parseInt(pw_wc_gift_adv_ajax.tablet), 597 }, 598 1000: { 599 items: parseInt(pw_wc_gift_adv_ajax.desktop), 600 }, 601 }, 602 }); 603 }); 604 }); 605 606 $(document.body).on("updated_wc_div", function () { 607 $(document.body).trigger("it-enhanced-carousel"); 608 }); 609 610 $(document.body).trigger("it-enhanced-carousel"); 611 } catch (err) { 612 // window.console.log(err); 613 } 614}); 615 616//Promotion popup 617jQuery(document).ready(function ($) { 618 // Show the popup on page load 619 $("#wgb-promotion-popup").removeClass("hidden"); 620 621 // Handle closing the popup 622 $("#wgb-promotion-popup .wgb-promotion-close").on("click", function (e) { 623 e.preventDefault(); 624 $("#wgb-promotion-popup").addClass("hidden"); 625 }); 626});
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.