function echoPage() { $edition = KICKSTARTPRO ? 'Professional' : 'Core'; $automation = AKAutomation::getInstance(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Akeeba Kickstart <?php echo $edition; ?> <?php echo VERSION; ?> </title> <style type="text/css" media="all" rel="stylesheet"> <?php echoCSS(); ?> </style> <?php if (@file_exists('jquery.min.js')) { ?> <script type="text/javascript" src="jquery.min.js"></script> <?php } else { ?> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <?php } if (@file_exists('json2.min.js')) { ?> <script type="text/javascript" src="json2.min.js"></script> <?php } else { ?> <script type="text/javascript" src="http://yandex.st/json2/2011-10-19/json2.min.js"></script> <?php } ?> <script type="text/javascript" language="javascript"> var akeeba_automation = <?php echo $automation->hasAutomation() ? 'true' : 'false'; ?> ; var akeeba_debug = <?php echo defined('KSDEBUG') ? 'true' : 'false'; ?> ; $(document).ready(function(){ // Hide 2nd Page $('#page2').css('display','none'); // Translate the GUI translateGUI(); // Hook interaction handlers $(document).keyup( closeLightbox ); $('#kickstart\\.procengine').change( onChangeProcengine ); $('#checkFTPTempDir').click( oncheckFTPTempDirClick ); $('#resetFTPTempDir').click( onresetFTPTempDir ); $('#testFTP').click( onTestFTPClick ); $('#gobutton').click( onStartExtraction ); $('#runInstaller').click( onRunInstallerClick ); $('#runCleanup').click( onRunCleanupClick ); $('#gotoSite').click(function(event){window.open('index.php','finalstepsite'); window.close();}); $('#gotoAdministrator').click(function(event){window.open('administrator/index.php','finalstepadmin'); window.close();}); $('#gotoStart').click( onGotoStartClick ); // Reset the progress bar setProgressBar(0); // Do we have automation? if(akeeba_automation) { $('#automode').css('display','block'); $('#gobutton').click(); } else { // Show warning if( jQuery.browser.msie && (jQuery.browser.version.substr(0,1) == '7') ) { $('#ie7Warning').css('display','block'); } if(!akeeba_debug) { $('#preextraction').css('display','block'); $('#fade').css('display','block'); } } }); var translation = { <?php echoTranslationStrings(); ?> } var akeeba_ajax_url = '<?php echo basename(__FILE__); ?> '; var akeeba_error_callback = onGenericError; var akeeba_restoration_stat_inbytes = 0; var akeeba_restoration_stat_outbytes = 0; var akeeba_restoration_stat_files = 0; var akeeba_restoration_stat_total = 0; var akeeba_factory = null; function translateGUI() { $('*').each(function(i,e){ transKey = $(e).text(); if(array_key_exists(transKey, translation)) { $(e).text( translation[transKey] ); } }); } function trans(key) { if(array_key_exists(key, translation)) { return translation[key]; } else { return key; } } function array_key_exists ( key, search ) { if (!search || (search.constructor !== Array && search.constructor !== Object)){ return false; } return key in search; } function empty (mixed_var) { var key; if (mixed_var === "" || mixed_var === 0 || mixed_var === "0" || mixed_var === null || mixed_var === false || typeof mixed_var === 'undefined' ){ return true; } if (typeof mixed_var == 'object') { for (key in mixed_var) { return false; } return true; } return false; } function is_array (mixed_var) { var key = ''; var getFuncName = function (fn) { var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn); if (!name) { return '(Anonymous)'; } return name[1]; }; if (!mixed_var) { return false; } // BEGIN REDUNDANT this.php_js = this.php_js || {}; this.php_js.ini = this.php_js.ini || {}; // END REDUNDANT if (typeof mixed_var === 'object') { if (this.php_js.ini['phpjs.objectsAsArrays'] && // Strict checking for being a JavaScript array (only check this way if call ini_set('phpjs.objectsAsArrays', 0) to disallow objects as arrays) ( (this.php_js.ini['phpjs.objectsAsArrays'].local_value.toLowerCase && this.php_js.ini['phpjs.objectsAsArrays'].local_value.toLowerCase() === 'off') || parseInt(this.php_js.ini['phpjs.objectsAsArrays'].local_value, 10) === 0) ) { return mixed_var.hasOwnProperty('length') && // Not non-enumerable because of being on parent class !mixed_var.propertyIsEnumerable('length') && // Since is own property, if not enumerable, it must be a built-in function getFuncName(mixed_var.constructor) !== 'String'; // exclude String() } if (mixed_var.hasOwnProperty) { for (key in mixed_var) { // Checks whether the object has the specified property // if not, we figure it's not an object in the sense of a php-associative-array. if (false === mixed_var.hasOwnProperty(key)) { return false; } } } // Read discussion at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_is_array/ return true; } return false; } /** * Performs an AJAX request and returns the parsed JSON output. * The global akeeba_ajax_url is used as the AJAX proxy URL. * If there is no errorCallback, the global akeeba_error_callback is used. * @param data An object with the query data, e.g. a serialized form * @param successCallback A function accepting a single object parameter, called on success * @param errorCallback A function accepting a single string parameter, called on failure */ function doAjax(data, successCallback, errorCallback) { var structure = { type: "POST", url: akeeba_ajax_url, cache: false, data: data, timeout: 600000, success: function(msg) { // Initialize var junk = null; var message = ""; // Get rid of junk before the data var valid_pos = msg.indexOf('###'); if( valid_pos == -1 ) { // Valid data not found in the response msg = 'Invalid AJAX data received:<br/>' + msg; if(errorCallback == null) { if(akeeba_error_callback != null) { akeeba_error_callback(msg); } } else { errorCallback(msg); } return; } else if( valid_pos != 0 ) { // Data is prefixed with junk junk = msg.substr(0, valid_pos); message = msg.substr(valid_pos); } else { message = msg; } message = message.substr(3); // Remove triple hash in the beginning // Get of rid of junk after the data var valid_pos = message.lastIndexOf('###'); message = message.substr(0, valid_pos); // Remove triple hash in the end try { var data = eval('('+message+')'); } catch(err) { var msg = err.message + "\n<br/>\n<pre>\n" + message + "\n</pre>"; if(errorCallback == null) { if(akeeba_error_callback != null) { akeeba_error_callback(msg); } } else { errorCallback(msg); } return; } // Call the callback function successCallback(data); }, error: function(Request, textStatus, errorThrown) { var message = '<strong>AJAX Loading Error</strong><br/>HTTP Status: '+Request.status+' ('+Request.statusText+')<br/>'; message = message + 'Internal status: '+textStatus+'<br/>'; message = message + 'XHR ReadyState: ' + Response.readyState + '<br/>'; message = message + 'Raw server response:<br/>'+Request.responseText; if(errorCallback == null) { if(akeeba_error_callback != null) { akeeba_error_callback(message); } } else { errorCallback(message); } } }; $.ajax( structure ); } function onChangeProcengine(event) { if( $('#kickstart\\.procengine').val() == 'ftp' ) { $('#ftp-options').show('fast'); } else { $('#ftp-options').hide('fast'); } } function closeLightbox(event) { var closeMe = false; if( (event == null) || (event == undefined) ) { closeMe = true; } else if(event.keyCode == '27') { closeMe = true; } if(closeMe) { document.getElementById('preextraction').style.display='none'; document.getElementById('genericerror').style.display='none'; document.getElementById('fade').style.display='none'; $(document).unbind('keyup', closeLightbox); } } function onGenericError(msg) { $('#genericerrorInner').html(msg); $('#genericerror').css('display','block'); $('#fade').css('display','block'); $(document).keyup(closeLightbox); } function setProgressBar(percent) { var newValue = 0; if(percent <= 1) { newValue = 100 * percent; } else { newValue = percent; } $('#progressbar-inner').css('width',percent+'%'); } function oncheckFTPTempDirClick(event) { var data = { 'task' : 'checkTempdir', 'json': JSON.stringify({ 'kickstart.ftp.tempdir': $('#kickstart\\.ftp\\.tempdir').val() }) }; doAjax(data, function(ret){ var key = ret.status ? 'FTP_TEMPDIR_WRITABLE' : 'FTP_TEMPDIR_UNWRITABLE'; alert( trans(key) ); }); } function onTestFTPClick(event) { var data = { 'task' : 'checkFTP', 'json': JSON.stringify({ 'kickstart.ftp.host': $('#kickstart\\.ftp\\.host').val(), 'kickstart.ftp.port': $('#kickstart\\.ftp\\.port').val(), 'kickstart.ftp.ssl': $('#kickstart\\.ftp\\.ssl').is(':checked'), 'kickstart.ftp.passive': $('#kickstart\\.ftp\\.passive').is(':checked'), 'kickstart.ftp.user': $('#kickstart\\.ftp\\.user').val(), 'kickstart.ftp.pass': $('#kickstart\\.ftp\\.pass').val(), 'kickstart.ftp.dir': $('#kickstart\\.ftp\\.dir').val(), 'kickstart.ftp.tempdir': $('#kickstart\\.ftp\\.tempdir').val() }) }; doAjax(data, function(ret){ var key = ret.status ? 'FTP_CONNECTION_OK' : 'FTP_CONNECTION_FAILURE'; alert( trans(key) + "\n\n" + (ret.status ? '' : ret.message) ); }); } function onStartExtraction() { $('#page1').hide('fast'); $('#page2').show('fast'); $('#currentFile').text( '' ); akeeba_error_callback = errorHandler; var data = { 'task' : 'startExtracting', 'json': JSON.stringify({ <?php if (!$automation->hasAutomation()) { ?> 'kickstart.setup.sourcefile': $('#kickstart\\.setup\\.sourcefile').val(), 'kickstart.jps.password': $('#kickstart\\.jps\\.password').val(), 'kickstart.tuning.min_exec_time': $('#kickstart\\.tuning\\.min_exec_time').val(), 'kickstart.tuning.max_exec_time': $('#kickstart\\.tuning\\.max_exec_time').val(), 'kickstart.stealth.enable': $('#kickstart\\.stealth\\.enable').is(':checked'), 'kickstart.stealth.url': $('#kickstart\\.stealth\\.url').val(), 'kickstart.tuning.run_time_bias': 75, 'kickstart.setup.restoreperms': 0, 'kickstart.setup.dryrun': 0, 'kickstart.setup.ignoreerrors': $('#kickstart\\.setup\\.ignoreerrors').is(':checked'), 'kickstart.enabled': 1, 'kickstart.security.password': '', 'kickstart.procengine': $('#kickstart\\.procengine').val(), 'kickstart.ftp.host': $('#kickstart\\.ftp\\.host').val(), 'kickstart.ftp.port': $('#kickstart\\.ftp\\.port').val(), 'kickstart.ftp.ssl': $('#kickstart\\.ftp\\.ssl').is(':checked'), 'kickstart.ftp.passive': $('#kickstart\\.ftp\\.passive').is(':checked'), 'kickstart.ftp.user': $('#kickstart\\.ftp\\.user').val(), 'kickstart.ftp.pass': $('#kickstart\\.ftp\\.pass').val(), 'kickstart.ftp.dir': $('#kickstart\\.ftp\\.dir').val(), 'kickstart.ftp.tempdir': $('#kickstart\\.ftp\\.tempdir').val() <?php } else { ?> 'kickstart.setup.sourcefile': <?php echo autoVar('kickstart.setup.sourcefile'); ?> , 'kickstart.jps.password': <?php echo autoVar('kickstart.jps.password'); ?> , 'kickstart.tuning.min_exec_time': <?php echo autoVar('kickstart.tuning.min_exec_time', 1); ?> , 'kickstart.tuning.max_exec_time': <?php echo autoVar('kickstart.tuning.max_exec_time', 5); ?> , 'kickstart.stealth.enable': false, 'kickstart.tuning.run_time_bias': 75, 'kickstart.setup.restoreperms': 0, 'kickstart.setup.dryrun': 0, 'kickstart.setup.ignoreerrors': <?php echo autoVar('kickstart.setup.ignoreerrors', 0); ?> , 'kickstart.enabled': 1, 'kickstart.security.password': '', 'kickstart.procengine': <?php echo autoVar('kickstart.procengine', 'direct'); ?> , 'kickstart.ftp.host': <?php echo autoVar('kickstart.ftp.host', 'localhost'); ?> , 'kickstart.ftp.port': <?php echo autoVar('kickstart.ftp.port', 22); ?> , 'kickstart.ftp.ssl': <?php echo autoVar('kickstart.ftp.ssl', 0); ?> , 'kickstart.ftp.passive': <?php echo autoVar('kickstart.ftp.passive', 1); ?> , 'kickstart.ftp.user': <?php echo autoVar('kickstart.ftp.user'); ?> , 'kickstart.ftp.pass': <?php echo autoVar('kickstart.ftp.pass'); ?> , 'kickstart.ftp.dir': <?php echo autoVar('kickstart.ftp.dir', '/'); ?> , 'kickstart.ftp.tempdir': <?php echo autoVar('kickstart.ftp.tempdir', AKKickstartUtils::getPath() . 'kicktemp'); } ?> }) }; doAjax(data, function(ret){ processRestorationStep(ret); }); } function processRestorationStep(data) { // Look for errors if(!data.status) { errorHandler(data.message); return; } // Propagate warnings to the GUI if( !empty(data.Warnings) ) { $.each(data.Warnings, function(i, item){ $('#warnings').append( $(document.createElement('div')) .html(item) ); $('#warningsBox').show('fast'); }); } // Parse total size, if exists if(array_key_exists('totalsize', data)) { if(is_array(data.filelist)) { akeeba_restoration_stat_total = 0; $.each(data.filelist,function(i, item) { akeeba_restoration_stat_total += item[1]; }); } akeeba_restoration_stat_outbytes = 0; akeeba_restoration_stat_inbytes = 0; akeeba_restoration_stat_files = 0; } // Update GUI akeeba_restoration_stat_inbytes += data.bytesIn; akeeba_restoration_stat_outbytes += data.bytesOut; akeeba_restoration_stat_files += data.files; var percentage = 0; if( akeeba_restoration_stat_total > 0 ) { percentage = 100 * akeeba_restoration_stat_inbytes / akeeba_restoration_stat_total; if(percentage < 0) { percentage = 0; } else if(percentage > 100) { percentage = 100; } } if(data.done) percentage = 100; setProgressBar(percentage); $('#currentFile').text( data.lastfile ); if(!empty(data.factory)) akeeba_factory = data.factory; post = { 'task' : 'continueExtracting', 'json' : JSON.stringify({factory: akeeba_factory}) }; if(!data.done) { doAjax(post, function(ret){ processRestorationStep(ret); }); } else { $('#page2a').hide('fast'); $('#extractionComplete').show('fast'); $('#runInstaller').css('display','inline-block'); if(akeeba_automation) $('#runInstaller').click(); } } function onGotoStartClick(event) { $('#page2').hide('fast'); $('#error').hide('fast'); $('#page1').show('fast'); } function onRunInstallerClick(event) { var windowReference = window.open('installation/index.php','installer'); if(!windowReference.opener) { windowReference.opener = this.window; } $('#runCleanup').css('display','inline-block'); $('#runInstaller').hide('fast'); } function onRunCleanupClick(event) { post = { 'task' : 'cleanUp', // Passing the factory preserves the renamed files array 'json' : JSON.stringify({factory: akeeba_factory}) }; doAjax(post, function(ret){ $('#runCleanup').hide('fast'); $('#gotoSite').css('display','inline-block'); $('#gotoAdministrator').css('display','inline-block'); $('#gotoPostRestorationRroubleshooting').css('display','block'); }); } function errorHandler(msg) { $('#errorMessage').html(msg); $('#error').show('fast'); } function onresetFTPTempDir(event) { $('#kickstart\\.ftp\\.tempdir').val('<?php echo addcslashes(AKKickstartUtils::getPath(), '\\\'"'); ?> '); } /** * Akeeba Kickstart Update Check */ var akeeba_update = {version: '0'}; var akeeba_version = '3.6.0'; function version_compare (v1, v2, operator) { // BEGIN REDUNDANT this.php_js = this.php_js || {}; this.php_js.ENV = this.php_js.ENV || {}; // END REDUNDANT // Important: compare must be initialized at 0. var i = 0, x = 0, compare = 0, // vm maps textual PHP versions to negatives so they're less than 0. // PHP currently defines these as CASE-SENSITIVE. It is important to // leave these as negatives so that they can come before numerical versions // and as if no letters were there to begin with. // (1alpha is < 1 and < 1.1 but > 1dev1) // If a non-numerical value can't be mapped to this table, it receives // -7 as its value. vm = { 'dev': -6, 'alpha': -5, 'a': -5, 'beta': -4, 'b': -4, 'RC': -3, 'rc': -3, '#': -2, 'p': -1, 'pl': -1 }, // This function will be called to prepare each version argument. // It replaces every _, -, and + with a dot. // It surrounds any nonsequence of numbers/dots with dots. // It replaces sequences of dots with a single dot. // version_compare('4..0', '4.0') == 0 // Important: A string of 0 length needs to be converted into a value // even less than an unexisting value in vm (-7), hence [-8]. // It's also important to not strip spaces because of this. // version_compare('', ' ') == 1 prepVersion = function (v) { v = ('' + v).replace(/[_\-+]/g, '.'); v = v.replace(/([^.\d]+)/g, '.$1.').replace(/\.{2,}/g, '.'); return (!v.length ? [-8] : v.split('.')); }, // This converts a version component to a number. // Empty component becomes 0. // Non-numerical component becomes a negative number. // Numerical component becomes itself as an integer. numVersion = function (v) { return !v ? 0 : (isNaN(v) ? vm[v] || -7 : parseInt(v, 10)); }; v1 = prepVersion(v1); v2 = prepVersion(v2); x = Math.max(v1.length, v2.length); for (i = 0; i < x; i++) { if (v1[i] == v2[i]) { continue; } v1[i] = numVersion(v1[i]); v2[i] = numVersion(v2[i]); if (v1[i] < v2[i]) { compare = -1; break; } else if (v1[i] > v2[i]) { compare = 1; break; } } if (!operator) { return compare; } // Important: operator is CASE-SENSITIVE. // "No operator" seems to be treated as "<." // Any other values seem to make the function return null. switch (operator) { case '>': case 'gt': return (compare > 0); case '>=': case 'ge': return (compare >= 0); case '<=': case 'le': return (compare <= 0); case '==': case '=': case 'eq': return (compare === 0); case '<>': case '!=': case 'ne': return (compare !== 0); case '': case '<': case 'lt': return (compare < 0); default: return null; } } function checkUpdates() { var structure = { type: "GET", url: 'http://query.yahooapis.com/v1/public/yql', data: { <?php if (KICKSTARTPRO) { ?> q: 'SELECT * FROM xml WHERE url="http://nocdn.akeebabackup.com/updates/kickstart.xml"', <?php } else { ?> q: 'SELECT * FROM xml WHERE url="http://nocdn.akeebabackup.com/updates/kickstartpro.xml"', <?php } ?> format: 'json', callback: 'updatesCallback' }, cache: true, crossDomain: true, jsonp: 'updatesCallback', timeout: 15000 }; $.ajax( structure ); } function updatesCallback(msg) { $.each(msg.query.results.updates.update, function(i, el){ var myUpdate = { 'version' : el.version, 'infourl' : el.infourl['content'], 'dlurl' : el.downloads.downloadurl.content } if(version_compare(myUpdate.version, akeeba_update.version, 'ge')) { akeeba_update = myUpdate; } }); if(version_compare(akeeba_update.version, akeeba_version, 'gt')) { notifyAboutUpdates(); } } function notifyAboutUpdates() { $('#update-version').text(akeeba_update.version); $('#update-dlnow').attr('href', akeeba_update.dlurl); $('#update-whatsnew').attr('href', akeeba_update.infourl); $('#update-notification').show('slow'); } <?php callExtraFeature('onExtraHeadJavascript'); ?> </script> </head> <body> <div id="automode" style="display:none;"> AUTOMODEON </div> <div id="fade" class="black_overlay"></div> <div id="page-container"> <div id="preextraction" class="white_content"> <div id="ie7Warning" style="display:none;"> <h2>Deprecated Internet Explorer version</h2> <p>This script is not guaranteed to work properly on Internet Explorer 7 or previous version, or on Internet Explorer 8 and higher running in compatibility mode.</p> <p>Please use Internet Explorer 8+ in native mode (the "broken page" icon next to the address bar should not be enabled). Alternatively, you may use the latest versions of Firefox, Safari, Google Chrome or SRWare Iron.</p> </div> <h2>THINGS_HEADER</h2> <ol> <li>THINGS_01</li> <li>THINGS_02</li> <li>THINGS_03</li> <li>THINGS_04</li> <li>THINGS_05</li> <li>THINGS_06</li> <li>THINGS_07</li> <li>THINGS_08</li> <li>THINGS_09</li> </ol> <a href="javascript:void(0)" onclick="closeLightbox();">CLOSE_LIGHTBOX</a> </div> <div id="genericerror" class="white_content"> <pre id="genericerrorInner"></pre> </div> <div id="header"> <div class="title">Akeeba Kickstart <?php echo $edition; ?> 3.6.0</div> </div> <div id="update-notification" style="display: none"> <p class="update-notify">UPDATE_HEADER</p> <p class="update-whyupdate">UPDATE_NOTICE</p> <p class="update-links"> <a href="#" id="update-dlnow">UPDATE_DLNOW</a> <a href="#" id="update-whatsnew" target="_blank">UPDATE_MOREINFO</a> </p> </div> <div id="page1"> <?php callExtraFeature('onPage1'); ?> <div id="page1-content"> <div class="helpme"> <span>NEEDSOMEHELPKS</span> <a href="https://www.akeebabackup.com/documentation/quick-start-guide/using-kickstart.html" target="_blank">QUICKSTART</a> </div> <div class="step1"> <div class="circle">1</div> <h2>SELECT_ARCHIVE</h2> <div class="area-container"> <?php callExtraFeature('onPage1Step1'); ?> <div class="clr"></div> <label for="kickstart.setup.sourcefile">ARCHIVE_FILE</label> <span class="field"> <?php $filelist = AKKickstartUtils::getArchivesAsOptions(); if (!empty($filelist)) { ?> <select id="kickstart.setup.sourcefile"> <?php echo $filelist; ?> </select> <?php } else { ?> <a href="https://www.akeebabackup.com/documentation/troubleshooter/ksnoarchives.html" target="_blank">NOARCHIVESCLICKHERE</a> <?php } ?> </span> <br /> <label for="kickstart.jps.password">JPS_PASSWORD</label> <span class="field"><input type="password" id="kickstart.jps.password" value="" /></span> </div> </div> <div class="clr"></div> <div class="step2"> <div class="circle">2</div> <h2>SELECT_EXTRACTION</h2> <div class="area-container"> <label for="kickstart.procengine">WRITE_TO_FILES</label> <span class="field"> <select id="kickstart.procengine"> <option value="direct">WRITE_DIRECTLY</option> <option value="ftp">WRITE_FTP</option> </select> </span><br/> <label for="kickstart.setup.ignoreerrors">IGNORE_MOST_ERRORS</label> <span class="field"><input type="checkbox" id="kickstart.setup.ignoreerrors" /></span> <div id="ftp-options"> <label for="kickstart.ftp.host">FTP_HOST</label> <span class="field"><input type="text" id="kickstart.ftp.host" value="localhost" /></span><br /> <label for="kickstart.ftp.port">FTP_PORT</label> <span class="field"><input type="text" id="kickstart.ftp.port" value="21" /></span><br /> <label for="kickstart.ftp.ssl">FTP_FTPS</label> <span class="field"><input type="checkbox" id="kickstart.ftp.ssl" /></span><br /> <label for="kickstart.ftp.passive">FTP_PASSIVE</label> <span class="field"><input type="checkbox" id="kickstart.ftp.passive" checked="checked" /></span><br /> <label for="kickstart.ftp.user">FTP_USER</label> <span class="field"><input type="text" id="kickstart.ftp.user" value="" /></span><br /> <label for="kickstart.ftp.pass">FTP_PASS</label> <span class="field"><input type="password" id="kickstart.ftp.pass" value="" /></span><br /> <label for="kickstart.ftp.dir">FTP_DIR</label> <span class="field"><input type="text" id="kickstart.ftp.dir" value="" /></span><br /> <label for="kickstart.ftp.tempdir">FTP_TEMPDIR</label> <span class="field"> <input type="text" id="kickstart.ftp.tempdir" value="<?php echo htmlentities(AKKickstartUtils::getPath()); ?> " /> <span class="button" id="checkFTPTempDir">BTN_CHECK</span> <span class="button" id="resetFTPTempDir">BTN_RESET</span> </span><br /> <label></label> <span class="button" id="testFTP">BTN_TESTFTPCON</span> <a id="notWorking" class="button" href="https://www.akeebabackup.com/documentation/troubleshooter/kscantextract.html" target="_blank">CANTGETITTOWORK</a> <br /> </div> </div> </div> <div class="clr"></div> <div class="step3"> <div class="circle">3</div> <h2>FINE_TUNE</h2> <div class="area-container"> <label for="kickstart.tuning.min_exec_time">MIN_EXEC_TIME</label> <span class="field"><input type="text" id="kickstart.tuning.min_exec_time" value="1" /></span> <span>SECONDS_PER_STEP</span><br /> <label for="kickstart.tuning.max_exec_time">MAX_EXEC_TIME</label> <span class="field"><input type="text" id="kickstart.tuning.max_exec_time" value="5" /></span> <span>SECONDS_PER_STEP</span><br /> <label for="kickstart.stealth.enable">STEALTH_MODE</label> <span class="field"><input type="checkbox" id="kickstart.stealth.enable" /></span><br /> <label for="kickstart.stealth.url">STEALTH_URL</label> <span class="field"><input type="text" id="kickstart.stealth.url" value="" /></span><br /> </div> </div> <div class="clr"></div> <div class="step4"> <div class="circle">4</div> <h2>EXTRACT_FILES</h2> <div class="area-container"> <span></span> <span id="gobutton" class="button">BTN_START</span> </div> </div> <div class="clr"></div> </div> </div> <div id="page2"> <div id="page2a"> <div class="circle">5</div> <h2>EXTRACTING</h2> <div class="area-container"> <div id="warn-not-close">DO_NOT_CLOSE_EXTRACT</div> <div id="progressbar"> <div id="progressbar-inner"> </div> </div> <div id="currentFile"></div> </div> </div> <div id="extractionComplete" style="display: none"> <div class="circle">6</div> <h2>RESTACLEANUP</h2> <div id="runInstaller" class="button">BTN_RUNINSTALLER</div> <div id="runCleanup" class="button" style="display:none">BTN_CLEANUP</div> <div id="gotoSite" class="button" style="display:none">BTN_SITEFE</div> <div id="gotoAdministrator" class="button" style="display:none">BTN_SITEBE</div> <div id="gotoPostRestorationRroubleshooting" style="display:none"> <a href="https://www.akeebabackup.com/documentation/troubleshooter/post-restoration.html" target="_blank">POSTRESTORATIONTROUBLESHOOTING</a> </div> </div> <div id="warningsBox" style="display: none;"> <div id="warningsHeader"> <h2>WARNINGS</h2> </div> <div id="warningsContainer"> <div id="warnings"></div> </div> </div> <div id="error" style="display: none;"> <h3>ERROR_OCCURED</h3> <p id="errorMessage"></p> <div id="gotoStart" class="button">BTN_GOTOSTART</div> <div> <a href="https://www.akeebabackup.com/documentation/troubleshooter/kscantextract.html" target="_blank">CANTGETITTOWORK</a> </div> </div> </div> <div id="footer"> <div class="copyright">Copyright © 2008–2012 <a href="http://www.akeebabackup.com">Nicholas K. Dionysopoulos / Akeeba Backup</a>. All legal rights reserved.<br /> This program is free software: you can redistribute it and/or modify it under the terms of the <a href="http://www.gnu.org/gpl-3.htmlhttp://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<br /> Design credits: <a href="http://internet-inspired.com/">Internet Inspired</a>, slightly modified by AkeebaBackup.com </div> </div> </div> </body> </html> <?php }
function echoPage() { $edition = KICKSTARTPRO ? 'Professional' : 'Core'; $bestArchivePath = AKKickstartUtils::getBestArchivePath(); $filelist = AKKickstartUtils::getArchivesAsOptions($bestArchivePath); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Akeeba Kickstart <?php echo $edition; ?> <?php echo VERSION; ?> </title> <style type="text/css" media="all" rel="stylesheet"> <?php echoCSS(); ?> </style> <?php if (@file_exists('jquery.min.js')) { ?> <script type="text/javascript" src="jquery.min.js"></script> <?php } else { ?> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <?php } ?> <?php if (@file_exists('json2.min.js')) { ?> <script type="text/javascript" src="json2.min.js"></script> <?php } else { ?> <script type="text/javascript" src="//yandex.st/json2/2011-10-19/json2.min.js"></script> <?php } ?> <?php if (@file_exists('jquery-ui.min.js')) { ?> <script type="text/javascript" src="jquery-ui.min.js"></script> <?php } else { ?> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script> <?php } ?> <?php echoHeadJavascript(); ?> </head> <body> <div id="automode" style="display:none;"> AUTOMODEON </div> <div id="fade" class="black_overlay"></div> <div id="page-container"> <div id="preextraction" class="white_content"> <div id="ie7Warning" style="display:none;"> <h2>Deprecated Internet Explorer version</h2> <p> This script is not guaranteed to work properly on Internet Explorer 8 or previous version, or on Internet Explorer 9 and higher running in compatibility mode. </p> <p> Please use Internet Explorer 9 or later in native mode (the "broken page" icon next to the address bar should not be enabled). Alternatively, you may use the latest versions of Firefox, Safari, Google Chrome or Opera. </p> </div> <h2>THINGS_HEADER</h2> <ol> <li>THINGS_01</li> <li>THINGS_02</li> <li>THINGS_03</li> <li>THINGS_04</li> <li>THINGS_05</li> <li>THINGS_06</li> <li>THINGS_07</li> <li>THINGS_08</li> <li>THINGS_09</li> </ol> <a href="javascript:void(0)" onclick="closeLightbox();">CLOSE_LIGHTBOX</a> </div> <div id="genericerror" class="white_content"> <pre id="genericerrorInner"></pre> </div> <div id="header"> <div class="title">Akeeba Kickstart <?php echo $edition; ?> 4.0.0</div> </div> <div id="update-notification" style="display: none"> <p class="update-notify">UPDATE_HEADER</p> <p class="update-whyupdate">UPDATE_NOTICE</p> <p class="update-links"> <a href="#" id="update-dlnow">UPDATE_DLNOW</a> <a href="#" id="update-whatsnew" target="_blank">UPDATE_MOREINFO</a> </p> </div> <div id="page1"> <?php callExtraFeature('onPage1'); ?> <div id="page1-content"> <div class="helpme"> <span>NEEDSOMEHELPKS</span> <a href="https://www.akeebabackup.com/documentation/quick-start-guide/using-kickstart.html" target="_blank">QUICKSTART</a> </div> <div class="step1"> <div class="circle">1</div> <h2>SELECT_ARCHIVE</h2> <div class="area-container"> <?php callExtraFeature('onPage1Step1'); ?> <div class="clr"></div> <label for="kickstart.setup.sourcepath">ARCHIVE_DIRECTORY</label> <span class="field"> <input type="text" id="kickstart.setup.sourcepath" value="<?php echo htmlentities($bestArchivePath); ?> " /> <span class="button" id="reloadArchives" style="margin-top:0;margin-bottom:0">RELOAD_ARCHIVES</span> </span> <br/> <label for="kickstart.setup.sourcefile">ARCHIVE_FILE</label> <span class="field" id="sourcefileContainer"> <?php if (!empty($filelist)) { ?> <select id="kickstart.setup.sourcefile"> <?php echo $filelist; ?> </select> <?php } else { ?> <a href="https://www.akeebabackup.com/documentation/troubleshooter/ksnoarchives.html" target="_blank">NOARCHIVESCLICKHERE</a> <?php } ?> </span> <br /> <label for="kickstart.jps.password">JPS_PASSWORD</label> <span class="field"><input type="password" id="kickstart.jps.password" value="" /></span> </div> </div> <div class="clr"></div> <div class="step2"> <div class="circle">2</div> <h2>SELECT_EXTRACTION</h2> <div class="area-container"> <label for="kickstart.procengine">WRITE_TO_FILES</label> <span class="field"> <select id="kickstart.procengine"> <option value="hybrid">WRITE_HYBRID</option> <option value="direct">WRITE_DIRECTLY</option> <option value="ftp">WRITE_FTP</option> <option value="sftp">WRITE_SFTP</option> </select> </span><br/> <label for="kickstart.setup.ignoreerrors">IGNORE_MOST_ERRORS</label> <span class="field"><input type="checkbox" id="kickstart.setup.ignoreerrors" /></span> <div id="ftp-options"> <label for="kickstart.ftp.host">FTP_HOST</label> <span class="field"><input type="text" id="kickstart.ftp.host" value="localhost" /></span><br /> <label for="kickstart.ftp.port">FTP_PORT</label> <span class="field"><input type="text" id="kickstart.ftp.port" value="21" /></span><br /> <div id="ftp-ssl-passive"> <label for="kickstart.ftp.ssl">FTP_FTPS</label> <span class="field"><input type="checkbox" id="kickstart.ftp.ssl" /></span><br /> <label for="kickstart.ftp.passive">FTP_PASSIVE</label> <span class="field"><input type="checkbox" id="kickstart.ftp.passive" checked="checked" /></span><br /> </div> <label for="kickstart.ftp.user">FTP_USER</label> <span class="field"><input type="text" id="kickstart.ftp.user" value="" /></span><br /> <label for="kickstart.ftp.pass">FTP_PASS</label> <span class="field"><input type="password" id="kickstart.ftp.pass" value="" /></span><br /> <label for="kickstart.ftp.dir">FTP_DIR</label> <span class="field"> <input type="text" id="kickstart.ftp.dir" value="" /> <span class="button" id="browseFTP" style="margin-top:0;margin-bottom:0">FTP_BROWSE</span> </span><br /> <label for="kickstart.ftp.tempdir">FTP_TEMPDIR</label> <span class="field"> <input type="text" id="kickstart.ftp.tempdir" value="<?php echo htmlentities(AKKickstartUtils::getPath()); ?> " /> <span class="button" id="checkFTPTempDir">BTN_CHECK</span> <span class="button" id="resetFTPTempDir">BTN_RESET</span> </span><br /> <label></label> <span class="button" id="testFTP">BTN_TESTFTPCON</span> <a id="notWorking" class="button" href="https://www.akeebabackup.com/documentation/troubleshooter/kscantextract.html" target="_blank">CANTGETITTOWORK</a> <br /> </div> </div> </div> <div class="clr"></div> <div class="step3"> <div class="circle">3</div> <h2>FINE_TUNE</h2> <div class="area-container"> <label for="kickstart.tuning.min_exec_time">MIN_EXEC_TIME</label> <span class="field"><input type="text" id="kickstart.tuning.min_exec_time" value="1" /></span> <span>SECONDS_PER_STEP</span><br /> <label for="kickstart.tuning.max_exec_time">MAX_EXEC_TIME</label> <span class="field"><input type="text" id="kickstart.tuning.max_exec_time" value="5" /></span> <span>SECONDS_PER_STEP</span><br /> <label for="kickstart.stealth.enable">STEALTH_MODE</label> <span class="field"><input type="checkbox" id="kickstart.stealth.enable" /></span><br /> <label for="kickstart.stealth.url">STEALTH_URL</label> <span class="field"><input type="text" id="kickstart.stealth.url" value="" /></span><br /> </div> </div> <div class="clr"></div> <div class="step4"> <div class="circle">4</div> <h2>EXTRACT_FILES</h2> <div class="area-container"> <span></span> <span id="gobutton" class="button">BTN_START</span> </div> </div> <div class="clr"></div> </div> <div id="ftpdialog" style="display:none;"> <p class="instructions alert alert-info">FTPBROWSER_LBL_INSTRUCTIONS</p> <div class="error alert alert-error" id="ftpBrowserErrorContainer"> <h3>FTPBROWSER_LBL_ERROR</h3> <p id="ftpBrowserError"></p> </div> <ul id="ak_crumbs" class="breadcrumb"></ul> <div class="row-fluid"> <div class="span12"> <table id="ftpBrowserFolderList" class="table table-striped"> </table> </div> </div> </div> </div> <div id="page2"> <div id="page2a"> <div class="circle">5</div> <h2>EXTRACTING</h2> <div class="area-container"> <div id="warn-not-close">DO_NOT_CLOSE_EXTRACT</div> <div id="progressbar"> <div id="progressbar-inner"> </div> </div> <div id="currentFile"></div> </div> </div> <div id="extractionComplete" style="display: none"> <div class="circle">6</div> <h2>RESTACLEANUP</h2> <div id="runInstaller" class="button">BTN_RUNINSTALLER</div> <div id="runCleanup" class="button" style="display:none">BTN_CLEANUP</div> <div id="gotoSite" class="button" style="display:none">BTN_SITEFE</div> <div id="gotoAdministrator" class="button" style="display:none">BTN_SITEBE</div> <div id="gotoPostRestorationRroubleshooting" style="display:none"> <a href="https://www.akeebabackup.com/documentation/troubleshooter/post-restoration.html" target="_blank">POSTRESTORATIONTROUBLESHOOTING</a> </div> </div> <div id="warningsBox" style="display: none;"> <div id="warningsHeader"> <h2>WARNINGS</h2> </div> <div id="warningsContainer"> <div id="warnings"></div> </div> </div> <div id="error" style="display: none;"> <h3>ERROR_OCCURED</h3> <p id="errorMessage"></p> <div id="gotoStart" class="button">BTN_GOTOSTART</div> <div> <a href="https://www.akeebabackup.com/documentation/troubleshooter/kscantextract.html" target="_blank">CANTGETITTOWORK</a> </div> </div> </div> <div id="footer"> <div class="copyright">Copyright © 2008–2013 <a href="http://www.akeebabackup.com">Nicholas K. Dionysopoulos / Akeeba Backup</a>. All legal rights reserved.<br /> This program is free software: you can redistribute it and/or modify it under the terms of the <a href="http://www.gnu.org/gpl-3.htmlhttp://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<br /> Design credits: <a href="http://internet-inspired.com/">Internet Inspired</a>, slightly modified by AkeebaBackup.com </div> </div> </div> </body> </html> <?php }