/** * Start user register widget script */ (function ($, elementor) { 'use strict'; var widgetUserRegistrationForm = { registraitonFormSubmit: function (_this, $scope) { bdtUIkit.notification({ message: '
' + $(_this).find('.bdt_spinner_message').val(), timeout: false }); $(_this).find('button.bdt-button').attr("disabled", true); var redirect_url = $(_this).find('.redirect_after_register').val(); $.ajax({ type: 'POST', dataType: 'json', url: element_pack_ajax_login_config.ajaxurl, data: { 'action': 'element_pack_ajax_register', //calls wp_ajax_nopriv_element_pack_ajax_register 'first_name': $(_this).find('.first_name').val(), 'last_name': $(_this).find('.last_name').val(), 'email': $(_this).find('.user_email').val(), 'password': $(_this).find('.user_password').val(), 'is_password_required': $(_this).find('.is_password_required').val(), 'g-recaptcha-response': $(_this).find('#g-recaptcha-response').val(), 'widget_id': $scope.data('id'), 'page_id': $(_this).find('.page_id').val(), 'security': $(_this).find('#bdt-user-register-sc').val(), 'lang': element_pack_ajax_login_config.language }, success: function (data) { var recaptcha_field = _this.find('.element-pack-google-recaptcha'); if (recaptcha_field.length > 0) { var recaptcha_id = recaptcha_field.attr('data-widgetid'); grecaptcha.reset(recaptcha_id); grecaptcha.execute(recaptcha_id); } if (data.registered === true) { bdtUIkit.notification.closeAll(); bdtUIkit.notification({ message: '
' + data.message + '
', status: 'primary' }); if (redirect_url) { document.location.href = redirect_url; } } else { bdtUIkit.notification.closeAll(); bdtUIkit.notification({ message: '
' + data.message + '
', status: 'warning' }); } $(_this).find('button.bdt-button').attr("disabled", false); }, }); }, load_recaptcha: function () { var reCaptchaFields = $('.element-pack-google-recaptcha'), widgetID; if (reCaptchaFields.length > 0) { reCaptchaFields.each(function () { var self = $(this), attrWidget = self.attr('data-widgetid'); // alert(self.data('sitekey')) // Avoid re-rendering as it's throwing API error if ((typeof attrWidget !== typeof undefined && attrWidget !== false)) { return; } else { widgetID = grecaptcha.render($(this).attr('id'), { sitekey: self.data('sitekey'), callback: function (response) { if (response !== '') { self.append(jQuery('', { type: 'hidden', value: response, class: 'g-recaptcha-response' })); } } }); self.attr('data-widgetid', widgetID); } }); } } } window.onLoadElementPackRegisterCaptcha = widgetUserRegistrationForm.load_recaptcha; var widgetUserRegisterForm = function ($scope, $) { var register_form = $scope.find('.bdt-user-register-widget'), recaptcha_field = $scope.find('.element-pack-google-recaptcha'), $userRegister = $scope.find('.bdt-user-register'); // Perform AJAX register on form submit register_form.on('submit', function (e) { e.preventDefault(); widgetUserRegistrationForm.registraitonFormSubmit(register_form, $scope) }); if (elementorFrontend.isEditMode() && undefined === recaptcha_field.attr('data-widgetid')) { onLoadElementPackRegisterCaptcha(); } if (recaptcha_field.length > 0) { grecaptcha.ready(function () { var recaptcha_id = recaptcha_field.attr('data-widgetid'); grecaptcha.execute(recaptcha_id); }); } var $settings = $userRegister.data('settings'); if (!$settings || typeof $settings.passStrength === "undefined") { return; } var percentage = 0, $selector = $('#' + $settings.id), $progressBar = $('#' + $settings.id).find('.bdt-progress-bar'); var passStrength = { progress: function ($value = 0) { if ($value <= 100) { $($progressBar).css({ 'width': $value + '%' }); } }, formula: function (input, length) { if (length < 6) { percentage = 0; $($progressBar).css('background', '#ff4d4d'); //red } else if (length < 8) { percentage = 10; $($progressBar).css('background', '#ffff1a'); //yellow } else if (input.match(/0|1|2|3|4|5|6|7|8|9/) == null && input.match(/[A-Z]/) == null) { percentage = 40; $($progressBar).css('background', '#ffc14d'); //orange }else{ if (length < 12){ percentage = 50; $($progressBar).css('background', '#1aff1a'); //green }else{ percentage = 60; $($progressBar).css('background', '#1aff1a'); //green } } //Lowercase Words only if ((input.match(/[a-z]/) != null)) { percentage += 10; } //Uppercase Words only if ((input.match(/[A-Z]/) != null)) { percentage += 10; } //Digits only if ((input.match(/0|1|2|3|4|5|6|7|8|9/) != null)) { percentage += 10; } //Special characters if ((input.match(/\W/) != null) && (input.match(/\D/) != null)) { percentage += 10; } return percentage; }, forceStrongPass: function (result) { if (result >= 70) { $($selector).find('.elementor-field-type-submit .bdt-button').prop('disabled', false); } else { $($selector).find('.elementor-field-type-submit .bdt-button').prop('disabled', true); } }, init: function () { $scope.find('.user_password').keyup(function () { var input = $(this).val(), length = input.length; let result = passStrength.formula(input, length); passStrength.progress(result); if (typeof $settings.forceStrongPass !== 'undefined') { passStrength.forceStrongPass(result); } }); if (typeof $settings.forceStrongPass !== 'undefined') { $($selector).find('.elementor-field-type-submit .bdt-button').prop('disabled', true); } $scope.find('.confirm_password').keyup(function () { let input = $(this).val(), length = input.length; let result = passStrength.formula(input, length); passStrength.progress(result); let pass = $scope.find('.user_password').val(); if(input !== pass){ $scope.find('.bdt-user-register-pass-res').removeClass('bdt-hidden'); $($selector).find('.elementor-field-type-submit .bdt-button').prop('disabled', true); }else{ $scope.find('.bdt-user-register-pass-res').addClass('bdt-hidden'); if (typeof $settings.forceStrongPass !== 'undefined') { passStrength.forceStrongPass(result); } } }); } } passStrength.init(); }; jQuery(window).on('elementor/frontend/init', function () { elementorFrontend.hooks.addAction('frontend/element_ready/bdt-user-register.default', widgetUserRegisterForm); elementorFrontend.hooks.addAction('frontend/element_ready/bdt-user-register.bdt-dropdown', widgetUserRegisterForm); elementorFrontend.hooks.addAction('frontend/element_ready/bdt-user-register.bdt-modal', widgetUserRegisterForm); }); }(jQuery, window.elementorFrontend)); /** * End user register widget script */