| Server IP : 188.114.97.2 / Your IP : 104.23.197.230 Web Server : Apache/2.4.59 (Debian) System : Linux EDL-STRETCH 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 User : edlftp ( 1002) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/nicolasj/www/sms.formationlangues.be/assets/js/ |
Upload File : |
/**
* Neon Login Script
*
* Developed by Arlind Nushi - www.laborator.co
*/
var neonLogin = neonLogin || {};
;(function($, window, undefined)
{
"use strict";
$(document).ready(function()
{
neonLogin.$container = $("#form_login");
// Login Form & Validation
neonLogin.$container.validate({
rules: {
email: {
required: true ,
email : true
},
password: {
required: true
},
},
highlight: function(element){
$(element).closest('.input-group').addClass('validate-has-error');
},
unhighlight: function(element)
{
$(element).closest('.input-group').removeClass('validate-has-error');
},
submitHandler: function(ev)
{
/*
Updated on v1.1.4
Login form now processes the login data, here is the file: data/sample-login-form.php
*/
$(".login-page").addClass('logging-in'); // This will hide the login form and init the progress bar
// Hide Errors
$(".form-login-error").slideUp('fast');
// We will wait till the transition ends
setTimeout(function()
{
var random_pct = 25 + Math.round(Math.random() * 30);
// The form data are subbmitted, we can forward the progress to 70%
neonLogin.setPercentage(40 + random_pct);
// Send data to the server
$.ajax({
url: baseurl + 'index.php?login/ajax_login',
method: 'POST',
dataType: 'json',
data: {
email: $("input#email").val(),
password: $("input#password").val(),
},
error: function()
{
alert("An error occoured!");
},
success: function(response)
{
// Login status [success|invalid]
var login_status = response.login_status;
// Form is fully completed, we update the percentage
neonLogin.setPercentage(100);
// We will give some time for the animation to finish, then execute the following procedures
setTimeout(function()
{
// If login is invalid, we store the
if(login_status == 'invalid')
{
$(".login-page").removeClass('logging-in');
neonLogin.resetProgressBar(true);
}
else
if(login_status == 'success')
{
// Redirect to login page
setTimeout(function()
{
var redirect_url = baseurl;
if(response.redirect_url && response.redirect_url.length)
{
redirect_url = response.redirect_url;
}
window.location.href = redirect_url;
}, 400);
}
}, 1000);
}
});
}, 650);
}
});
// Lockscreen & Validation
var is_lockscreen = $(".login-page").hasClass('is-lockscreen');
if(is_lockscreen)
{
neonLogin.$container = $("#form_lockscreen");
neonLogin.$ls_thumb = neonLogin.$container.find('.lockscreen-thumb');
neonLogin.$container.validate({
rules: {
password: {
required: true
},
},
highlight: function(element){
$(element).closest('.input-group').addClass('validate-has-error');
},
unhighlight: function(element)
{
$(element).closest('.input-group').removeClass('validate-has-error');
},
submitHandler: function(ev)
{
/*
Demo Purpose Only
Here you can handle the page login, currently it does not process anything, just fills the loader.
*/
$(".login-page").addClass('logging-in-lockscreen'); // This will hide the login form and init the progress bar
// We will wait till the transition ends
setTimeout(function()
{
var random_pct = 25 + Math.round(Math.random() * 30);
neonLogin.setPercentage(random_pct, function()
{
// Just an example, this is phase 1
// Do some stuff...
// After 0.77s second we will execute the next phase
setTimeout(function()
{
neonLogin.setPercentage(100, function()
{
// Just an example, this is phase 2
// Do some other stuff...
// Redirect to the page
setTimeout("window.location.href = '../../'", 600);
}, 2);
}, 820);
});
}, 650);
}
});
}
// Login Form Setup
neonLogin.$body = $(".login-page");
neonLogin.$login_progressbar_indicator = $(".login-progressbar-indicator h3");
neonLogin.$login_progressbar = neonLogin.$body.find(".login-progressbar div");
neonLogin.$login_progressbar_indicator.html('0%');
if(neonLogin.$body.hasClass('login-form-fall'))
{
var focus_set = false;
setTimeout(function(){
neonLogin.$body.addClass('login-form-fall-init')
setTimeout(function()
{
if( !focus_set)
{
neonLogin.$container.find('input:first').focus();
focus_set = true;
}
}, 550);
}, 0);
}
else
{
neonLogin.$container.find('input:first').focus();
}
// Focus Class
neonLogin.$container.find('.form-control').each(function(i, el)
{
var $this = $(el),
$group = $this.closest('.input-group');
$this.prev('.input-group-addon').click(function()
{
$this.focus();
});
$this.on({
focus: function()
{
$group.addClass('focused');
},
blur: function()
{
$group.removeClass('focused');
}
});
});
// Functions
$.extend(neonLogin, {
setPercentage: function(pct, callback)
{
pct = parseInt(pct / 100 * 100, 10) + '%';
// Lockscreen
if(is_lockscreen)
{
neonLogin.$lockscreen_progress_indicator.html(pct);
var o = {
pct: currentProgress
};
TweenMax.to(o, .7, {
pct: parseInt(pct, 10),
roundProps: ["pct"],
ease: Sine.easeOut,
onUpdate: function()
{
neonLogin.$lockscreen_progress_indicator.html(o.pct + '%');
drawProgress(parseInt(o.pct, 10)/100);
},
onComplete: callback
});
return;
}
// Normal Login
neonLogin.$login_progressbar_indicator.html(pct);
neonLogin.$login_progressbar.width(pct);
var o = {
pct: parseInt(neonLogin.$login_progressbar.width() / neonLogin.$login_progressbar.parent().width() * 100, 10)
};
TweenMax.to(o, .7, {
pct: parseInt(pct, 10),
roundProps: ["pct"],
ease: Sine.easeOut,
onUpdate: function()
{
neonLogin.$login_progressbar_indicator.html(o.pct + '%');
},
onComplete: callback
});
},
resetProgressBar: function(display_errors)
{
TweenMax.set(neonLogin.$container, {css: {opacity: 0}});
setTimeout(function()
{
TweenMax.to(neonLogin.$container, .6, {css: {opacity: 1}, onComplete: function()
{
neonLogin.$container.attr('style', '');
}});
neonLogin.$login_progressbar_indicator.html('0%');
neonLogin.$login_progressbar.width(0);
if(display_errors)
{
var $errors_container = $(".form-login-error");
$errors_container.show();
var height = $errors_container.outerHeight();
$errors_container.css({
height: 0
});
TweenMax.to($errors_container, .45, {css: {height: height}, onComplete: function()
{
$errors_container.css({height: 'auto'});
}});
// Reset password fields
neonLogin.$container.find('input[type="password"]').val('');
}
}, 800);
}
});
// Lockscreen Create Canvas
if(is_lockscreen)
{
neonLogin.$lockscreen_progress_canvas = $('<canvas></canvas>');
neonLogin.$lockscreen_progress_indicator = neonLogin.$container.find('.lockscreen-progress-indicator');
neonLogin.$lockscreen_progress_canvas.appendTo(neonLogin.$ls_thumb);
var thumb_size = neonLogin.$ls_thumb.width();
neonLogin.$lockscreen_progress_canvas.attr({
width: thumb_size,
height: thumb_size
});
neonLogin.lockscreen_progress_canvas = neonLogin.$lockscreen_progress_canvas.get(0);
// Create Progress Circle
var bg = neonLogin.lockscreen_progress_canvas,
ctx = ctx = bg.getContext('2d'),
imd = null,
circ = Math.PI * 2,
quart = Math.PI / 2,
currentProgress = 0;
ctx.beginPath();
ctx.strokeStyle = '#eb7067';
ctx.lineCap = 'square';
ctx.closePath();
ctx.fill();
ctx.lineWidth = 3.0;
imd = ctx.getImageData(0, 0, thumb_size, thumb_size);
var drawProgress = function(current) {
ctx.putImageData(imd, 0, 0);
ctx.beginPath();
ctx.arc(thumb_size/2, thumb_size/2, 70, -(quart), ((circ) * current) - quart, false);
ctx.stroke();
currentProgress = current * 100;
}
drawProgress(0/100);
neonLogin.$lockscreen_progress_indicator.html('0%');
ctx.restore();
}
});
})(jQuery, window);