JAVASCRIPT   62
CustomModal
Guest on 18th September 2023 12:23:50 PM


  1. const AJAX_URL = window.location.protocol+'//'+window.location.hostname+'/ajax';
  2.  
  3. var CustomModal = function()
  4. {
  5.     return {
  6.         DOM:{},
  7.         init:function(obj)
  8.         {
  9.             var self = this;
  10.             self.DOM = obj;
  11.             $(self.DOM.control).click(
  12.                 function()
  13.                 {
  14.                     $(self.DOM.modal).modal();
  15.                 }
  16.             );
  17.         }
  18.     };
  19. }
  20.  
  21. var SetVariationOrder = function()
  22. {
  23.     return {
  24.         DOM:{
  25.             control:'ul.product-variations li.product-variation-confirm a',
  26.             color_variation:'select.color_variation',
  27.             size_variation:'select.size_variation',
  28.             modal:'div.product-variation-modal'
  29.         },
  30.         init:function(obj)
  31.         {
  32.             var self = this;
  33.             $(self.DOM.control).click(
  34.                 function()
  35.                 {
  36.                     var variation = {complete:1};
  37.                     if($("select").is('.color_variation'))
  38.                     {
  39.                         variation.color = $(self.DOM.color_variation).val();
  40.                         if (variation.color<0)
  41.                         {
  42.                             variation.complete = 0;
  43.                         }
  44.                     }
  45.                     if($("select").is('.size_variation'))
  46.                     {
  47.                         variation.size = $(self.DOM.size_variation).val();
  48.                         if (variation.size<1)
  49.                         {
  50.                             variation.complete = 0;
  51.                         }
  52.                     }
  53.                    
  54.                     if (variation.complete)
  55.                     {
  56.                         $(self.DOM.modal).find('li.content').hide();
  57.                         $(self.DOM.modal).find('li.loading').show();
  58.                        
  59.                         $.ajax(
  60.                         {
  61.                             url: AJAX_URL,
  62.                             type: 'POST',
  63.                             data: JSON.stringify({
  64.                                 action:'cartset',
  65.                                 id_product:$('ul.product-variations li.product-variation-confirm a.buy').data('id_product'),
  66.                                 size_variation: variation.size,
  67.                                 color_variation:variation.color,
  68.                             })
  69.                         }).
  70.                         done(
  71.                             function(response)
  72.                             {
  73.                                 $(self.DOM.modal).find('li.content').show();
  74.                                 $(self.DOM.modal).find('li.loading').hide();
  75.                                 $('ul.product-variations li.product-variation-next').show();
  76.                                 $('ul.product-variations li.product-variation-confirm').hide();
  77.                                 $('ul.product-variations li.product-variation-item').hide();
  78.                             }
  79.                         )
  80.                     }
  81.                     return false;
  82.                 }
  83.             );
  84.         }
  85.     }
  86.    
  87. }
  88.  
  89. var CartProductVariation = function()
  90. {
  91.     return {
  92.         DOM:{
  93.             control:'a.buy',
  94.             modal:'div.product-variation-modal'
  95.         },
  96.         init:function(obj)
  97.         {
  98.             var self = this;
  99.             $(self.DOM.control).click(
  100.                 function()
  101.                 {
  102.                     $(self.DOM.modal).find('li.content').html('');
  103.                     $(self.DOM.modal).find('li.loading').show();
  104.                     $(self.DOM.modal).modal();
  105.                    
  106.                    
  107.                     var id_product = $(this).data('id_product');
  108.                    
  109.                     console.log($(this).data('id_product'));
  110.                      $.ajax(
  111.                         {
  112.                             url: AJAX_URL,
  113.                             type: 'POST',
  114.                             data: JSON.stringify({
  115.                                 id_product:id_product,
  116.                                 action:'producttagvariationget'
  117.                             })
  118.                         }
  119.                     )
  120.                     .done(
  121.                         function(response)
  122.                         {
  123.                             var res = JSON.parse(response);
  124.                             console.log(res.result);
  125.                             console.log(res.data);
  126.                             if (res.data)
  127.                             {
  128.                                 if (res.data)
  129.                                 {
  130.                                     $(self.DOM.modal).find('li.content').append(res.data);
  131.                                     $(self.DOM.modal).find('li.loading').hide();
  132.                                     var setVariationOrder = new SetVariationOrder();
  133.                                     setVariationOrder.init({modal:self.DOM.modal});
  134.                                 }
  135.                                 else
  136.                                 {
  137.                                    
  138.                                 }
  139.                             }
  140.                             else
  141.                             {
  142.                                 $.ajax(
  143.                                 {
  144.                                     url: AJAX_URL,
  145.                                     type: 'POST',
  146.                                     data: JSON.stringify({
  147.                                         action:'cartset',
  148.                                         id_product:id_product
  149.                                     })
  150.                                 }).
  151.                                 done(
  152.                                     function(response)
  153.                                     {
  154.                                         location.href = window.location.protocol+'//'+window.location.hostname+'/shoppingcart/get';
  155.                                     }
  156.                                 )
  157.                             }
  158.                         }
  159.                     )
  160. //                     console.log($(this).attr('href'));
  161.                     return false;
  162.                 }
  163.             );
  164.         }
  165.     }
  166. }
  167.  
  168.  
  169.  
  170. var FastOrder = function()
  171. {  
  172.     return {
  173.         DOM:{
  174.             control:            'li.fast-order-complete a',
  175.             color_variation:    'ul.fast-order-form select.color_variation',
  176.             size_variation:     'ul.fast-order-form select.size_variation',
  177.         },
  178.         show_password:function()
  179.         {
  180.             $('ul.fast-order-customer-form li.fast-order-customer-password').show();
  181.             $('ul.fast-order-customer-form li.fast-order-customer-password input').data('ignore', 0);
  182.         },
  183.         reset_password:function()
  184.         {
  185.             $('ul.fast-order-customer-form li.fast-order-error a.reset-password').click(
  186.                 function()
  187.                 {
  188.                     $('li.fast-order-error').html();
  189.                    
  190.                     var email = $('ul.fast-order-customer-form li.fast-order-customer-email input').val();
  191.                     var email_reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  192.                    
  193.                     if(email_reg.test(email))
  194.                     {
  195.                         $.ajax(
  196.                         {
  197.                             url: AJAX_URL,
  198.                             type: 'POST',
  199.                             data: JSON.stringify({
  200.                                 action: 'forgetpassword',
  201.                                 email: email
  202.                             })
  203.                         }).
  204.                         done(
  205.                             function(response)
  206.                             {
  207.                                 console.log(response);
  208.                                 var res = JSON.parse(response);
  209.                                 if (res.status)
  210.                                 {
  211.                                     // рассказать что РІСЃРµ РѕРє Рё надо смотреть мыло
  212.  Рё надо смотреть мыло
  213.                                     $('li.fast-order-error').html('ссылка РЅР° СЃР±СЂРѕСЃ пароля отправлена РЅР° Ваш em// ругнуться что что-то пошло РЅРµ так
  214.          else
  215.                                 {
  216.                                     // ругнуться что что-то пошло РЅРµ так
  217.                                     $('li.fast-order-error').html('что-то пошлР�// очистить Рё спрятать пароль
  218. �йте сн// ругнуться на неправильный формат мыла
  219.     }
  220.                         );
  221.                     }
  222.                     else
  223.                     {
  224.                         // очистить Рё спрятать пароль
  225.                         // ругнуться РЅР° неправильный формат мыла
  226.                     }
  227.                     console.log();
  228.                     return false;
  229.                 }
  230.             );
  231.         },
  232.         checkoutData:function()
  233.         {
  234.             var self = this;
  235.            
  236.             var error_text = '';
  237.             var variation = {};
  238.             variation.complete = 1;
  239.             variation.req = {};
  240.            
  241.             $('li.fast-order-error').hide();
  242.             $('li.fast-order-error').html('');
  243.            
  244.             $(self.DOM.size_variation).css('border','1px solid grey');
  245.             $(self.DOM.color_variation).css('border','1px solid grey');
  246.            
  247.             if ($('ul.fast-order-customer-form li input').length)
  248.             {
  249.                 $('ul.fast-order-customer-form li input').each(
  250.                     function(i)
  251.                     {
  252.                         if (!$(this).data('ignore'))
  253.                         {
  254.                             if ($(this).val().length < 1)
  255.                             {
  256.                                 if (variation.complete)  
  257.                                 {
  258.                                     variation.complete = 0;
  259.                                     $(this).focus();
  260.                                     error_text = 'заполните РІСЃРµ поля<br />';
  261.                                 }
  262.                                 $(this).css('border','1px solid red');
  263.                             }
  264.                             else
  265.                             {
  266.                                 variation.req[$(this).attr("name")] = $(this).val();
  267.                                 $(this).css('border','1px solid grey');
  268.                             }
  269.                         }
  270.                     }
  271.                 );
  272.             }
  273.            
  274.             if (variation.complete)
  275.             {  
  276.                 if($('ul.fast-order-form').find("select").is('.color_variation'))
  277.                 {
  278.                     variation.req.color = $(self.DOM.color_variation).val();
  279.                     if (variation.req.color<1)
  280.                     {
  281.                         variation.complete = 0;
  282.                         error_text.length?error_text+', Р° также выберите цвет':'выберите размер';
  283.                         $(self.DOM.color_variation).css('border','1px solid red');
  284.                     }
  285.                 }
  286.                
  287.                 if($('ul.fast-order-form').find("select").is('.size_variation'))
  288.                 {
  289.                     variation.req.size = $(self.DOM.size_variation).val();
  290.                    
  291.                     if (variation.req.size<1)
  292.                     {
  293.                         variation.complete = 0;
  294.                         error_text = error_text.length?error_text+' Рё размер':'выберите размер';
  295.                         $(self.DOM.size_variation).css('border','1px solid red');
  296.                     }
  297.                    
  298.                 }
  299.                
  300.             }
  301.            
  302.            
  303.             if (variation.complete == 0)
  304.             {
  305.                 $('li.fast-order-error').show();
  306.                 $('li.fast-order-error').html(error_text);
  307.             }
  308.             else
  309.             {
  310.                 if(variation.req.email)
  311.                 {
  312.                     var email_reg = ('неверный формат номера телефона;
  313.                     if(email_reg.test(variation.req.email))
  314.                     {
  315.                         if (variation.req.phone.length<7 || variation.req.phone.length>13)
  316.                         {
  317.                             variation.complete = 0;
  318.                             $('ul.fast-order-customer-form li input[name ="phone"]').css('border','1px solid red');
  319.                             $('li.fast-order-error').show();
  320.                             $('li.fast-order-error').html('неверный формат номера телефона');
  321.                         }
  322.                     }
  323.                     else
  324.                     {
  325.                         variation.complete = 0;
  326.                        
  327.                         $('ul.fast-order-customer-form li input[name ="email"]').css('border','1px solid red');
  328.                         $(').keyup(
  329.                function()
  330.                {
  331.                    var phone = $(this).val().replace(/^0(.*)/, ' формат email');    
  332.                     }
  333.                 }
  334.             }
  335.            
  336.             return variation;
  337.            
  338.         },
  339.         init:function()
  340.         {
  341.             var self = this;
  342.            
  343.             var fastOrderModal = new CustomModal();
  344.             fastOrderModal.init({
  345.                 control:'ul.product-price li.fast-order',
  346.                 modal:'div.fast-order-modal'
  347.             });
  348.            
  349.             $('ul.fast-order-customer-form li input[name ="phone"]').key//                         console.log(JSON.stringify(checkoutResult.req));
  350. ne = $(this).val().replace(        , '').replace($(fa, '');
  351.                     $(this).val(phone);
  352.                 }
  353.             );
  354.            
  355.             $(self.DOM.control).click(
  356.                 function()
  357.                 {
  358.                     let fast_order_control = this;
  359.                     var checkoutResult = self.checkoutData();
  360.                     if (checkoutResult.complete)
  361.                     {
  362.                         checkoutResult.req.action = 'fastorderset';
  363.                         checkoutResult.req.id_product = $(this).data('id_product');
  364. //                         console.log(JSON.stringify(checkoutResult.req));
  365.                        
  366.                         $(fast_order_control).hide();
  367.                        
  368.                         $.ajax(
  369.                         {
  370.                             url: AJAX_URL,
  371.                             type: 'POST',
  372.                             data: JSON.stringify(checkoutResult.req)
  373.                         }).
  374.                         done(
  375.                             function(response)
  376.                             {
  377.                                 console.log(response);
  378.                                 var res = JSON.parse(response);
  379.                                 $('li.fast-order-error').show();
  380.                                 if (res.status)
  381.                                 {
  382.                                     $('li.fast-order-product-image').hide();
  383.                                     $('li.fast-order-product-variations').hide();
  384.                                     $('li.fast-order-customer-form li').hide();
  385.                                    
  386.                                     $('li.fast-order-error').show();
  387.                                     $('li.fast-order-error').css('font-size', '24px');
  388.                                     $(',
  389.                                                '»РµРЅРЅСЏ оформлено успішно!');
  390.                                    
  391.                                     try
  392.                                     {
  393.                                         gtag("event", "purchase", res.transaction);
  394.                                         gtag('event', 'conversion',
  395.                                             {
  396.                                                 'send_to': 'AW-673092592/TZxZCLSS3PMCEPCn-sAC',
  397.                                                 'value': res.transaction.value,
  398.                                             // что-то пошло РЅРµ так
  399.                                 'transaction_id': res.transaction.transaction_id
  400.                                             });
  401.                                        
  402.                                     }
  403.                                     catch(e)
  404.                                     {
  405.                                         console.log(e);
  406.                                     }
  407.                                    
  408.                                     setTimeout(() => {location.href = res.redirect_url}, 4000);
  409.                                 }
  410.                                 else
  411.                                 {
  412.                                     // что-то пошло РЅРµ так
  413.                                     $('li.fast-order-error').html(res.message);
  414.                                     if (res.action)
  415.                                     {
  416.                                         self[res.action]();
  417.                                     }
  418.                                    
  419.                                     if (res.focus)
  420.                                     {
  421.                                         $('ul.fast-order-customer-form li input[name ="'+res.focus+'"]').css('border','1px solid red');
  422.                                         $('ul.fast-order-customer-form li input[name ="'+res.focus+'"]').focus();
  423.                                     }
  424.                                 }
  425.                             }
  426.                         ).
  427.                         always(
  428.                             function()
  429.                             {
  430.                                 $(fast_order_control).show();
  431.                             }
  432.                         );            
  433.                     }
  434.                     return false;
  435.                 }
  436.             );
  437.         }
  438.     }
  439. }
  440.  
  441.  
  442.  
  443. var FastOrderForm = function()
  444. {
  445.     return {
  446.         DOM:{
  447.             control:'a.fast-order',
  448.             modal:'div.product-variation-modal'
  449.         },
  450.         init:function(obj)
  451.         {
  452.             var self = this;
  453.             $(self.DOM.control).click(
  454.                 function()
  455.                 {
  456.                     $(self.DOM.modal).find('li.content').html('');
  457.                     $(self.DOM.modal).find('li.loading').show();
  458.                     $(self.DOM.modal).modal();
  459.                    
  460.                    
  461.                     var id_product = $(this).data('id_product');
  462.                    
  463.                     console.log($(this).data('id_product'));
  464.                      $.ajax(
  465.                         {
  466.                             url: AJAX_URL,
  467.                             type: 'POST',
  468.                             data: JSON.stringify({
  469.                                 id_product:id_product,
  470.                                 action:'fastorderform'
  471.                             })
  472.                         }
  473.                     )
  474.                     .done(
  475.                         function(response)
  476.                         {
  477.                             var res = JSON.parse(response);
  478.                             console.log(res.result);
  479.                             console.log(res.data);
  480.                             if (res.data)
  481.  // здесь надо закрыть модальное РѕРєРЅРѕ
  482. es.data)
  483.                                 {
  484.                                     $(self.DOM.modal).find('li.conte//                     console.log($(this).attr('href'));
  485.  $(self.DOM.modal).find('li.loading').hide();
  486.                                     var setFastOrder = new FastOrder();
  487.                                     setFastOrder.init({modal:self.DOM.modal});
  488.                                 }
  489.                                 else
  490.                                 {
  491.    

Raw Paste

Login or Register to edit or fork this paste. It's free.