2015-10-05 00:19:15 +03:00
|
|
|
/* ----------------------------------------------------------------------------
|
|
|
|
* Easy!Appointments - Open Source Web Scheduler
|
|
|
|
*
|
|
|
|
* @package EasyAppointments
|
|
|
|
* @author A.Tselegidis <alextselegidis@gmail.com>
|
2017-01-31 09:35:34 +03:00
|
|
|
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
|
2015-10-05 00:19:15 +03:00
|
|
|
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
|
|
|
|
* @link http://easyappointments.org
|
|
|
|
* @since v1.0.0
|
|
|
|
* ---------------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
$(document).ready(function() {
|
2016-04-24 20:13:39 +03:00
|
|
|
'use strict';
|
|
|
|
|
2016-07-16 18:36:33 +03:00
|
|
|
var MIN_PASSWORD_LENGTH = 7;
|
|
|
|
var AJAX_SUCCESS = 'SUCCESS';
|
|
|
|
var AJAX_FAILURE = 'FAILURE';
|
2015-10-05 00:19:15 +03:00
|
|
|
|
|
|
|
$(document).ajaxStart(function() {
|
2016-07-16 18:36:33 +03:00
|
|
|
$('#loading').removeClass('hidden');
|
2015-10-05 00:19:15 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
$(document).ajaxStop(function() {
|
2016-07-16 18:36:33 +03:00
|
|
|
$('#loading').addClass('hidden');
|
2015-10-05 00:19:15 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Event: Install Easy!Appointments Button "Click"
|
|
|
|
*/
|
|
|
|
$('#install').click(function() {
|
2016-04-24 20:13:39 +03:00
|
|
|
if (!validate()) {
|
|
|
|
return;
|
|
|
|
}
|
2015-10-05 00:19:15 +03:00
|
|
|
|
2016-07-16 18:36:33 +03:00
|
|
|
var postUrl = GlobalVariables.baseUrl + '/index.php/installation/ajax_install';
|
|
|
|
var postData = {
|
|
|
|
csrfToken: GlobalVariables.csrfToken,
|
|
|
|
admin: JSON.stringify(getAdminData()),
|
|
|
|
company: JSON.stringify(getCompanyData())
|
|
|
|
};
|
2015-10-05 00:19:15 +03:00
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
url: postUrl,
|
|
|
|
type: 'POST',
|
|
|
|
data: postData,
|
2016-10-10 19:29:48 +03:00
|
|
|
dataType: 'json',
|
2015-10-05 00:19:15 +03:00
|
|
|
success: function(response) {
|
2016-04-24 20:13:39 +03:00
|
|
|
if (!GeneralFunctions.handleAjaxExceptions(response)) {
|
|
|
|
return;
|
|
|
|
}
|
2015-10-05 00:19:15 +03:00
|
|
|
|
2015-11-05 22:30:54 +03:00
|
|
|
$('.alert').text('Easy!Appointments has been successfully installed!');
|
|
|
|
$('.alert').addClass('alert-success');
|
|
|
|
$('.alert').show();
|
|
|
|
setTimeout(function() {
|
|
|
|
window.location.href = GlobalVariables.baseUrl + '/index.php/backend';
|
|
|
|
}, 1000);
|
2015-10-05 00:19:15 +03:00
|
|
|
},
|
|
|
|
error: function(jqXHR, textStatus, errorThrown) {
|
2015-10-05 01:31:06 +03:00
|
|
|
// Treat the error the same way as php exceptions.
|
|
|
|
var exc = {
|
|
|
|
exceptions: [
|
|
|
|
JSON.stringify({
|
|
|
|
message: 'The installation could not be completed due to an ' +
|
|
|
|
'unexpected issue. Please check the browser\'s console for ' +
|
|
|
|
'more information.'
|
|
|
|
})
|
|
|
|
]
|
|
|
|
};
|
|
|
|
GeneralFunctions.handleAjaxExceptions(exc);
|
|
|
|
console.log(exc.exceptions[0].message, jqXHR, textStatus, errorThrown);
|
2015-10-05 00:19:15 +03:00
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
2016-05-14 13:26:08 +03:00
|
|
|
* Validates the user input.
|
2015-10-05 00:19:15 +03:00
|
|
|
*
|
2016-05-14 13:26:08 +03:00
|
|
|
* Use this before executing the installation procedure.
|
|
|
|
*
|
|
|
|
* @returns {Boolean} Returns the validation result.
|
2015-10-05 00:19:15 +03:00
|
|
|
*/
|
|
|
|
function validate() {
|
|
|
|
try {
|
|
|
|
$('.alert').hide();
|
2017-11-14 15:52:59 +03:00
|
|
|
$('input').closest('.form-group').removeClass('has-error');
|
2015-10-05 00:19:15 +03:00
|
|
|
|
|
|
|
// Check for empty fields.
|
|
|
|
var missingRequired = false;
|
|
|
|
$('input').each(function() {
|
|
|
|
if ($(this).val() == '') {
|
2017-11-14 15:52:59 +03:00
|
|
|
$(this).closest('.form-group').addClass('has-error');
|
2015-10-05 00:19:15 +03:00
|
|
|
missingRequired = true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2016-04-24 20:13:39 +03:00
|
|
|
if (missingRequired) {
|
2015-10-05 00:19:15 +03:00
|
|
|
throw 'All the page fields are required.';
|
2016-04-24 20:13:39 +03:00
|
|
|
}
|
2015-10-05 00:19:15 +03:00
|
|
|
|
|
|
|
// Validate Passwords
|
|
|
|
if ($('#password').val() != $('#retype-password').val()) {
|
2017-11-14 15:52:59 +03:00
|
|
|
$('#password').closest('.form-group').addClass('has-error');
|
|
|
|
$('#retype-password').closest('.form-group').addClass('has-error');
|
2015-10-05 00:19:15 +03:00
|
|
|
throw 'Passwords do not match!';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($('#password').val().length < MIN_PASSWORD_LENGTH) {
|
2017-11-14 15:52:59 +03:00
|
|
|
$('#password').closest('.form-group').addClass('has-error');
|
|
|
|
$('#retype-password').closest('.form-group').addClass('has-error');
|
2015-10-05 00:19:15 +03:00
|
|
|
throw 'The password must be at least ' + MIN_PASSWORD_LENGTH + ' characters long.';
|
|
|
|
}
|
|
|
|
|
|
|
|
// Validate Email
|
|
|
|
if (!GeneralFunctions.validateEmail($('#email').val())) {
|
2017-11-14 15:52:59 +03:00
|
|
|
$('#email').closest('.form-group').addClass('has-error');
|
2015-10-05 00:19:15 +03:00
|
|
|
throw 'The email address is invalid!';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!GeneralFunctions.validateEmail($('#company-email').val())) {
|
2017-11-14 15:52:59 +03:00
|
|
|
$('#company-email').closest('.form-group').addClass('has-error');
|
2015-10-05 00:19:15 +03:00
|
|
|
throw 'The email address is invalid!';
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
} catch (exc) {
|
|
|
|
$('.alert').text(exc);
|
|
|
|
$('.alert').show();
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the admin data as an object.
|
|
|
|
*
|
2016-05-14 13:26:08 +03:00
|
|
|
* @return {Object}
|
2015-10-05 00:19:15 +03:00
|
|
|
*/
|
|
|
|
function getAdminData() {
|
|
|
|
var admin = {
|
2016-04-24 20:13:39 +03:00
|
|
|
first_name: $('#first-name').val(),
|
|
|
|
last_name: $('#last-name').val(),
|
|
|
|
email: $('#email').val(),
|
|
|
|
phone_number: $('#phone-number').val(),
|
|
|
|
username: $('#username').val(),
|
|
|
|
password: $('#password').val()
|
2015-10-05 00:19:15 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
return admin;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the company data as an object.
|
|
|
|
*
|
2016-05-14 13:26:08 +03:00
|
|
|
* @return {Object}
|
2015-10-05 00:19:15 +03:00
|
|
|
*/
|
|
|
|
function getCompanyData() {
|
|
|
|
var company = {
|
2016-04-24 20:13:39 +03:00
|
|
|
company_name: $('#company-name').val(),
|
|
|
|
company_email: $('#company-email').val(),
|
|
|
|
company_link: $('#company-link').val()
|
2015-10-05 00:19:15 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
return company;
|
|
|
|
}
|
|
|
|
});
|