Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/cartforge.co/pub/static/frontend/Magento/luma/en_US/Magento_Paypal/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/cartforge.co/pub/static/frontend/Magento/luma/en_US/Magento_Paypal/js/order-review.js
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

define([
    'jquery',
    'Magento_Ui/js/modal/alert',
    'jquery-ui-modules/widget',
    'mage/translate',
    'mage/mage',
    'mage/validation'
], function ($, alert) {
    'use strict';

    $.widget('mage.orderReview', {
        options: {
            orderReviewSubmitSelector: '#review-button',
            shippingSelector: '#shipping_method',
            shippingSubmitFormSelector: null,
            updateOrderSelector: '#update-order',
            billingAsShippingSelector: '#billing\\:as_shipping',
            updateContainerSelector: '#details-reload',
            waitLoadingContainer: '#review-please-wait',
            shippingMethodContainer: '#shipping-method-container',
            agreementSelector: 'div.checkout-agreements input',
            isAjax: false,
            shippingMethodUpdateUrl: null,
            updateOrderSubmitUrl: null,
            canEditShippingMethod: false
        },

        /**
         * Widget instance properties
         */
        triggerPropertyChange: true,
        isShippingSubmitForm: false,

        /** @inheritdoc */
        _create: function () {
            var isDisable;

            //change handler for ajaxEnabled
            if (this.options.isAjax) {
                this._submitOrder = this._ajaxSubmitOrder;
            }

            this.element.on('click', this.options.orderReviewSubmitSelector, $.proxy(this._submitOrder, this))
                .on('click', this.options.billingAsShippingSelector, $.proxy(this._shippingTobilling, this))
                .on('change',
                    this.options.shippingSelector,
                    $.proxy(this._submitUpdateOrder,
                        this,
                        this.options.updateOrderSubmitUrl,
                        this.options.updateContainerSelector
                    )
                ).find(this.options.updateOrderSelector).on('click', $.proxy(this._updateOrderHandler, this)).end();
            this._shippingTobilling();

            if ($(this.options.shippingSubmitFormSelector).length && this.options.canEditShippingMethod) {
                this.isShippingSubmitForm = true;
                $(this.options.shippingSubmitFormSelector)
                    .on('change',
                        this.options.shippingSelector,
                        $.proxy(
                            this._submitUpdateOrder,
                            this,
                            $(this.options.shippingSubmitFormSelector).prop('action'),
                            this.options.updateContainerSelector
                        )
                    );
                this._updateOrderSubmit(!$(this.options.shippingSubmitFormSelector)
                    .find(this.options.shippingSelector).val());
            } else {
                isDisable = this.isShippingSubmitForm && this.element.find(this.options.shippingSelector).val();
                this.element
                    .on('input propertychange', ':input[name]',
                        $.proxy(this._updateOrderSubmit, this, isDisable, this._onShippingChange)
                    ).find('select').not(this.options.shippingSelector).on('change', this._propertyChange);
                this._updateOrderSubmit(isDisable);
            }
        },

        /**
         * show ajax loader
         */
        _ajaxBeforeSend: function () {
            this.element.find(this.options.waitLoadingContainer).show();
        },

        /**
         * hide ajax loader
         */
        _ajaxComplete: function () {
            this.element.find(this.options.waitLoadingContainer).hide();
        },

        /**
         * trigger propertychange for input type select
         */
        _propertyChange: function () {
            $(this).trigger('propertychange');
        },

        /**
         * trigger change for the update of shipping methods from server
         */
        _updateOrderHandler: function () {
            $(this.options.shippingSelector).trigger('change');
        },

        /**
         * Attempt to submit order
         */
        _submitOrder: function () {
            if (this._validateForm()) {
                this.element.find(this.options.updateOrderSelector).fadeTo(0, 0.5)
                    .end().find(this.options.waitLoadingContainer).show()
                    .end().trigger('submit');
                this._updateOrderSubmit(true);
            }
        },

        /**
         * Attempt to ajax submit order
         */
        _ajaxSubmitOrder: function () {
            if (this.element.find(this.options.waitLoadingContainer).is(':visible')) {
                return false;
            }
            $.ajax({
                url: this.element.prop('action'),
                type: 'post',
                context: this,
                data: {
                    isAjax: 1
                },
                dataType: 'json',
                beforeSend: this._ajaxBeforeSend,
                complete: this._ajaxComplete,

                /** @inheritdoc */
                success: function (response) {
                    var msg;

                    if (typeof response === 'object' && !$.isEmptyObject(response)) {
                        if (response['error_messages']) {
                            this._ajaxComplete();
                            msg = response['error_messages'];

                            /* eslint-disable max-depth */
                            if (msg) {
                                if (Array.isArray(msg)) {
                                    msg = msg.join('\n');
                                }
                            }

                            /* eslint-enablemax-depth */
                            alert({
                                content: msg
                            });

                            return false;
                        }

                        if (response.redirect) {
                            $.mage.redirect(response.redirect);

                            return false;
                        } else if (response.success) {
                            $.mage.redirect(this.options.successUrl);

                            return false;
                        }
                        this._ajaxComplete();
                        alert({
                            content: $.mage.__('Sorry, something went wrong.')
                        });
                    }
                },

                /** @inheritdoc */
                error: function () {
                    alert({
                        content: $.mage.__('Sorry, something went wrong. Please try again later.')
                    });
                    this._ajaxComplete();
                }
            });
        },

        /**
         * Validate Order form
         */
        _validateForm: function () {
            this.element.find(this.options.agreementSelector).off('change').on('change', $.proxy(function () {
                var isValid = this._validateForm();

                this._updateOrderSubmit(!isValid);
            }, this));

            if (this.element.data('mageValidation')) {
                return this.element.validation().valid();
            }

            return true;
        },

        /**
         * Check/Set whether order can be submitted
         * Also disables form submission element, if any
         * @param {*} shouldDisable - whether should prevent order submission explicitly
         * @param {Function} [fn] - function for shipping change handler
         * @param {*} [*] - if true the property change will be set to true
         */
        _updateOrderSubmit: function (shouldDisable, fn) {
            this._toggleButton(this.options.orderReviewSubmitSelector, shouldDisable);

            if (typeof fn === 'function') {
                fn.call(this);
            }
        },

        /**
         * Enable/Disable button
         * @param {jQuery} button - button selector to be toggled
         * @param {*} disable - boolean for toggling
         */
        _toggleButton: function (button, disable) {
            $(button).prop({
                'disabled': disable
            }).toggleClass('no-checkout', disable).fadeTo(0, disable ? 0.5 : 1);
        },

        /**
         * Copy element value from shipping to billing address
         * @param {jQuery.Event} e - optional
         */
        _shippingTobilling: function (e) {
            var isChecked, opacity;

            if (this.options.shippingSubmitFormSelector) {
                return false;
            }
            isChecked = $(this.options.billingAsShippingSelector).is(':checked');
            opacity = isChecked ? 0.5 : 1;

            if (isChecked) {
                this.element.validation('clearError', ':input[name^="billing"]');
            }
            $(':input[name^="shipping"]', this.element).each($.proxy(function (key, value) {
                var fieldObj = $(value.id.replace('shipping:', '#billing\\:'));

                if (isChecked) {
                    fieldObj = fieldObj.val($(value).val());
                }
                fieldObj.prop({
                    'readonly': isChecked,
                    'disabled': isChecked
                }).fadeTo(0, opacity);

                if (fieldObj.is('select')) {
                    this.triggerPropertyChange = false;
                    fieldObj.trigger('change');
                }
            }, this));

            if (isChecked || e) {
                this._updateOrderSubmit(true);
            }
            this.triggerPropertyChange = true;
        },

        /**
         * Dispatch an ajax request of Update Order submission
         * @param {*} url - url where to submit shipping method
         * @param {*} resultId - id of element to be updated
         */
        _submitUpdateOrder: function (url, resultId) {
            var isChecked, formData, callBackResponseHandler, shippingMethod;

            if (this.element.find(this.options.waitLoadingContainer).is(':visible')) {
                return false;
            }
            isChecked = $(this.options.billingAsShippingSelector).is(':checked');
            formData = null;
            callBackResponseHandler = null;
            let val = $(this.options.shippingSelector).val();

            shippingMethod = val.trim();
            this._shippingTobilling();

            if (url && resultId && shippingMethod) {
                this._updateOrderSubmit(true);
                this._toggleButton(this.options.updateOrderSelector, true);

                // form data and callBack updated based on the shipping Form element
                if (this.isShippingSubmitForm) {
                    formData = $(this.options.shippingSubmitFormSelector).serialize() + '&isAjax=true';

                    /**
                     * @param {Object} response
                     */
                    callBackResponseHandler = function (response) {
                        $(resultId).html(response);
                        this._updateOrderSubmit(false);
                        this._ajaxComplete();
                    };
                } else {
                    formData = this.element.serialize() + '&isAjax=true';

                    /**
                     * @param {Object} response
                     */
                    callBackResponseHandler = function (response) {
                        $(resultId).html(response);
                        this._ajaxShippingUpdate(shippingMethod);
                    };
                }

                if (isChecked) {
                    $(this.options.shippingSelect).prop('disabled', true);
                }
                $.ajax({
                    url: url,
                    type: 'post',
                    context: this,
                    beforeSend: this._ajaxBeforeSend,
                    data: formData,
                    success: callBackResponseHandler
                });
            }
        },

        /**
         * Update Shipping Methods Element from server
         * @param {*} shippingMethod
         */
        _ajaxShippingUpdate: function (shippingMethod) {
            $.ajax({
                url: this.options.shippingMethodUpdateUrl,
                data: {
                    isAjax: true,
                    'shipping_method': shippingMethod
                },
                type: 'post',
                context: this,

                /** @inheritdoc */
                success: function (response) {
                    $(this.options.shippingMethodContainer).parent().html(response);
                    this._toggleButton(this.options.updateOrderSelector, false);
                    this._updateOrderSubmit(false);
                },
                complete: this._ajaxComplete
            });
        },

        /**
         * Actions on change Shipping Address data
         */
        _onShippingChange: function () {
            let val = $(this.options.shippingSelector).val();

            if (this.triggerPropertyChange && val.trim()) {
                this.element.find(this.options.shippingSelector).hide().end()
                    .find(this.options.shippingSelector + '_update').show();
            }
        }
    });

    return $.mage.orderReview;
});

Spamworldpro Mini