NikolayBezay

Sodastream Add to cart function + update button description.

Feb 12th, 2021 (edited)
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 4.19 KB | None | 0 0
  1. <style>
  2.    .repeater-item .element-text.repeater-item-inner[data-type="sale"] SPAN.inner-element {
  3.         color: #00aeef !important;
  4.     }
  5. </style>
  6. <script>
  7.     (function() {
  8.         function getUrlParameter(name, URL) {
  9.             name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
  10.             var regex = new RegExp("[\\?&]" + name + "=([^&#]*)");
  11.             var results = regex.exec(URL);
  12.             return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, " "));
  13.         }
  14.  
  15.         function saveCartIds(productId) {
  16.             var storedIds = adoric.Util.localStorageData('cart_ids');
  17.             if (storedIds) {
  18.                 storedIds = storedIds.split(',');
  19.                 storedIds.push(productId);
  20.             } else {
  21.                 storedIds = [];
  22.                 storedIds.push(productId);
  23.             }
  24.             adoric.Util.localStorageData('cart_ids', storedIds);
  25.         }
  26.  
  27.         function adoricAddToCart(productId) {
  28.             var data = {
  29.                 "id": productId,
  30.                 "quantity": 1
  31.             };
  32.             var xhr = new XMLHttpRequest();
  33.             xhr.withCredentials = true;
  34.             xhr.addEventListener('readystatechange', function() {
  35.                 if (this.readyState === 4) {
  36.                     saveCartIds(productId);
  37.                     console.log(this.responseText);
  38.                     window.location.reload();
  39.                 }
  40.             });
  41.             xhr.open('POST', window.location.origin + '/cart/add.js');
  42.             xhr.setRequestHeader('content-type', 'application/json');
  43.             xhr.setRequestHeader('cache-control', 'no-cache');
  44.             xhr.send(JSON.stringify(data));
  45.         }
  46.         if (window.Element && !Element.prototype.closest) {
  47.            Element.prototype.closest = function(s) {
  48.                var matches = (this.document || this.ownerDocument).querySelectorAll(s),
  49.                    i, el = this;
  50.                 do {
  51.                     i = matches.length;
  52.                     while (--i >= 0 && matches.item(i) !== el) {};
  53.                 } while ((i < 0) && (el = el.parentElement));
  54.                return el;
  55.            };
  56.        }
  57.        var currentCampaignRepeater = document.querySelector('.' + self.identifier + ' .repeater-content');
  58.        currentCampaignRepeater.addEventListener('click', function(event) {
  59.            var productItem = event.target.closest('.repeater-item');
  60.            event.preventDefault();
  61.            if (event.target.getAttribute('role') === 'button' && productItem) {
  62.                var productInformation = JSON.parse(productItem.dataset.productInfo);
  63.                var productId = getUrlParameter('variant', productInformation.link);
  64.                window.ga && window.ga('t0.send', 'event', {
  65.                    eventCategory: "Adoric - " + self.campaignTitle + '(' + self.versionTitle + ')',
  66.                    eventAction: 'click',
  67.                    eventLabel: 'Added to the cart - ' + productInformation.title,
  68.                });
  69.                event.target.innerText = 'Item added';
  70.                adoricAddToCart(productId);
  71.            }
  72.        });
  73.        setTimeout(function() {
  74.            var storedIds = adoric.Util.localStorageData('cart_ids');
  75.            var repeaterItems = document.querySelectorAll('.' + self.identifier + ' .repeater-item');
  76.            storedIds = (storedIds ? storedIds.split(',') : []);
  77.            repeaterItems.forEach(function(item) {
  78.                console.log(storedIds);
  79.                var data = JSON.parse(item.getAttribute('data-product-info'));
  80.                var sale_price = data.sale_price;
  81.                var id = getUrlParameter('variant', data.link);
  82.                if (sale_price === '') {
  83.                    item.querySelector('.element-text.repeater-item-inner[data-type="price"] SPAN.inner-element').style.textDecoration = 'none';
  84.                }
  85.                if (storedIds.some(function(storedId) {
  86.                        return storedId === id;
  87.                    })) {
  88.                    item.querySelector('A BUTTON').innerText = 'Item added';
  89.                }
  90.            });
  91.        }, 500);
  92.    })();
  93. </script>
Add Comment
Please, Sign In to add comment