1function MK_APP() { 2 return { 3 init() { 4 $('body').on('click', '[data-mk-show-form]', function(){ 5 window.MK_APP.showForm($(this).data('mk-show-form') || 'message', $(this)) 6 }); 7 8 }, 9 10 initAccordion() { 11 $('.map_mark .map_mark_info_icon').click(function(){ 12 var p = $(this).parent().parent(); 13 p.find('.popperTooltip').appendTo(p).toggle(); 14 }); 15 }, 16 17 initPopover() { 18 var popoverItem = $('.popover-hover-item'); 19 const popperOptions = { 20 placement: 'bottom', 21 modifiers: [ 22 { 23 name: 'flip', 24 options: { 25 fallbackPlacements: ['top', 'right'], 26 }, 27 }, 28 ], 29 } 30 31 $(popoverItem).each(function(){ 32 const ref = this; 33 const popup = $(ref).find('.popperTooltip')[0]; 34 const popperInstance = Popper.createPopper(ref, popup, popperOptions); 35 36 function show() { 37 popup.setAttribute('data-show', ''); 38 popperInstance.update(); 39 } 40 41 function hide() { 42 popup.removeAttribute('data-show'); 43 } 44 45 const showEvents = ['mouseenter', 'focus']; 46 const hideEvents = ['mouseleave', 'blur']; 47 48 showEvents.forEach((event) => { 49 ref.addEventListener(event, show); 50 }); 51 52 hideEvents.forEach((event) => { 53 ref.addEventListener(event, hide); 54 }); 55 }); 56 }, 57 58 toggleFavoriteButton(btn, show) { 59 if(show) { 60 btn.addClass('active').data('action', 'delete'); 61 } else { 62 btn.removeClass('active').data('action', 'add'); 63 } 64 }, 65 66 activateFavoriteButton(btn, show) { 67 this.toggleFavoriteButton(btn, show); 68 69 btn.off("click"); // prevent multiple triggering 70 btn.click(function(){ 71 var link = $(this), 72 id = link.data('product_id'); 73 74 if(!id) 75 return false; 76 77 $.post("/ajax/bookmark.php", {PRODUCT_ID: id, ACTION: link.data('action')}, function( data ) { 78 79 var header_favorites = $('.js-favorites-count'); 80 if(data.result) { 81 //header_favorites.text(data.count); 82 header_favorites.toggleClass('active', data.count !== 0); 83 var all_product_bookmark_links = $('.bookmark_link[data-product_id='+id+']'); 84 85 if(link.data('action')==="delete") { 86 all_product_bookmark_links.data('action', 'add'); 87 all_product_bookmark_links.removeClass('active'); 88 89 //update favorites page 90 if($('.bx-favorites .bookmark_link[data-product_id='+id+']').length > 0) { 91 $('.bx-favorites .bookmark_link[data-product_id='+id+']').closest('.catalog-list--item').fadeOut(500, function(){ $(this).remove();}); 92 } 93 }else{ 94 all_product_bookmark_links.data('action', 'delete'); 95 all_product_bookmark_links.addClass('active'); 96 } 97 } 98 99 }, 'json'); 100 101 return false; 102 }); 103 }, 104 105 initCategoryProductSwiper() { 106 if (document.querySelector('.mk-kitchens-hits-list__slider')) { 107 document.querySelectorAll('.mk-kitchens-hits-list__slider').forEach((item) => { 108 const hitsSlider = new Swiper(item, { 109 loop: false, 110 lazy: true, 111 slidesPerView: 1, 112 navigation: { 113 prevEl: item.querySelector('.swiper-button-prev'), 114 nextEl: item.querySelector('.swiper-button-next') 115 } 116 117 }); 118 }); 119 } 120 }, 121 122 showForm(formId, btn) { 123 var form = $('#mkModalForm'), title = 'ÐаказаÑÑ Ð·Ð²Ð¾Ð½Ð¾Ðº', btnTitle= 'ÐÑпÑавиÑÑ'; 124 125 form.find('[data-mk-form-comment]').text(''); 126 form.find('[data-mk-form-dropzone]').hide(); 127 form.find('[data-mk-form-id]').val(formId); 128 129 if (formId === "project") { 130 this.initDropzone('mk-form-dropzone'); 131 form.find('[data-mk-form-dropzone]').show(); 132 } 133 134 if(btn) { 135 title = btn.text().trim(); 136 if(btn.data('title')) { 137 title = btn.data('title'); 138 } 139 if(btn.data('comment')) { 140 form.find('[data-mk-form-comment]').html(btn.data('comment')); 141 } 142 btnTitle = btn.data('btn-title') || title; 143 } 144 145 form.find('[data-mk-form-name]').val(title); 146 form.find('[data-mk-form-submit]').html(btnTitle); 147 form.find('[data-mk-form-header]').html(title); 148 var modal = bootstrap.Modal.getOrCreateInstance(form[0]) 149 modal.show(); 150 }, 151 152 initDropzone(id) { 153 var element = $("#"+id); 154 let dropzoneControl = element[0].dropzone; 155 if (typeof dropzoneControl !== "undefined") { 156 return; 157 } 158 159 let myDropzone = new Dropzone("#"+id, { 160 url: "/ajax/upload_file.php", 161 paramName: "files", 162 maxFilesize: 100, 163 maxFiles: 10, 164 parallelUploads: 10, 165 dictDefaultMessage:"ÐÑикÑепиÑÑ Ñайл", 166 dictFallbackMessage:"Ð ÑожалениÑ, Ð²Ð°Ñ Ð±ÑаÑÐ·ÐµÑ Ð½Ðµ поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Drag'n'Drop", 167 dictFallbackText:"ÐожалÑйÑÑа, воÑполÑзÑйÑеÑÑ ÑÑаÑой добÑой ÑоÑмой Ð´Ð»Ñ Ð·Ð°Ð³ÑÑзки", 168 dictFileTooBig:"Файл ÑлиÑком болÑÑой ({{filesize}}MB). ÐакÑималÑнÑй допÑÑÑимÑй ÑÐ°Ð·Ð¼ÐµÑ Ñайла {{maxFilesize}}MB", 169 dictInvalidFileType:"ÐÑ Ð½Ðµ можеÑе загÑÑжаÑÑ ÑÐ°Ð¹Ð»Ñ ÑÑого Ñипа.", 170 dictResponseError:"ÐÑоизоÑла оÑибка пÑи загÑÑзке Ñайла. ÐопÑобÑйÑе еÑе Ñаз. ÐÑли оÑибка бÑÐ´ÐµÑ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ - пеÑедайÑе ÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ ÑайÑа: Ðод оÑибки {{statusCode}}", 171 dictCancelUpload:"ÐÑмениÑÑ Ð·Ð°Ð³ÑÑзкÑ", 172 dictUploadCanceled:"ÐагÑÑзка оÑменена", 173 dictCancelUploadConfirmation:"УвеÑенÑ, ÑÑо Ñ Ð¾ÑиÑе пÑеÑваÑÑ Ð·Ð°Ð³ÑÑзкÑ?", 174 dictRemoveFile:"УдалиÑÑ Ñайл", 175 dictMaxFilesExceeded:"ÐÑевÑÑен Ð»Ð¸Ð¼Ð¸Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑва Ñайлов. ÐÑ Ð¼Ð¾Ð¶ÐµÑе загÑÑзиÑÑ Ð½Ðµ более {{maxFiles}}", 176 acceptedFiles: 'image/jpeg, image/png, application/pdf' 177 }); 178 myDropzone.on("success", function(file, responseText) { 179 let input = $('[data-dropzone-result='+id+']'); 180 input.val(input.val()+responseText.file+ " ; \n") 181 }); 182 }, 183 184 initGoToTop() { 185 $("[data-item=up]").click(function() { 186 window.scrollTo({ top: 0, behavior: 'smooth' }); 187 return false;
188 }); 189 }, 190 191 sendGoal(goalName) { 192 if (typeof ym !== 'function') { 193 return true; 194 } 195 196 ym(ym.a[0][0], 'reachGoal', goalName); 197 198 return true; 199 } 200 } 201} 202 203window.MK_APP = MK_APP(); 204Dropzone.autoDiscover = false; 205 206function myOnResize(event) { 207 $(".mk-calc-float-button:not(.mk-calc-float-button-always-visible)").toggleClass("mk-calc-float-button-hidden", document.body.clientWidth < 576); 208} 209 210$(function(){ 211 window.MK_APP.init(); 212 window.MK_APP.initGoToTop(); 213 214 window.MK_APP.initCategoryProductSwiper(); 215 216 $("[data-ajax-form]").submit(function(e){ 217 e.preventDefault(); 218 219 var form = $(this); 220 var btns = form.find('[type=submit]'); 221 222 $.ajax({ 223 type: "POST", 224 url: '/ajax/form.php', 225 dataType: 'json', 226 data: form.serialize() + "&url=https://moyakuhna.ru/", 227 beforeSend: function() { 228 btns.prop('disabled', true); 229 btns.append('<span class="spinner-border spinner-border-sm" data-loading role="status" aria-hidden="true"></span>'); 230 231 form.find('[data-form-error], [data-form-success]').remove(); 232 }, 233 success: function(data) 234 { 235 if (data.success) { 236 MK_APP.sendGoal('FORM'); 237 form[0].reset(); 238 239 240 if(form.find('.dropzone').length > 0) { 241 let dropzoneControl = form.find('.dropzone')[0].dropzone; 242 if (typeof dropzoneControl !== "undefined") { 243 dropzoneControl.removeAllFiles(true); 244 } 245 } 246 247 248 let s = form.data('show-modal-after-send'); 249 if (s && s.length > 0) { 250 $('.modal').modal('hide'); 251 252 var myModalEl = document.querySelector(s) 253 var modal = bootstrap.Modal.getOrCreateInstance(myModalEl) 254 modal.show(); 255 } else { 256 let message = data.message ? data.message : 'ФоÑма ÑÑпеÑно оÑпÑавлена'; 257 $('<div class="alert alert-success" role="alert" data-form-success>'+message+'</div>').insertBefore(btns.last()); 258 } 259 } else { 260 $( "<div class='alert alert-danger' role=\"alert\" data-form-error>ÐÑибка оÑпÑавки ÑоÑмÑ</div>" ).insertBefore(btns.last()); 261 } 262 }, 263 error: function(xhr, status, error) 264 { 265 let err = JSON.parse(xhr.responseText), 266 message = err.message ? 'ÐÑибка оÑпÑавки ÑоÑмÑ: ' + err.message: 'ÐÑибка оÑпÑавки ÑоÑмÑ'; 267 $( "<div class='alert alert-danger' role=\"alert\" data-form-error>"+message+"</div>" ).insertBefore(btns.last()); 268 }, 269 complete: function() { 270 btns.prop('disabled', false); 271 btns.find('[data-loading]').remove(); 272 } 273 }); 274 275 return false; 276 }) 277 278 $(".can-collapse").each(function(){ 279 var lineHeight = 24; 280 var collapsed = $(this); 281 if (collapsed.height() > lineHeight*2) { 282 collapsed.addClass("collapsed"); 283 collapsed.after($("<div class='show-collapsed'>РазвеÑнÑÑÑ</div>").click(function(){ 284 collapsed.removeClass("collapsed"); 285 collapsed.height("auto"); 286 $(this).remove(); 287 })); 288 collapsed.height(lineHeight * 3); 289 } 290 }) 291 292 if (document.querySelector('#mkMobileTags')) { 293 const mkMobileTags = new Swiper(document.querySelector('#mkMobileTags'), { 294 loop: false, 295 init: false, 296 slidesPerView: 'auto', 297 spaceBetween: 16, 298 }); 299 300 if(window.innerWidth < 768) { 301 mkMobileTags.init(); 302 } 303 window.addEventListener('resize', ()=>{ 304 if(window.innerWidth < 768) { 305 mkMobileTags.init(); 306 } 307 }); 308 309 } 310 311 myOnResize(); 312 window.addEventListener('resize', myOnResize, true); 313})
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.