mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-12 23:14:18 +01:00
SetupWebPage is an alias for ModuleDiscovery and the module files should be updated progressively to invoke ModuleDiscovery::AddModule() instead. The implementation of the module still assumes they are in the directory 'modules'... this has to be changed later to ensure the distinction between the source modules and the executed modules SVN:trunk[1758]
372 lines
10 KiB
JavaScript
372 lines
10 KiB
JavaScript
function NameIsValid(name)
|
|
{
|
|
sName = new String(name);
|
|
if (sName.match(/^[A-Za-z][A-Za-z0-9_]*$/)) return true;
|
|
return false;
|
|
}
|
|
|
|
function DoGoBack(iStep)
|
|
{
|
|
$('input[name=operation]').val('step'+iStep);
|
|
$(':button').attr('disabled', 'disabled');
|
|
$('#theForm').submit(); // Submit the form
|
|
return true;
|
|
}
|
|
|
|
function DoSubmit(sMsg, iStep)
|
|
{
|
|
var bResult = true;
|
|
switch(iStep)
|
|
{
|
|
case 0: // Select either install or upgrade or nothing to select...
|
|
if ( ($("input:radio").length > 0) && ($("input:radio:checked").length < 1))
|
|
{
|
|
alert('Please select either install or upgrade');
|
|
bResult = false;
|
|
}
|
|
break;
|
|
|
|
case 1: // Licence agreement
|
|
if ($('#licence_ok:checked').length < 1)
|
|
{
|
|
alert('Please accept the licence agreement before continuing.');
|
|
bResult = false;
|
|
}
|
|
break;
|
|
|
|
case 2: // Database server selection
|
|
if ($('#db_server').val() == '')
|
|
{
|
|
alert('Please specify a database server. Use "localhost" for a local DB server.');
|
|
bResult = false;
|
|
}
|
|
else if ($('#db_user').val() == '')
|
|
{
|
|
alert('Please specify a user name to connect to the database.');
|
|
bResult = false;
|
|
}
|
|
break;
|
|
|
|
case 3: // Database instance selection
|
|
if ($("input[@type=radio]:checked").length < 1)
|
|
{
|
|
alert('Please specify a database name');
|
|
bResult = false;
|
|
}
|
|
else if( ($("#new_db:checked").length == 1))
|
|
{
|
|
if ($('#new_db_name').val() == '')
|
|
{
|
|
alert('Please specify the name of the database to create');
|
|
bResult = false;
|
|
}
|
|
else if (!NameIsValid($('#new_db_name').val()))
|
|
{
|
|
alert($('#new_db_name').val()+' is not a valid database name. Please limit yourself to letters, numbers and the underscore character.');
|
|
bResult = false;
|
|
}
|
|
}
|
|
else if ($("#current_db:checked").length == 1)
|
|
{
|
|
// Special case (DB enumeration failed, user must enter DB name)
|
|
if ($("#current_db_name").val() == '')
|
|
{
|
|
alert('Please specify the name of the database.');
|
|
bResult = false;
|
|
}
|
|
else
|
|
{
|
|
// Copy the typed value as the value of the radio
|
|
$("#current_db").val($("#current_db_name").val());
|
|
}
|
|
}
|
|
if( ($('#db_prefix').val() != '') && (!NameIsValid($('#db_prefix').val())) )
|
|
{
|
|
alert($('#db_prefix').val()+' is not a valid table name. Please limit yourself to letters, numbers and the underscore character.');
|
|
bResult = false;
|
|
}
|
|
break;
|
|
|
|
case 4: // Choice of iTop modules
|
|
break;
|
|
|
|
case 5: // Administrator account
|
|
if ($('#auth_user').val() == '')
|
|
{
|
|
alert('Please specify a login name for the administrator account');
|
|
bResult = false;
|
|
}
|
|
else if ($('#auth_pwd').val() != $('#auth_pwd2').val())
|
|
{
|
|
alert('Retyped password does not match! Please verify the password.');
|
|
bResult = false;
|
|
}
|
|
break;
|
|
|
|
case 6: // application path
|
|
var appPath = new String($('#application_path').val());
|
|
if (appPath == '')
|
|
{
|
|
alert('Please specify the URL to the application');
|
|
bResult = false;
|
|
}
|
|
else
|
|
{
|
|
var bMatch = appPath.match(/^http(?:s)?\:\/\//);
|
|
if (!bMatch)
|
|
{
|
|
alert('"'+appPath+'" does not look like a valid URL for the application...\nPlease check your input.');
|
|
bResult = false;
|
|
}
|
|
else
|
|
{
|
|
// Make sure that the root URL ends with a slash
|
|
var bMatch = appPath.match(/\/$/);
|
|
if (!bMatch)
|
|
{
|
|
// If not, add a slash at the end
|
|
appPath += '/';
|
|
$('#application_path').val(appPath);
|
|
}
|
|
}
|
|
}
|
|
|
|
break;
|
|
|
|
case 7: // Sample data selection
|
|
break;
|
|
|
|
case 8: // Display Summary: launch DoCompileDataModel to start the asynchronous update
|
|
bResult = DoCompileDataModel();
|
|
break;
|
|
|
|
// Email test page
|
|
case 10:
|
|
if ($('#to').val() == '')
|
|
{
|
|
alert('Please specify a destination address');
|
|
bResult = false;
|
|
}
|
|
}
|
|
if (bResult)
|
|
{
|
|
$(':button').attr('disabled', 'disabled');
|
|
if ((sMsg != ''))
|
|
{
|
|
$('#setup').block({message: '<img src="../images/indicator.gif"> '+sMsg});
|
|
}
|
|
}
|
|
return bResult;
|
|
}
|
|
|
|
function DoCompileDataModel()
|
|
{
|
|
try
|
|
{
|
|
// Call the asynchronous page that performs the compilation of the data model and the creation of the configuration file
|
|
$('#log').html('');
|
|
$('#setup').block({message: '<p><span id="setup_msg">Preparing data model...</span><br/><div id=\"progress\">0%</div></p>'});
|
|
$('#progress').progression( {Current:5, Maximum: 100, aBackgroundImg: 'orange-progress.gif', aTextColor: '#000000'} );
|
|
$('#log').load( 'ajax.dataloader.php',
|
|
{
|
|
'operation': 'compile_data_model',
|
|
'selected_modules': GetSelectedModules(),
|
|
'mode': $(':input[name=mode]').val(),
|
|
'source_dir': $(':input[name=source_dir]').val(),
|
|
'target_dir': $(':input[name=target_dir]').val()
|
|
},
|
|
DoUpdateDBSchema, 'html');
|
|
}
|
|
catch(err)
|
|
{
|
|
alert('An exception occured: '+err);
|
|
}
|
|
return false; // Do NOT submit the form yet
|
|
}
|
|
|
|
function DoUpdateDBSchema()
|
|
{
|
|
try
|
|
{
|
|
// Call the asynchronous page that performs the creation/update of the DB Schema
|
|
$('#log').html('');
|
|
$('#setup').block({message: '<p><span id="setup_msg">Updating DB schema...</span><br/><div id=\"progress\">5%</div></p>'});
|
|
$('#progress').progression( {Current:10, Maximum: 100, aBackgroundImg: 'orange-progress.gif', aTextColor: '#000000'} );
|
|
$('#log').load( 'ajax.dataloader.php',
|
|
{
|
|
'operation': 'update_db_schema',
|
|
'selected_modules': GetSelectedModules(),
|
|
'mode': $(':input[name=mode]').val(),
|
|
'db_server': $(':input[name=db_server]').val(),
|
|
'db_user': $(':input[name=db_user]').val(),
|
|
'db_pwd': $(':input[name=db_pwd]').val(),
|
|
'db_name': $(':input[name=db_name]').val(),
|
|
'new_db_name': $(':input[name=new_db_name]').val(),
|
|
'db_prefix': $(':input[name=db_prefix]').val(),
|
|
'modules_dir': $(':input[name=target_dir]').val()
|
|
},
|
|
DoUpdateProfiles, 'html');
|
|
}
|
|
catch(err)
|
|
{
|
|
alert('An exception occured: '+err);
|
|
}
|
|
return false; // Do NOT submit the form yet
|
|
}
|
|
|
|
function DoUpdateProfiles(response, status, xhr)
|
|
{
|
|
if (status == 'error')
|
|
{
|
|
$('#setup').unblock();
|
|
return; // An error occurred !
|
|
}
|
|
try
|
|
{
|
|
// Call the asynchronous page that performs the creation/update of the DB Schema
|
|
$('#log').html('');
|
|
$('#setup_msg').text('Updating Profiles...');
|
|
$('#progress').progression( {Current:40, Maximum: 100, aBackgroundImg: 'orange-progress.gif', aTextColor: '#000000'} );
|
|
$('#log').load( 'ajax.dataloader.php',
|
|
{
|
|
'operation': 'after_db_create',
|
|
'selected_modules': GetSelectedModules(),
|
|
'mode': $(':input[name=mode]').val(),
|
|
'db_server': $(':input[name=db_server]').val(),
|
|
'db_user': $(':input[name=db_user]').val(),
|
|
'db_pwd': $(':input[name=db_pwd]').val(),
|
|
'db_name': $(':input[name=db_name]').val(),
|
|
'new_db_name': $(':input[name=new_db_name]').val(),
|
|
'db_prefix': $(':input[name=db_prefix]').val(),
|
|
'modules_dir': $(':input[name=target_dir]').val(),
|
|
'auth_user': $(':input[name=auth_user]').val(),
|
|
'auth_pwd': $(':input[name=auth_pwd]').val(),
|
|
'language': $(':input[name=language]').val()
|
|
},
|
|
DoLoadDataAsynchronous, 'html');
|
|
// $('#log').ajaxError(
|
|
// function(e, xhr, settings, exception)
|
|
// {
|
|
// bStopAysncProcess = true;
|
|
// alert('Fatal error detected: '+ xhr.responseText);
|
|
// $('#log').append(xhr.responseText);
|
|
// $('#setup').unblock();
|
|
// } );
|
|
}
|
|
catch(err)
|
|
{
|
|
alert('An exception occured: '+err);
|
|
}
|
|
return true; // Continue loading the data
|
|
}
|
|
|
|
var aFilesToLoad = new Array();
|
|
var iCounter = 0;
|
|
|
|
function DoLoadDataAsynchronous(response, status, xhr)
|
|
{
|
|
if (status == 'error')
|
|
{
|
|
$('#setup').unblock();
|
|
return; // An error occurred !
|
|
}
|
|
try
|
|
{
|
|
// The array aFilesToLoad is populated by this function dynamically written on the server
|
|
PopulateDataFilesList();
|
|
iCurrent = 60;
|
|
if (aFilesToLoad.length == 0)
|
|
{
|
|
$('#progress').progression( {Current: 100} );
|
|
}
|
|
else
|
|
{
|
|
$('#log').html('');
|
|
$('#setup_msg').text('Loading data...');
|
|
$('#progress').progression( {Current: 60, Maximum: 100, aBackgroundImg: 'orange-progress.gif', aTextColor: '#000000'} );
|
|
// $('#log').ajaxError(
|
|
// function(e, xhr, settings, exception)
|
|
// {
|
|
// bStopAysncProcess = true;
|
|
// alert('Fatal error detected: '+ xhr.responseText);
|
|
// $('#log').append(xhr.responseText);
|
|
// $('#setup').unblock();
|
|
// } );
|
|
}
|
|
LoadNextDataFile('', '', '');
|
|
}
|
|
catch(err)
|
|
{
|
|
alert('An exception occured: '+err);
|
|
}
|
|
return true; // Continue
|
|
}
|
|
|
|
function LoadNextDataFile(response, status, xhr)
|
|
{
|
|
if (status == 'error')
|
|
{
|
|
$('#setup').unblock();
|
|
return; // Stop here
|
|
}
|
|
|
|
try
|
|
{
|
|
if (iCounter < aFilesToLoad.length)
|
|
{
|
|
if (iCounter == (aFilesToLoad.length - 1))
|
|
{
|
|
// Last file in the list (or only 1 file), this completes the session
|
|
sSessionStatus = 'end';
|
|
}
|
|
else if (iCounter == 0)
|
|
{
|
|
// First file in the list, start the session
|
|
sSessionStatus = 'start';
|
|
}
|
|
else
|
|
{
|
|
sSessionStatus = 'continue';
|
|
}
|
|
iPercent = 60+Math.round((40.0 * (1+iCounter)) / aFilesToLoad.length);
|
|
sFileName = aFilesToLoad[iCounter];
|
|
//alert('Loading file '+sFileName+' ('+iPercent+' %) - '+sSessionStatus);
|
|
$("#progress").progression({ Current: iPercent, Maximum: 100, aBackgroundImg: 'orange-progress.gif', aTextColor: '#000000' });
|
|
iCounter++;
|
|
$('#log').load( 'ajax.dataloader.php',
|
|
{
|
|
'selected_modules': GetSelectedModules(),
|
|
'db_server': $(':input[name=db_server]').val(),
|
|
'db_user': $(':input[name=db_user]').val(),
|
|
'db_pwd': $(':input[name=db_pwd]').val(),
|
|
'db_name': $(':input[name=db_name]').val(),
|
|
'new_db_name': $(':input[name=new_db_name]').val(),
|
|
'db_prefix': $(':input[name=db_prefix]').val(),
|
|
'modules_dir': $(':input[name=target_dir]').val(),
|
|
'operation': 'load_data',
|
|
'file': sFileName,
|
|
'percent': iPercent,
|
|
'session_status': sSessionStatus
|
|
},
|
|
LoadNextDataFile, 'html');
|
|
}
|
|
else
|
|
{
|
|
// We're done
|
|
$("#progress").progression({ Current: 100, Maximum: 100, aBackgroundImg: 'orange-progress.gif', aTextColor: '#000000' });
|
|
//$('#setup').unblock();
|
|
$('#GoToNextStep').submit(); // Use the hidden form to navigate to the next step
|
|
}
|
|
}
|
|
catch(err)
|
|
{
|
|
alert('An exception occurred: '+err);
|
|
}
|
|
}
|
|
|
|
function GetSelectedModules()
|
|
{
|
|
var aModules = new Array();
|
|
$(':input[name^=module]').each(function() { aModules.push($(this).val()); } );
|
|
return aModules.join(',');
|
|
} |