/**
* 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
*/