?? GreyFile — Mystic File Browser

Current path: home/webdevt/www/schtroumpf.fr/modules/ets_superspeed/views/js/



?? Go up: /home/webdevt/www/schtroumpf.fr/modules/ets_superspeed/views

?? Viewing: ets_superspeed.js

/**
 * Copyright ETS Software Technology Co., Ltd
 *
 * NOTICE OF LICENSE
 *
 * This file is not open source! Each license that you purchased is only available for 1 website only.
 * If you want to use this file on more websites (or projects), you need to purchase additional licenses.
 * You are not allowed to redistribute, resell, lease, license, sub-license or offer our resources to any third party.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
 * versions in the future.
 *
 * @author ETS Software Technology Co., Ltd
 * @copyright  ETS Software Technology Co., Ltd
 * @license    Valid for 1 website (or project) for each purchase of license
 */
$(document).ready(function(){
    if($('#quantity_wanted').length && $('.product-add-to-cart').length)
    {
        setTimeout(function(){
            $.ajax({
                type: 'POST',
                url: '',
                async: true,
                cache: false,
                dataType : "json",
                data: 'ajax=1&quickview=0&action=refresh&quantity_wanted='+$('#quantity_wanted').val(),
                success: function(jsonData,textStatus,jqXHR)
                {
                    if(jsonData)
                    {
                        var addToCartBt = ".page-product:not(.modal-open) .row .product-add-to-cart, .page-product:not(.modal-open) .product-container .product-add-to-cart, .page-product:not(.modal-open) .row .js-product-add-to-cart, .page-product:not(.modal-open) .product-container .js-product-add-to-cart";
                        if(jsonData.product_add_to_cart && $(addToCartBt).length)
                        {
                            var t = $(addToCartBt).find('.add');
                            if (!(t.length <= 0)) {
                                var n = $(jsonData.product_add_to_cart).find('.add');
                                if(n.length > 0)
                                    t.replaceWith(n[0].outerHTML);
                                else
                                    t.html("");
                            }
                            t = $(addToCartBt).find('#product-availability');
                            if (!(t.length <= 0)) {
                                var p = $(jsonData.product_add_to_cart).find('#product-availability');
                                if(p.length > 0)
                                    t.replaceWith(p[0].outerHTML);
                                else
                                    t.html("");
                            }
                            t = $(addToCartBt).find('.product-minimal-quantity');
                            if (!(t.length <= 0)) {
                                var m = $(jsonData.product_add_to_cart).find('.product-minimal-quantity');
                                if(m.length > 0)
                                    t.replaceWith(m[0].outerHTML);
                                else
                                    t.html("");
                            }
                        }
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown)
                {

                }
            });
        },200);
    }
    prestashop.on('updateCart', function (){
        const currentCart = $('.elementor-element[data-widget_type="shopping-cart.default"]');
        const lightbox = currentCart.find('.elementor-cart__wrapper .elementor-lightbox');
        if(currentCart.length && lightbox.length && !lightbox.hasClass('elementor-cart--shown')){
            currentCart.find('.elementor-cart__toggle').find('a').first().trigger('click');
        }
    });
    if($('.ets_speed_dynamic_hook').length || ssIsCeInstalled)
    {
        var datas='';
        $('.ets_speed_dynamic_hook').each(function(index, domhook){
            datas = datas + '&hook_' + index + '=' + $(this).attr('data-hook')+'&module_'+index+'='+$(this).attr('data-moudule')+'&params_'+index+'='+JSON.stringify($(this).data('params'));
        });
        var url      = window.location.href;
        var indexphp = url.indexOf('?');
        var indexthang = url.indexOf('#');
        if(indexthang>=0)
            url = url.substr(0,indexthang);
        $.ajax({
            type: 'POST',
            headers: { "cache-control": "no-cache" },
            url: url,
            async: true,
            cache: false,
            dataType : "json",
            data: 'ajax=1&ets_superseed_load_content=1&ajax=1&count_datas='+$('.ets_speed_dynamic_hook').length+datas,
            success: function(jsonData,textStatus,jqXHR)
            {
                 if(jsonData)
                 {
                     renderDataAjax(jsonData);
                     if(jsonData.cart_products_count)
                     {
                         $('.cart-products-count').text(jsonData.cart_products_count);
                         prestashop.emit('updatedAjaxCart', {});
                     }
                     if(jsonData.creativeelements_header && $('.elementor-'+jsonData.creativeelements_header.uid).length)
                     {
                         $('.elementor-'+jsonData.creativeelements_header.uid).replaceWith(jsonData.creativeelements_header.content);
                         if(typeof ceFrontend != 'undefined'){
                             ceFrontend.init();
                         }
                     }
                    if($(window).width()<768)
                    {
                        $("*[id^='_desktop_']").each(function(t, e){
                             var n = $("#" + e.id.replace("_desktop_", "_mobile_"));
                             if($(this).html().trim()!='' && n.length)
                                n.html($(this).html());
                        });
                    }
                    $(document).trigger("hooksLoaded");
                 }

            },
            error: function(XMLHttpRequest, textStatus, errorThrown)
            {

            }
        });
    }
});
function ets_superspeed_getCeCartHandler(){
    var ShoppingCart = elementorModules.frontend.handlers.Base.extend({
        getDefaultSettings: function getDefaultSettings() {
            return {
                selectors: {
                    container: '.elementor-cart__container',
                    toggle: '.elementor-cart__toggle .elementor-button',
                    closeButton: '.elementor-cart__close-button'
                },
                classes: {
                    isShown: 'elementor-cart--shown',
                    lightbox: 'elementor-lightbox',
                    isHidden: 'elementor-cart-hidden'
                }
            };
        },
        getDefaultElements: function getDefaultElements() {
            var selectors = this.getSettings('selectors'),
                elements = {};

            elements.$container = this.$element.find(selectors.container);
            elements.$toggle = this.$element.find(selectors.toggle);
            elements.$closeButton = this.$element.find(selectors.closeButton);

            return elements;
        },

        bindEvents: function bindEvents() {
            var self = this,
                $ = jQuery,
                $container = self.elements.$container,
                $closeButton = self.elements.$closeButton,
                classes = this.getSettings('classes');

            // Activate topbar mode on click
            self.elements.$toggle.on('click', function (event) {
                if (!self.elements.$toggle.hasClass(classes.isHidden)) {
                    event.preventDefault();
                    $container.toggleClass(classes.isShown);
                }
            });

            // Deactivate topbar mode on click or on esc.
            $container.on('click', function (event) {
                if ($container.hasClass(classes.isShown) && $container[0] === event.target) {
                    $container.removeClass(classes.isShown);
                }
            });

            $closeButton.on('click', function () {
                $container.removeClass(classes.isShown);
            });

            ceFrontend.elements.$document.keyup(function (event) {
                var ESC_KEY = 27;

                if (ESC_KEY === event.keyCode) {
                    if ($container.hasClass(classes.isShown)) {
                        $container.click();
                    }
                }
            });

            $container.on('click', '.elementor-cart__product-remove a', function (event) {
                var dataset = $(this).data();
                dataset.linkAction = 'delete-from-cart';

                $(this).closest('.elementor-cart__product').addClass('ce-disabled');

                event.preventDefault();

                $.ajax({
                    url: this.href,
                    method: 'POST',
                    dataType: 'json',
                    data: {
                        ajax: 1,
                        action: 'update',
                    },
                }).then(function (resp) {
                    prestashop.emit('updateCart', {
                        reason: dataset,
                        resp: resp,
                    });
                }).fail(function (resp) {
                    prestashop.emit('handleError', {
                        eventType: 'updateProductInCart',
                        resp: resp,
                        cartAction: dataset.linkAction,
                    });
                });
            });

            prestashop.on('updateCart', function(data) {
                if (!data || !data.resp || !data.resp.cart) {
                    return;
                }
                var cart = data.resp.cart,
                    gift = $container.find('.elementor-cart__products').data('gift'),
                    $products = $();
                // Update toggle
                self.elements.$toggle.find('.elementor-button-text')
                    .html(cart['subtotals']['products']['value'])
                ;
                self.elements.$toggle.find('.elementor-button-icon')
                    .attr('data-counter', cart['products_count'])
                    .data('counter', cart['products_count'])
                ;
                // Update products
                cart.products.forEach(function (product) {
                    var $prod = $(
                        '<div class="elementor-cart__product">' +
                        '<div class="elementor-cart__product-image"></div>' +
                        '<div class="elementor-cart__product-name">' +
                        '<div class="elementor-cart__product-attrs"></div>' +
                        '</div>' +
                        '<div class="elementor-cart__product-price"></div>' +
                        '<div class="elementor-cart__product-remove ceicon-times"></div>' +
                        '</div>'
                        ),
                        $attrs = $prod.find('.elementor-cart__product-attrs'),
                        cover = product.cover || prestashop.urls.no_picture_image;

                    if (product.embedded_attributes && product.embedded_attributes.id_image) {
                        // PS 1.7.8 fix - product.cover contains wrong image
                        var i, id_cover = product.embedded_attributes.id_image.split('-').pop();
                        for (i = 0; i < product.images.length; i++) {
                            if (id_cover == product.images[i].id_image) {
                                cover = product.images[i];
                                break;
                            }
                        }
                    }

                    $('<img>').appendTo($prod.find('.elementor-cart__product-image')).attr({
                        src: cover.bySize.cart_default && cover.bySize.cart_default.url || cover.small.url,
                        alt: cover.legend,
                    });
                    $('<a>').prependTo($prod.find('.elementor-cart__product-name'))
                        .attr('href', product['url'])
                        .html(product['name'])
                    ;
                    // Add product attributes
                    for (var label in product['attributes']) {
                        $('<div class="elementor-cart__product-attr">').html(
                            '<span class="elementor-cart__product-attr-label">' + label + ':</span> ' +
                            '<span class="elementor-cart__product-attr-value">' + product['attributes'][label] + '</span>'
                        ).appendTo($attrs);
                    }
                    // Add product customizations
                    product.customizations && product.customizations.forEach(function (customization) {
                        customization.fields.forEach(function (field) {
                            $('<div class="elementor-cart__product-attr">').html(
                                '<span class="elementor-cart__product-attr-label">' + field['label'] + ':</span> ' +
                                '<span class="elementor-cart__product-attr-value">' +
                                ('image' === field['type'] ? $('<img>').attr('src', field['image']['small']['url'])[0].outerHTML : field['text']) +
                                '</span>'
                            ).appendTo($attrs);
                        });
                    });
                    $prod.find('.elementor-cart__product-price').html(
                        '<span class="elementor-cart__product-quantity">' + product['quantity'] + '</span> &times; ' + (product['is_gift'] ? gift : product['price']) + ' '
                    ).append(product['has_discount'] ? $('<del>').html(product['regular_price']) : []);

                    $('<a>').appendTo($prod.find('.elementor-cart__product-remove')).attr({
                        href: product['remove_from_cart_url'],
                        rel: 'nofollow',
                        'data-id-product': product['id_product'],
                        'data-id-product-attribute': product['id_product_attribute'],
                        'data-id-customization': product['id_customization'],
                    }).data({
                        'idProduct': product['id_product'],
                        'idProductAttribute': product['id_product_attribute'],
                        'idCustomization': product['id_customization'],
                    });
                    $products.push($prod[0]);
                });
                // Update cart
                $container.find('.elementor-cart__products')
                    .empty()
                    .append($products)
                ;
                $container.find('.elementor-cart__empty-message')
                    .toggleClass('elementor-hidden', !!cart['products_count'])
                ;
                $container.find('.elementor-cart__summary').html(
                    '<div class="elementor-cart__summary-label">' + cart['summary_string'] + '</div>' +
                    '<div class="elementor-cart__summary-value">' + cart['subtotals']['products']['value'] + '</div>' +
                    '<span class="elementor-cart__summary-label">' + cart['subtotals']['shipping']['label'] + '</span>' +
                    '<span class="elementor-cart__summary-value">' + cart['subtotals']['shipping']['value'] + '</span>' +
                    '<strong class="elementor-cart__summary-label">' + cart['totals']['total']['label'] + '</strong>' +
                    '<strong class="elementor-cart__summary-value">' + cart['totals']['total']['value'] + '</strong>'
                );
                $container.find('.elementor-alert-warning')
                    .toggleClass('elementor-hidden', !cart['minimalPurchaseRequired'])
                    .html('<span class="elementor-alert-description">' + cart['minimalPurchaseRequired'] + '</span>');
                ;
                $container.find('.elementor-button--checkout')
                    .toggleClass('ce-disabled', cart['minimalPurchaseRequired'] || !cart['products_count'])
                ;

                // Open shopping cart after updated
                if (self.getElementSettings('action_open_cart')) {
                    self.elements.$container.hasClass(classes.isShown) || self.elements.$toggle.triggerHandler('click');
                }
            });
        }
    });
    return ShoppingCart;
}


??

??