185 lines
6.2 KiB
PHP
185 lines
6.2 KiB
PHP
<?php
|
|
/**
|
|
* @package solo
|
|
* @copyright Copyright (c)2014-2019 Nicholas K. Dionysopoulos / Akeeba Ltd
|
|
* @license GNU GPL version 3 or later
|
|
*/
|
|
|
|
namespace Solo\View\Restore;
|
|
|
|
use Akeeba\Engine\Factory;
|
|
use Akeeba\Engine\Platform;
|
|
use Awf\Text\Text;
|
|
use Awf\Uri\Uri;
|
|
use Awf\Utils\Template;
|
|
use Solo\Helper\Escape;
|
|
use Solo\View\Html as BaseHtml;
|
|
|
|
class Html extends BaseHtml
|
|
{
|
|
public $password;
|
|
public $id;
|
|
public $ftpparams;
|
|
public $extractionmodes;
|
|
public $extension;
|
|
public $siteURL;
|
|
|
|
public function display($tpl = null)
|
|
{
|
|
Template::addJs('media://js/solo/configuration.js', $this->container->application);
|
|
Template::addJs('media://js/solo/restore.js', $this->container->application);
|
|
|
|
$this->loadCommonJavascript();
|
|
|
|
return parent::display($tpl);
|
|
}
|
|
|
|
public function onBeforeMain()
|
|
{
|
|
/** @var \Solo\Model\Restore $model */
|
|
$model = $this->getModel();
|
|
|
|
$this->id = $model->getState('id', 0, 'int');
|
|
$this->ftpparams = $model->getFTPParams();
|
|
$this->extractionmodes = $model->getExtractionModes();
|
|
|
|
$backup = Platform::getInstance()->get_statistics($this->id);
|
|
$this->extension = strtolower(substr($backup['absolute_path'], -3));
|
|
|
|
$router = $this->container->router;
|
|
$urlBrowser = addslashes($router->route('index.php?view=browser&tmpl=component&processfolder=1&folder='));
|
|
$urlFtpBrowser = addslashes($router->route('index.php?view=ftpbrowser'));
|
|
$urlTestFtp = addslashes($router->route('index.php?view=restore&task=ajax&ajax=testftp'));
|
|
|
|
$js = <<< JS
|
|
// Callback routine to close the browser dialog
|
|
var akeeba_browser_callback = null;
|
|
|
|
akeeba.loadScripts.push(function() {
|
|
akeeba.Configuration.URLs['browser'] = '$urlBrowser';
|
|
akeeba.Configuration.URLs['ftpBrowser'] = '$urlFtpBrowser';
|
|
akeeba.Configuration.URLs['testFtp'] = '$urlTestFtp';
|
|
|
|
// This element doesn't exist in the current version of the code
|
|
try
|
|
{
|
|
akeeba.System.addEventListener('ftp-browse', 'click', function(e) {
|
|
akeeba.Configuration.FtpBrowser.initialise('ftp.initial_directory', 'ftp');
|
|
});
|
|
}
|
|
catch (e)
|
|
{
|
|
}
|
|
|
|
akeeba.System.addEventListener('testftp', 'click', function(e) {
|
|
akeeba.Configuration.FtpTest.testConnection('ftp.test', 'ftp');
|
|
});
|
|
|
|
akeeba.System.addEventListener(document.getElementById('procengine'), 'change', akeeba.Restore.onProcEngineChange);
|
|
|
|
akeeba.Restore.onProcEngineChange();
|
|
|
|
// Work around Safari which ignores autocomplete=off
|
|
setTimeout(akeeba.Restore.restoreDefaultOptions, 500);
|
|
});
|
|
|
|
JS;
|
|
|
|
$this->getContainer()->application->getDocument()->addScriptDeclaration($js);
|
|
|
|
return true;
|
|
}
|
|
|
|
public function onBeforeStart()
|
|
{
|
|
/** @var \Solo\Model\Restore $model */
|
|
$model = $this->getModel();
|
|
|
|
$inCMS = $this->container->segment->get('insideCMS', false);
|
|
|
|
if ($inCMS)
|
|
{
|
|
$this->siteURL = $this->container->appConfig->get('cms_url', '');
|
|
}
|
|
else
|
|
{
|
|
$this->siteURL = Factory::getConfiguration()->get('akeeba.platform.site_url', '');
|
|
}
|
|
|
|
$this->siteURL = trim($this->siteURL);
|
|
|
|
$this->setLayout('restore');
|
|
|
|
$password = Escape::escapeJS($model->getState('password'));
|
|
$urlToRestore = Escape::escapeJS(Uri::base(false, $this->container) . 'restore.php');
|
|
$mainURL = Escape::escapeJS($this->getContainer()->router->route('index.php'));
|
|
|
|
$js = <<< JS
|
|
// Callback routine to close the browser dialog
|
|
var akeeba_browser_callback = null;
|
|
|
|
akeeba.loadScripts.push(function() {
|
|
akeeba.Restore.password = '$password';
|
|
akeeba.Restore.ajaxURL = '$urlToRestore';
|
|
akeeba.Restore.mainURL = '$mainURL';
|
|
|
|
akeeba.Restore.errorCallback = akeeba.Restore.errorCallbackDefault;
|
|
|
|
akeeba.Restore.pingRestoration();
|
|
});
|
|
|
|
JS;
|
|
|
|
$this->getContainer()->application->getDocument()->addScriptDeclaration($js);
|
|
|
|
return true;
|
|
}
|
|
|
|
public function loadCommonJavascript()
|
|
{
|
|
$keys = array(
|
|
'COM_AKEEBA_CONFIG_UI_BROWSE' => 'COM_AKEEBA_CONFIG_UI_BROWSE',
|
|
'COM_AKEEBA_CONFIG_UI_CONFIG' => 'COM_AKEEBA_CONFIG_UI_CONFIG',
|
|
'COM_AKEEBA_CONFIG_UI_REFRESH' => 'COM_AKEEBA_CONFIG_UI_REFRESH',
|
|
'COM_AKEEBA_CONFIG_UI_FTPBROWSER_TITLE' => 'COM_AKEEBA_CONFIG_UI_FTPBROWSER_TITLE',
|
|
'COM_AKEEBA_FILEFILTERS_LABEL_UIROOT' => 'SOLO_COMMON_LBL_ROOT',
|
|
'COM_AKEEBA_CONFIG_DIRECTFTP_TEST_OK' => 'COM_AKEEBA_CONFIG_DIRECTFTP_TEST_OK',
|
|
'COM_AKEEBA_CONFIG_DIRECTFTP_TEST_FAIL' => 'COM_AKEEBA_CONFIG_DIRECTFTP_TEST_FAIL',
|
|
'COM_AKEEBA_BACKUP_TEXT_LASTRESPONSE' => 'COM_AKEEBA_BACKUP_TEXT_LASTRESPONSE',
|
|
);
|
|
$strings = array();
|
|
|
|
foreach ($keys as $k => $v)
|
|
{
|
|
$strings[$k] = Escape::escapeJS(Text::_($v));
|
|
}
|
|
|
|
$router = $this->getContainer()->router;
|
|
$browserURL = Escape::escapeJS($router->route('index.php?view=browser&tmpl=component&processfolder=1&folder='));
|
|
$ftpBrowserURL = Escape::escapeJS($router->route('index.php?view=ftpbrowser'));
|
|
$testFTPURL = Escape::escapeJS($router->route('index.php?view=configuration&task=testftp'));
|
|
|
|
$js = <<< JS
|
|
akeeba.loadScripts.push(function() {
|
|
akeeba.Configuration.translations['COM_AKEEBA_CONFIG_UI_BROWSE'] = '{$strings['COM_AKEEBA_CONFIG_UI_BROWSE']}';
|
|
akeeba.Configuration.translations['COM_AKEEBA_CONFIG_UI_CONFIG'] = '{$strings['COM_AKEEBA_CONFIG_UI_CONFIG']}';
|
|
akeeba.Configuration.translations['COM_AKEEBA_CONFIG_UI_REFRESH'] = '{$strings['COM_AKEEBA_CONFIG_UI_REFRESH']}';
|
|
akeeba.Configuration.translations['COM_AKEEBA_CONFIG_UI_FTPBROWSER_TITLE'] = '{$strings['COM_AKEEBA_CONFIG_UI_FTPBROWSER_TITLE']}';
|
|
akeeba.Configuration.translations['COM_AKEEBA_FILEFILTERS_LABEL_UIROOT'] = '{$strings['COM_AKEEBA_FILEFILTERS_LABEL_UIROOT']}';
|
|
akeeba.Configuration.translations['COM_AKEEBA_CONFIG_DIRECTFTP_TEST_OK'] = '{$strings['COM_AKEEBA_CONFIG_DIRECTFTP_TEST_OK']}';
|
|
akeeba.Configuration.translations['COM_AKEEBA_CONFIG_DIRECTFTP_TEST_FAIL'] = '{$strings['COM_AKEEBA_CONFIG_DIRECTFTP_TEST_FAIL']}';
|
|
akeeba.Configuration.translations['COM_AKEEBA_BACKUP_TEXT_LASTRESPONSE'] = '{$strings['COM_AKEEBA_BACKUP_TEXT_LASTRESPONSE']}';
|
|
|
|
akeeba.Restore.translations['COM_AKEEBA_BACKUP_TEXT_LASTRESPONSE'] = '{$strings['COM_AKEEBA_BACKUP_TEXT_LASTRESPONSE']}';
|
|
|
|
akeeba.Configuration.URLs['browser'] = '$browserURL';
|
|
akeeba.Configuration.URLs['ftpBrowser'] = '$ftpBrowserURL';
|
|
akeeba.Configuration.URLs['testFtp'] = '$testFTPURL';
|
|
});
|
|
JS;
|
|
|
|
$this->getContainer()->application->getDocument()->addScriptDeclaration($js);
|
|
}
|
|
|
|
}
|