PageSourceSearch

https://magaz-in.pro/mg-plugins//non-available/js/nonavailable.js?rev=1734987600

js magaz-in.pro collected 2026-09-28 12:38:34 UTC 24,350 bytes, 409 lines download raw bytes

1$(document).ready(function() {
2    nonAvailableModule.init();
3});
4
5var nonAvailableModule = (function() {
6    return {
7        init: function() {
8            var nonAvailable_recaptcha = '';
9            // появляется окно оформления заявки
10            if ($('.wrapper-modal-mg-non-available').length == 0) {
11
12                if (typeof agreement_non_avaiailable == 'undefined') {
13                    agreement_non_avaiailable = '';
14                }
15                var html = '\
16              <span class="mg-non-available-overlay"></span>\
17    <div class="wrapper-modal-mg-non-available">\
18      <div class="header-modal-mg-non-available">\
19        <h2 class="title-modal-mg-non-available">\
20        </h2>\
21          <span class="close-mg-booking-button"><a role="button" href="javascript:void(0);"></a></span>\
22      </div>\
23      <div class="modal-mg-non-available-title"><div class="link"><h3 data-link ></h3></div></div>\
24      <div class="content-modal-mg-non-available">\
25        <div class="mg-product-info">\
26          <div class="mg-product-img">\
27      <img class="product-image" src="" >\
28      </div>\
29      <div class="mg-price-non-available"></div>\
30      <div id="na-variant"> </div>\
31        </div> \
32        <div class="mg-booking-non-available">\
33    <form action="' + mgBaseDir + '/" method="post">\
34          <ul class="modal-mg-booking-list">\
35            <li style="display:none" class="fio">\
36                <span>Ваше имя:</span>\
37                <input type="text" name="na-name" value ="">\
38            </li>\
39            <li style="display:none" class="phone">\
40                <span>Телефон:<span class="red-star">*</span></span>\
41                <input type="tel" name="phone" value ="">\
42            </li>\
43            <li style="display:none" class="email">\
44                <span>Ваш e-mail:<span class="red-star">*</span></span>\
45                <input type="text" name="na-email" value ="">\
46            </li>\
47            <li style="display:none" class="address">\
48                <span>Адрес:</span>\
49                <textarea name="na-address"  value =""></textarea>\
50            </li>\
51            <li style="display:none" class="count">\
52                <span>Количество:</span>\
53                <input type="number" name="na-count"  value ="1">\
54            </li>\
55            <li style="display:none" class="comment">\
56                <span>Комментарий:</span>\
57                <textarea name="na-comment"  value =""></textarea>\
58            </li>\
59            <li class="mg-cap" style="display:none">\
60                <div class="cap-left">\
61                    <img style="margin-top: 5px; border: 1px solid gray;" src = "'+ '' +'" width="140" height="36">\
62                    <span>Введите текст с картинки:<span class="red-star">*</span> </span>\
63                    <input type="text" name="capcha" class="captcha">\
64                </div>\
65                <div style="clear:both;">\
66                </div>\
67            </li>\
68          </ul>\
69          </form>\
70        </div>\
71      </div>\
72  <div class="mg-action-buttons">\
73  <div class="noneAvaileble_agreement">' + agreement_non_avaiailable + '</div> \
74    <button class="close-mg-booking-button mg-plugin-btn">Отмена</button>\
75      <button type = "" class="mg-send-booking-click-button mg-booking-btn" data-code="">Заказать</button>\
76      </div>\
77    </div>';
78                $('body').append(html);
79            }
80
81            // Открытие пользовательского соглашения
82            $('body').on('click', '.agreement__btn_open', function () {$('body .agreement__modal').show(); });
83            //Закрытие пользовательского соглашения
84            $('body').on('click', '.agreement__btn_close', function () {$('body .agreement__modal').hide(); });
85
86            $('.mg-non-available-button').on('click', function() {
87                var capchaSrc = mgBaseDir + ((langP=='LANG')?'':('/'+langP))+"/captcha.html?t=" + Date.now();
88                
89                var id = $(this).data('product_id');
90                var id_var = $(this).data('var_id');
91                var type = $(this).attr('data-type');
92                $('.mg-price-non-available').html('');
93                if (type == 'product') {
94                    var price = $('.product-status-list li .price:first').text();
95                    if (price.length < 1) {
96                       price = $(this).closest('.product-wrapper').find('.price:first').text();
97                    }
98                    if (price.length > 1) {
99                        $('.mg-price-non-available').html('<span>' + price + '</span>');
100                        $('.wrapper-modal-mg-non-available .mg-send-booking-click-button').attr('data-price', price);
101                    }
102                }
103                
104                if ($('.wrapper-modal-mg-non-available .cap-left img').attr('src') == '') {
105                    $('.wrapper-modal-mg-non-available .mg-cap img').attr('src', capchaSrc);
106                }
107                
108                // if($('.buy-block').is('.product-code span')){
109                //   code = $('.buy-block .product-code span').text();
110                // }
111                openOrderForm(id, id_var, type);
112                $('.wrapper-modal-mg-non-available .error').remove();
113                // var title_var = '';
114                // if ($('.block-variants input[type=radio]:checked').val()) {
115                //   title_var = $('.block-variants input[type=radio]:checked').parents("tr").find('label').text();
116                //   $('#na-variant').html("" + title_var + "");
117                // }
118                // var title = $('.product-details-block .product-title').text();
119                // $('.wrapper-modal-mg-non-available .modal-mg-booking-list .link h3').html(title+ ' ' + title_var);
120                // var src = $('.product-details-block img[data-product-id='+id+']').attr('src');
121                // $('.wrapper-modal-mg-non-available .mg-product-img img').attr('src', src);
122                $('.wrapper-modal-mg-non-available').show();
123                $('.mg-non-available-overlay').show();
124                
125                openModal($('.wrapper-modal-mg-non-available'));
126                
127            });
128
129
130            // закрытие окна заявка
131            $('.close-mg-booking-button').click(function() {
132                $('.wrapper-modal-mg-non-available').hide();
133                $('.mg-non-available-overlay').hide();
134                closeModal($('.wrapper-modal-mg-non-available'));
135            });
136
137
138            // проверка введенных данных и отправка заявки
139            $('body').on('click', '.mg-send-booking-click-button', function() {
140                var checkbox = $('.noneAvaileble_agreement .js-agreement-checkbox-mg-send-order-click-button');
141                if(checkbox.length != 0){
142                    var errorClass = 'agreement__label_error';
143                    if(checkbox.is(':checked')) {
144                        checkbox.parent().removeClass(errorClass);
145                    }
146                    else{
147                        checkbox.parent().addClass(errorClass);
148                        return false;
149                    }
150                }
151                var name = $(this).parents('.wrapper-modal-mg-non-available').find('input[name=na-name]');
152                var phone = $(this).parents('.wrapper-modal-mg-non-available').find('input[name=phone]');
153                var email = $(this).parents('.wrapper-modal-mg-non-available').find('input[name=na-email]');
154                var address = $(this).parents('.wrapper-modal-mg-non-available').find('textarea[name=na-address]');
155                var comment = $(this).parents('.wrapper-modal-mg-non-available').find('textarea[name=na-comment]');
156                var count = $(this).parents('.wrapper-modal-mg-non-available').find('input[name=na-count]');
157                var capcha = $(this).parents('.wrapper-modal-mg-non-available').find('input[name=capcha]').val();
158                // var code = $(".mg-non-available-button").data('product_code');
159                var code = $('.wrapper-modal-mg-non-available .mg-send-booking-click-button').attr('data-code');
160                var product_id = $('.mg-non-available-button').data('product_id');
161                // var title_var = '';
162                // if ($('.block-variants input[type=radio]:checked').val()) {
163                //   title_var = $('.block-variants input[type=radio]:checked').parents("tr").find('label').text();
164                // }
165                // var title = $(".mg-non-available-button").data('product_title');
166                var title = $('.wrapper-modal-mg-non-available .mg-send-booking-click-button').attr('data-title');
167                var price = $('.wrapper-modal-mg-non-available .mg-send-booking-click-button').attr('data-price');
168                // var price = $(".product-status-list li .price:first").text();
169
170                if (!capcha) {
171                    if ($('.wrapper-modal-mg-non-available li.mg-cap .g-recaptcha-template').length) {
172                        capcha = grecaptcha.getResponse(nonAvailable_recaptcha);
173                    }
174                }
175
176                if (!capcha) {
177                    if ($('.wrapper-modal-mg-non-available li.mg-cap .recaptcha-holder-template').length) {
178                        if (!nonAvailableModule.recaptchaToken) {
179                            grecaptcha.execute(nonAvailable_recaptcha);
180                            return false;
181                        } else {
182                            capcha = nonAvailableModule.recaptchaToken;
183                        }
184                    }
185                }
186                nonAvailableModule.recaptchaToken = null;
187
188                if ($('.buy-block').find('.property-form').length) {
189                    var request = $('.buy-block').find('.property-form').formSeri
189alize();
190                } else {
191                    var inCartProd = 'inCartProductId=' + $('.mg-non-available-button').data('product_id');
192                    var request = inCartProd + '&amount_input=1';
193                }
194
195                var link = $('.modal-mg-non-available-title h3').data('link');
196                $.ajax({
197                    type: 'POST',
198                    url: mgBaseDir + '/ajaxrequest?' + request,
199                    dataType: 'json',
200                    data: {
201                        mguniqueurl: 'action/orderNonAvailable', // действия для выполнения на сервере
202                        pluginHandler: 'non-available',
203                        name: name.val(),
204                        phone: phone.val(),
205                        email: email.val(),
206                        address: address.val(),
207                        comment: comment.val(),
208                        count: count.val(),
209                        capcha: capcha,
210                        invisible: 1,
211                        status_id: 1,
212                        code: code,
213                        product_id: product_id,
214                        title: title,
215                        price: price,
216                        url: link,
217                    },
218                    success: function(response) {
219                        if (response.status != 'error') {
220                            $('.wrapper-modal-mg-non-available .error').remove();
221                            $('.loading-send-booking').remove();
222                            $('.mg-action-buttons').before('<span class="loading-send-booking">' + response.data.msg + '</span>');
223                            $('.content-modal-mg-non-available').hide();
224                            $('.mg-action-buttons').hide();
225                            $('.mg-price-non-available').hide();
226                            $('.agreement-container').hide();
227
228                            $('body').animate({ scrollTop: $('body').scrollTop() - 700, scrollLeft: 0 }, 350);
229
230                        } else {
231                            $('.wrapper-modal-mg-non-available .error').remove();
232                            $('.content-modal-mg-non-available').prepend(response.data.msg);
233                            $('.mg-action-buttons').show();
234                            $('.loading-send-booking').remove();
235                        }
236                    },
237                });
238            });
239
240
241            $('body').on('click', '.variants-table input[type=radio]', function() {
242                if ($(this).data('count') != 0) {
243                    $(this).parents('.product-wrapper').find('.wrapper-mg-non-available .mg-non-available-button').hide().data('var_id', '').data('type', 'catalog');
244                    $(this).parents('.product-details-block').find('.wrapper-mg-non-available .mg-non-available-button').hide().data('var_id', '').data('type', 'product');
245                } else {
246                    $(this).parents('.product-wrapper').find('.wrapper-mg-non-available .mg-non-available-button').show().data('var_id', $(this).val()).data('type', 'catalog');
247                    $(this).parents('.product-details-block').find('.wrapper-mg-non-available .mg-non-available-button').show().data('var_id', $(this).val()).data('type', 'product');
248                }
249            });
250
251            $('body').on('change', '.variants-table input[type=radio]', function() {
252                if ($(this).data('count') != 0) {
253                    $(this).parents('.product-wrapper').find('.wrapper-mg-non-available .mg-non-available-button').hide().data('var_id', '').data('type', 'catalog');
254                    $(this).parents('.product-details-block').find('.wrapper-mg-non-available .mg-non-available-button').hide().data('var_id', '').data('type', 'product');
255                } else {
256                    $(this).parents('.product-wrapper').find('.wrapper-mg-non-available .mg-non-available-button').show().data('var_id', $(this).val()).data('type', 'catalog');
257                    $(this).parents('.product-details-block').find('.wrapper-mg-non-available .mg-non-available-button').show().data('var_id', $(this).val()).data('type', 'product');
258                }
259            });
260
261            $('.buy-block .variants-table input[type=radio]:checked').each(function(index, element) {
262                if ($(this).data('count') != 0) {
263                    $(this).parents('.product-wrapper').find('.wrapper-mg-non-available .mg-non-available-button').hide().data('type', 'catalog');
264                    $(this).parents('.product-details-block').find('.wrapper-mg-non-available .mg-non-available-button').hide().data('type', 'product');
265                } else {
266                    $(this).parents('.product-wrapper').find('.wrapper-mg-non-available .mg-non-available-button').data('var_id', $(this).val()).data('type', 'catalog');
267                    $(this).parents('.product-details-block').find('.wrapper-mg-non-available .mg-non-available-button').data('var_id', $(this).val()).data('type', 'product');
268                }
269            });
270            $('.mg-non-available-button').each(function(index, item) {
271                const currentVariantCount = $(item).closest('.product-wrapper').find('.block-variants input[type=radio]:checked').attr('data-count');
272                if (currentVariantCount && currentVariantCount != '0') {
273                    $(item).hide();
274                } else {
275                    $(item).show();
276                }
277            });
278            if ($('.block-variants input[type=radio]:checked').length) {
279              if ($(this).data('count') != 0 ) {
280                $(this).parents('.product-wrapper').find('.wrapper-mg-non-available .mg-non-available-button').hide();
281                $(this).parents('.product-details-block').find('.wrapper-mg-non-available .mg-non-available-button').hide();
282              }
283            };
284
285
286            /**
287             * Открывает модальное окно
288             */
289            function openModal(object) {
290                overlay();
291                object.fadeIn(300);
292                object.css('z-index', 200);
293                var offset = (window.pageYOffset);
294                object.css('margin-top', offset);
295            }
296
297            /**
298             * Закрывает модальное окно
299             */
300            function closeModal(object) {
301                object.fadeOut(300);
302                $('#overlay-non-av').remove();
303            }
304
305            /**
306             * Фон для заднего плана при открытии всплывающего окна
307             */
308            function overlay() {
309                var docHeight = $(document).height();
310                $('body').append('<div id=\'overlay-non-av\'></div>');
311                $('#overlay-non-av').height(docHeight);
312            }
313
314            /**
315             * функция загрузки формы для заказа
316             * @param {type} e
317             * @returns {undefined}
318             */
319            function openOrderForm(id, id_var, type) {
320                $.ajax({
321                    type: 'POST',
322                    url: mgBaseDir + '/ajaxrequest',
323                    dataType: 'json',
324                    data: {
325                        mguniqueurl: 'action/buildOrderForm', // действия для выполнения на сервере
326                        pluginHandler: 'non-available',
327                        id: id,
328                        id_var: id_var,
329                    },
330                    success: function(response) {
331                        if (type == 'catalog' || $('.mg-price-non-available').text().length < 3) {
332                            $('.mg-price-non-available').html('Стоимость товара: <span>' + response.data.product.price + '</span>');
333                            console.log(response.data.product.price);
334                            $('.wrapper-modal-mg-non-available .mg-send-booking-click-button').attr('data-price', response.data.product.price.trim());
335                        }
336                        $('.wrapper-modal-mg-non-available .mg-send-booking-click-button').attr('data-title', response.data.product.name);
337                        $('.wrapper-modal-mg-non-available .modal
337-mg-non-available-title .link h3').html(response.data.product.name);
338                        $('.wrapper-modal-mg-non-available .mg-product-img img').attr('src', response.data.product.img);
339                        $('.wrapper-modal-mg-non-available .mg-send-booking-click-button').attr('data-code', response.data.product.code);
340                        $('.wrapper-modal-mg-non-available .modal-mg-non-available-title li.link h3').attr('data-link', response.data.link);
341                        if (response.data.options.header != '') {
342                            $('.wrapper-modal-mg-non-available .title-modal-mg-non-available').html(response.data.options.header);
343                        }
344                        if (response.data.options.button != '') {
345                            $('.wrapper-modal-mg-non-available .mg-send-booking-click-button').text(response.data.options.button);
346                        }
347                        if (response.data.options.name == 'true') {
348                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.fio').css('display', 'block');
349                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list input[name=na-name]').val(response.data.user.name ? response.data.user.name : '');
350                        }
351                        if (response.data.options.phone == 'true') {
352                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.phone').css('display', 'block');
353                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list input[name=phone]').val(response.data.user.phone ? response.data.user.phone : '');
354                        }
355                        if (response.data.options.email == 'true') {
356                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.email').css('display', 'block');
357                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list input[name=na-email]').val(response.data.user.email ? response.data.user.email : '');
358                        }
359                        if (response.data.options.address == 'true') {
360                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.address').css('display', 'block');
361                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list textarea[name=na-address]').val(response.data.user.address ? response.data.user.address : '');
362                        }
363                        if (response.data.options.comment == 'true') {
364                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.comment').css('display', 'block');
365                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list textarea[name=na-comment]').val('');
366                        }
367                        if (response.data.options.count == 'true') {
368                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.count').css('display', 'block');
369                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list textarea[name=na-count]').val(1);
370                        }
371                        if (response.data.options.capcha == 'true') {
372                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap').css('display', 'block');
373                            $('.wrapper-modal-mg-non-available .modal-mg-booking-list input[name=capcha]').val('');
374                            if (response.data.options.recaptcha == 'true') {
375                                $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap').html(response.data.recaptchahtml);
376
377                                if ($('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap .g-recaptcha-template').length && !$('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap .g-recaptcha-template iframe').length) {
378                                    $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap .g-recaptcha-template').attr('id', 'nonAvailable_recaptcha');
379                                    var skey = $('#nonAvailable_recaptcha').data('sitekey');
380                                    nonAvailable_recaptcha = grecaptcha.render('nonAvailable_recaptcha', {
381                                        sitekey: skey,
382                                    });
383                                    $('.wrapper-modal-mg-non-available .modal
383-mg-booking-list li.mg-cap .g-recaptcha-template').removeAttr('id');
384                                }
385
386                                if ($('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap .recaptcha-holder-template').length && !$('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap .recaptcha-holder-template iframe').length) {
387                                    $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap .recaptcha-holder-template').attr('id', 'nonAvailable_recaptcha');
388                                    var skey = $('#nonAvailable_recaptcha').data('sitekey');
389                                    nonAvailable_recaptcha = grecaptcha.render('nonAvailable_recaptcha', {
390                                        sitekey: skey,
391                                        callback: function(recaptchaToken) {
392                                            nonAvailableModule.recaptchaToken = recaptchaToken;
393                                            $('.mg-send-booking-click-button:visible').click();
394                                        },
395                                    });
396                                    $('.wrapper-modal-mg-non-available .modal-mg-booking-list li.mg-cap .recaptcha-holder-template').removeAttr('id');
397                                }
398
399                            }
400                        }
401
402                    },
403                });
404                return true;
405
406            }
407        },
408    };
409})();

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.