Files
taome/js/admin/login.js
2020-10-07 10:37:15 +02:00

295 lines
7.7 KiB
JavaScript

$(document).ready(function() {
// Initialize events
$("#login_form").validate({
rules: {
"email":{
"email": true,
"required": true
},
"passwd": {
"required": true
}
},
submitHandler: function(form) {
doAjaxLogin($('#redirect').val());
},
// override jquery validate plugin defaults for bootstrap 3
highlight: function(element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function(element) {
$(element).closest('.form-group').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);
}
}
});
$("#forgot_password_form").validate({
rules: {
"email_forgot": {
"email": true,
"required": true
}
},
submitHandler: function(form) {
doAjaxForgot();
},
// override jquery validate plugin defaults for bootstrap 3
highlight: function(element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function(element) {
$(element).closest('.form-group').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);
}
}
});
$("#reset_password_form").validate({
rules: {
"reset_passwd": {
"required": true
},
"reset_confirm": {
"required": true
}
},
submitHandler: function(form) {
doAjaxReset();
},
// override jquery validate plugin defaults for bootstrap 3
highlight: function(element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function(element) {
$(element).closest('.form-group').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);
}
}
});
$('.show-forgot-password').on('click',function(e) {
e.preventDefault();
displayForgotPassword();
});
$('.show-login-form').on('click',function(e) {
e.preventDefault();
displayLogin();
});
if ($('.front_reset')) $('#reset_passwd').focus();
else $('#email').focus();
//Tab-index loop
$('form').each(function(){
var list = $(this).find('*[tabindex]').sort(function(a,b){ return a.tabIndex < b.tabIndex ? -1 : 1; }),
first = list.first();
list.last().on('keydown', function(e){
if( e.keyCode === 9 ) {
first.focus();
return false;
}
});
});
//Preload images
$('<img/>')[0].src = img_dir+'preston-login@2x.png';
$('<img/>')[0].src = img_dir+'preston-login-wink@2x.png';
$('button[name="submitLogin"]').on('mouseover', function() {
$('#shop-img img').attr('src', img_dir+'preston-login-wink@2x.png');
});
$('button[name="submitLogin"]').on('mouseout', function() {
$('#shop-img img').attr('src', img_dir+'preston-login@2x.png');
});
});
//todo: ladda init
var l = new Object();
function feedbackSubmit() {
l = Ladda.create( document.querySelector( 'button[type=submit]' ) );
}
function displayForgotPassword() {
$('#error').hide();
$("#login").find('.flip-container').toggleClass("flip");
setTimeout(function(){$('.front').hide()},200);
setTimeout(function(){$('.back').show();$('#email_forgot').select();},200);
return false;
}
function displayForgotConfirm() {
$('#error').hide();
$("#login").find('.flip-container').toggleClass("flip");
setTimeout(function(){$('.back').hide()},200);
setTimeout(function(){$('.forgot_confirm').show()},300);
return false;
}
function displayResetPassword() {
$('#error').hide();
$("#login").find('.flip-container').toggleClass("flip");
setTimeout(function(){$('.front').hide()},200);
setTimeout(function(){$('.front_reset').show();$('#reset_passwd').select();},200);
return false;
}
function displayResetConfirm() {
$('#error').hide();
$('.show-forgot-password').hide();
$("#login").find('.flip-container').toggleClass("flip");
setTimeout(function(){$('.front').hide()},200);
setTimeout(function(){$('.back_reset').show()},200);
setTimeout(function(){displayLogin()},5000);
return false;
}
function displayLogin() {
$('#error').hide();
$("#login").find('.flip-container').toggleClass("flip");
setTimeout(function(){$('.back').hide()},200);
setTimeout(function(){$('.front_login').show();$('#email').select();},200);
return false;
}
/**
* Check user credentials
*
* @param string redirect name of the controller to redirect to after login (or null)
*/
function doAjaxLogin(redirect) {
$('#error').hide();
$('#login_form').fadeIn('slow', function() {
$.ajax({
type: "POST",
headers: { "cache-control": "no-cache" },
url: "index.php" + '?rand=' + new Date().getTime(),
async: true,
dataType: "json",
data: {
ajax: "1",
token: "",
controller: "AdminLogin",
submitLogin: "1",
passwd: $('#passwd').val(),
email: $('#email').val(),
redirect: redirect,
stay_logged_in: $('#stay_logged_in:checked').val()
},
beforeSend: function() {
feedbackSubmit();
l.start();
},
success: function(jsonData) {
if (jsonData.hasErrors) {
displayErrors(jsonData.errors);
l.stop();
} else {
window.location.assign(jsonData.redirect);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
l.stop();
$('#error').html('<h3>TECHNICAL ERROR:</h3><p>Details: Error thrown: ' + XMLHttpRequest + '</p><p>Text status: ' + textStatus + '</p>').removeClass('hide');
$('#login_form').fadeOut('slow');
}
});
});
}
function doAjaxForgot() {
$('#error').hide();
$('#forgot_password_form').fadeIn('slow', function() {
$.ajax({
type: 'POST',
headers: {'cache-control': 'no-cache'},
url: 'ajax-tab.php' + '?rand=' + new Date().getTime(),
async: true,
dataType: 'json',
data: {
ajax: 1,
controller: 'AdminLogin',
submitForgot: 1,
email_forgot: $('#email_forgot').val()
},
success: function(jsonData) {
if (jsonData.hasErrors) {
displayErrors(jsonData.errors);
} else {
$('#forgot_password_form').hide();
$('.show-forgot-password').hide();
displayForgotConfirm();
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#error').html(XMLHttpRequest.responseText).removeClass('hide').fadeIn('slow');
}
});
});
}
function doAjaxReset() {
$('#error').hide();
$('#reset_password_form').fadeIn('slow', function() {
$.ajax({
type: 'POST',
headers: {'cache-control': 'no-cache'},
url: 'ajax-tab.php' + '?rand=' + new Date().getTime(),
async: true,
dataType: 'json',
data: {
ajax: 1,
controller: 'AdminLogin',
submitReset: 1,
reset_token: $('#reset_token').val(),
id_employee: $('#id_employee').val(),
reset_email: $('#reset_email').val(),
reset_passwd: $('#reset_passwd').val(),
reset_confirm: $('#reset_confirm').val()
},
success: function(jsonData) {
if (jsonData.hasErrors) {
displayErrors(jsonData.errors);
} else {
$('#reset_password_form').hide();
$('.show-forgot-password').hide();
displayResetConfirm();
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#error').html(XMLHttpRequest.responseText).removeClass('hide').fadeIn('slow');
}
});
});
}
function displayErrors(errors) {
str_errors = '<p><strong>' + (errors.length > 1 ? more_errors : one_error) + '</strong></p><ol>';
for (var error in errors) //IE6 bug fix
if (error != 'indexOf') str_errors += '<li>' + errors[error] + '</li>';
$('#error').html(str_errors + '</ol>').removeClass('hide').fadeIn('slow');
}