diff --git a/install/index.php b/install/index.php
index c3cce9cba..9369192c5 100644
--- a/install/index.php
+++ b/install/index.php
@@ -325,7 +325,10 @@ if (!file_exists('.lock')) {
">
- = __("This field can't be empty and have to end with a slash 'example/'!"); ?>
+ = __("This field
+ - can't be empty
+ - have to end with a slash 'example/'
+ - have to start with 'http'"); ?>
@@ -1131,6 +1134,8 @@ if (!file_exists('.lock')) {
field.removeClass('is-valid');
field.addClass('is-invalid');
}
+
+ return check;
}
function websiteurl_check() {
@@ -1153,61 +1158,68 @@ if (!file_exists('.lock')) {
field.removeClass('is-valid');
field.addClass('is-invalid');
}
+
+ return check;
}
function db_connection_test() {
- var db_hostname = $('#db_hostname').val();
- var db_username = $('#db_username').val();
- var db_password = $('#db_password').val();
- var db_name = $('#db_name').val();
+ return new Promise((resolve, reject) => {
+ var db_hostname = $('#db_hostname').val();
+ var db_username = $('#db_username').val();
+ var db_password = $('#db_password').val();
+ var db_name = $('#db_name').val();
- if (db_hostname === '' || db_username === '' || db_name === '') {
- $('#db_connection_testresult').addClass('alert-danger');
- $('#db_connection_testresult').html('= __("Error: At least Hostname/IP, Database Name and Username are required."); ?>');
- return;
- }
-
- var originalButtonText = $('#db_connection_test_button').html();
- $('#db_connection_test_button').html(' = __("Connecting..."); ?>').prop('disabled', true);
-
- clear_db_testresult();
-
- $.ajax({
- type: 'POST',
- url: 'index.php',
- data: {
- db_hostname: db_hostname,
- db_username: db_username,
- db_password: db_password,
- db_name: db_name,
- database_check: 1
- },
- success: function(response) {
- $('#db_connection_testresult').html(response);
- if (response.indexOf('Error') !== -1) {
- $('#db_connection_testresult').addClass('alert-danger');
- $('#db_connection_test_button').html(originalButtonText).prop('disabled', false);
- } else {
-
- if (sql_version_checker(response) == true) {
- $('#db_connection_testresult').addClass('alert-success');
- $('#db_connection_test_button').html(originalButtonText).prop('disabled', false);
- $('#db_connection_testresult').html('= __("Connection was successful and your database should be compatible"); ?> ');
- } else {
- $('#db_connection_testresult').addClass('alert-warning');
- $('#db_connection_test_button').html(originalButtonText).prop('disabled', false);
- $('#db_connection_testresult').html('= __("Connection was successful but your database seems too old for Wavelog. You can try to continue but you could run into issues."); ?> ');
- }
- }
- checklist_database();
- },
- error: function(error) {
- $('#db_connection_testresult').html('Error: ' + error.statusText);
- if ($('#db_connection_testresult').text().indexOf('Error') !== -1) {
- $('#db_connection_testresult').addClass('alert-danger');
- }
- checklist_database();
+ if (db_hostname === '' || db_username === '' || db_name === '') {
+ $('#db_connection_testresult').addClass('alert-danger');
+ $('#db_connection_testresult').html('= __("Error: At least Hostname/IP, Database Name and Username are required."); ?>');
+ resolve(false);
+ return;
}
+
+ var originalButtonText = $('#db_connection_test_button').html();
+ $('#db_connection_test_button').html(' = __("Connecting..."); ?>').prop('disabled', true);
+
+ clear_db_testresult();
+
+ $.ajax({
+ type: 'POST',
+ url: 'index.php',
+ data: {
+ db_hostname: db_hostname,
+ db_username: db_username,
+ db_password: db_password,
+ db_name: db_name,
+ database_check: 1
+ },
+ success: function(response) {
+ $('#db_connection_testresult').html(response);
+ if (response.indexOf('Error') !== -1) {
+ $('#db_connection_testresult').addClass('alert-danger');
+ $('#db_connection_test_button').html(originalButtonText).prop('disabled', false);
+ resolve(false);
+ } else {
+ if (sql_version_checker(response) == true) {
+ $('#db_connection_testresult').addClass('alert-success');
+ $('#db_connection_test_button').html(originalButtonText).prop('disabled', false);
+ $('#db_connection_testresult').html('= __("Connection was successful and your database should be compatible"); ?> ');
+ } else {
+ $('#db_connection_testresult').addClass('alert-warning');
+ $('#db_connection_test_button').html(originalButtonText).prop('disabled', false);
+ $('#db_connection_testresult').html('= __("Connection was successful but your database seems too old for Wavelog. You can try to continue but you could run into issues."); ?> ');
+ }
+ resolve(true);
+ }
+ checklist_database();
+ },
+ error: function(error) {
+ $('#db_connection_testresult').html('Error: ' + error.statusText);
+ if ($('#db_connection_testresult').text().indexOf('Error') !== -1) {
+ $('#db_connection_testresult').addClass('alert-danger');
+ }
+ checklist_database();
+ resolve(false);
+ }
+ });
});
}
@@ -1369,10 +1381,29 @@ if (!file_exists('.lock')) {
const activeTab = $('.nav-link.active');
- function nextTab() {
+ async function nextTab() {
const activeTab = $('.nav-link.active');
const nextTab = activeTab.parent().next().find('.nav-link');
+ if (nextTab.attr('id') == fourthTabId) {
+ if (!directory_check() || !websiteurl_check()) {
+ return;
+ }
+ }
+
+ if (nextTab.attr('id') == fifthTabId) {
+ await db_connection_test();
+ if ($('#db_connection_testresult').hasClass('alert-danger')) {
+ return;
+ }
+ }
+
+ if (nextTab.attr('id') == lastTabId) {
+ if (!checklist_firstuser()) {
+ return;
+ }
+ }
+
if (nextTab.length > 0) {
const tab = new bootstrap.Tab(nextTab[0]);
tab.show();
@@ -1384,7 +1415,6 @@ if (!file_exists('.lock')) {
} else {
$('#ContinueButton').css('display', 'none');
}
-
}
function prevTab() {
@@ -1463,6 +1493,7 @@ if (!file_exists('.lock')) {
let secondTabId = 'precheck-tab';
let thirdTabId = 'configuration-tab';
let fourthTabId = 'database-tab';
+ let fifthTabId = 'firstuser-tab';
let lastTabId = 'finish-tab';
function openTab(tabId) {
@@ -1516,7 +1547,6 @@ if (!file_exists('.lock')) {
// comment: Checklist for Pre-Checks is handled in PHP. See '$prechecks_passed'
function checklist_configuration() {
- console.log('run checklist_configuration');
var checklist_configuration = true;
if ($('#directory').hasClass('is-invalid')) {
@@ -1597,7 +1627,7 @@ if (!file_exists('.lock')) {
}
if (checklist_firstuser) {
- if($('#password').hasClass('has-warning')) {
+ if ($('#password').hasClass('has-warning')) {
$('#checklist_firstuser').removeClass('fa-times-circle');
$('#checklist_firstuser').removeClass('fa-check-circle');
$('#checklist_firstuser').addClass('fa-exclamation-triangle').css('color', '#ffc107');
@@ -1612,6 +1642,7 @@ if (!file_exists('.lock')) {
$('#checklist_firstuser').addClass('fa-times-circle').css('color', 'red');
}
+ return checklist_firstuser;
}