"use strict";
function _createForOfIteratorHelper(o, allowArrayLike){ var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"]; if(!it){ if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o && typeof o.length==="number"){ if(it) o=it; var i=0; var F=function F(){}; return { s: F, n: function n(){ if(i >=o.length) return { done: true }; return { done: false, value: o[i++] };}, e: function e(_e){ throw _e; }, f: F };} throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion=true, didErr=false, err; return { s: function s(){ it=it.call(o); }, n: function n(){ var step=it.next(); normalCompletion=step.done; return step; }, e: function e(_e2){ didErr=true; err=_e2; }, f: function f(){ try { if(!normalCompletion&&it["return"]!=null) it["return"](); } finally { if(didErr) throw err; }} };}
function _unsupportedIterableToArray(o, minLen){ if(!o) return; if(typeof o==="string") return _arrayLikeToArray(o, minLen); var n=Object.prototype.toString.call(o).slice(8, -1); if(n==="Object"&&o.constructor) n=o.constructor.name; if(n==="Map"||n==="Set") return Array.from(o); if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len){ if(len==null||len > arr.length) len=arr.length; for (var i=0, arr2=new Array(len); i < len; i++) arr2[i]=arr[i]; return arr2; }
(function ($){
$(document).ready(function (){
$('.masterstudy-authorization').each(function (){
var formContainer=$(this);
var initialRecoveryToken=authorization_data.session_limit_recovery||'';
var sessionNotice=formContainer.find('.masterstudy-authorization__session-notice').first();
var sessionNoticeComponent=createSessionNoticeComponent(formContainer, sessionNotice, initialRecoveryToken);
formContainer.data('session-notice-component', sessionNoticeComponent);
if(sessionNoticeComponent&&authorization_data.session_limit_active==='1'){
sessionNoticeComponent.render('', 'warning', !isEmpty(initialRecoveryToken));
}
formContainer.find('[data-id="masterstudy-authorization-restore-button"]').click(function (e){
e.preventDefault();
restore(formContainer);
});
formContainer.find('.masterstudy-authorization__form-input').keypress(function (e){
if(e.which===13){
if($(this).closest('#masterstudy-authorization-form-login').length > 0){
formContainer.find('[data-id="masterstudy-authorization-login-button"]').trigger('click');
}else if($(this).closest('#masterstudy-authorization-form-register').length > 0){
formContainer.find('[data-id="masterstudy-authorization-register-button"]').trigger('click');
}}
});
formContainer.find('.masterstudy-authorization__form-input').on('input', function (){
clearFieldError($(this), formContainer);
});
var $strengthContainer=$('.masterstudy-authorization__strength-password');
var $separators=$strengthContainer.find('.masterstudy-authorization__strength-password__separator');
if($strengthContainer.find('.masterstudy-authorization__strength-password__label').length===0){
$strengthContainer.append('<div class="masterstudy-authorization__strength-password__label"></div>');
}
var $label=$strengthContainer.find('.masterstudy-authorization__strength-password__label');
$('input[name="register_user_password"]').on('input', function (){
var password=$(this).val();
var strength=getPasswordStrength(password);
var strengthText='';
$strengthContainer.removeClass("bad normal good hard");
switch (strength){
case 1:
$strengthContainer.addClass("bad");
strengthText=masterstudy_authorization_data.bad||"Bad";
break;
case 2:
$strengthContainer.addClass("normal");
strengthText=masterstudy_authorization_data.normal||"Normal";
break;
case 3:
$strengthContainer.addClass("good");
strengthText=masterstudy_authorization_data.good||"Good";
break;
case 4:
$strengthContainer.addClass("hard");
strengthText=masterstudy_authorization_data.hard||"Hard";
break;
}
$label.text(strengthText);
$separators.removeClass('active');
$separators.each(function (index){
if(index < strength){
$(this).addClass('active');
}});
});
formContainer.find('[data-id="masterstudy-authorization-login-button"]').click(function (e){
e.preventDefault();
resetErrors(formContainer);
var login_data={
'user_login': formContainer.find('input[name="user_login"]').val(),
'user_password': formContainer.find('input[name="user_password"]').val(),
'remember': formContainer.find('#masterstudy-authorization-remember').prop('checked')
};
if(authorization_data.recaptcha_site_key&&typeof grecaptcha!=='undefined'){
grecaptcha.ready(function (){
grecaptcha.execute(authorization_data.recaptcha_site_key, {
action: 'login'
}).then(function (token){
login_data['recaptcha']=token;
login(login_data, authorization_data.only_for_instructor, formContainer);
});
});
}else{
login(login_data, authorization_data.only_for_instructor, formContainer);
}});
formContainer.find('[data-id="masterstudy-authorization-register-button"]').click(function (e){
e.preventDefault();
resetErrors(formContainer);
if(Object.keys(authorization_data.default_fields).length > 0){
for (var fieldName in authorization_data.default_fields){
if(authorization_data.default_fields.hasOwnProperty(fieldName)){
authorization_data.default_fields[fieldName].value=formContainer.find("[name=\"".concat(fieldName, "\"]")).val();
}}
}
if(authorization_data.additional_fields.length > 0){
processFields(authorization_data.additional_fields, formContainer);
}
if(authorization_data.instructor_fields.length > 0){
processFields(authorization_data.instructor_fields, formContainer);
}
var register_data={
'register_user_login': formContainer.find('input[name="register_user_login"]').val(),
'register_user_email': formContainer.find('input[name="register_user_email"]').val(),
'register_user_password': formContainer.find('input[name="register_user_password"]').val(),
'register_user_password_re': formContainer.find('input[name="register_user_password_re"]').val(),
'profile_default_fields_for_register': authorization_data.default_fields,
'become_instructor': authorization_data.only_for_instructor ? true:formContainer.find('#masterstudy-authorization-instructor').length > 0 ? formContainer.find('#masterstudy-authorization-instructor').prop('checked'):false,
'additional': authorization_data.additional_fields,
'privacy_policy': formContainer.find('#masterstudy-authorization-gdbr').length > 0 ? formContainer.find('#masterstudy-authorization-gdbr').prop('checked'):true,
'redirect_page': authorization_data.only_for_instructor ? authorization_data.user_account_page:window.location.href
};
register_data['additional_instructors']=register_data['become_instructor'] ? authorization_data.instructor_fields:[];
register_data['degree']=formContainer.find('input[name="degree"]').length > 0&&register_data['become_instructor'] ? formContainer.find('input[name="degree"]').val():'';
register_data['expertize']=formContainer.find('input[name="expertize"]').length > 0&&register_data['become_instructor'] ? formContainer.find('input[name="expertize"]').val():'';
if(authorization_data.recaptcha_site_key&&typeof grecaptcha!=='undefined'){
grecaptcha.ready(function (){
grecaptcha.execute(authorization_data.recaptcha_site_key, {
action: 'register'
}).then(function (token){
register_data['recaptcha']=token;
register(register_data, authorization_data.only_for_instructor, formContainer);
});
});
}else{
register(register_data, authorization_data.only_for_instructor, formContainer);
}});
formContainer.find('[data-id="masterstudy-authorization-instructor-confirm"]').click(function (e){
e.preventDefault();
resetErrors(formContainer);
var request_data={
'fields_type': 'default',
'fields': {
'degree': formContainer.find('input[name="degree"]').length ? formContainer.find('input[name="degree"]').val():'',
'expertize': formContainer.find('input[name="expertize"]').length ? formContainer.find('input[name="expertize"]').val():''
}};
if(authorization_data.instructor_fields.length > 0){
processFields(authorization_data.instructor_fields, formContainer);
request_data['fields']=authorization_data.instructor_fields;
request_data['fields_type']='custom';
}
instructor_request(request_data, formContainer);
});
});
});
function createSessionNoticeComponent(formContainer, sessionNotice, initialRecoveryToken){
if(!window.masterstudySessionNotice||!sessionNotice.length){
return null;
}
return window.masterstudySessionNotice.create({
notice: sessionNotice,
initialRecoveryToken: initialRecoveryToken,
getRequestData: function getRequestData(api){
return {
'user_login': formContainer.find('input[name="user_login"]').val(),
'user_password': formContainer.find('input[name="user_password"]').val(),
'recovery_token': api.getRecoveryToken()
};}});
}
function getPasswordStrength(password){
if(!password) return 0;
var length=password.length;
var hasLower=/[a-z]/.test(password);
var hasUpper=/[A-Z]/.test(password);
var hasNumber=/[0-9]/.test(password);
if(length >=8&&length <=11&&hasLower&&hasUpper&&hasNumber){
return 2;
}
if(length >=12&&length <=15&&hasLower&&hasUpper&&hasNumber){
return 3;
}
if(length >=16&&hasLower&&hasUpper&&hasNumber){
return 4;
}
return 1;
}
function processFields(fields, formContainer){
if(fields.length > 0){
var _iterator=_createForOfIteratorHelper(fields),
_step;
try {
var _loop=function _loop(){
var field=_step.value;
if(field.type==='checkbox'){
var checkedValues=[];
formContainer.find("[name=\"".concat(field.slug, "\"]")).each(function (){
if($(this).next().hasClass('masterstudy-form-builder__checkbox-wrapper_checked')){
checkedValues.push($(this).val());
}});
field.value=checkedValues.join(',');
}else if(field.type==='radio'){
formContainer.find("[name=\"".concat(field.slug, "\"]")).each(function (){
if($(this).next().hasClass('masterstudy-form-builder__radio-wrapper_checked')){
field.value=$(this).val();
}});
}else if(field.type==='file'){
field.value=field.value ? field.value:'';
}else{
field.value=formContainer.find("[name=\"".concat(field.slug, "\"]")).val();
}};
for (_iterator.s(); !(_step=_iterator.n()).done;){
_loop();
}} catch (err){
_iterator.e(err);
} finally {
_iterator.f();
}}
}
function login(login_data, redirect, formContainer){
var url=authorization_data.ajax_url + '?action=stm_lms_login&nonce=' + authorization_data.login_nonce;
formContainer.find('[data-id="masterstudy-authorization-login-button"]').addClass('masterstudy-button_loading');
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(login_data)
}).then(function (response){
if(response.ok){
return response.json();
}
throw new Error('not ok');
}).then(function (data){
formContainer.find('[data-id="masterstudy-authorization-login-button"]').removeClass('masterstudy-button_loading');
if(data.session_limit){
var sessionNoticeComponent=formContainer.data('session-notice-component');
if(sessionNoticeComponent){
sessionNoticeComponent.setRecoveryToken(data.recovery_token||sessionNoticeComponent.getRecoveryToken()).render('', 'warning', true);
}
return;
}
if(data.status==='error'){
data.errors.forEach(function (error){
var inputField=formContainer.find("input[name=\"".concat(error.field, "\"]"));
var html="<span data-error-id=\"".concat(error.id, "\" class=\"masterstudy-authorization__form-field-error\">").concat(error.text, "</span>");
if(inputField.length > 0){
inputField.parent().addClass('masterstudy-authorization__form-field_has-error');
if(inputField.parent().find("span[data-error-id=\"".concat(error.id, "\"]")).length===0){
inputField.after(html);
}}
});
return;
}
if(data.status==='success'){
redirect ? window.location=data.user_page:location.reload();
}})["catch"](function (){
formContainer.find('[data-id="masterstudy-authorization-login-button"]').removeClass('masterstudy-button_loading');
});
}
function register(register_data, redirect, formContainer){
var url=authorization_data.ajax_url + '?action=stm_lms_register&nonce=' + authorization_data.register_nonce;
formContainer.find('[data-id="masterstudy-authorization-register-button"]').addClass('masterstudy-button_loading');
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(register_data)
}).then(function (response){
if(response.ok){
return response.json();
}
throw new Error('not ok');
}).then(function (data){
formContainer.find('[data-id="masterstudy-authorization-register-button"]').removeClass('masterstudy-button_loading');
if(data.status==='error'){
error_handling(data.errors, formContainer);
return;
}
if(data.status==='success'){
if(authorization_data.email_confirmation){
open_confirmation_form(false, formContainer);
return;
}
if(authorization_data.only_for_instructor&&authorization_data.instructor_premoderation){
open_confirmation_form(true, formContainer);
return;
}
redirect ? window.location=data.user_page:location.reload();
}})["catch"](function (){
formContainer.find('[data-id="masterstudy-authorization-register-button"]').removeClass('masterstudy-button_loading');
});
}
function instructor_request(request_data, formContainer){
$.ajax({
url: authorization_data.ajax_url + '?action=stm_lms_become_instructor' + '&nonce=' + authorization_data.instructor_nonce,
method: 'POST',
data: request_data,
beforeSend: function beforeSend(){
formContainer.find('[data-id="masterstudy-authorization-instructor-confirm"]').addClass('masterstudy-button_loading');
},
success: function success(data){
formContainer.find('[data-id="masterstudy-authorization-instructor-confirm"]').removeClass('masterstudy-button_loading');
if(data.status==='error'){
error_handling(data.errors, formContainer);
return;
}
if(data.status==='success'){
if(authorization_data.only_for_instructor&&authorization_data.instructor_premoderation){
open_confirmation_form(true, formContainer);
return;
}
window.location=authorization_data.user_account_page;
}}
});
}
function resetErrors(formContainer){
formContainer.find('.masterstudy-authorization__form-field').removeClass('masterstudy-authorization__form-field_has-error');
formContainer.find('.masterstudy-authorization__form-field-error').remove();
}
function clearFieldError(inputField, formContainer){
var field=inputField.closest('.masterstudy-authorization__form-field');
if(!field.length){
return;
}
field.removeClass('masterstudy-authorization__form-field_has-error');
field.find('.masterstudy-authorization__form-field-error').remove();
formContainer.find(".masterstudy-authorization__form-field-error_".concat(inputField.attr('name'))).remove();
}
function isEmpty(value){
return typeof value==='undefined'||value===null||value==='';
}
function error_handling(errors, formContainer){
errors.forEach(function (error){
var inputField=formContainer.find("[name=\"".concat(error.field, "\"]")),
html="<span data-error-id=\"".concat(error.id, "\" class=\"masterstudy-authorization__form-field-error\">").concat(error.text, "</span>");
if(inputField.length > 0){
if(error.field==='privacy_policy'||error.field==='recaptcha'){
if(formContainer.find("span[data-error-id=\"".concat(error.id, "\"]")).length===0){
var errorElement=$(html);
errorElement.addClass("masterstudy-authorization__form-field-error_main masterstudy-authorization__form-field-error_".concat(error.field));
formContainer.find('.masterstudy-authorization__actions').before(errorElement);
}}else{
if(inputField.parent().hasClass('masterstudy-form-builder__checkbox')){
var container=inputField.closest('.masterstudy-form-builder__checkbox-group');
var block=container.find('.masterstudy-form-builder__checkbox-description');
$(container).parent().addClass('masterstudy-authorization__form-field_has-error');
if(container.find("span[data-error-id=\"".concat(error.id, "\"]")).length===0){
block.length > 0 ? $(html).insertBefore(block):inputField.closest('.masterstudy-form-builder__checkbox-group').append(html);
}}else if(inputField.closest('.masterstudy-form-builder__radio-group').length > 0){
var radioGroup=inputField.closest('.masterstudy-form-builder__radio-group');
if(radioGroup.find("span[data-error-id=\"".concat(error.id, "\"]")).length===0){
var descriptionBlock=radioGroup.find('.masterstudy-form-builder__radio-description');
if(descriptionBlock.length > 0){
descriptionBlock.before(html);
}else{
radioGroup.append(html);
}}
}else if(inputField.parent().parent().hasClass('masterstudy-form-builder-file-upload')){
var _container=inputField.closest('.masterstudy-form-builder-file-upload');
$(_container).parent().addClass('masterstudy-authorization__form-field_has-error');
if($(_container).find("span[data-error-id=\"".concat(error.id, "\"]")).length===0){
$(_container).find('.masterstudy-form-builder-file-upload__field').after(html);
}}else{
inputField.parent().addClass('masterstudy-authorization__form-field_has-error');
if(inputField.parent().find("span[data-error-id=\"".concat(error.id, "\"]")).length===0){
inputField.after(html);
}}
}}
});
var modalWrapper=formContainer.closest('.masterstudy-authorization-modal__container'),
firstErrorField=formContainer.find('.masterstudy-authorization__form-field_has-error').first();
if(firstErrorField.length > 0){
var topOffset=firstErrorField.offset().top;
if(modalWrapper.length > 0){
topOffset -=modalWrapper.offset().top;
var scrollTo=modalWrapper.scrollTop() + topOffset - 10;
modalWrapper.animate({
scrollTop: scrollTo
}, 500);
}else{
if(!isElementVisible(firstErrorField[0])){
$('html, body').animate({
scrollTop: topOffset - 10
}, 500);
}}
}}
function isElementVisible(element){
var rect=element.getBoundingClientRect();
return rect.top >=0&&rect.left >=0&&rect.bottom <=(window.innerHeight||document.documentElement.clientHeight)&&rect.right <=(window.innerWidth||document.documentElement.clientWidth);
}
function restore(formContainer){
var url=authorization_data.ajax_url + '?action=stm_lms_lost_password&nonce=' + authorization_data.restore_nonce,
user_mail=formContainer.find('input[name="restore_user_login"]').val(),
restore_data=JSON.stringify({
'restore_user_login': user_mail
});
resetErrors(formContainer);
formContainer.find('[data-id="masterstudy-authorization-restore-button"]').addClass('masterstudy-button_loading');
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: restore_data
}).then(function (response){
if(response.ok){
return response.json();
}
throw new Error('not ok');
}).then(function (data){
formContainer.find('[data-id="masterstudy-authorization-restore-button"]').removeClass('masterstudy-button_loading');
if(data.status==='error'){
data.errors.forEach(function (error){
var inputField=formContainer.find("input[name=\"".concat(error.field, "\"]"));
var html="<span data-error-id=\"".concat(error.id, "\" class=\"masterstudy-authorization__form-field-error\">").concat(error.text, "</span>");
if(inputField.length > 0){
inputField.parent().addClass('masterstudy-authorization__form-field_has-error');
if(inputField.parent().find("span[data-error-id=\"".concat(error.id, "\"]")).length===0){
inputField.after(html);
}}
});
return;
}
if(data.status==='success'){
formContainer.find('.masterstudy-authorization__send-mail-content-subtitle').text(function (index, oldText){
return oldText + user_mail;
});
formContainer.find('.masterstudy-authorization__restore').removeClass('masterstudy-authorization__restore_show');
formContainer.find('#masterstudy-authorization-restore-pass').addClass('masterstudy-authorization__send-mail_show');
formContainer.find('.masterstudy-authorization__switch').addClass('masterstudy-authorization__switch_hide');
}})["catch"](function (){
formContainer.find('[data-id="masterstudy-authorization-restore-button"]').removeClass('masterstudy-button_loading');
});
}
function open_confirmation_form(for_instructor, formContainer){
formContainer.find('.masterstudy-authorization__wrapper').addClass('masterstudy-authorization__wrapper_hide');
formContainer.find('.masterstudy-authorization__switch').addClass('masterstudy-authorization__switch_hide');
if(for_instructor){
formContainer.find('.masterstudy-authorization__instructor-confirm').addClass('masterstudy-authorization__instructor-confirm_show');
}else{
formContainer.find('#masterstudy-authorization-confirm-email').addClass('masterstudy-authorization__send-mail_show');
}}
})(jQuery);