jQuery(document).ready(function ($) { $(document).on('hide_variation', function (event, variation) { $('.awooc-custom-order.button').addClass('disabled wc-variation-selection-needed'); }); $(document).on('show_variation', function (event, variation) { $('.awooc-custom-order.button').removeClass('disabled wc-variation-selection-needed wc-variation-is-unavailable'); // Если у вариации нет цены или ее нет в наличие то скрываем сообщения if (awooc_scripts.mode === 'no_stock_no_price') { if (!variation.is_purchasable || !variation.is_in_stock) { $('body.woocommerce').find('.single_variation').hide(); } } }); $(document).on('click', '.awooc-custom-order.button', function (event) { // console.log('yes', event); //debugger; if ($(this).is('.disabled')) { event.preventDefault(); if ($(this).is('.wc-variation-is-unavailable')) { window.alert(wc_add_to_cart_variation_params.i18n_unavailable_text); } else if ($(this).is('.wc-variation-selection-needed')) { window.alert(wc_add_to_cart_variation_params.i18n_make_a_selection_text); } return false; } // Задаем переменные var prodictSelectedId; var productVariantId = $('.variations_form').find('input[name="variation_id"]').val(), productId = $(this).attr('data-value-product-id'), productQty = $('.quantity').find('input[name="quantity"]').val(); var dataOut = {}; // Проверяем ID товара, для вариаций свой, для простых свой if (productVariantId != 0 && typeof productVariantId !== 'undefined') { prodictSelectedId = productVariantId; } else { prodictSelectedId = productId; } // Собираем данные для отправки data = { id: prodictSelectedId, action: 'awooc_ajax_product_form', nonce: awooc_scripts.nonce }; // Отправляем запрос $.ajax({ url: awooc_scripts.url, data: data, type: 'POST', dataType: 'json', beforeSend: function (xhr, data) { // Вызываем прелоадер $(event.currentTarget).block({ message: null, overlayCSS: { opacity: 0.6 } }); $(event.currentTarget).fadeIn(200).prepend('
'); }, success: function (data) { // Отключаем прелоадер $(event.currentTarget).unblock(); $(event.currentTarget).find('.cssload-container').remove(); //Добавляем тайтл к кнопке закрытия окнa $('.awooc-close').attr('title', awooc_scripts.title_close); // Проверяем данные после аякса и формируем нужные строки dataOut = { outID: 'ID: ' + prodictSelectedId, outTitle: data.title === false ? '' : '\n' + awooc_scripts.product_title + data.title, outAttr: data.attr === false ? '' : '\n' + data.attr, outPrice: data.price === false ? '' : '\n' + awooc_scripts.product_price + data.pricenumber, outSku: data.sku === false ? '' : '\n' + data.sku, outCat: data.cat === false ? '' : '\n' + data.cat, outLink: data.link === false ? '' : '\n' + data.link, outQty: data.qty === false ? '' : '\n' + awooc_scripts.product_qty + productQty }; // Формируем данные $('.awooc-form-custom-order-title').text(data.title); $('.awooc-form-custom-order-img').html(data.image); $('.awooc-form-custom-order-price').html(data.price); $('.awooc-form-custom-order-price').after(data.qty); $('.awooc-form-custom-order-qty').text(awooc_scripts.product_qty + productQty); $('.awooc-form-custom-order-sku').html(data.sku); $('.awooc-form-custom-order-attr').html(data.attr); // Загружаем форму $('.awooc-col.columns-right').html(data.form); // Инициализация формы awoocInitContactForm(); // Собираем данные для письма var hiddenData = awoocHiddenDataToMail(dataOut); // Записываем данные с скрытое поле для отправки письма $('.awooc-hidden-data').val(hiddenData); // Записываем id товара и количество в скрытое поле $('.awooc-hidden-product-id').val(prodictSelectedId); $('.awooc-hidden-product-qty').val(productQty); // Проверка на наличчие маски телефона awooMaskField(); // Выводим всплывающее окно awoocPopupWindow(); } }); return false; }); $(document).on('click', '.awooc-close', function () { // При клику на оверлей закрываем окно $.unblockUI(); // При клику на оверлей добавлем нужный класс $('#awooc-form-custom-order').addClass('awooc-hide'); // При клику на оверлей очищаем урл history.pushState('', document.title, window.location.pathname); }); // Если ошибка отправки письма то через 5сек очищаем сообщения document.addEventListener('wpcf7invalid', function (event) { setTimeout(function () { $('.wpcf7-response-output').remove(); $('.wpcf7-not-valid-tip').remove(); }, 5000); }, false); // После отправки письма то через 3сек очищаем форму и закрываем окно document.addEventListener('wpcf7mailsent', function (event) { setTimeout($.unblockUI, 3000); setTimeout(function () { $('.wpcf7-form')[0].reset(); $('.wpcf7-response-output').remove(); }, 3000); }, false); function awoocInitContactForm() { $('div.wpcf7 > form').each(function () { var $form = $(this); wpcf7.initForm($form); if (wpcf7.cached) { wpcf7.refill($form); } }); } function awoocHiddenDataToMail(dataOut) { return '\n' + awooc_scripts.product_data_title + '\n' + '———' + dataOut.outTitle + '\n' + dataOut.outID + dataOut.outCat.replace(/(<([^>]+)>)/ig, "") + dataOut.outPrice + dataOut.outAttr.replace(/(<([^>]+)>)/ig, "") + dataOut.outSku.replace(/(<([^>]+)>)/ig, "") + dataOut.outQty + dataOut.outLink; } function awoocPopupWindow() { $.blockUI({ message: $('#awooc-form-custom-order'), css: { width: '100%', maxWidth: '600px', maxHeight: '600px', top: '10%', left: 'calc(50% - 300px)', border: 'none', cursor: 'default', overflowY: 'auto', boxShadow: '0px 0px 3px 0px rgba(0, 0, 0, 0.2)', zIndex: '1000000' }, overlayCSS: { zIndex: '1000000', backgroundColor: '#000', opacity: 0.6, cursor: 'wait' }, bindEvents: true, timeout: 0, fadeIn: 400, fadeOut: 400, allowBodyStretch: true, centerX: true, // <-- only effects element blocking (page block controlled via css above) centerY: true, onBlock: function () { $('#awooc-form-custom-order').removeClass('awooc-hide'); //$('html').css({'overflow': 'hidden'}); // Если окно меньше 480px то меняем стили окна if (window.innerWidth < 480) { $('.blockUI.blockPage').css({ 'left': '2%', 'top': 'calc(30% - 160px)', 'height': 'auto', 'overflow-y': 'scroll', 'width': '95%', }); } else if (window.innerWidth < 569 || window.innerWidth < 669) { $('.blockUI.blockPage').css({ 'left': '2%', 'top': '2%', 'height': '95%', 'overflow-y': 'scroll', 'width': '95%', }); } else if (window.innerWidth < 769) { $('.blockUI.blockPage').css({ 'height': 'auto', 'overflow-y': 'scroll', 'width': '95%', }); } }, onUnblock: function () { // При закрытии окна добавлем нужный класс $('#awooc-form-custom-order').addClass('awooc-hide'); //$('html').css({'overflow': ''}); // При закрытии окна очищаем данные awoocFormDataEmpty(); // При закрытии окна очищаем урл history.pushState('', document.title, window.location.pathname); }, onOverlayClick: function () { // При закрытии окна добавлем нужный класс $('#awooc-form-custom-order').addClass('awooc-hide'); $('html').css({'overflow': 'initial'}); $.unblockUI(); // При закрытии окна очищаем данные awoocFormDataEmpty(); // При закрытии окна очищаем урл history.pushState('', document.title, window.location.pathname) } }); } function awoocFormDataEmpty() { $('.awooc-form-custom-order-title').empty(); $('.awooc-form-custom-order-img').empty(); $('.awooc-form-custom-order-price').empty(); $('.awooc-form-custom-order-qty').empty(); $('.awooc-form-custom-order-sku').empty(); $('.awooc-form-custom-order-attr').empty(); } function awooMaskField() { var $mask_fields = $('.wpcf7-mask'); if ($mask_fields.length > 0) { $mask_fields.each(function () { var $this = $(this), data_mask = $this.data('mask'); //Если ошибка определения, то выводим в консоль сообщение и продолжаем try { $this.mask(data_mask); if (data_mask.indexOf('*') == -1 && data_mask.indexOf('a') == -1) { $this.attr({ 'inputmode': 'numeric' }); } } catch (e) { console.log('Ошибка ' + e.name + ":" + e.message + "\n" + e.stack); } }); } } });