HEX
Server: LiteSpeed
System: Linux linux31.centraldnserver.com 4.18.0-553.83.1.lve.el8.x86_64 #1 SMP Wed Nov 12 10:04:12 UTC 2025 x86_64
User: salamatk (1501)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open
Upload Files
File: /home/salamatk/takarzan.ir/wp-content/themes/xts-luman/js/scripts/singleProductAjaxAddToCart.js
/* global xts_settings */
(function($) {
	XTSThemeModule.singleProductAjaxAddToCart = function() {
		if ('no' === xts_settings.single_product_ajax_add_to_cart) {
			return;
		}

		XTSThemeModule.$body.on('submit', 'form.cart', function(e) {
			var $form = $(this);

			var $productWrapper = $form.parents('.product');

			if ($productWrapper.hasClass('product-type-external') || $productWrapper.hasClass('product-type-zakeke') || 'undefined' !== typeof e.originalEvent && $(e.originalEvent.submitter).hasClass('xts-buy-now-btn')) {
				return;
			}

			e.preventDefault();

			var $button = $form.find('.single_add_to_cart_button');
			var data = $form.serialize();

			data += '&action=xts_single_product_ajax_add_to_cart';

			if ($button.val()) {
				data += '&add-to-cart=' + $button.val();
			}

			$button.removeClass('added xts-not-added').addClass('loading');

			// Trigger event
			$(document.body).trigger('adding_to_cart', [
				$button,
				data
			]);

			$.ajax({
				url    : xts_settings.ajaxurl,
				data   : data,
				method : 'POST',
				success: function(response) {
					if (!response) {
						return;
					}

					if (response.error && response.product_url) {
						window.location = response.product_url;
						return;
					}

					// Redirect to cart option
					if ('yes' === xts_settings.cart_redirect_after_add) {
						window.location = xts_settings.action_after_add_to_cart_cart_url;
					} else {
						$button.removeClass('loading');

						var fragments = response.fragments;
						var cart_hash = response.cart_hash;

						// Block fragments class
						if (fragments) {
							$.each(fragments, function(key) {
								$(key).addClass('xts-updating');
							});
						}

						// Replace fragments
						if (fragments) {
							$.each(fragments, function(key, value) {
								$(key).replaceWith(value);
							});
						}

						// Show notices
						if ($productWrapper.hasClass('xts-product') && response.notices_raw.error) {
							var error = response.notices_raw.error;
							var errorsRow = '';

							$.each(error, function () {
								var errorRow = this.notice;
								errorsRow += htmlDecode(errorRow.substring(errorRow.indexOf('</a>'), errorRow.lastIndexOf('')) + '<br>');
							})

							alert(errorsRow);
							$productWrapper.find('.add_to_cart_button').removeClass('loading');
						} else if (response.notices.indexOf('error') > 0) {
							$('.woocommerce-notices-wrapper').append(response.notices);
							$button.addClass('xts-not-added');
						} else {
							if ('widget' === xts_settings.action_after_add_to_cart) {
								$.magnificPopup.close();
							}

							// Trigger event so themes can refresh other areas
							$(document.body).trigger('added_to_cart', [
								fragments,
								cart_hash,
								$button
							]);
						}
					}
				},
				error  : function() {
					console.log('ajax adding to cart error');
				}
			});
		});

		XTSThemeModule.$body.on('click', '.xts-sticky-atc .xts-buy-now-btn', function() {
			if ($(this).parents('form.cart').length) {
				return;
			}

			$('form.cart').find('.xts-buy-now-btn').trigger('click');
		});

		XTSThemeModule.$body.on('click', '.variations_form .xts-buy-now-btn', function(e) {
			var $this = $(this);
			var $addToCartBtn = $this.siblings('.single_add_to_cart_button');

			if ( 'undefined' !== typeof wc_add_to_cart_variation_params && $addToCartBtn.hasClass('disabled') ) {
				e.preventDefault();

				if ($addToCartBtn.hasClass('wc-variation-is-unavailable') ) {
					alert( wc_add_to_cart_variation_params.i18n_unavailable_text );
				} else if ( $addToCartBtn.hasClass('wc-variation-selection-needed') ) {
					alert( wc_add_to_cart_variation_params.i18n_make_a_selection_text );
				}
			}
		});
	};

	function htmlDecode(input) {
		var doc = new DOMParser().parseFromString(input, "text/html");
		return doc.documentElement.textContent;
	}

	$(document).ready(function() {
		XTSThemeModule.singleProductAjaxAddToCart();
	});
})(jQuery);