%PDF- %PDF-
| Direktori : /home/lightco1/www/lightingrepublic.com.au/media/com_akeeba/js/ |
| Current File : /home/lightco1/www/lightingrepublic.com.au/media/com_akeeba/js/confwiz.js |
/**
* Akeeba Backup
* The modular PHP5 site backup software solution
* This file contains the configuration-wizard client-side business logic
* @package akeebaui
* @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos
* @license GNU GPL version 3 or, at your option, any later version
* @version $Id: confwiz.js 527 2011-03-31 14:47:36Z nikosdion $
**/
/**
* Setup (required for Joomla! 3)
*/
if(typeof(akeeba) == 'undefined') {
var akeeba = {};
}
if(typeof(akeeba.jQuery) == 'undefined') {
akeeba.jQuery = jQuery.noConflict();
}
var akeeba_confwiz_exectimes_table = [30,25,20,14,7,5,3];
var akeeba_confwiz_blocksizes_table = [240, 200, 160, 80, 40, 16, 4, 2, 1];
/**
* Boot up the Configuration Wizard benchmarking process
*/
function akeeba_confwiz_boot()
{
(function($){
// Initialization
akeeba_confwiz_exectimes_table = [30,25,20,14,7,5,3];
// Part sizes to check. Given in number of 128Kb chunks, i.e.
// 480 = 60Mb, 400 = 50Mb, 240 = 30Mb, 200 = 25Mb, 160 = 20Mb,
// 80 = 10Mb, 40 = 5Mb, 16 = 2Mb, 4 = 512Kb, 2 = 256Kb, 1 = 128Kb
akeeba_confwiz_blocksizes_table = [480, 400, 240, 200, 160, 80, 40, 16, 4, 2, 1];
// Show GUI
$('#backup-progress-pane').css('display','block');
reset_timeout_bar();
// Go!
akeeba_confwiz_tryajax();
})(akeeba.jQuery);
}
/**
* Try to figure out the optimal AJAX method
*/
function akeeba_confwiz_tryajax()
{
(function($){
akeeba_use_iframe = false;
reset_timeout_bar();
start_timeout_bar(10000,100);
$('#step-ajax').addClass('step-active');
$('#backup-substep').text( akeeba_translations['UI-TRYAJAX'] );
doAjax(
{act: 'ping'},
function() {
// Successful AJAX call!
akeeba_use_iframe = false;
$('#step-ajax').removeClass('label-info');
$('#step-ajax').addClass('label-success');
akeeba_confwiz_minexec();
},
function() {
// Let's try IFRAME
akeeba_use_iframe = true;
reset_timeout_bar();
start_timeout_bar(10000,100);
$('#backup-substep').text( akeeba_translations['UI-TRYIFRAME'] );
doAjax(
{ act: 'ping' },
function() {
// Successful IFRAME call
$('#step-ajax').removeClass('label-info');
$('#step-ajax').addClass('label-success');
akeeba_confwiz_minexec();
},
function() {
// Unsuccessful IFRAME call, we've ran out if ideas!
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTUSEAJAX'] );
},
false,
10000
);
},
false,
10000
);
})(akeeba.jQuery);
}
/**
* Determine the optimal Minimum Execution Time
* @param seconds float How many seconds to test
* @return
*/
function akeeba_confwiz_minexec(seconds, repetition)
{
(function($){
if(seconds == null) seconds = 0;
if(repetition == null) repetition = 0;
reset_timeout_bar();
start_timeout_bar((2 * seconds + 5) * 1000,100);
var substepText = akeeba_translations['UI-MINEXECTRY'].replace('%s', seconds.toFixed(1));
$('#backup-substep').text( substepText );
$('#step-minexec').addClass('label-info');
doAjax(
{act: 'minexec', 'seconds': seconds},
function(msg) {
// The ping was successful. Add a repetition count.
repetition++;
if(repetition < 3) {
// We need more repetitions
akeeba_confwiz_minexec(seconds, repetition);
} else {
// Three repetitions reached. Success!
akeeba_confwiz_apply_minexec(seconds);
}
},
function() {
// We got a failure. Add half a second
seconds += 0.5;
if(seconds > 20) {
// Uh-oh... We exceeded our maximum allowance!
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTDETERMINEMINEXEC'] );
} else {
akeeba_confwiz_minexec(seconds,0);
}
},
false,
(2 * seconds + 5) * 1000
);
})(akeeba.jQuery);
}
/**
* Applies the AJAX preference and the minimum execution time determined in the previous steps
* @param seconds float The minimum execution time, in seconds
*/
function akeeba_confwiz_apply_minexec(seconds)
{
(function($){
reset_timeout_bar();
start_timeout_bar(25000,100);
$('#backup-substep').text( akeeba_translations['UI-SAVEMINEXEC'] );
var iframe_opt = 0;
if(akeeba_use_iframe) iframe_opt = 1;
doAjax(
{act: 'applyminexec', 'iframes': iframe_opt, 'minexec': seconds},
function(msg) {
$('#step-minexec').removeClass('label-info');
$('#step-minexec').addClass('label-success');
akeeba_confwiz_directories();
},
function() {
// Unsuccessful call. Oops!
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTSAVEMINEXEC'] );
},
false
);
})(akeeba.jQuery);
}
/**
* Automatically determine the optimal output and temporary directories,
* then make sure they are writable
*/
function akeeba_confwiz_directories()
{
(function($){
reset_timeout_bar();
start_timeout_bar(10000,100);
$('#backup-substep').text( '' );
$('#step-directory').addClass('label-info');
doAjax(
{act: 'directories'},
function(msg) {
if(msg) {
$('#step-directory').removeClass('label-info');
$('#step-directory').addClass('label-success');
akeeba_confwiz_database();
} else {
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTFIXDIRECTORIES'] );
}
},
function() {
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTFIXDIRECTORIES'] );
},
false
);
})(akeeba.jQuery);
}
/**
* Determine the optimal database dump options, analyzing the site's database
*/
function akeeba_confwiz_database()
{
(function($){
reset_timeout_bar();
start_timeout_bar(30000,50);
$('#backup-substep').text( '' );
$('#step-dbopt').addClass('label-info');
doAjax(
{act: 'database'},
function(msg) {
if(msg) {
$('#step-dbopt').removeClass('label-info');
$('#step-dbopt').addClass('label-success');
akeeba_confwiz_maxexec();
} else {
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTDBOPT'] );
}
},
function() {
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTDBOPT'] );
},
false
);
})(akeeba.jQuery);
}
/**
* Determine the optimal maximum execution time which doesn't cause a timeout or server error
*/
function akeeba_confwiz_maxexec()
{
(function($){
var exec_time = array_shift(akeeba_confwiz_exectimes_table);
if(empty(akeeba_confwiz_exectimes_table) || (exec_time == null)) {
// Darn, we ran out of options
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-EXECTOOLOW'] );
return;
}
reset_timeout_bar();
start_timeout_bar((exec_time * 1.2)*1000, 80);
$('#step-maxexec').addClass('label-info');
var substepText = akeeba_translations['UI-MINEXECTRY'].replace('%s', exec_time.toFixed(0));
$('#backup-substep').text( substepText );
doAjax(
{act:'maxexec', 'seconds': exec_time},
function(msg){
if(msg) {
// Success! Save this value.
akeeba_confwiz_apply_maxexec(exec_time);
} else {
// Uh... we have to try something lower than that
akeeba_confwiz_maxexec();
}
},
function(){
// Uh... we have to try something lower than that
akeeba_confwiz_maxexec();
}
);
})(akeeba.jQuery);
}
function akeeba_confwiz_apply_maxexec(seconds)
{
(function($){
reset_timeout_bar();
start_timeout_bar(10000,100);
$('#backup-substep').text( akeeba_translations['UI-SAVINGMAXEXEC'] );
doAjax(
{act: 'applymaxexec', 'seconds': seconds},
function() {
$('#step-maxexec').removeClass('label-info');
$('#step-maxexec').addClass('label-success');
akeeba_confwiz_partsize();
},
function() {
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTSAVEMAXEXEC'] );
}
);
})(akeeba.jQuery);
}
function akeeba_confwiz_partsize()
{
(function($){
reset_timeout_bar();
var block_size = array_shift(akeeba_confwiz_blocksizes_table);
if(empty(akeeba_confwiz_blocksizes_table) || (block_size == null) ) {
// Uh... I think you are running out of disk space, dude
$('#backup-progress-pane').css('display','none');
$('#error-panel').css('display','block');
$('#backup-error-message').html( akeeba_translations['UI-CANTDETERMINEPARTSIZE'] );
return;
}
var part_size = block_size / 8; // Translate to Mb
start_timeout_bar(30000,100);
var substepText = akeeba_translations['UI-PARTSIZE'].replace('%s', part_size.toFixed(3));
$('#backup-substep').text( substepText );
$('#step-splitsize').addClass('label-info');
doAjax(
{act: 'partsize', blocks: block_size},
function(msg) {
if(msg) {
// We are done
$('#step-splitsize').removeClass('label-info');
$('#step-splitsize').addClass('label-success');
akeeba_confwiz_done();
} else {
// Let's try the next (lower) value
akeeba_confwiz_partsize();
}
},
function(msg) {
// The server blew up on our face. Let's try the next (lower) value.
akeeba_confwiz_partsize();
},
false,
60000
);
})(akeeba.jQuery);
}
function akeeba_confwiz_done()
{
(function($){
$('#backup-progress-pane').hide();
$('#backup-complete').show();
})(akeeba.jQuery);
}