viveksantayana
0ab06af8be
Refactored to move security package inside common Moved data folder to process root.
515 lines
20 KiB
JavaScript
515 lines
20 KiB
JavaScript
// Menu Highlight Scripts
|
|
const menuItems = document.getElementsByClassName('nav-link');
|
|
for(let i = 0; i < menuItems.length; i++) {
|
|
if(menuItems[i].pathname == window.location.pathname) {
|
|
menuItems[i].classList.add('active');
|
|
}
|
|
}
|
|
const dropdownItems = document.getElementsByClassName('dropdown-item');
|
|
for(let i = 0; i< dropdownItems.length; i++) {
|
|
if(dropdownItems[i].pathname == window.location.pathname) {
|
|
dropdownItems[i].classList.add('active');
|
|
$( "#" + dropdownItems[i].id ).closest( '.dropdown' ).find('.dropdown-toggle').addClass('active');
|
|
}
|
|
}
|
|
|
|
// Form Processing Scripts
|
|
$('form[name=form-register]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.href = "/admin/login/";
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-login]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.href = "/admin/dashboard/";
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-reset]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.href = "/admin/login/";
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-update-password]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
console.log(data)
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.href = "/admin/login/";
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-create-user]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.reload();
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-delete-user]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.href = '/admin/settings/users/';
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-update-user]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.href = '/admin/settings/users';
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-update-account]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.href = '/admin/dashboard/';
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-create-test]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = $form.serialize();
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
window.location.href = '/admin/tests/';
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('form[name=form-upload-questions]').submit(function(event) {
|
|
|
|
var $form = $(this);
|
|
var alert = document.getElementById('alert-box');
|
|
var data = new FormData($form[0]);
|
|
var file = $('input[name=data_file]')[0].files[0]
|
|
data.append('file', file)
|
|
alert.innerHTML = ''
|
|
|
|
$.ajax({
|
|
url: window.location.pathname,
|
|
type: 'POST',
|
|
data: data,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function(response) {
|
|
if (typeof response.success === 'string' || response.success instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.success}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.success instanceof Array) {
|
|
for (var i = 0; i < response.success.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.success[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
|
|
// Edit and Delete Test Button Handlers
|
|
|
|
$('.delete-test').click(function(event) {
|
|
|
|
_id = $(this).data('_id')
|
|
|
|
$.ajax({
|
|
url: `/admin/tests/delete/${_id}`,
|
|
type: 'GET',
|
|
success: function(response) {
|
|
window.location.href = '/admin/tests/';
|
|
},
|
|
error: function(response) {
|
|
if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
} else if (response.responseJSON.error instanceof Array) {
|
|
for (var i = 0; i < response.responseJSON.error.length; i ++) {
|
|
alert.innerHTML = alert.innerHTML + `
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
|
|
${response.responseJSON.error[i]}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
`;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
event.preventDefault();
|
|
});
|
|
|
|
// Dismiss Cookie Alert
|
|
$('#dismiss-cookie-alert').click(function(event){
|
|
|
|
$.ajax({
|
|
url: '/cookies/',
|
|
type: 'GET',
|
|
data: {
|
|
time: Date.now()
|
|
},
|
|
dataType: 'json',
|
|
success: function(response){
|
|
console.log(response)
|
|
},
|
|
error: function(response){
|
|
console.log(response)
|
|
}
|
|
})
|
|
|
|
event.preventDefault()
|
|
|
|
}) |