Viewing File: /usr/local/cpanel/whostmgr/docroot/cgi/ncssl/source/public/static/js/activation.js

(function ($) {
    $(function () {
        const $ncssl = $('#ncssl');
        const $domainSelect = $ncssl.find('[data-activation-form] [data-domain-select]');
        const $hiddenDomain = $ncssl.find('[data-activation-form] [data-domain-hidden-select]');
        const hideClassName = 'hide';

        $ncssl.find('[data-activation-form] [data-do-ssl-replace]').click(function () {
            $ncssl.find('[data-activation-fields]').removeClass(hideClassName);
            $ncssl.find('[data-cert-replace-info]').removeClass(hideClassName);
            $ncssl.find('[data-cert-replace-error]').addClass(hideClassName);

            return false;
        });

        function checkCertReplace() {
            if ($domainSelect.length === 0 && $hiddenDomain.length === 0) {
                return;
            }

            const $activationFields = $ncssl.find('[data-activation-form] [data-activation-fields]');
            const $errBlock = $ncssl.find('[data-cert-replace-error]');
            const $infoBlock = $ncssl.find('[data-cert-replace-info]');

            $errBlock.addClass(hideClassName);
            $infoBlock.addClass(hideClassName);

            let domainSelectValue = $domainSelect.length ? $domainSelect.val() : $hiddenDomain.val();

            if (domainSelectValue === '') {
                $activationFields.addClass(hideClassName);
                return;
            }

            if (domainSelectValue.substring(0, 4) == 'www.') {
                domainSelectValue = domainSelectValue.substring(4);
            }

            $domainSelect.attr('disabled', true);

            $.get(
                `index.live.php?p=/certificate/is_installed&domain=${domainSelectValue}`,
                function(data) {
                    if (data.status === 'ok') {
                        if (data.certificateId) {
                            $errBlock.removeClass(hideClassName);
                            $errBlock.find('[data-download-cert]').attr('data-id', data.certificateId);
                            $activationFields.addClass(hideClassName);
                        } else {
                            $activationFields.removeClass(hideClassName);
                        }
                    } else if (data.status === 'unauthorized') {
                        window.location.href = './index.live.php';
                    } else {
                        alert('Oops, something went wrong. Please reload the page');
                    }
                }
            ).fail(function(er) {
                    $activationFields.addClass(hideClassName);
                    alert('Oh snap! Something went wrong, please refresh page and try again or contact support.');
                }
            ).always(function () {
                $domainSelect.removeAttr('disabled');
            })
        }

        checkCertReplace();

        if ($domainSelect.length > 0) {
            $domainSelect.change(checkCertReplace);
        }

        // override jquery validate plugin defaults for twitter bootstrap
        $.validator.setDefaults({
            highlight: function (element) {
                $(element).parent().addClass('has-error');
            },
            unhighlight: function (element) {
                $(element).parent().removeClass('has-error');
            },
            errorElement: 'span',
            errorClass: 'help-block',
            errorPlacement: function (error, element) {
                if (element.parent('.input-group').length) {
                    error.insertAfter(element.parent());
                } else {
                    error.insertAfter(element);
                }
            }
        });

        $.validator.addMethod(
            'emailAt',
            function (value, element, param) {
                return this.optional(element) || /^[^@]*@[^@]*$/.test(value);
            },
            'Email should contain single @'
        );

        $.validator.addMethod(
            'emailDomain',
            function (value, element, param) {
                return this.optional(element) || /^.*@[a-z0-9_][-a-z0-9_]*(?:\.[-a-z0-9_]+)*\.(?:[a-z][a-z]+)\s*$/i.test(value);
            },
            'Domain after @ is invalid'
        );

        $.validator.addMethod(
            'emailUsername',
            function (value, element, param) {
                return this.optional(element) || /^\s*[-a-z0-9~!$%^&*_=+}{'?]+(?:\.[-a-z0-9~!$%^&*_=+}{'?]+)*@.*$/i.test(value);
            },
            'Username before @ is invalid'
        );

        //Form validation rules
        const validator = $ncssl.find('[data-activation-form]').validate({
            debug: false,
            rules: {
                'data[email]': {
                    required: true,
                    emailAt: true,
                    emailDomain: true,
                    emailUsername: true
                }
            },
            messages: {},
            submitHandler: function (form) {
                const $submitBtn = $ncssl.find('[data-submit]');
                const loadingText = $submitBtn.attr('data-ncssl-loading');
                $submitBtn.attr('disabled', true);
                $submitBtn.text(loadingText);

                form.submit();
            },
            onfocusout: function(elm, event) {
                const $elm = $(elm);
                if (elm.nodeName.toLowerCase() === 'input'
                    && $elm.not(':checkbox')
                    && $elm.not(':radio')
                ) {
                    let value = $elm.val();
                    value = value.trim()
                        .replace(/[\s]+/g, ' ')
                        .replace(/[']+/g, '\'')
                        .replace(/[\.]+/g, '.')
                        .replace(/[,]+/g, ',')
                        .replace(/[&]+/g, '&')
                        .replace(/[\-\u2013\u2014]+/g, '-'); // \u2013 fits – and \u2014 fits —
                    $elm.val(value);

                    validator.element(elm);
                }
            }
        });
    })
})(jQuery);
Back to Directory File Manager