Igor150195

Новый код конфигуратора

Mar 20th, 2020
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. (function(){
  4.     let configurator = document.getElementById('configurator_json');
  5.     let html = configurator.innerHTML;
  6.     let json = JSON.parse(html);
  7.     let all_pro_addons = 'all_pro_addons';
  8.     let pro_addons_array = [];
  9.  
  10.     if (location.search.match(/gr_settings/) && getCookie(all_pro_addons)=="") {
  11.         location.reload();
  12.     };
  13.    
  14.     if (location.search.match(/gr_full_version/)) {
  15.        
  16.         if (!location.search.match("/?&gr_full_version/")) {
  17.             var href = location.search.split("&gr_full_version");
  18.         } else {
  19.             var href = location.search.split("?&gr_full_version");
  20.         }
  21.        
  22.         setCookie('gr_full_version', 1, 7);
  23.         location.href = location.origin + href[0];
  24.     }; /*Ссылка версии со всеми допработами*/
  25.    
  26.     if (location.search.match(/gr_base_version/)) {
  27.        
  28.         if (!location.search.match("/?&gr_base_version/")) {
  29.             var href = location.search.split("&gr_base_version");
  30.         } else {
  31.             var href = location.search.split("?&gr_base_version");
  32.         }
  33.        
  34.         if (getCookie(all_pro_addons)!="") {
  35.             let json_cookie = getCookie(all_pro_addons);
  36.             let json_array = JSON.parse(json_cookie);
  37.            
  38.             for (let i = json_array.length - 1; i >= 0; i--) {
  39.                 deleteCookie(json_array[i]);
  40.             };
  41.         };
  42.        
  43.         deleteCookie('full_price');
  44.         deleteCookie('gr_full_version');
  45.         deleteCookie('all_pro_addons');
  46.        
  47.         if (location.search.match(/gr_base_version/)) {
  48.             location.href = location.origin + href[0];
  49.         };
  50.     }; /*Ссылка базовой версии без допработ*/
  51.    
  52.     if (getCookie(all_pro_addons)!="" && location.search.match(/gr_settings/)) {
  53.         let json_cookie = getCookie(all_pro_addons);
  54.         let json_array = JSON.parse(json_cookie);
  55.        
  56.         if (!location.search.match("/?&gr_settings=1/")) {
  57.             var href = location.search.split("&gr_settings=1");
  58.         } else {
  59.             var href = location.search.split("?&gr_settings=1");
  60.         }
  61.        
  62.         if (location.search.match(/gr_settings/)) {
  63.             for (let i = json_array.length - 1; i >= 0; i--) {
  64.                 deleteCookie(json_array[i]);
  65.             };
  66.         };
  67.        
  68.         deleteCookie('gr_full_version');
  69.        
  70.         if (location.search.match(/gr_settings/)) {
  71.             location.href = location.origin + href[0];
  72.         };
  73.     }; /*Ссылка с базовой версии с допработами*/
  74.    
  75.     getSettingsParse(json);
  76.  
  77.     function getSettingsParse(json) {
  78.         for (var key in json) {
  79.             let result = key.match(/pro_/);
  80.             let full_price = key.match(/full_price/);
  81.            
  82.             if (full_price) {
  83.                 let full_price_value = json[full_price];
  84.                 setCookie(full_price, full_price_value, 7);
  85.             };
  86.  
  87.             if (result) {
  88.                 pro_addons_array.push(key);
  89.                 setCookie(key, 1, 7);
  90.             };
  91.         };
  92.        
  93.         if (location.search.match(/gr_settings/)) {
  94.             let json_str = JSON.stringify(pro_addons_array);
  95.             setCookie(all_pro_addons, json_str, 7);
  96.         };
  97.     }; /*Запись допработ в куки*/
  98.    
  99.     function ready() {
  100.        
  101.             let target = document.querySelector('body');
  102.             let observer = new MutationObserver(function(mutations) {
  103.                 mutations.forEach(function(mutation) {
  104.                     if (document.querySelectorAll('.s3solution-panel-root').length>0) {
  105.                        
  106.                         if (getCookie('full_price') != "") {
  107.                             document.querySelector('.s3solution__item.s3solution__item--price strong').innerHTML = getCookie('full_price');
  108.                         };
  109.                        
  110.                         let site_id = configurator.getAttribute('data-site-id');
  111.                         let catalog_href = 'https://design.megagroup.ru/solution/' + site_id;
  112.                         let btn = '<a href="'+catalog_href+'" class="s3solution-panel__btn s3solution-panel__btn--order">Заказать сайт<div class="s3solution-panel-tooltip js-panel-tooltip">ID = '+site_id+'</div></a>';
  113.                        
  114.                         if (document.querySelectorAll('a.s3solution-panel__btn.s3solution-panel__btn--order').length<1) {
  115.                             document.querySelector('.s3solution-panel__btn.s3solution-panel__btn--order').insertAdjacentHTML('afterend', btn); 
  116.                         };
  117.                         if (document.querySelectorAll('div.s3solution-panel__btn.s3solution-panel__btn--order').length>0) {
  118.                             document.querySelector('div.s3solution-panel__btn.s3solution-panel__btn--order').remove(); 
  119.                         };
  120.  
  121.                         observer.disconnect();
  122.                     }
  123.                 });    
  124.             });
  125.             let config = {
  126.                 attributes: true,
  127.                 childList: true,
  128.                 characterData: true
  129.             };
  130.            
  131.             observer.observe(target, config);
  132.        
  133.     }; /*Отслеживание желтой панели и замена в ней цены с кнопкой*/
  134.    
  135.     document.addEventListener("DOMContentLoaded", ready);
  136.    
  137.    
  138.     function setCookie(name, value, days = 7, path = '/') {
  139.         const expires = new Date(Date.now() + days * 864e5).toUTCString()
  140.         document.cookie = name + '=' + encodeURIComponent(value) + '; expires=' + expires + '; path=' + path
  141.     };
  142.    
  143.     function getCookie(name) {
  144.         return document.cookie.split('; ').reduce((r, v) => {
  145.             const parts = v.split('=')
  146.             return parts[0] === name ? decodeURIComponent(parts[1]) : r
  147.         }, '')
  148.     };
  149.    
  150.     function deleteCookie(name, path) {
  151.         setCookie(name, '', -1, path)
  152.     };
  153. })();
Add Comment
Please, Sign In to add comment