first commit
This commit is contained in:
9
administrator/components/com_akeebabackup/tmpl/.htaccess
Normal file
9
administrator/components/com_akeebabackup/tmpl/.htaccess
Normal file
@@ -0,0 +1,9 @@
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
</IfModule>
|
||||
<IfModule mod_authz_core.c>
|
||||
<RequireAll>
|
||||
Require all denied
|
||||
</RequireAll>
|
||||
</IfModule>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Alice\HtmlView $this */
|
||||
?>
|
||||
<?php if (empty($this->logs)): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ERR_NOLOGS') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<?php if($this->autorun): ?>
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_AUTORUN_NOTICE') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<form name="adminForm" id="adminForm"
|
||||
action="<?= Route::_('index.php?option=com_akeebabackup&view=Alice&task=start') ?>"
|
||||
method="post"
|
||||
class="row row-cols-lg-auto g-3 align-items-center">
|
||||
|
||||
<div class="col-12">
|
||||
<label for="tag">
|
||||
<?= Text::_('COM_AKEEBABACKUP_LOG_CHOOSE_FILE_TITLE') ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<?= HTMLHelper::_('select.genericlist', $this->logs, 'log', [
|
||||
'list.attr' => [
|
||||
'class' => 'form-select',
|
||||
]
|
||||
], 'value', 'text', $this->log) ?>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<button type="submit"
|
||||
class="btn btn-primary" id="analyze-log">
|
||||
<span class="fa fa-diagnoses"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYZE') ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<?= HTMLHelper::_('form.token') ?>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<h2><?= Text::_('COM_AKEEBABACKUP_ALICE_HEAD_ONLYFAILED') ?></h2>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_LBL_ONLYFAILED_SHOWINGLOGS') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_LBL_ONLYFAILED_WHATISFAILED') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_LBL_ONLYFAILED_IFNOFAILED') ?>
|
||||
</p>
|
||||
</div>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Alice\HtmlView $this */
|
||||
?>
|
||||
|
||||
<div class="akeeba-panel--red">
|
||||
<header class="akeeba-block-header">
|
||||
<h3>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ERR_ANALYZEFAILED_HEADER') ?>
|
||||
</h3>
|
||||
</header>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ERR_ANALYZEFAILED_INFO') ?>
|
||||
</p>
|
||||
<h4>
|
||||
<span class="akeeba-label--red--small">
|
||||
<?= $this->errorException->getCode() ?>
|
||||
</span>
|
||||
<?= $this->errorException->getMessage() ?>
|
||||
</h4>
|
||||
<p>
|
||||
<?= $this->errorException->getFile() ?> :: L<?= $this->errorException->getLine() ?>
|
||||
</p>
|
||||
<pre><?= $this->errorException->getTraceAsString() ?></pre>
|
||||
</div>
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Alice\HtmlView $this */
|
||||
|
||||
?>
|
||||
<div class="card">
|
||||
<h3 class="card-header"><?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_HEAD') ?></h3>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_SUMMARY', $this->doneChecks) ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if ($this->aliceStatus == 'success'): ?>
|
||||
<p class="alert alert-success">
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_SUMMARY_SUCCESS') ?>
|
||||
</p>
|
||||
<?php elseif ($this->aliceStatus == 'warnings'): ?>
|
||||
<p class="alert alert-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_SUMMARY_WARNINGS') ?>
|
||||
</p>
|
||||
<?php else: ?>
|
||||
<p class="alert alert-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_SUMMARY_ERRORS') ?>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if ($this->aliceStatus != 'success'): ?>
|
||||
<div class="card">
|
||||
<h3 class="card-header bg-<?= ($this->aliceStatus == 'error') ? 'danger text-white' : 'warning' ?>">
|
||||
<?php if ($this->aliceStatus == 'error'): ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_ERROR') ?>
|
||||
<?php else: ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_WARNINGS') ?>
|
||||
<?php endif; ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<?php if ($this->aliceStatus == 'error'): ?>
|
||||
<h4><?= $this->aliceError['message'] ?></h4>
|
||||
<p class="fst-italic">
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_SOLUTION') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= $this->aliceError['solution'] ?>
|
||||
</p>
|
||||
<?php else: ?>
|
||||
<table class="table table-striped">
|
||||
<tbody>
|
||||
<?php foreach($this->aliceWarnings as $warning): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<h5><?= $warning['message'] ?></h5>
|
||||
<p class="fst-italic">
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_SOLUTION') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= $warning['solution'] ?>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="my-3 alert alert-info">
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYSIS_REPORT_LBL_NEXTSTEPS') ?>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper as HTMLHelperAlias;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Alice\HtmlView $this */
|
||||
|
||||
$js = <<< JS
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
setTimeout(function () {
|
||||
document.forms.adminForm.submit();
|
||||
}, 500);
|
||||
});
|
||||
JS;
|
||||
|
||||
$this->document->getWebAssetManager()
|
||||
->useScript('com_akeebabackup.system')
|
||||
->addInlineScript($js, [], [], [
|
||||
'com_akeebabackup.system'
|
||||
]);
|
||||
|
||||
?>
|
||||
|
||||
<div class="card">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYZE_LABEL_PROGRESS') ?>
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
<h4>
|
||||
<?= $this->currentSection ?>
|
||||
</h4>
|
||||
<p>
|
||||
<?= $this->currentCheck ?>
|
||||
</p>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" style="width: <?= $this->percentage ?>%;"
|
||||
aria-valuenow="<?= $this->percentage ?>" aria-valuemin="0" aria-valuemax="100"
|
||||
><?= $this->percentage ?>%</div>
|
||||
</div>
|
||||
<p class="text-center my-5">
|
||||
<img src="<?= Uri::root() ?>/media/com_akeebabackup/icons/spinner.gif"
|
||||
alt="<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYZE_LABEL_PROGRESS') ?>" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form name="adminForm" id="adminForm"
|
||||
action="<?= Route::_('index.php?option=com_akeebabackup&task=Alice.step') ?>" method="post">
|
||||
<?= HTMLHelperAlias::_('form.token') ?>
|
||||
</form>
|
||||
@@ -0,0 +1,313 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Backup\HtmlView */
|
||||
|
||||
HTMLHelper::_('formbehavior.chosen');
|
||||
|
||||
// Configuration Wizard pop-up
|
||||
if ($this->promptForConfigurationwizard)
|
||||
{
|
||||
echo $this->loadAnyTemplate('Configuration/confwiz_modal');
|
||||
}
|
||||
|
||||
// The Javascript of the page
|
||||
echo $this->loadTemplate('script');
|
||||
|
||||
?>
|
||||
|
||||
<?php // Backup Setup ?>
|
||||
<div id="backup-setup" class="card">
|
||||
<h3 class="card-header bg-primary text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_HEADER_STARTNEW') ?>
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
<?php if($this->hasWarnings && !$this->unwriteableOutput): ?>
|
||||
<div id="quirks" class="alert alert-<?= $this->hasErrors ? 'danger' : 'warning' ?>">
|
||||
<h3 class="alert-heading">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_DETECTEDQUIRKS') ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_QUIRKSLIST') ?>
|
||||
</p>
|
||||
<?= $this->warningsCell ?>
|
||||
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if($this->unwriteableOutput): ?>
|
||||
<div id="akeeba-fatal-outputdirectory" class="alert alert-danger">
|
||||
<h3>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_ERROR_UNWRITABLEOUTPUT_' . ($this->autoStart ? 'AUTOBACKUP' : 'NORMALBACKUP')) ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BACKUP_ERROR_UNWRITABLEOUTPUT_COMMON', 'index.php?option=com_akeebabackup&view=Configuration', 'https://www.akeeba.com/warnings/q001.html') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<form action="index.php" method="post"
|
||||
name="flipForm" id="flipForm"
|
||||
class="d-md-flex flex-md-row justify-content-md-evenly align-items-center border border-1 bg-light border-rounded rounded-2 mt-1 mb-2 p-2"
|
||||
autocomplete="off">
|
||||
|
||||
<div class="m-2">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_PROFILE_TITLE') ?>: #<?= (int)$this->profileId ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="flex-grow-1">
|
||||
<joomla-field-fancy-select
|
||||
search-placeholder="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_PROFILEID') ?>"
|
||||
><?=
|
||||
HTMLHelper::_('select.genericlist', $this->profileList, 'profileid', [
|
||||
'list.select' => $this->profileId,
|
||||
'id' => 'comAkeebaControlPanelProfileSwitch',
|
||||
])
|
||||
?></joomla-field-fancy-select>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="option" value="com_akeebabackup"/>
|
||||
<input type="hidden" name="view" value="Backup"/>
|
||||
<input type="hidden" name="returnurl" value="<?= $this->escape($this->returnURL) ?>"/>
|
||||
<input type="hidden" name="description" id="flipDescription" value=""/>
|
||||
<input type="hidden" name="comment" id="flipComment" value=""/>
|
||||
<?= HTMLHelper::_('form.token') ?>
|
||||
</form>
|
||||
|
||||
<form id="dummyForm" style="display: <?= $this->unwriteableOutput ? 'none' : 'block' ?>;">
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="backup-description" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_DESCRIPTION') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="description"
|
||||
class="form-control"
|
||||
id="backup-description"
|
||||
value="<?= $this->escape(empty($this->description) ? $this->defaultDescription : $this->description)?>"
|
||||
maxlength="255" size="80" autocomplete="off" />
|
||||
<span class="text-muted"><?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_DESCRIPTION_HELP') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="comment" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_COMMENT') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<textarea
|
||||
name="comment" id="comment"
|
||||
class="form-control"
|
||||
rows="5" cols="73"><?= $this->comment ?></textarea>
|
||||
<span class="text-muted"><?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_COMMENT_HELP') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-sm-9 offset-sm-3">
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-lg" id="backup-start">
|
||||
<span class="fa fa-play"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_START') ?>
|
||||
</button>
|
||||
|
||||
<a class="btn btn-outline-danger" id="backup-default" href="#">
|
||||
<span class="fa fa-redo"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_RESTORE_DEFAULT') ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php // Warning for having set an ANGIE password ?>
|
||||
<div id="angie-password-warning" class="alert alert-warning alert-dismissible fade show" style="display: none">
|
||||
<h3>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_ANGIE_PASSWORD_WARNING_HEADER') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</h3>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_BACKUP_ANGIE_PASSWORD_WARNING_1') ?></p>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_BACKUP_ANGIE_PASSWORD_WARNING_2') ?></p>
|
||||
</div>
|
||||
|
||||
<?php // Backup in progress ?>
|
||||
<div id="backup-progress-pane" style="display: none">
|
||||
<div class="alert alert-info">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_BACKINGUP') ?>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h3 class="card-header bg-primary text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_PROGRESS') ?>
|
||||
</h3>
|
||||
|
||||
<div id="backup-progress-content" class="card-body">
|
||||
<div id="backup-steps"></div>
|
||||
<div id="backup-status" class="mt-3 border rounded bg-light">
|
||||
<div id="backup-step" class="p-1"></div>
|
||||
<div id="backup-substep" class="p-1 text-muted border-top"></div>
|
||||
</div>
|
||||
<div id="backup-percentage" class="progress mt-3 mb-3">
|
||||
<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" style="width: 0"></div>
|
||||
</div>
|
||||
<div id="response-timer" class="text-muted">
|
||||
<div class="text"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if (!AKEEBABACKUP_PRO): ?>
|
||||
<div class="alert alert-primary lead text-center fst-italic">
|
||||
<span class="fa fa-question-circle"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LBL_UPGRADENAG') ?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
|
||||
<?php // Backup complete ?>
|
||||
<div id="backup-complete" style="display: none">
|
||||
<div class="card">
|
||||
<h3 class="card-header bg-success text-white">
|
||||
<?php if(empty($this->returnURL)): ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_HEADER_BACKUPFINISHED') ?>
|
||||
<?php else: ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_HEADER_BACKUPWITHRETURNURLFINISHED') ?>
|
||||
<?php endif ?>
|
||||
</h3>
|
||||
|
||||
<div id="finishedframe" class="card-body">
|
||||
<p>
|
||||
<?php if(empty($this->returnURL)): ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_CONGRATS') ?>
|
||||
<?php else: ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_PLEASEWAITFORREDIRECTION') ?>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
|
||||
<?php if(empty($this->returnURL)): ?>
|
||||
<a class="btn btn-outline-dark btn-lg" href="index.php?option=com_akeebabackup">
|
||||
<span class="fa fa-arrow-left"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL') ?>
|
||||
</a>
|
||||
<a class="btn btn-primary btn-lg" href="index.php?option=com_akeebabackup&view=Manage">
|
||||
<span class="fa fa-list-alt"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN') ?>
|
||||
</a>
|
||||
<a class="btn btn-outline-dark" id="ab-viewlog-success" href="index.php?option=com_akeebabackup&view=Log&latest=1">
|
||||
<span class="fa fa-search"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LOG') ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php // Backup warnings ?>
|
||||
<div id="backup-warnings-panel" style="display:none">
|
||||
<div class="card mt-3">
|
||||
<h3 class="card-header bg-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_WARNINGS') ?>
|
||||
</h3>
|
||||
<div id="warnings-list" class="card-body overflow-scroll" style="height: 20em">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php // Backup retry after error ?>
|
||||
<div id="retry-panel" style="display: none">
|
||||
<div class="card mt-3">
|
||||
<h3 class="card-header bg-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_HEADER_BACKUPRETRY') ?>
|
||||
</h3>
|
||||
<div id="retryframe" class="card-body">
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPFAILEDRETRY') ?></p>
|
||||
<p class="mt-2 mb-2 fw-bold">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_WILLRETRY') ?>
|
||||
<span id="akeebabackup-retry-timeout">0</span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_WILLRETRYSECONDS') ?>
|
||||
</p>
|
||||
<p>
|
||||
<button type="button"
|
||||
class="btn btn-outline-danger" id="comAkeebaBackupCancelResume">
|
||||
<span class="fa fa-times"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_CANCEL') ?>
|
||||
</button>
|
||||
<button type="button"
|
||||
class="btn btn-success" id="comAkeebaBackupResumeBackup">
|
||||
<span class="fa fa-redo"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_BTNRESUME') ?>
|
||||
</button>
|
||||
</p>
|
||||
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_LASTERRORMESSAGEWAS') ?></p>
|
||||
<p id="backup-error-message-retry"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php // Backup error (halt) ?>
|
||||
<div id="error-panel" style="display: none">
|
||||
<div class="card mt-3">
|
||||
<h3 class="card-header bg-danger text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_HEADER_BACKUPFAILED') ?>
|
||||
</h3>
|
||||
|
||||
<div id="errorframe" class="card-body">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPFAILED') ?>
|
||||
</p>
|
||||
<p id="backup-error-message"></p>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_READLOGFAIL' . (AKEEBABACKUP_PRO ? 'PRO' : '')) ?>
|
||||
</p>
|
||||
|
||||
<div class="alert alert-info" id="error-panel-troubleshooting">
|
||||
<p>
|
||||
<?php if(AKEEBABACKUP_PRO): ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TEXT_RTFMTOSOLVEPRO') ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BACKUP_TEXT_RTFMTOSOLVE', 'https://www.akeeba.com/documentation/akeeba-backup-joomla/backup-now.html?utm_source=akeeba_backup&utm_campaign=backuperrorlink#troubleshoot-backup') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php if(AKEEBABACKUP_PRO): ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BACKUP_TEXT_SOLVEISSUE_PRO', 'https://www.akeeba.com/support.html?utm_source=akeeba_backup&utm_campaign=backuperrorpro') ?>
|
||||
<?php else: ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BACKUP_TEXT_SOLVEISSUE_CORE', 'https://www.akeeba.com/subscribe.html?utm_source=akeeba_backup&utm_campaign=backuperrorcore','https://www.akeeba.com/support.html?utm_source=akeeba_backup&utm_campaign=backuperrorcore') ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BACKUP_TEXT_SOLVEISSUE_LOG', 'index.php?option=com_akeebabackup&view=Log&latest=1') ?>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<?php if(AKEEBABACKUP_PRO): ?>
|
||||
<a class="btn btn-success" id="ab-alice-error" href="index.php?option=com_akeebabackup&view=Alice">
|
||||
<span class="fa fa-briefcase-medical"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_ANALYSELOG') ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<a class="btn btn-primary" href="https://www.akeeba.com/documentation/akeeba-backup-joomla/troubleshoot-backup.html?utm_source=akeeba_backup&utm_campaign=backuperrorbutton">
|
||||
<span class="fa fa-book"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_TROUBLESHOOTINGDOCS') ?>
|
||||
</a>
|
||||
|
||||
<a class="btn btn-outline-dark" id="ab-viewlog-error" href="index.php?option=com_akeebabackup&view=Log&latest=1">
|
||||
<span class="fa fa-search"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LOG') ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--~
|
||||
~ @package akeebabackup
|
||||
~ @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
~ @license GNU General Public License version 3, or later
|
||||
-->
|
||||
<metadata>
|
||||
<layout title="COM_AKEEBABACKUP_VIEW_BACKUP_TITLE">
|
||||
<message>
|
||||
<![CDATA[COM_AKEEBABACKUP_VIEW_BACKUP_DESC]]>
|
||||
</message>
|
||||
</layout>
|
||||
<fields name="request"
|
||||
addfieldpath="/administrator/components/com_akeebabackup/src/Field"
|
||||
addfieldprefix="Akeeba\Component\AkeebaBackup\Administrator\Field">
|
||||
<fieldset name="request">
|
||||
<field name="profileid"
|
||||
type="backupprofiles"
|
||||
show_none="yes"
|
||||
default="0"
|
||||
label="COM_AKEEBABACKUP_VIEW_BACKUP_PROFILE_LABEL"
|
||||
description="COM_AKEEBABACKUP_VIEW_BACKUP_PROFILE_DESC"
|
||||
/>
|
||||
|
||||
<field name="autostart"
|
||||
type="radio"
|
||||
layout="joomla.form.field.radio.switcher"
|
||||
default="0"
|
||||
label="COM_AKEEBABACKUP_VIEW_BACKUP_AUTOSTART_LABEL"
|
||||
description="COM_AKEEBABACKUP_VIEW_BACKUP_AUTOSTART_DESC"
|
||||
>
|
||||
<option value="0">JNo</option>
|
||||
<option value="1">JYes</option>
|
||||
</field>
|
||||
|
||||
<field name="akeeba_hide_toolbar"
|
||||
type="radio"
|
||||
layout="joomla.form.field.radio.switcher"
|
||||
default="0"
|
||||
label="COM_AKEEBABACKUP_VIEW_BACKUP_HIDETOOLBAR_LABEL"
|
||||
description="COM_AKEEBABACKUP_VIEW_BACKUP_HIDETOOLBAR_DESC"
|
||||
>
|
||||
<option value="0">JNo</option>
|
||||
<option value="1">JYes</option>
|
||||
</field>
|
||||
|
||||
<field name="returnurl"
|
||||
type="urlencoded"
|
||||
default=""
|
||||
label="COM_AKEEBABACKUP_VIEW_BACKUP_RETURNURL_LABEL"
|
||||
description="COM_AKEEBABACKUP_VIEW_BACKUP_RETURNURL_DESC"
|
||||
/>
|
||||
</fieldset>
|
||||
</fields>
|
||||
</metadata>
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
/**
|
||||
* This file passes parameters to the Backup.js script using Joomla's script options API
|
||||
*
|
||||
* @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Backup\HtmlView
|
||||
*/
|
||||
|
||||
$escapedBaseURL = addslashes(Uri::base());
|
||||
|
||||
// Initialization
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.defaultDescription', addslashes($this->defaultDescription));
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.currentDescription', addslashes(empty($this->description) ? $this->defaultDescription : $this->description));
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.currentComment', addslashes($this->comment));
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.hasAngieKey', $this->hasANGIEPassword);
|
||||
|
||||
// Auto-resume setup
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.resume.enabled', (bool) $this->autoResume);
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.resume.timeout', (int) $this->autoResumeTimeout);
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.resume.maxRetries', (int) $this->autoResumeRetries);
|
||||
|
||||
// The return URL
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.returnUrl', addcslashes($this->returnURL, "'\\"));
|
||||
|
||||
// Used as parameters to start_timeout_bar()
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.maxExecutionTime', (int) $this->maxExecutionTime);
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.runtimeBias', (int) $this->runtimeBias);
|
||||
|
||||
// Notifications
|
||||
$this->document->addScriptOptions('akeebabackup.System.notification.iconURL', sprintf("%s../media/com_akeebabackup/icons/logo-48.png", $escapedBaseURL));
|
||||
$this->document->addScriptOptions('akeebabackup.System.notification.hasDesktopNotification', (bool) $this->desktopNotifications);
|
||||
|
||||
// Domain keys
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.domains', $this->domains);
|
||||
|
||||
// AJAX proxy, View Log and ALICE URLs
|
||||
$this->document->addScriptOptions('akeebabackup.System.params.AjaxURL', 'index.php?option=com_akeebabackup&view=Backup&task=ajax');
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.URLs.LogURL', sprintf("%sindex.php?option=com_akeebabackup&view=Log", $escapedBaseURL));
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.URLs.AliceURL', sprintf("%sindex.php?option=com_akeebabackup&view=Alice", $escapedBaseURL));
|
||||
|
||||
// Behavior triggers
|
||||
$this->document->addScriptOptions('akeebabackup.Backup.autostart', (!$this->unwriteableOutput && $this->autoStart) ? 1 : 0);
|
||||
|
||||
// Push language strings to Javascript
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_LASTRESPONSE');
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPSTARTED');
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPFINISHED');
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPHALT');
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPRESUME');
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPHALT_DESC');
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPFAILED');
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_BACKUPWARNING');
|
||||
Text::script('COM_AKEEBABACKUP_BACKUP_TEXT_AVGWARNING');
|
||||
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Browser\HtmlView $this */
|
||||
|
||||
Text::script('COM_AKEEBABACKUP_CONFIG_UI_ROOTDIR', true);
|
||||
|
||||
?>
|
||||
<?php if(empty($this->folder)): ?>
|
||||
<form action="index.php" method="post" name="adminForm" id="adminForm">
|
||||
<input type="hidden" name="option" value="com_akeebabackup" />
|
||||
<input type="hidden" name="view" value="Browser" />
|
||||
<input type="hidden" name="format" value="html" />
|
||||
<input type="hidden" name="tmpl" value="component" />
|
||||
<input type="hidden" name="folder" id="folder" value="" />
|
||||
<input type="hidden" name="processfolder" id="processfolder" value="0" />
|
||||
<input type="hidden" name="<?= Factory::getApplication()->getFormToken() ?>" value="1" />
|
||||
</form>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if(!(empty($this->folder))): ?>
|
||||
<div class="border border-1 border-primary p-2 pt-3 m-1 mb-3">
|
||||
<form action="index.php" method="get" name="adminForm" id="adminForm"
|
||||
class="d-flex flex-row align-items-center">
|
||||
|
||||
<div class="me-2 mb-1">
|
||||
<span title="<?= Text::_($this->writable ? 'COM_AKEEBABACKUP_CPANEL_LBL_WRITABLE' : 'COM_AKEEBABACKUP_CPANEL_LBL_UNWRITABLE') ?>"
|
||||
class="rounded-2 p-2 text-white <?= $this->writable ? 'bg-success' : 'bg-danger' ?>"
|
||||
>
|
||||
<span class="<?= $this->writable ? 'fa fa-check-circle' : 'fa fa-ban' ?>"></span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="flex-fill me-2 mb-1">
|
||||
<label class="visually-hidden" for="folder">
|
||||
Folder
|
||||
</label>
|
||||
<input type="text" name="folder" id="folder"
|
||||
class="form-control"
|
||||
value="<?= $this->escape($this->folder) ?>" />
|
||||
</div>
|
||||
|
||||
<div class="me-2 mb-1">
|
||||
<button type="button"
|
||||
class="btn btn-primary" id="comAkeebaBrowserGo">
|
||||
<span class="fa fa-folder"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BROWSER_LBL_GO') ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="mb-1">
|
||||
<button type="button"
|
||||
class="btn btn-success" id="comAkeebaBrowserUseThis">
|
||||
<span class="fa fa-share"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BROWSER_LBL_USE') ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="folderraw" id="folderraw"
|
||||
value="<?= $this->escape($this->folder_raw) ?>" />
|
||||
<input type="hidden" name="<?= Factory::getApplication()->getFormToken() ?>" value="1" />
|
||||
<input type="hidden" name="option" value="com_akeebabackup" />
|
||||
<input type="hidden" name="view" value="Browser" />
|
||||
<input type="hidden" name="tmpl" value="component" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php if(count($this->breadcrumbs)): ?>
|
||||
<nav aria-label="breadcrumb">
|
||||
<ul class="breadcrumb p-3 bg-light">
|
||||
<?php $i = 0 ?>
|
||||
<?php foreach($this->breadcrumbs as $crumb): ?>
|
||||
<?php $i++; ?>
|
||||
<li class="breadcrumb-item <?= ($i < count($this->breadcrumbs)) ? '' : 'active' ?>">
|
||||
<?php if($i < count($this->breadcrumbs)): ?>
|
||||
<a class="text-decoration-none fw-bold"
|
||||
href="<?= $this->escape(Uri::base() . "index.php?option=com_akeebabackup&view=Browser&tmpl=component&folder=" . urlencode($crumb['folder'])) ?>"
|
||||
>
|
||||
<?= $this->escape($crumb['label']) ?>
|
||||
</a>
|
||||
<?php else: ?>
|
||||
<span class="fw-bold">
|
||||
<?= $this->escape($crumb['label']) ?>
|
||||
</span>
|
||||
<?php endif ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</nav>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="border border-1 border-muted rounded-2 p-2">
|
||||
<div>
|
||||
<?php if(count($this->subfolders)): ?>
|
||||
<table class="table table-striped">
|
||||
<tr>
|
||||
<td>
|
||||
<a class="btn btn-dark btn-sm p-2 text-decoration-none"
|
||||
href="<?= $this->escape(Uri::base()) ?>index.php?option=com_akeebabackup&view=Browser&tmpl=component&folder=<?= $this->escape($this->parent) ?>">
|
||||
<span class="akion-arrow-up-a"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BROWSER_LBL_GOPARENT') ?>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php foreach($this->subfolders as $subfolder): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="akeeba-browser-folder text-decoration-none" href="<?= $this->escape(Uri::base()) ?>index.php?option=com_akeebabackup&view=Browser&tmpl=component&folder=<?= $this->escape($this->folder . '/' . $subfolder) ?>"><?= $this->escape($subfolder) ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</table>
|
||||
<?php else: ?>
|
||||
<?php if(!$this->exists): ?>
|
||||
<div class="alert alert-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BROWSER_ERR_NOTEXISTS') ?>
|
||||
</div>
|
||||
<?php elseif(!$this->inRoot): ?>
|
||||
<div class="alert alert-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BROWSER_ERR_NONROOT') ?>
|
||||
</div>
|
||||
<?php elseif($this->openbasedirRestricted): ?>
|
||||
<div class="alert alert-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BROWSER_ERR_BASEDIR') ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<table class="table table-striped">
|
||||
<tr>
|
||||
<td>
|
||||
<a class="btn btn-dark btn-sm p-2 text-decoration-none"
|
||||
href="<?= $this->escape(Uri::base()) ?>index.php?option=com_akeebabackup&view=Browser&tmpl=component&folder=<?= $this->escape($this->parent) ?>">
|
||||
<span class="akion-arrow-up-a"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BROWSER_LBL_GOPARENT') ?>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php endif // secondary block ?>
|
||||
<?php endif // for the count($this->subfolders) block ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
@@ -0,0 +1,367 @@
|
||||
<?php
|
||||
/**
|
||||
* PHP Exception Handler
|
||||
*
|
||||
* @copyright Copyright (c) 2018-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') or die();
|
||||
|
||||
/** @var Throwable $e */
|
||||
/** @var string $title */
|
||||
/** @var bool $isPro */
|
||||
|
||||
$code = $e->getCode();
|
||||
$code = !empty($code) ? $code : 500;
|
||||
|
||||
$app = class_exists('\Joomla\CMS\Factory') ? \Joomla\CMS\Factory::getApplication() : \JFactory::getApplication();
|
||||
|
||||
$user30 = (class_exists('JFactory') && method_exists('JFactory', 'getUser')) ? JFactory::getUser() : null;
|
||||
$user38 = class_exists('\Joomla\CMS\Factory') && method_exists('\Joomla\CMS\Factory', 'getUser') ? \Joomla\CMS\Factory::getUser() : null;
|
||||
$user40 = (is_object($app) && method_exists($app, 'getIdentity')) ? $app->getIdentity() : null;
|
||||
$user = is_null($user40) ? $user38 : $user40;
|
||||
$user = is_null($user40) ? $user30 : $user;
|
||||
$isSuper = !is_null($user) && $user->authorise('core.admin');
|
||||
|
||||
$isFrontend = class_exists('JApplicationSite') && ($app instanceof JApplicationSite);
|
||||
$isFrontend = $isFrontend || (class_exists('\Joomla\CMS\Application\SiteApplication') && ($app instanceof \Joomla\CMS\Application\SiteApplication));
|
||||
$user = $isFrontend ? (method_exists($app, 'getIdentity') ? $app->getIdentity() : JFactory::getUser()) : null;
|
||||
$hideTheError = $isFrontend && !(defined('JDEBUG') && (JDEBUG == 1)) && !$isSuper;
|
||||
$isPro = !isset($isPro) ? false : $isPro;
|
||||
|
||||
// 403 and 404 are re-thrown
|
||||
if (in_array($code, [403, 404]))
|
||||
{
|
||||
throw $e;
|
||||
}
|
||||
|
||||
if (version_compare(JVERSION, '4', 'lt'))
|
||||
{
|
||||
$app->setHeader('HTTP/1.1', $code);
|
||||
}
|
||||
else
|
||||
{
|
||||
// In Joomla 4 we have to use the "Status" header, otherwise we get a fatal error saying that
|
||||
// HTTP/1.1 is not a valid header
|
||||
$app->setHeader('Status', $code);
|
||||
}
|
||||
|
||||
if (!$isFrontend)
|
||||
{
|
||||
if (class_exists('\Joomla\CMS\Toolbar\ToolbarHelper'))
|
||||
{
|
||||
\Joomla\CMS\Toolbar\ToolbarHelper::title($title . ' <small>Unhandled Exception</small>');
|
||||
}
|
||||
else
|
||||
{
|
||||
JToolbarHelper::title($title . ' <small>Unhandled Exception</small>');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$isJoomla3 = version_compare(JVERSION, '3.999.999', 'le');
|
||||
|
||||
?>
|
||||
|
||||
<?php if ($hideTheError): ?>
|
||||
<?php if ($isJoomla3): ?>
|
||||
<h1>The application has stopped responding</h1>
|
||||
<p>
|
||||
Please contact the administrator of the site and let them know of this error and what you were doing when this
|
||||
happened.
|
||||
</p>
|
||||
<?php else: ?>
|
||||
<div class="card">
|
||||
<h1 class="card-header bg-danger text-white">The application has stopped responding</h1>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Please contact the administrator of the site and let them know of this error and what you were doing when this
|
||||
happened.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php return true; endif; ?>
|
||||
<div class="<?php echo $isJoomla3 ? '' : 'card my-3' ?>">
|
||||
<h1 class="<?php echo $isJoomla3 ? '' : 'card-header bg-danger text-white' ?>">
|
||||
<?php echo $title ?> - An unhandled Exception has been detected
|
||||
</h1>
|
||||
<div class="<?php echo $isJoomla3 ? '' : 'card-body' ?>">
|
||||
<h3>
|
||||
<?php if ($isJoomla3): ?>
|
||||
<span class="label label-danger"><?php echo htmlentities($code) ?></span> <?php echo htmlentities($e->getMessage()) ?>
|
||||
<?php else: ?>
|
||||
<span class="badge bg-danger"><?php echo htmlentities($code) ?></span> <?php echo htmlentities($e->getMessage()) ?>
|
||||
<?php endif; ?>
|
||||
</h3>
|
||||
<p>
|
||||
File <code><?php echo htmlentities(str_ireplace(JPATH_ROOT, '<root>', $e->getFile())) ?></code>
|
||||
<?php if ($isJoomla3): ?>
|
||||
Line <span class="label label-info"><?php echo (int) $e->getLine() ?></span>
|
||||
<?php else: ?>
|
||||
Line <span class="badge bg-info"><?php echo (int) $e->getLine() ?></span>
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
|
||||
<?php if ($isPro): ?>
|
||||
<div class="<?php if ($isJoomla3):?>hero-unit<?php else: ?>alert alert-primary<?php endif; ?>">
|
||||
<p>
|
||||
<strong>Would you like us to help you faster?</strong>
|
||||
</p>
|
||||
<p>
|
||||
Save this page as PDF or HTML. Make a ZIP file containing this PDF or HTML file. When filing a support ticket please attach the ZIP file (<em>not</em> the PDF or HTML file itself).
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<strong>Why do we need all that information?</strong>
|
||||
This information is an x-ray of your site at the time the
|
||||
error occurred. It lets us reproduce the issue or, if it's not a bug in our software, help you pinpoint the
|
||||
external reason which led to it.
|
||||
</p>
|
||||
<p>
|
||||
<strong>What about privacy?</strong>
|
||||
Attachments are private in our ticket system: only you and us can see them, <em>even if you file a public
|
||||
ticket</em>, and they are automatically deleted after a month.
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<hr />
|
||||
<p>
|
||||
<span class="icon icon-warning-2"></span>
|
||||
<em>
|
||||
The content below this point is for developers and power users.
|
||||
</em>
|
||||
</p>
|
||||
<hr />
|
||||
|
||||
<p class="alert alert-warning">
|
||||
Joomla <?= JVERSION ?> – PHP <?= PHP_VERSION ?> on <?= PHP_OS ?>
|
||||
</p>
|
||||
|
||||
<h3>Debug information</h3>
|
||||
<p>
|
||||
Exception type: <code><?php echo htmlentities(get_class($e)) ?></code>
|
||||
</p>
|
||||
<pre><?php echo htmlentities($e->getTraceAsString()) ?></pre>
|
||||
|
||||
<?php while ($e = $e->getPrevious()): ?>
|
||||
<hr />
|
||||
<h4>Previous exception</h4>
|
||||
<strong>
|
||||
<?php if ($isJoomla3): ?>
|
||||
<span class="label label-danger"><?php echo htmlentities($code) ?></span> <?php echo htmlentities($e->getMessage()) ?>
|
||||
<?php else: ?>
|
||||
<span class="badge badge-danger"><?php echo htmlentities($code) ?></span> <?php echo htmlentities($e->getMessage()) ?>
|
||||
<?php endif; ?>
|
||||
</strong>
|
||||
<p>
|
||||
File <code><?php echo htmlentities(str_ireplace(JPATH_ROOT, '<root>', $e->getFile())) ?></code> Line <span
|
||||
class="label label-info"><?php echo (int) $e->getLine() ?></span>
|
||||
</p>
|
||||
<p>
|
||||
Exception type: <code><?php echo htmlentities(get_class($e)) ?></code>
|
||||
</p>
|
||||
<pre><?php echo htmlentities($e->getTraceAsString()) ?></pre>
|
||||
<?php endwhile; ?>
|
||||
|
||||
<h3>System information</h3>
|
||||
<table class="table table-striped">
|
||||
<tr>
|
||||
<td>Operating System (reported by PHP)</td>
|
||||
<td><?php echo PHP_OS ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PHP version (as reported <em>by your server</em>)</td>
|
||||
<td><?php echo PHP_VERSION ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PHP Built On</td>
|
||||
<td><?php echo htmlentities(php_uname()); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PHP SAPI</td>
|
||||
<td><?php echo PHP_SAPI ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Server identity</td>
|
||||
<td><?php echo htmlentities(isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : getenv('SERVER_SOFTWARE')) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Browser identity</td>
|
||||
<td><?php echo htmlentities(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Joomla! version</td>
|
||||
<td><?php echo JVERSION ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
$db = JFactory::getDbo();
|
||||
if (!is_null($db)):
|
||||
?>
|
||||
<tr>
|
||||
<td>Database driver name</td>
|
||||
<td><?php echo $db->getName() ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Database driver type</td>
|
||||
<td><?php echo $db->getServerType() ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Database server version</td>
|
||||
<td><?php echo $db->getVersion() ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Database collation</td>
|
||||
<td><?php echo $db->getCollation() ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Database connection collation</td>
|
||||
<td><?php echo $db->getConnectionCollation() ?></td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<tr>
|
||||
<td>PHP Memory limit</td>
|
||||
<td><?php echo function_exists('ini_get') ? htmlentities(ini_get('memory_limit')) : 'N/A' ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Peak Memory usage</td>
|
||||
<td><?php echo function_exists('memory_get_peak_usage') ? sprintf('%0.2fM', (memory_get_peak_usage() / 1024 / 1024)) : 'N/A' ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PHP Timeout (seconds)</td>
|
||||
<td><?php echo function_exists('ini_get') ? htmlentities(ini_get('max_execution_time')) : 'N/A' ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Request information</h3>
|
||||
<h4>$_GET</h4>
|
||||
<pre><?php echo htmlentities(print_r($_GET, true)) ?></pre>
|
||||
<h4>$_POST</h4>
|
||||
<pre><?php echo htmlentities(print_r($_POST, true)) ?></pre>
|
||||
<h4>$_COOKIE</h4>
|
||||
<pre><?php echo htmlentities(print_r($_COOKIE, true)) ?></pre>
|
||||
<h4>$_REQUEST</h4>
|
||||
<pre><?php echo htmlentities(print_r($_REQUEST, true)) ?></pre>
|
||||
|
||||
<h3>Session state</h3>
|
||||
<pre><?php
|
||||
if (version_compare(JVERSION, '4', 'lt'))
|
||||
{
|
||||
echo htmlentities(print_r($app->getSession()->getData()->toArray(), true));
|
||||
}
|
||||
else
|
||||
{
|
||||
echo htmlentities(print_r($app->getSession()->all(), true));
|
||||
}
|
||||
?></pre>
|
||||
|
||||
<?php
|
||||
if ($isJoomla3)
|
||||
{
|
||||
if (!include_once(JPATH_ADMINISTRATOR . '/components/com_admin/models/sysinfo.php'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$model = new AdminModelSysInfo();
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
/** @var MVCFactoryInterface $factory */
|
||||
$factory = $app->bootComponent('com_admin')->getMVCFactory();
|
||||
/** @var \Joomla\Component\Admin\Administrator\Model\SysinfoModel $model */
|
||||
$model = $factory->createModel('Sysinfo', 'Administrator');
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$directories = $model->getDirectory();
|
||||
|
||||
try
|
||||
{
|
||||
$extensions = $model->getExtensions();
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$extension = [];
|
||||
}
|
||||
|
||||
$phpSettings = $model->getPhpSettings();
|
||||
$hasPHPInfo = $model->phpinfoEnabled();
|
||||
?>
|
||||
|
||||
<h3>PHP Settings</h3>
|
||||
<table class="table table-striped">
|
||||
<?php foreach ($phpSettings as $k => $v): ?>
|
||||
<tr>
|
||||
<td><?php echo $k ?></td>
|
||||
<td><?php echo htmlentities(print_r($v, true)) ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
|
||||
<?php if ($hasPHPInfo):
|
||||
$phpInfo = $model->getPhpInfoArray(); ?>
|
||||
<h3>Loaded PHP Extensions</h3>
|
||||
<table class="table table-striped">
|
||||
<?php foreach ($phpInfo as $section => $data):
|
||||
if ($section == 'Core')
|
||||
{
|
||||
continue;
|
||||
} ?>
|
||||
<tr>
|
||||
<td><?php echo htmlentities($section) ?></td>
|
||||
<td>
|
||||
<?php if (in_array($section, ['curl', 'openssl', 'ssh2', 'ftp', 'session', 'tokenizer'])): ?>
|
||||
<pre><?php echo htmlentities(print_r($data, true)) ?></pre>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
<?php endif; ?>
|
||||
|
||||
<h3>Enabled Extensions</h3>
|
||||
<table class="table table-striped">
|
||||
<?php foreach ($extensions as $extension => $info):
|
||||
if (strtoupper($info['state']) != 'ENABLED')
|
||||
{
|
||||
continue;
|
||||
} ?>
|
||||
<tr>
|
||||
<td><?php echo htmlentities($extension) ?></td>
|
||||
<td><?php echo htmlentities($info['version']) ?></td>
|
||||
<td><?php echo htmlentities($info['type']) ?></td>
|
||||
<td><?php echo htmlentities($info['author']) ?></td>
|
||||
<td><?php echo htmlentities($info['authorUrl']) ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
|
||||
<h3>Directory Status</h3>
|
||||
<table class="table table-striped">
|
||||
<?php foreach ($directories as $k => $v): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo htmlentities($k) ?>
|
||||
<?php echo !empty($v['message']) ? "[{$v['message']}]" : '' ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php if ($v['writable']): ?>
|
||||
<span class="label label-success">Writeable</span>
|
||||
<?php else: ?>
|
||||
<span class="label label-danger">Unwriteable</span>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div id="errorDialog"
|
||||
class="modal fade"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="errorDialogLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 id="errorDialogLabel" class="modal-title">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_UI_AJAXERRORDLG_TITLE') ?>
|
||||
</h3>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>">
|
||||
</div>
|
||||
<div class="modal-body p-3">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_UI_AJAXERRORDLG_TEXT') ?>
|
||||
</p>
|
||||
<pre id="errorDialogPre"></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
|
||||
<div class="modal"
|
||||
id="folderBrowserDialog"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="folderBrowserDialogLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-lg modal-fullscreen-sm-down modal-dialog-scrollable modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 id="folderBrowserDialogLabel" class="modal-title">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_UI_BROWSER_TITLE') ?>
|
||||
</h3>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>">
|
||||
</div>
|
||||
<div class="modal-body p-3">
|
||||
<div id="folderBrowserDialogBody">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="modal fade"
|
||||
id="testFtpDialog"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="testFtpDialogLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title" id="testFtpDialogLabel"></h3>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>">
|
||||
</div>
|
||||
<div class="modal-body p-3">
|
||||
<div class="alert alert-success" id="testFtpDialogBodyOk"></div>
|
||||
<div class="alert alert-danger" id="testFtpDialogBodyFail"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') or die();
|
||||
|
||||
?>
|
||||
|
||||
<div style="margin: 1em">
|
||||
<h1>We have detected that you are running HHVM instead of PHP. This software WILL NOT WORK properly on HHVM. Please switch to PHP 7 instead.</h1>
|
||||
<hr/>
|
||||
<p>
|
||||
HHVM was Facebook's attempt at modernizing the PHP 5.x language and making it faster. Unfortunately it's also incompatible with PHP proper.
|
||||
PHP 7 has solved all these issues. It's fast, modern and <em>fully compatible with our software</em>.
|
||||
Please switch to PHP 7. If you are unsure how to do that, contact your host or the person responsible for maintaining your server.
|
||||
They are the only people who can help you configure your server.
|
||||
</p>
|
||||
<p>
|
||||
Kindly note that HHVM is not -and has never been- a supported execution environment for our software.
|
||||
As a result, if you see this message on your site you are unfortunately ineligible for support and / or filing bug reports.
|
||||
Please switch to PHP 7. If your problem persists after that we can help you / accept your bug report. Thank you for your understanding.
|
||||
</p>
|
||||
</div>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Joomla\CMS\MVC\View\HtmlView|\Akeeba\Component\AkeebaBackup\Administrator\Mixin\ViewProfileIdAndNameTrait $this */
|
||||
|
||||
?>
|
||||
<div class="alert alert-info">
|
||||
<strong><?= Text::_('COM_AKEEBABACKUP_CPANEL_PROFILE_TITLE') ?></strong>:
|
||||
#<?= (int)($this->profileId) ?> <?= $this->escape($this->profileName) ?>
|
||||
</div>
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
/** @var \Joomla\CMS\MVC\View\HtmlView|\Akeeba\Component\AkeebaBackup\Administrator\Mixin\ViewLoadAnyTemplateTrait $this */
|
||||
|
||||
// Make sure we only ever add this HTML and JS once per page
|
||||
if (defined('AKEEBA_VIEW_JAVASCRIPT_CONFWIZ_MODAL'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
define('AKEEBA_VIEW_JAVASCRIPT_CONFWIZ_MODAL', 1);
|
||||
|
||||
$js = <<< JS
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
new window.bootstrap.Modal(document.getElementById('akeeba-config-confwiz-bubble'), {
|
||||
backdrop: 'static',
|
||||
keyboard: true,
|
||||
focus: true
|
||||
}).show();
|
||||
});
|
||||
|
||||
JS;
|
||||
|
||||
$this->document->getWebAssetManager()
|
||||
->useScript('bootstrap.modal')
|
||||
->addInlineScript($js, [], [], ['bootstrap.modal']);
|
||||
?>
|
||||
|
||||
<div id="akeeba-config-confwiz-bubble"
|
||||
class="modal fade"
|
||||
role="dialog"
|
||||
tabindex="-1"
|
||||
aria-labelledby="akeeba-config-confwiz-title"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title" id="akeeba-config-confwiz-title">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_HEADER_CONFWIZ') ?>
|
||||
</h3>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<div class="modal-body p-3">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_LBL_CONFWIZ_INTRO') ?>
|
||||
</p>
|
||||
<p class="d-grid gap-2">
|
||||
<a href="index.php?option=com_akeebabackup&view=Configurationwizard"
|
||||
class="btn bg-success text-white btn-lg"> <span class="fa fa-bolt"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ') ?>
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_LBL_CONFWIZ_AFTER') ?>
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-primary btn-sm"
|
||||
data-bs-dismiss="modal"
|
||||
>
|
||||
<span class="fa fa-times"></span>
|
||||
<?= Text::_('JCANCEL') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Configuration\HtmlView $this */
|
||||
|
||||
// Enable Bootstrap popovers
|
||||
HTMLHelper::_('bootstrap.popover', '[rel=popover]', [
|
||||
'html' => true,
|
||||
'placement' => 'bottom',
|
||||
'trigger' => 'click hover',
|
||||
'sanitize' => false,
|
||||
]);
|
||||
|
||||
// Configuration Wizard pop-up
|
||||
if ($this->promptForConfigurationwizard)
|
||||
{
|
||||
echo $this->loadAnyTemplate('Configuration/confwiz_modal');
|
||||
}
|
||||
|
||||
// Modal dialog prototypes
|
||||
echo $this->loadAnyTemplate('commontemplates/ftpconnectiontest');
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/folderbrowser');
|
||||
?>
|
||||
|
||||
<?php if($this->secureSettings == 1): ?>
|
||||
<div class="alert alert-success alert-dismissible">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_UI_SETTINGS_SECURED') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<?php elseif($this->secureSettings == 0): ?>
|
||||
<div class="alert alert-warning alert-dismissible">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_UI_SETTINGS_NOTSECURED') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<?= $this->loadAnyTemplate('commontemplates/profilename') ?>
|
||||
|
||||
<div class="alert alert-info alert-dismissible">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_WHERE_ARE_THE_FILTERS') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
|
||||
<form name="adminForm" id="adminForm" method="post"
|
||||
action="index.php">
|
||||
|
||||
<div class="card">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_PROFILES_LABEL_DESCRIPTION') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row mb-3">
|
||||
<label for="profilename" class="col-sm-3 col-form-label"
|
||||
rel="popover"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_PROFILES_LABEL_DESCRIPTION') ?>"
|
||||
data-bs-content="<?= Text::_('COM_AKEEBABACKUP_PROFILES_LABEL_DESCRIPTION_TOOLTIP') ?>"
|
||||
>
|
||||
<?= Text::_('COM_AKEEBABACKUP_PROFILES_LABEL_DESCRIPTION') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="profilename" id="profilename"
|
||||
class="form-control"
|
||||
value="<?= $this->escape($this->profileName) ?>"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-sm-9 offset-sm-3">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" name="quickicon"
|
||||
class="form-check-input"
|
||||
id="quickicon" <?= $this->quickIcon ? 'checked="checked"' : '' ?>/>
|
||||
<label for="quickicon"
|
||||
class="form-check-label"
|
||||
rel="popover"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_CONFIG_QUICKICON_LABEL') ?>"
|
||||
data-bs-content="<?= Text::_('COM_AKEEBABACKUP_CONFIG_QUICKICON_DESC') ?>"
|
||||
>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_QUICKICON_LABEL') ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- This div contains dynamically generated user interface elements -->
|
||||
<div id="akeebagui">
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="option" value="com_akeebabackup"/>
|
||||
<input type="hidden" name="view" value="Configuration"/>
|
||||
<input type="hidden" name="task" value=""/>
|
||||
<input type="hidden" name="<?= \Joomla\CMS\Factory::getApplication()->getFormToken() ?>" value="1"/>
|
||||
</form>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--~
|
||||
~ @package akeebabackup
|
||||
~ @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
~ @license GNU General Public License version 3, or later
|
||||
-->
|
||||
<metadata>
|
||||
<layout title="COM_AKEEBABACKUP_VIEW_CONFIGURATION_TITLE">
|
||||
<message>
|
||||
<![CDATA[COM_AKEEBABACKUP_VIEW_CONFIGURATION_DESC]]>
|
||||
</message>
|
||||
</layout>
|
||||
</metadata>
|
||||
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
?>
|
||||
|
||||
<div id="akeeba-confwiz">
|
||||
|
||||
<div id="backup-progress-pane">
|
||||
<div class="alert alert-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ_INTROTEXT') ?>
|
||||
</div>
|
||||
|
||||
<div id="backup-progress-header" class="card">
|
||||
<h3 class="card-header bg-primary text-white">
|
||||
<span class="fa fa-diagnoses"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ_PROGRESS') ?>
|
||||
</h3>
|
||||
|
||||
<div id="backup-progress-content" class="card-body">
|
||||
<div id="backup-steps" class="d-flex flex-column align-items-stretch">
|
||||
<div id="step-minexec" class="mt-1 mb-1 p-1 border rounded bg-light">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ_MINEXEC') ?>
|
||||
</div>
|
||||
<div id="step-directory" class="mt-1 mb-1 p-1 border rounded bg-light">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ_DIRECTORY') ?>
|
||||
</div>
|
||||
<div id="step-dbopt" class="mt-1 mb-1 p-1 border rounded bg-light">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ_DBOPT') ?>
|
||||
</div>
|
||||
<div id="step-maxexec" class="mt-1 mb-1 p-1 border rounded bg-light">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ_MAXEXEC') ?>
|
||||
</div>
|
||||
<div id="step-splitsize" class="mt-1 mb-1 p-1 border rounded bg-light">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ_SPLITSIZE') ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="backup-steps-container mt-4 p-2 bg-info border-top border-3 text-white">
|
||||
<div id="backup-substep"> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="error-panel" class="alert alert-danger" style="display:none">
|
||||
<h3><?= Text::_('COM_AKEEBABACKUP_CONFWIZ_HEADER_FAILED') ?></h3>
|
||||
<div id="errorframe">
|
||||
<p id="backup-error-message">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="backup-complete" style="display: none">
|
||||
<div class="alert alert-success">
|
||||
<h3><?= Text::_('COM_AKEEBABACKUP_CONFWIZ_HEADER_FINISHED') ?></h3>
|
||||
<div id="finishedframe">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFWIZ_CONGRATS') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a
|
||||
class="btn btn-primary btn-lg"
|
||||
href="<?= $this->escape( Uri::base() )?>index.php?option=com_akeebabackup&view=Backup">
|
||||
<span class="fa fa-play"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP') ?>
|
||||
</a>
|
||||
<a
|
||||
class="btn btn-outline-secondary"
|
||||
href="<?= $this->escape( Uri::base() )?>index.php?option=com_akeebabackup&view=Configuration">
|
||||
<span class="fa fa-wrench"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG') ?>
|
||||
</a>
|
||||
<?php if(AKEEBABACKUP_PRO): ?>
|
||||
<a
|
||||
class="btn btn-outline-dark"
|
||||
href="<?= $this->escape( Uri::base() )?>index.php?option=com_akeebabackup&view=Schedule">
|
||||
<span class="fa fa-calendar"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE') ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
use Joomla\CMS\Component\ComponentHelper;
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
?>
|
||||
|
||||
<?= $this->loadAnyTemplate('Controlpanel/warnings') ?>
|
||||
|
||||
<?php // Main area ?>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<?php // LEFT COLUMN (66% desktop width) ?>
|
||||
<div class="col col-12 col-lg-8">
|
||||
<?php // Active profile switch ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/profile') ?>
|
||||
|
||||
<?php // One Click Backup icons ?>
|
||||
<?php if( ! (empty($this->quickIconProfiles)) && $this->permissions['backup']): ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/oneclick') ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Web Push ?>
|
||||
<?php
|
||||
if (ComponentHelper::getParams('com_akeebabackup')->get('push_preference') === 'webpush') {
|
||||
echo $this->loadAnyTemplate('Controlpanel/webpush');
|
||||
}
|
||||
?>
|
||||
|
||||
<?php // Basic operations ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/icons_basic') ?>
|
||||
|
||||
<?php // Core Upgrade ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/upgrade') ?>
|
||||
|
||||
<?php // Troubleshooting ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/icons_troubleshooting') ?>
|
||||
|
||||
<?php // Advanced operations ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/icons_advanced') ?>
|
||||
|
||||
<?php // Include / Exclude data ?>
|
||||
<?php if($this->permissions['configure']): ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/icons_includeexclude') ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
<?php // RIGHT COLUMN (33% desktop width) ?>
|
||||
<div class="col-12 col-lg-4">
|
||||
<?php // Status Summary ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/sidebar_status') ?>
|
||||
|
||||
<?php // Backup stats ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/sidebar_backup') ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<?php // Footer ?>
|
||||
<?= $this->loadAnyTemplate('Controlpanel/footer') ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php // Usage statistics collection IFRAME ?>
|
||||
<?php if ($this->statsIframe): ?>
|
||||
<?= $this->statsIframe ?>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--~
|
||||
~ @package akeebabackup
|
||||
~ @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
~ @license GNU General Public License version 3, or later
|
||||
-->
|
||||
<metadata>
|
||||
<layout title="COM_AKEEBABACKUP_VIEW_CPANEL_TITLE">
|
||||
<message>
|
||||
<![CDATA[COM_AKEEBABACKUP_VIEW_CPANEL_DESC]]>
|
||||
</message>
|
||||
</layout>
|
||||
</metadata>
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
?>
|
||||
<div class="mt-3 p-3 bg-light border-top border-4 d-flex flex-column">
|
||||
<p class="text-muted">
|
||||
Copyright 2006-<?= date('Y') ?> <a href="https://www.akeeba.com">Akeeba Ltd</a>. All legal rights reserved.
|
||||
<br/>
|
||||
Akeeba Backup is Free Software and is distributed under the terms of the
|
||||
<a href="http://www.gnu.org/licenses/gpl-3.0.html">GNU General Public License</a>, version 3 or –
|
||||
at your option - any later version.
|
||||
</p>
|
||||
|
||||
<?php if(AKEEBABACKUP_PRO != 1): ?>
|
||||
<p>
|
||||
If you use Akeeba Backup Core, please post a rating and a review at the
|
||||
<a href="https://extensions.joomla.org/extensions/extension/access-a-security/site-security/akeeba-backup/">Joomla! Extensions Directory</a>.
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
// All of the buttons in this panel require the Configure privilege
|
||||
if (!$this->permissions['configure'])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!AKEEBABACKUP_PRO)
|
||||
{
|
||||
return;
|
||||
}
|
||||
?>
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEADER_ADVANCED') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="d-flex flex-row flex-wrap align-items-stretch">
|
||||
<?php if($this->permissions['configure']): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-primary border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Schedule">
|
||||
<div class="bg-primary text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-calendar"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if($this->permissions['configure']): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-warning text-dark border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Discover">
|
||||
<div class="bg-warning d-block text-center p-3 h2">
|
||||
<span class="fa fa-file-import"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if($this->permissions['configure']): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-warning text-dark border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=S3import">
|
||||
<div class="bg-warning d-block text-center p-3 h2">
|
||||
<span class="fa fa-cloud-download-alt"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_S3IMPORT') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEADER_BASICOPS') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="d-flex flex-row flex-wrap align-items-stretch">
|
||||
<?php if ($this->permissions['backup']): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-success border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Backup">
|
||||
<div class="bg-success text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-play"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if ($this->permissions['download'] && AKEEBABACKUP_PRO): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-success border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Transfer">
|
||||
<div class="bg-success text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-external-link-alt"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<a class="text-center align-self-stretch btn btn-outline-primary border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Manage">
|
||||
<div class="bg-primary text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-list-alt"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN') ?>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<?php if ($this->permissions['configure']): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-primary border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Configuration">
|
||||
<div class="bg-primary text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-cog"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if ($this->permissions['configure']): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-primary border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Profiles">
|
||||
<div class="bg-primary text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-user-friends"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_PROFILES') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEADER_INCLUDEEXCLUDE') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="d-flex flex-row flex-wrap align-items-stretch">
|
||||
<?php if(AKEEBABACKUP_PRO): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-success border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Multipledatabases">
|
||||
<div class="bg-success text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-database"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB') ?>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a class="text-center align-self-stretch btn btn-outline-success border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Includefolders">
|
||||
<div class="bg-success text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-folder-plus"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_INCLUDEFOLDER') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<a class="text-center align-self-stretch btn btn-outline-danger border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Databasefilters">
|
||||
<div class="bg-danger text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-table"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER') ?>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a class="text-center align-self-stretch btn btn-outline-danger border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Filefilters">
|
||||
<div class="bg-danger text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-folder-minus"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS') ?>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<?php if(AKEEBABACKUP_PRO): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-danger border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Regexdatabasefilters">
|
||||
<div class="bg-danger text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-clipboard"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_REGEXDBFILTERS') ?>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a class="text-center align-self-stretch btn btn-outline-danger border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Regexfilefilters">
|
||||
<div class="bg-danger text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-folder"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_REGEXFSFILTERS') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEADER_TROUBLESHOOTING')?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="d-flex flex-row flex-wrap align-items-stretch">
|
||||
<?php if($this->permissions['backup']): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-primary border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Log">
|
||||
<div class="bg-primary text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LOG') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if(AKEEBABACKUP_PRO && $this->permissions['configure']): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-primary border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Alice">
|
||||
<div class="bg-primary text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-briefcase-medical"></span>
|
||||
</div>
|
||||
<span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE') ?>
|
||||
</span>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header bg-primary text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEADER_QUICKBACKUP') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="d-flex flex-row flex-wrap align-items-stretch">
|
||||
<?php foreach($this->quickIconProfiles as $qiProfile): ?>
|
||||
<a class="text-center align-self-stretch btn btn-outline-success border-0" style="width: 10em"
|
||||
href="index.php?option=com_akeebabackup&view=Backup&autostart=1&profileid=<?= (int) $qiProfile->id ?>&<?= Factory::getApplication()->getFormToken() ?>=1">
|
||||
<div class="bg-success text-white d-block text-center p-3 h2">
|
||||
<span class="fa fa-play"></span>
|
||||
</div>
|
||||
<span><?= $this->escape($qiProfile->description) ?></span>
|
||||
</a>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
/**
|
||||
* Call this template with:
|
||||
* [
|
||||
* 'returnURL' => 'index.php?......'
|
||||
* ]
|
||||
* to set up a custom return URL
|
||||
*/
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
$this->document->getWebAssetManager()
|
||||
->usePreset('choicesjs')
|
||||
->useScript('webcomponent.field-fancy-select');
|
||||
?>
|
||||
<div class="akeeba-panel">
|
||||
<form action="index.php" method="post"
|
||||
name="switchActiveProfileForm" id="switchActiveProfileForm"
|
||||
class="d-md-flex flex-md-row justify-content-md-evenly align-items-center border border-1 bg-light border-rounded rounded-2 mt-1 mb-2 p-2">
|
||||
<input type="hidden" name="option" value=com_akeebabackup" />
|
||||
<input type="hidden" name="view" value="Controlpanel" />
|
||||
<input type="hidden" name="task" value="SwitchProfile" />
|
||||
<?php if(isset($returnURL)): ?>
|
||||
<input type="hidden" name="returnurl" value="<?= $this->escape($returnURL) ?>" />
|
||||
<?php endif ?>
|
||||
<?= HTMLHelper::_('form.token') ?>
|
||||
|
||||
<div class="m-2">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_PROFILE_TITLE') ?>: #<?= (int)$this->profileId ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="flex-grow-1">
|
||||
<joomla-field-fancy-select
|
||||
search-placeholder="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_PROFILEID') ?>"
|
||||
><?=
|
||||
HTMLHelper::_('select.genericlist', $this->profileList, 'profileid', [
|
||||
'list.select' => $this->profileId,
|
||||
'id' => 'comAkeebaControlPanelProfileSwitch',
|
||||
])
|
||||
?></joomla-field-fancy-select>
|
||||
</div>
|
||||
|
||||
<div class="m-2">
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-sm d-xs-none d-sm-none" type="submit">
|
||||
<span class="akion-forward"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_PROFILE_BUTTON') ?>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_STATS') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<?= $this->latestBackupCell ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LABEL_STATUSSUMMARY') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<?php // Backup status summary ?>
|
||||
<?= $this->statusCell ?>
|
||||
|
||||
<?php // Warnings ?>
|
||||
<?php if($this->countWarnings): ?>
|
||||
<div>
|
||||
<?= $this->detailsCell ?>
|
||||
</div>
|
||||
<hr />
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Version ?>
|
||||
<p class="ak_version">
|
||||
<strong><?= Text::_('COM_AKEEBABACKUP_' . (AKEEBABACKUP_PRO ? 'PRO' : 'CORE')) ?></strong>
|
||||
<?= AKEEBABACKUP_VERSION ?>
|
||||
<span class="text-muted">
|
||||
(<?= AKEEBABACKUP_DATE ?>)
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<div class="d-flex flex-column">
|
||||
<?php // Changelog ?>
|
||||
<button type="button"
|
||||
id="btnchangelog" class="btn btn-outline-primary mb-2 me-2"
|
||||
data-bs-toggle="modal" data-bs-target="#akeeba-changelog">
|
||||
<span class="fa fa-clipboard-check"></span>
|
||||
CHANGELOG
|
||||
</button>
|
||||
|
||||
<?php // Donation CTA ?>
|
||||
<?php if(!AKEEBABACKUP_PRO): ?>
|
||||
<a
|
||||
href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KDVQPB4EREBPY&source=url"
|
||||
class="btn btn-outline-success mb-2 me-2">
|
||||
<span class="fa fa-donate"></span>
|
||||
Donate via PayPal
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Pro upsell ?>
|
||||
<?php if(!AKEEBABACKUP_PRO && (time() - $this->lastUpsellDismiss < 1296000)): ?>
|
||||
<a href="https://www.akeeba.com/landing/akeeba-backup.html"
|
||||
class="btn btn-sm btn-outline-dark mb-2 me-2">
|
||||
<span class="icon-akeeba"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_BTN_LEARNMORE') ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="akeeba-changelog" tabindex="-1"
|
||||
aria-labelledby="akeeba-changelog-header" aria-hidden="true"
|
||||
role="dialog">
|
||||
<div class="modal-dialog modal-dialog-scrollable modal-dialog-centered modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title" id="akeeba-changelog-header">
|
||||
<?= Text::_('CHANGELOG') ?>
|
||||
</h3>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<div class="modal-body p-3">
|
||||
<?= $this->formattedChangelog ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
// Only show in the Core version with a 10% probability
|
||||
if (AKEEBABACKUP_PRO) return;
|
||||
|
||||
// Only show if it's at least 15 days since the last time the user dismissed the upsell
|
||||
if (time() - $this->lastUpsellDismiss < 1296000) return;
|
||||
|
||||
?>
|
||||
<div class="card my-4 border border-info">
|
||||
<h3 class="card-header bg-info text-white">
|
||||
<span class="fa fa-star"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_HEAD_PROUPSELL') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_HEAD_LBL_PROUPSELL_1') ?>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_HEAD_LBL_PROUPSELL_2') ?>
|
||||
</p>
|
||||
|
||||
<div class="mb-2 text-center">
|
||||
<a href="https://www.akeeba.com/landing/akeeba-backup.html"
|
||||
class="btn btn-info btn-lg">
|
||||
<span class="icon-akeeba"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_BTN_LEARNMORE') ?>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="<?= Route::_('index.php?option=com_akeebabackup&view=Controlpanel&task=dismissUpsell') ?>"
|
||||
class="btn btn-sm btn-outline-danger m-2">
|
||||
<span class="fa fa-bell"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_BTN_HIDE') ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,288 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
use Joomla\CMS\Application\ApplicationHelper;
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
$cloudFlareTestFile = 'CLOUDFLARE::' . Uri::base() . 'media/com_akeebabackup/ControlPanel.min.js';
|
||||
$cloudFlareTestFile .= '?' . ApplicationHelper::getHash(AKEEBABACKUP_VERSION . AKEEBABACKUP_DATE);
|
||||
|
||||
$token = Factory::getApplication()->getFormToken();
|
||||
?>
|
||||
<?php // Configuration Wizard pop-up ?>
|
||||
<?php if($this->promptForConfigurationwizard && !defined('AKEEBADEBUG')): ?>
|
||||
<?= $this->loadAnyTemplate('Configuration/confwiz_modal') ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Potentially web accessible output directory ?>
|
||||
<!--
|
||||
Oh, hi there! It looks like you got curious and are peeking around your browser's developer tools – or just the
|
||||
source code of the page that loaded on your browser. Cool! May I explain what we are seeing here?
|
||||
|
||||
Just to let you know, the next three DETAILS (outDirSystem, insecureOutputDirectory and missingRandomFromFilename) are
|
||||
HIDDEN and their existence doesn't mean that your site has an insurmountable security issue. To the contrary.
|
||||
Whenever Akeeba Backup detects that the backup output directory is under your site's root it will CHECK its security
|
||||
i.e. if it's really accessible over the web. This check is performed with an AJAX call to your browser so if it
|
||||
takes forever or gets stuck you won't see a frustrating blank page in your browser. If AND ONLY IF a problem is
|
||||
detected said JavaScript will display one of the following DIVs, depending on what is applicable.
|
||||
|
||||
So, to recap. These hidden DIVs? They don't indicate a problem with your site. If one becomes visible then – and
|
||||
ONLY then – should you do something about it, as instructed. But thank you for being curious. Curiosity is how you
|
||||
get involved with and better at web development. Stay curious!
|
||||
-->
|
||||
<?php // Web accessible output directory that coincides with or is inside in a CMS system folder ?>
|
||||
<details class="alert alert-danger" id="outDirSystem" style="display: none">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEAD_OUTDIR_INVALID') ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_LISTABLE', realpath($this->getModel()->getOutputDirectory())) ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_ISSYSTEM') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_ISSYSTEM_FIX') ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_DELETEORBEHACKED') ?>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<?php // Output directory can be listed over the web ?>
|
||||
<details class="alert alert-<?= $this->hasOutputDirectorySecurityFiles ? 'danger' : 'warning' ?>" id="insecureOutputDirectory" style="display: none">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-<?= $this->hasOutputDirectorySecurityFiles ? 'danger' : 'body' ?>">
|
||||
<?php if ($this->hasOutputDirectorySecurityFiles): ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEAD_OUTDIR_UNFIXABLE') ?>
|
||||
<?php else: ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEAD_OUTDIR_INSECURE') ?>
|
||||
<?php endif ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_LISTABLE', realpath($this->getModel()->getOutputDirectory())) ?>
|
||||
</p>
|
||||
<?php if (!$this->hasOutputDirectorySecurityFiles): ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_CLICKTHEBUTTON') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_FIX_SECURITYFILES') ?>
|
||||
</p>
|
||||
|
||||
<form action="index.php" method="POST" class="akeeba-form--inline">
|
||||
<input type="hidden" name="option" value="com_akeebabackup">
|
||||
<input type="hidden" name="view" value="Controlpanel">
|
||||
<input type="hidden" name="task" value="fixOutputDirectory">
|
||||
<input type="hidden" name="<?= $token ?>" value="1">
|
||||
|
||||
<button type="submit" class="btn btn-success w-100">
|
||||
<span class="fa fa-hammer"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_BTN_FIXSECURITY') ?>
|
||||
</button>
|
||||
</form>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_TRASHHOST') ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_DELETEORBEHACKED') ?>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</details>
|
||||
|
||||
<?php // Output directory cannot be listed over the web but I can download files ?>
|
||||
<details class="alert alert-warning" id="missingRandomFromFilename" style="display: none">
|
||||
<summary class="h3 fs-3 m-0 p-0">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_HEAD_OUTDIR_INSECURE_ALT') ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_FILEREADABLE', realpath($this->getModel()->getOutputDirectory())) ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_CLICKTHEBUTTON') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_LBL_OUTDIR_FIX_RANDOM') ?>
|
||||
</p>
|
||||
|
||||
<form action="index.php" method="POST" class="akeeba-form--inline">
|
||||
<input type="hidden" name="option" value="com_akeebabackup">
|
||||
<input type="hidden" name="view" value="Controlpanel">
|
||||
<input type="hidden" name="task" value="addRandomToFilename">
|
||||
<input type="hidden" name="<?= $token ?>" value="1">
|
||||
|
||||
<button type="submit" class="btn btn-success w-100">
|
||||
<span class="fa fa-hammer"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_BTN_FIXSECURITY') ?>
|
||||
</button>
|
||||
</form>
|
||||
</details>
|
||||
|
||||
|
||||
<?php // mbstring warning ?>
|
||||
<?php if(!$this->checkMbstring): ?>
|
||||
<details class="alert alert-error">
|
||||
<summary class="h4 fs-4 m-0 p-0 text-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANL_ERR_MBSTRING_TITLE') ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANL_ERR_MBSTRING_BODY', PHP_VERSION) ?>
|
||||
</p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Front-end backup secret word reminder ?>
|
||||
<?php if(!empty($this->frontEndSecretWordIssue)): ?>
|
||||
<details class="alert alert-danger alert-dismissible">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_ERR_FESECRETWORD_HEADER') ?>
|
||||
</summary>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_CPANEL_ERR_FESECRETWORD_INTRO') ?></p>
|
||||
<p><?= $this->frontEndSecretWordIssue ?></p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_ERR_FESECRETWORD_WHATTODO_JOOMLA') ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_ERR_FESECRETWORD_WHATTODO_COMMON', $this->newSecretWord) ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-success btn-lg"
|
||||
href="index.php?option=com_akeebabackup&view=Controlpanel&task=resetSecretWord&<?= $token ?>=1">
|
||||
<span class="fa fa-sync"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_BTN_FESECRETWORD_RESET') ?>
|
||||
</a>
|
||||
</p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Wrong media directory permissions ?>
|
||||
<?php if(!$this->areMediaPermissionsFixed): ?>
|
||||
<details id="notfixedperms" class="alert alert-danger alert-dismissible">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L1') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</summary>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L2') ?></p>
|
||||
<ol>
|
||||
<li><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L3A') ?></li>
|
||||
<li><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L3B') ?></li>
|
||||
</ol>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WARN_PERMS_L4') ?></p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // You need to enter your Download ID ?>
|
||||
<?php if($this->needsDownloadID):
|
||||
$updateSiteEditUrl = Route::_('index.php?option=com_installer&task=updatesite.edit&update_site_id=' . $this->updateSiteId); ?>
|
||||
<details class="alert alert-info">
|
||||
<summary class="h3 fs-3 m-0 p-0 text-info">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_MSG_MUSTENTERDLID') ?>
|
||||
</summary>
|
||||
<p><?= Text::sprintf('COM_AKEEBABACKUP_LBL_CPANEL_NEEDSDLID','https://www.akeeba.com/download/official/add-on-dlid.html') ?></p>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_MSG_WHERETOENTERDLID', $updateSiteEditUrl) ?>
|
||||
</p>
|
||||
<p class="text-muted">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_MSG_JOOMLABUGGYUPDATES') ?>
|
||||
</p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // You have CORE; you need to upgrade, not just enter a Download ID ?>
|
||||
<?php if($this->coreWarningForDownloadID): ?>
|
||||
<details class="alert alert-warning">
|
||||
<summary class="h3 fs-3 m-0 p-0">
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_NEEDSUPGRADE_HEAD') ?>
|
||||
</summary>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_LBL_CPANEL_NEEDSUPGRADE_BODY','http://akee.ba/abcoretopro') ?>
|
||||
</p>
|
||||
</details>
|
||||
<?php endif ?>
|
||||
|
||||
<?php // Upgrade from Akeeba Backup 7 or 8? ?>
|
||||
<?php if ($this->canUpgradeFromAkeebaBackup8): ?>
|
||||
<div class="alert alert-info alert-dismissible">
|
||||
<h3>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_HEAD') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_BODY') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-primary btn-lg"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&view=Upgrade') ?>"
|
||||
>
|
||||
<span class="fa fa-hat-wizard"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_BTN') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<?php elseif(!empty($this->akeebaBackup8PackageId)): ?>
|
||||
<div class="alert alert-info alert-dismissible">
|
||||
<h3>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADED_FROM_AKEEBABACKUP8_HEAD') ?>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_BODY') ?>
|
||||
</p>
|
||||
<p class="small">
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADED_FROM_AKEEBABACKUP8_NOTE') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-primary btn-lg"
|
||||
href="<?= Uri::base() ?>index.php?option=com_installer&view=manage&filter[search]=id:<?= $this->akeebaBackup8PackageId ?>"
|
||||
>
|
||||
<span class="fa fa-trash"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADED_FROM_AKEEBABACKUP8_BTN') ?>
|
||||
</a>
|
||||
<a class="btn btn-warning btn-sm"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&view=Upgrade') ?>"
|
||||
>
|
||||
<span class="fa fa-hat-wizard"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LBL_CPANEL_UPGRADE_FROM_AKEEBABACKUP8_BTN') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php // Warn about CloudFlare Rocket Loader ?>
|
||||
<details class="alert alert-warning" style="display: none;" id="cloudFlareWarn">
|
||||
<summary class="h4 fs-4 m-0 p-0">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CPANEL_MSG_CLOUDFLARE_WARN')?>
|
||||
</summary>
|
||||
<p><?= Text::sprintf('COM_AKEEBABACKUP_CPANEL_MSG_CLOUDFLARE_WARN1', 'https://support.cloudflare.com/hc/en-us/articles/200169456-Why-is-JavaScript-or-jQuery-not-working-on-my-site-') ?></p>
|
||||
</details>
|
||||
<?php
|
||||
/**
|
||||
* DO NOT REMOVE THE ATTRIBUTES.
|
||||
*
|
||||
* This is a specialised test which looks for CloudFlare's completely broken RocketLoader feature and warns the user
|
||||
* about it.
|
||||
*/
|
||||
|
||||
$js = <<< JS
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
var test = localStorage.getItem('$cloudFlareTestFile');
|
||||
if (test)
|
||||
{
|
||||
document.getElementById("cloudFlareWarn").style.display = "block";
|
||||
}
|
||||
});
|
||||
|
||||
JS;
|
||||
|
||||
$this->document->getWebAssetManager()->addInlineScript($js, [], [
|
||||
'type' => 'text/javascript',
|
||||
'data-cfasync' => 'true'
|
||||
])
|
||||
?>
|
||||
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Controlpanel\HtmlView */
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
// Pass parameters to the JavaScript
|
||||
$vapidKeys = $this->getModel('push')->getVapidKeys('com_akeebabackup');
|
||||
|
||||
if ($vapidKeys === null):
|
||||
?>
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header bg-info text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_HEAD') ?>
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
<div class="alert alert-warning" id="webPushNotAvailable">
|
||||
<h3 class="alert-heading"><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_LBL_UNAVAILABLE_HEAD') ?></h3>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_LBL_UNAVAILABLE_SERVER_BODY') ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
endif;
|
||||
|
||||
$this->document->addScriptOptions('com_akeebabackup.webPush', [
|
||||
'workerUri' => $this->document
|
||||
->getWebAssetManager()
|
||||
->getAsset('script', 'com_akeebabackup.webpush-worker')
|
||||
->getUri('true'),
|
||||
'subscribeUri' => Route::_(
|
||||
'index.php?option=com_akeebabackup&task=push.webpushsubscribe',
|
||||
false,
|
||||
Route::TLS_IGNORE,
|
||||
true
|
||||
),
|
||||
'unsubscribeUri' => Route::_(
|
||||
'index.php?option=com_akeebabackup&task=push.webpushunsubscribe',
|
||||
false,
|
||||
Route::TLS_IGNORE,
|
||||
true
|
||||
),
|
||||
'vapidKeys' => $vapidKeys,
|
||||
'subscribeButton' => '#btnWebPushSubscribe',
|
||||
'unsubscribeButton' => '#btnWebPushUnsubscribe',
|
||||
'unavailableInfo' => '#webPushNotAvailable',
|
||||
]);
|
||||
// Load the JavaScript
|
||||
$this->document->getWebAssetManager()->useScript('com_akeebabackup.webpush');
|
||||
|
||||
?>
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header bg-info text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_HEAD') ?>
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
<details id="webPushDetails">
|
||||
<summary><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_SUMMARY') ?></summary>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_DETAILS') ?>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<div class="alert alert-warning" id="webPushNotAvailable">
|
||||
<h3 class="alert-heading"><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_LBL_UNAVAILABLE_HEAD') ?></h3>
|
||||
<p><?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_LBL_UNAVAILABLE_BODY') ?></p>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
id="btnWebPushSubscribe"
|
||||
class="btn btn-primary d-none disabled"
|
||||
>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_BTN_SUBSCRIBE') ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
id="btnWebPushUnsubscribe"
|
||||
class="btn btn-danger d-none disabled"
|
||||
>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL_WEBPUSH_BTN_UNSUBSCRIBE') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Databasefilters\HtmlView $this */
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/profilename');
|
||||
|
||||
?>
|
||||
<div class="border row row-cols-lg-auto g-3 align-items-center my-3 mx-1 pb-3">
|
||||
|
||||
<div class="col-12">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER_LABEL_ROOTDIR') ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<span><?= $this->root_select ?></span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-success" id="comAkeebaDatabasefiltersExcludeNonCMS">
|
||||
<span class="fa fa-flag"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER_LABEL_EXCLUDENONCORE') ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-danger" id="comAkeebaDatabasefiltersNuke">
|
||||
<span class="fa fa-radiation"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER_LABEL_NUKEFILTERS') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ak_main_container" class="row row-cols-1">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER_LABEL_TABLES') ?>
|
||||
</h3>
|
||||
<div id="tables" class="card-body overflow-scroll" style="height: 45vh;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Databasefilters\HtmlView $this */
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/profilename');
|
||||
|
||||
?>
|
||||
<div class="border row row-cols-lg-auto g-3 align-items-center my-3 mx-1 pb-3">
|
||||
<div class="col-12">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER_LABEL_ROOTDIR') ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<span><?= $this->root_select ?></span>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_ADDNEWFILTER') ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-dark" id="comAkeebaDatabasefiltersAddNewTables">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER_TYPE_TABLES') ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-dark" id="comAkeebaDatabasefiltersAddNewTableData">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER_TYPE_TABLEDATA') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ak_list_container">
|
||||
<table id="ak_list_table" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-25">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_TYPE') ?>
|
||||
</th>
|
||||
<th>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_FILTERITEM') ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ak_list_contents">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Discover\HtmlView $this */
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
$this->document
|
||||
->addScriptOptions('akeebabackup.Configuration.URLs.browser', Route::_(
|
||||
'index.php?option=com_akeebabackup&view=Browser&processfolder=1&tmpl=component&folder=',
|
||||
false, Route::TLS_IGNORE, true
|
||||
));
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/folderbrowser');
|
||||
?>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_DISCOVER_LABEL_S3IMPORT', 'index.php?option=com_akeebabackup&view=S3import') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-primary btn-sm" href="index.php?option=com_akeebabackup&view=S3import">
|
||||
<span class="fa fa-cloud-download-alt"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_S3IMPORT') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form name="adminForm" id="adminForm"
|
||||
action="<?= Route::_('index.php?option=com_akeebabackup&task=Discover.discover') ?>"
|
||||
method="post">
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="directory" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_DIRECTORY') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<div class="input-group">
|
||||
<input type="text" name="directory" id="directory" class="form-control"
|
||||
value="<?= $this->escape($this->directory) ?>" />
|
||||
<button type="button"
|
||||
class="btn btn-dark" id="browsebutton">
|
||||
<span class="fa fa-folder-open"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_UI_BROWSE') ?>
|
||||
</button>
|
||||
</div>
|
||||
<p class="form-text">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_SELECTDIR') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-sm-9 col-sm-offset-3">
|
||||
<button type="submit"
|
||||
class="btn btn-primary">
|
||||
<span class="fa fa-search"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_SCAN') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?= HTMLHelper::_('form.token') ?>
|
||||
</form>
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Discover\HtmlView $this */
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
$hasFiles = !empty($this->files);
|
||||
$task = $hasFiles ? 'import' : 'default';
|
||||
?>
|
||||
<form name="adminForm" id="adminForm"
|
||||
action="<?= Route::_('index.php?option=com_akeebabackup&view=Discover&task=' . $task) ?>"
|
||||
method="post">
|
||||
<?php if ($hasFiles): ?>
|
||||
<div class="border bg-light mb-3 p-2">
|
||||
<div class="row">
|
||||
<label for="directory2" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_DIRECTORY') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="directory2" id="directory2"
|
||||
value="<?= $this->escape($this->directory) ?>"
|
||||
disabled="disabled" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="files" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_FILES') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="files[]" id="files" multiple="multiple" class="form-select">
|
||||
<?php foreach ($this->files as $file): ?>
|
||||
<option value="<?= $this->escape(basename($file)) ?>">
|
||||
<?= $this->escape(basename($file)) ?>
|
||||
</option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
<p class="form-text">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_SELECTFILES') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-sm-9 col-sm-offset-3">
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<span class="fa fa-file-import"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_IMPORT') ?>
|
||||
</button>
|
||||
<a class="btn btn-outline-warning"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&view=Discover') ?>">
|
||||
<span class="fa fa-arrow-left"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_GOBACK') ?>
|
||||
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="alert alert-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_ERROR_NOFILES') ?>
|
||||
</div>
|
||||
<p>
|
||||
<button type="submit"
|
||||
class="btn btn-warning">
|
||||
<span class="fa fa-arrow-left"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DISCOVER_LABEL_GOBACK') ?>
|
||||
</button>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($hasFiles): ?>
|
||||
<input type="hidden" name="directory" value="<?= $this->escape($this->directory) ?>" />
|
||||
<?php endif; ?>
|
||||
<?= HTMLHelper::_('form.token') ?>
|
||||
</form>
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Filefilters\HtmlView $this */
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/profilename');
|
||||
|
||||
?>
|
||||
<div class="border row row-cols-lg-auto g-3 align-items-center my-3 mx-1 pb-3">
|
||||
<div class="col-12">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_ROOTDIR') ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<span><?= $this->root_select ?></span>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-danger" id="comAkeebaFilefiltersNuke">
|
||||
<span class="fa fa-trash"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_NUKEFILTERS') ?>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<a class="btn btn-secondary text-decoration-none"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&view=Filefilters&layout=tabular') ?>">
|
||||
<span class="fa fa-list-ul"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_VIEWALL') ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav aria-label="breadcrumb" id="ak_crumbs_container" class="">
|
||||
<ol id="ak_crumbs" class="breadcrumb border my-3 p-3"></ol>
|
||||
</nav>
|
||||
|
||||
<div id="ak_main_container" class="row row-cols-1 row-cols-lg-2 g-3">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_DIRS') ?>
|
||||
</h3>
|
||||
<div id="folders" class="card-body overflow-scroll" style="height: 45vh;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_FILES') ?>
|
||||
</h3>
|
||||
<div id="files" class="card-body overflow-scroll" style="height: 45vh;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Filefilters\HtmlView $this */
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/profilename');
|
||||
?>
|
||||
|
||||
<div class="border row row-cols-lg-auto g-3 align-items-center my-3 mx-1 pb-3">
|
||||
<div class="col-12">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_ROOTDIR') ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<span><?= $this->root_select ?></span>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_ADDNEWFILTER') ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-dark" id="comAkeebaFilefiltersAddDirectories">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_TYPE_DIRECTORIES') ?>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-dark" id="comAkeebaFilefiltersAddSkipfiles">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_TYPE_SKIPFILES') ?>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-dark" id="comAkeebaFilefiltersAddSkipdirs">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_TYPE_SKIPDIRS') ?>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<button type="button"
|
||||
class="btn btn-dark" id="comAkeebaFilefiltersAddFiles">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_TYPE_FILES') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ak_list_container">
|
||||
<table id="ak_list_table" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-25">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_TYPE') ?>
|
||||
</th>
|
||||
<th>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_FILTERITEM') ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ak_list_contents">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Includefolders\HtmlView $this */
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/profilename');
|
||||
echo $this->loadAnyTemplate('commontemplates/folderbrowser');
|
||||
|
||||
?>
|
||||
<div class="card">
|
||||
<div id="ak_list_container" class="card-body">
|
||||
<table id="ak_list_table" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- Delete -->
|
||||
<td> </td>
|
||||
<!-- Edit -->
|
||||
<td> </td>
|
||||
<!-- Directory path -->
|
||||
<th scope="col">
|
||||
<span rel="popover" title="<?= Text::_('COM_AKEEBABACKUP_INCLUDEFOLDER_LABEL_DIRECTORY') ?>"
|
||||
data-bs-content="<?= Text::_('COM_AKEEBABACKUP_INCLUDEFOLDER_LABEL_DIRECTORY_HELP') ?>">
|
||||
<?= Text::_('COM_AKEEBABACKUP_INCLUDEFOLDER_LABEL_DIRECTORY') ?>
|
||||
</span>
|
||||
</th>
|
||||
<!-- Directory path -->
|
||||
<th scope="col">
|
||||
<span rel="popover" title="<?= Text::_('COM_AKEEBABACKUP_INCLUDEFOLDER_LABEL_VINCLUDEDIR') ?>"
|
||||
data-bs-content="<?= Text::_('COM_AKEEBABACKUP_INCLUDEFOLDER_LABEL_VINCLUDEDIR_HELP') ?>">
|
||||
<?= Text::_('COM_AKEEBABACKUP_INCLUDEFOLDER_LABEL_VINCLUDEDIR') ?>
|
||||
</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ak_list_contents">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Uri\Uri as JUri;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Log\HtmlView $this */
|
||||
|
||||
HTMLHelper::_('formbehavior.chosen');
|
||||
?>
|
||||
|
||||
<?php if(isset($this->logs) && count($this->logs)): ?>
|
||||
<form name="adminForm" id="adminForm" action="index.php" method="post"
|
||||
class="d-flex flex-column gap-2 p-2 my-2 border bg-light">
|
||||
<div class="row row-cols-lg-auto gap-1 align-items-center">
|
||||
<?php if(empty($this->tag)): ?>
|
||||
<div class="col">
|
||||
<label for="tag"><?= Text::_('COM_AKEEBABACKUP_LOG_CHOOSE_FILE_TITLE')?></label>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<div class="col flex-grow-1">
|
||||
<?php if(!empty($this->tag)): ?>
|
||||
<label for="tag" class="visually-hidden"><?= Text::_('COM_AKEEBABACKUP_LOG_CHOOSE_FILE_TITLE')?></label>
|
||||
<?php endif ?>
|
||||
<?= HTMLHelper::_('select.genericlist', $this->logs, 'tag', [
|
||||
'list.select' => $this->tag,
|
||||
'list.attr' => [
|
||||
'class' => 'advancedSelect form-select w-100',
|
||||
'onchange' => 'document.forms.adminForm.submit();',
|
||||
], 'id' => 'comAkeebaLogTagSelector',
|
||||
]) ?>
|
||||
</div>
|
||||
<?php if(!empty($this->tag)): ?>
|
||||
<div class="col flex-shrink-1">
|
||||
<a class="btn btn-primary" href="<?= $this->escape(JUri::base()) ?>index.php?option=com_akeebabackup&view=Log&task=download&tag=<?= $this->escape($this->tag) ?>">
|
||||
<span class="fa fa-download"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LOG_LABEL_DOWNLOAD') ?>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<?php if ($this->hasAlice): ?>
|
||||
<div class="col flex-shrink-1">
|
||||
<a class="btn btn-outline-success" href="<?= $this->escape(JUri::base()) ?>index.php?option=com_akeebabackup&view=Alice&log=<?= $this->escape($this->tag) ?>&task=start&<?= \Joomla\CMS\Factory::getApplication()->getFormToken() ?>=1">
|
||||
<span class="fa fa-diagnoses"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_ALICE_ANALYZE') ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
|
||||
|
||||
<input name="option" value="com_akeebabackup" type="hidden" />
|
||||
<input name="view" value="Log" type="hidden" />
|
||||
<?= HTMLHelper::_('form.token') ?>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if(!empty($this->tag)): ?>
|
||||
<?php if ($this->logTooBig): ?>
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_LOG_SIZE_WARNING', number_format($this->logSize / (1024 * 1024), 2)) ?>
|
||||
</p>
|
||||
<a class="btn btn-dark" id="showlog" href="#">
|
||||
<?= Text::_('COM_AKEEBABACKUP_LOG_SHOW_LOG') ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<div id="iframe-holder" class="border p-0"
|
||||
style="display: <?= $this->logTooBig ? 'none' : 'block' ?>;">
|
||||
<?php if(!$this->logTooBig): ?>
|
||||
<iframe
|
||||
src="index.php?option=com_akeebabackup&view=Log&task=iframe&format=raw&tag=<?= urlencode($this->tag) ?>"
|
||||
width="99%" height="400px">
|
||||
</iframe>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if( ! (isset($this->logs) && count($this->logs))): ?>
|
||||
<div class="alert alert-danger">
|
||||
<?= Text::_('COM_AKEEBABACKUP_LOG_NONE_FOUND') ?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
81
administrator/components/com_akeebabackup/tmpl/log/raw.php
Normal file
81
administrator/components/com_akeebabackup/tmpl/log/raw.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Akeeba\Engine\Factory;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Log\RawView $this */
|
||||
|
||||
// -- Get the log's file name
|
||||
$tag = $this->tag;
|
||||
$logFile = Factory::getLog()->getLogFilename($tag);
|
||||
|
||||
if (!@is_file($logFile) && @file_exists(substr($logFile, 0, -4)))
|
||||
{
|
||||
/**
|
||||
* Transitional period: the log file akeeba.tag.log.php may not exist but the akeeba.tag.log does. This
|
||||
* addresses this transition.
|
||||
*/
|
||||
$logFile = substr($logFile, 0, -4);
|
||||
}
|
||||
|
||||
@ob_end_clean();
|
||||
|
||||
if (!@file_exists($logFile))
|
||||
{
|
||||
// Oops! The log doesn't exist!
|
||||
echo '<p>' . Text::_('COM_AKEEBABACKUP_LOG_ERROR_LOGFILENOTEXISTS') . '</p>';
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Allright, let's load and render it
|
||||
$fp = fopen($logFile, "r");
|
||||
if ($fp === FALSE)
|
||||
{
|
||||
// Oops! The log isn't readable?!
|
||||
echo '<p>' . Text::_('COM_AKEEBABACKUP_LOG_ERROR_UNREADABLE') . '</p>';
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
while (!feof($fp))
|
||||
{
|
||||
$line = fgets($fp);
|
||||
if (!$line) return;
|
||||
$exploded = explode("|", $line, 3);
|
||||
unset($line);
|
||||
if (count($exploded) < 3) continue;
|
||||
switch (trim($exploded[0]))
|
||||
{
|
||||
case "ERROR":
|
||||
$fmtString = "<span style=\"color: red; font-weight: bold;\">[";
|
||||
break;
|
||||
case "WARNING":
|
||||
$fmtString = "<span style=\"color: #D8AD00; font-weight: bold;\">[";
|
||||
break;
|
||||
case "INFO":
|
||||
$fmtString = "<span style=\"color: black;\">[";
|
||||
break;
|
||||
case "DEBUG":
|
||||
$fmtString = "<span style=\"color: #666666; font-size: small;\">[";
|
||||
break;
|
||||
default:
|
||||
$fmtString = "<span style=\"font-size: small;\">[";
|
||||
break;
|
||||
}
|
||||
$fmtString .= $exploded[1] . "] " . htmlspecialchars($exploded[2]) . "</span><br/>\n";
|
||||
unset($exploded);
|
||||
echo $fmtString;
|
||||
unset($fmtString);
|
||||
}
|
||||
}
|
||||
|
||||
@ob_start();
|
||||
@@ -0,0 +1,241 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Layout\LayoutHelper;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Manage\HtmlView $this */
|
||||
|
||||
HTMLHelper::_('formbehavior.chosen');
|
||||
HTMLHelper::_('bootstrap.popover', '.akeebaCommentPopover', [
|
||||
'trigger' => 'click hover focus'
|
||||
]);
|
||||
HTMLHelper::_('bootstrap.tooltip', '.akeebaTooltip');
|
||||
|
||||
if ($this->promptForBackupRestoration)
|
||||
{
|
||||
echo $this->loadAnyTemplate('howtorestore_modal');
|
||||
}
|
||||
|
||||
?>
|
||||
<div id="akeebabackup-manage-iframe-modal"
|
||||
class="modal fade"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="akeebabackup-manage-iframe-modal-title"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-lg modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title" id="akeebabackup-manage-iframe-modal-title">
|
||||
</h3>
|
||||
<button type="button" class="btn-close novalidate"
|
||||
id="akeebabackup-manage-iframe-modal-close"
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<div class="modal-body p-3" id="akeebabackup-manage-iframe-modal-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="alert alert-info">
|
||||
<h3><?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_HOWDOIRESTORE_LEGEND') ?></h3>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BUADMIN_LABEL_HOWDOIRESTORE_TEXT_' . (AKEEBABACKUP_PRO ? 'PRO' : 'CORE'), 'http://akee.ba/abrestoreanywhere', 'index.php?option=com_akeebabackup&view=Transfer', 'https://www.akeeba.com/latest-kickstart-core.zip') ?>
|
||||
</p>
|
||||
<?php if (!AKEEBABACKUP_PRO): ?>
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BUADMIN_LABEL_HOWDOIRESTORE_TEXT_CORE_INFO_ABOUT_PRO', 'https://www.akeeba.com/products/akeeba-backup.html') ?>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
|
||||
|
||||
<form action="<?= Route::_('index.php?option=com_akeebabackup&view=Manage'); ?>"
|
||||
method="post" name="adminForm" id="adminForm">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div id="j-main-container" class="j-main-container">
|
||||
<?= LayoutHelper::render('joomla.searchtools.default', ['view' => $this]) ?>
|
||||
<?php if (empty($this->items)) : ?>
|
||||
<div class="alert alert-info">
|
||||
<span class="icon-info-circle" aria-hidden="true"></span><span
|
||||
class="visually-hidden"><?= Text::_('INFO'); ?></span>
|
||||
<?= Text::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
|
||||
</div>
|
||||
<?php else : ?>
|
||||
<table class="table" id="articleList">
|
||||
<caption class="visually-hidden">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_TABLE_CAPTION'); ?>, <span
|
||||
id="orderedBy"><?= Text::_('JGLOBAL_SORTED_BY'); ?> </span>, <span
|
||||
id="filteredBy"><?= Text::_('JGLOBAL_FILTERED_BY'); ?></span>
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="w-1 text-center">
|
||||
<?= HTMLHelper::_('grid.checkall'); ?>
|
||||
</td>
|
||||
<th scope="col" class="text-center d-none d-md-table-cell" style="max-width: 48px;">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_ID') ?>
|
||||
</th>
|
||||
<th scope="col" class="text-center" style="max-width: 40px">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_FROZEN') ?>
|
||||
</th>
|
||||
<th scope="col" class="text-center">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_DESCRIPTION') ?>
|
||||
</th>
|
||||
<th scope="col" class="text-center d-none d-md-table-cell">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_PROFILEID') ?>
|
||||
</th>
|
||||
<th scope="col" class="text-center" style="max-width: 40px;">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_STATUS') ?>
|
||||
</th>
|
||||
<th scope="col" class="text-center d-none d-sm-table-cell">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_MANAGEANDDL') ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($this->items as $i => $record) : ?>
|
||||
<?php
|
||||
[$originDescription, $originIcon] = $this->getOriginInformation($record);
|
||||
[$startTime, $duration, $timeZoneText] = $this->getTimeInformation($record);
|
||||
[$statusClass, $statusIcon] = $this->getStatusInformation($record);
|
||||
$profileName = $this->getProfileName($record);
|
||||
$comment = $this->escapeComment($record['comment']);
|
||||
|
||||
$frozenIcon = 'akion-waterdrop';
|
||||
$frozenTask = 'freeze';
|
||||
$frozenTitle = \JText::_('COM_AKEEBABACKUP_BUADMIN_LABEL_ACTION_FREEZE');
|
||||
|
||||
if ($record['frozen'])
|
||||
{
|
||||
$frozenIcon = 'akion-ios-snowy';
|
||||
$frozenTask = 'unfreeze';
|
||||
$frozenTitle = \JText::_('COM_AKEEBABACKUP_BUADMIN_LABEL_ACTION_UNFREEZE');
|
||||
}
|
||||
?>
|
||||
<tr class="row<?= $i % 2; ?>">
|
||||
<?php // Checkbox ?>
|
||||
<td class="text-center">
|
||||
<?= HTMLHelper::_('grid.id', $i, $record['id'], false, 'cid', 'cb', $record['id']); ?>
|
||||
</td>
|
||||
<?php // Backup ID ?>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<?= $record['id'] ?>
|
||||
</td>
|
||||
<?php // Frozen ?>
|
||||
<td>
|
||||
<?php // $frozenIcon ?>
|
||||
<?= HTMLHelper::_('jgrid.state', $this->getFrozenStates(), $record['frozen'], $i, array('prefix' => 'Manage.', 'translate' => true), true, true, 'cb'); ?>
|
||||
</td>
|
||||
<?php // Description, backup date, duration and size ?>
|
||||
<td>
|
||||
<span class="<?= $originIcon ?> akeebaCommentPopover" rel="popover"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_ORIGIN') ?>"
|
||||
data-bs-content="<?= $originDescription ?>"></span>
|
||||
<?php if (!(empty($comment))): ?>
|
||||
<span class="fa fa-info-circle akeebaCommentPopover" rel="popover"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_COMMENT') ?>"
|
||||
data-bs-content="<?= $comment ?>"></span>
|
||||
<?php endif ?>
|
||||
<a href="<?= Uri::base() ?>index.php?option=com_akeebabackup&view=statistic&layout=edit&id=<?= $record['id'] ?>">
|
||||
<?= empty($record['description'])
|
||||
? Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_NODESCRIPTION')
|
||||
: $this->escape($record['description']) ?>
|
||||
</a>
|
||||
<div class="row">
|
||||
<span class="col-lg akeeba-buadmin-startdate">
|
||||
<span class="fa fa-calendar akeebaTooltip"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_START') ?>"
|
||||
></span>
|
||||
<?= $startTime ?> <?= $timeZoneText ?>
|
||||
</span>
|
||||
|
||||
<span class="col-lg akeeba-buadmin-duration">
|
||||
<span class="fa fa-stopwatch akeebaTooltip"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_DURATION') ?>"
|
||||
></span>
|
||||
<?= $duration ?: '—' ?>
|
||||
</span>
|
||||
|
||||
<span class="col-lg akeeba-buadmin-size">
|
||||
<span class="fa fa-weight-hanging akeebaTooltip"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_SIZE') ?>"
|
||||
></span>
|
||||
<?php if ($record['meta'] == 'ok'): ?>
|
||||
<?= $this->formatFilesize($record['size']) ?>
|
||||
<?php elseif ($record['total_size'] > 0): ?>
|
||||
<i><?= $this->formatFilesize($record['total_size']) ?></i>
|
||||
<?php else: ?>
|
||||
—
|
||||
<?php endif ?>
|
||||
</span>
|
||||
</div>
|
||||
<div class="row d-block d-md-none">
|
||||
<div class="col-md">
|
||||
<span class="fa fa-users"></span>
|
||||
#<?= (int) $record['profile_id'] ?>.
|
||||
<?= $profileName == '—' ? $profileName : $this->escape($profileName) ?>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<span class="fa fa-align-justify"></span>
|
||||
<span class="fs-6 fst-italic">
|
||||
<?= $this->translateBackupType($record['type']) ?>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<?php // Backup profile ?>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<div>
|
||||
#<?= (int) $record['profile_id'] ?>.
|
||||
<?= $profileName == '—' ? $profileName : $this->escape($profileName) ?>
|
||||
</div>
|
||||
<div>
|
||||
<span class="fs-6 fst-italic">
|
||||
<?= $this->translateBackupType($record['type']) ?>
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
<?php // Status ?>
|
||||
<td>
|
||||
<span class="badge fs-3 rounded-pill w-100 <?= $statusClass ?> akeebaTooltip"
|
||||
rel="popover"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_STATUS_' . $record['meta']) ?>"
|
||||
>
|
||||
<span class="<?= $statusIcon ?>"></span>
|
||||
</span>
|
||||
</td>
|
||||
<?php // Manage & Download ?>
|
||||
<td class="d-none d-sm-table-cell">
|
||||
<?= $this->loadAnyTemplate('manage_column', false, ['record' => &$record]); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<?php // Load the pagination. ?>
|
||||
<?= $this->pagination->getListFooter(); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<input type="hidden" name="task" value=""> <input type="hidden" name="boxchecked" value="0">
|
||||
<?= HTMLHelper::_('form.token'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--~
|
||||
~ @package akeebabackup
|
||||
~ @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
~ @license GNU General Public License version 3, or later
|
||||
-->
|
||||
<metadata>
|
||||
<layout title="COM_AKEEBABACKUP_VIEW_MANAGE_TITLE">
|
||||
<message>
|
||||
<![CDATA[COM_AKEEBABACKUP_VIEW_MANAGE_DESC]]>
|
||||
</message>
|
||||
</layout>
|
||||
</metadata>
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Manage\HtmlView $this */
|
||||
|
||||
// Make sure we only ever add this HTML and JS once per page
|
||||
if (defined('AKEEBA_VIEW_JAVASCRIPT_HOWTORESTORE'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
define('AKEEBA_VIEW_JAVASCRIPT_HOWTORESTORE', 1);
|
||||
|
||||
$this->document->addScriptOptions('akeebabackup.Manage.ShowHowToRestoreModal', 1);
|
||||
|
||||
?>
|
||||
<div id="akeebabackup-config-howtorestore-bubble"
|
||||
class="modal fade"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="akeeba-config-confwiz-title"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title" id="akeeba-config-confwiz-title">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_HOWDOIRESTORE_LEGEND') ?>
|
||||
</h3>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<div class="modal-body p-3">
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BUADMIN_LABEL_HOWDOIRESTORE_TEXT_' . (AKEEBABACKUP_PRO ? 'PRO' : 'CORE'), 'http://akee.ba/abrestoreanywhere', 'index.php?option=com_akeebabackup&view=Transfer', 'https://www.akeeba.com/latest-kickstart-core.zip') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php if (!AKEEBABACKUP_PRO): ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BUADMIN_LABEL_HOWDOIRESTORE_TEXT_CORE_INFO_ABOUT_PRO', 'https://www.akeeba.com/products/akeeba-backup.html') ?>
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
class="btn btn-primary novalidate" data-bs-dismiss="modal">
|
||||
<span class="fa fa-times"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_BTN_REMINDME') ?>
|
||||
</button>
|
||||
|
||||
<a href="index.php?option=com_akeebabackup&view=Manage&task=hidemodal" class="btn btn-success">
|
||||
<span class="fa fa-check-circle"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_BTN_DONTSHOWTHISAGAIN') ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,230 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Akeeba\Component\AkeebaBackup\Administrator\Helper\Utils;
|
||||
use Akeeba\Engine\Factory;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Manage\HtmlView $this */
|
||||
/** @var array $record */
|
||||
|
||||
if (!isset($record['remote_filename']))
|
||||
{
|
||||
$record['remote_filename'] = '';
|
||||
}
|
||||
|
||||
$archiveExists = $record['meta'] == 'ok';
|
||||
$showManageRemote = $record['hasRemoteFiles'] && (AKEEBABACKUP_PRO == 1);
|
||||
$engineForProfile = array_key_exists($record['profile_id'], $this->enginesPerProfile) ? $this->enginesPerProfile[$record['profile_id']] : 'none';
|
||||
$showUploadRemote = $this->permissions['backup'] && $archiveExists && !$showManageRemote && ($engineForProfile != 'none') && ($record['meta'] != 'obsolete') && (AKEEBABACKUP_PRO == 1);
|
||||
$showDownload = $this->permissions['download'] && $archiveExists;
|
||||
$showViewLog = $this->permissions['backup'] && isset($record['backupid']) && !empty($record['backupid']);
|
||||
$postProcEngine = '';
|
||||
$thisPart = '';
|
||||
$thisID = urlencode($record['id']);
|
||||
|
||||
if ($showUploadRemote)
|
||||
{
|
||||
$postProcEngine = $engineForProfile ?: 'none';
|
||||
$showUploadRemote = !empty($postProcEngine);
|
||||
}
|
||||
|
||||
$relativePath = Utils::getRelativePath(JPATH_SITE, dirname($record['absolute_path']));
|
||||
|
||||
if (substr($relativePath, 0, 2) === './')
|
||||
{
|
||||
$relativePath = substr($relativePath, 2);
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="modal fade"
|
||||
id="akeeba-buadmin-<?= (int)$record['id'] ?>"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="akeeba-buadmin-<?= (int)$record['id'] ?>-title"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title" id="akeeba-buadmin-<?= (int)$record['id'] ?>-title">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_BACKUPINFO') ?>
|
||||
</h3>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<div class="modal-body p-3">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-5 fw-bold">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_ARCHIVEEXISTS') ?>
|
||||
</div>
|
||||
<div class="col-md-7 fw-bold">
|
||||
<?php if($record['meta'] == 'ok'): ?>
|
||||
<span class="text-success">
|
||||
<?= Text::_('JYES') ?>
|
||||
</span>
|
||||
<?php else : ?>
|
||||
<span class="text-danger">
|
||||
<?= Text::_('JNO') ?>
|
||||
</span>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-5 fw-bold">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_ARCHIVEPATH' . ($archiveExists ? '' : '_PAST'))?>
|
||||
</div>
|
||||
<div class="col-md-7 text-break">
|
||||
<?= $this->escape($relativePath) ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-5 fw-bold">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_ARCHIVENAME' . ($archiveExists ? '' : '_PAST'))?>
|
||||
</p>
|
||||
<p class="alert alert-info">
|
||||
<span class="fa fa-info-circle"></span>
|
||||
<?= Text::plural('COM_AKEEBABACKUP_BUADMIN_LBL_ARCHIVEPARTS', max($record['multipart'], 1)) ?>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<?php if ($record['multipart'] < 2): ?>
|
||||
<code>
|
||||
<?= $this->escape($record['archivename']) ?>
|
||||
</code>
|
||||
<?php else: ?>
|
||||
<ul>
|
||||
<?php foreach(Factory::getStatistics()->get_all_filenames($record, false) as $file): ?>
|
||||
<li>
|
||||
<code><?= basename($file) ?></code>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if($showDownload): ?>
|
||||
<div id="akeeba-buadmin-download-<?= (int)$record['id'] ?>"
|
||||
class="modal fade"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="akeeba-buadmin-download-<?= (int)$record['id'] ?>-title"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title" id="akeeba-buadmin-download-<?= (int)$record['id'] ?>">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_DOWNLOAD_TITLE')?>
|
||||
</h3>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<div class="modal-body p-3">
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_DOWNLOAD_WARNING')?>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<?php if($record['multipart'] < 2): ?>
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-sm comAkeebaManageDownloadButton"
|
||||
data-id="<?= (int) $record['id'] ?>">
|
||||
<span class="fa fa-file-download"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LOG_DOWNLOAD') ?>
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<div>
|
||||
<?= Text::plural('COM_AKEEBABACKUP_BUADMIN_LBL_DOWNLOAD_PARTS', (int)$record['multipart']) ?>
|
||||
</div>
|
||||
<div class="d-flex flex-row flex-wrap justify-content-start align-items-start">
|
||||
<?php for($count = 0; $count < $record['multipart']; $count++): ?>
|
||||
<button type="button"
|
||||
class="btn btn-secondary btn-sm text-decoration-none me-2 mb-2 comAkeebaManageDownloadButton"
|
||||
data-id="<?= (int) $record['id'] ?>"
|
||||
data-part="<?= (int) $count ?>">
|
||||
<span class="fa fa-file-download"></span>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_BUADMIN_LABEL_PART', $count) ?>
|
||||
</button>
|
||||
<?php endfor ?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if($showManageRemote || $showUploadRemote): ?>
|
||||
<div class="mb-3">
|
||||
<?php if($showManageRemote): ?>
|
||||
<div style="padding-bottom: 3pt;">
|
||||
<button type="button"
|
||||
class="btn btn-primary akeeba_remote_management_link"
|
||||
data-management="index.php?option=com_akeebabackup&view=Remotefiles&tmpl=component&task=listactions&id=<?= (int) $record['id'] ?>"
|
||||
data-reload="index.php?option=com_akeebabackup&view=Manage"
|
||||
>
|
||||
<span class="fa fa-cloud"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_REMOTEFILEMGMT') ?>
|
||||
</button>
|
||||
</div>
|
||||
<?php elseif($showUploadRemote): ?>
|
||||
<button type="button"
|
||||
class="btn btn-primary akeeba_upload"
|
||||
data-upload="index.php?option=com_akeebabackup&view=Upload&tmpl=component&task=start&id=<?= (int) $record['id'] ?>"
|
||||
data-reload="index.php?option=com_akeebabackup&view=Manage"
|
||||
title="<?= Text::sprintf('COM_AKEEBABACKUP_TRANSFER_DESC', Text::_("ENGINE_POSTPROC_{$postProcEngine}_TITLE")) ?>">
|
||||
<span class="fa fa-cloud-upload-alt"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_TITLE') ?>
|
||||
(<span class="fst-italic"><?= $this->escape($postProcEngine) ?></span>)
|
||||
</button>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<div>
|
||||
<?php if($showDownload): ?>
|
||||
<button type="button"
|
||||
class="btn btn-<?= ($showManageRemote || $showUploadRemote) ? 'secondary' : 'success' ?> me-2 mb-2"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#akeeba-buadmin-download-<?= (int)$record['id'] ?>"
|
||||
>
|
||||
<span class="fa fa-file-download"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LOG_DOWNLOAD') ?>
|
||||
</button>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if($showViewLog): ?>
|
||||
<a class="btn btn-outline-dark btn-small text-decoration-none me-2 mb-2 akeebaCommentPopover"
|
||||
<?= ($record['meta'] != 'obsolete') ? '' : 'disabled="disabled"' ?>
|
||||
href="index.php?option=com_akeebabackup&view=Log&tag=<?= $this->escape($record['tag']) ?>.<?= $this->escape($record['backupid']) ?>&profileid=<?= (int)$record['profile_id'] ?>"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_LOGFILEID') ?>"
|
||||
data-bs-content="<?= $this->escape($record['backupid']) ?>">
|
||||
<span class="fa fa-search"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_LOG') ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<button type="button"
|
||||
class="btn btn-info btn-sm akeebaTooltip"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#akeeba-buadmin-<?= (int) $record['id'] ?>"
|
||||
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_BACKUPINFO') ?>"
|
||||
>
|
||||
<span class="fa fa-info-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -0,0 +1,157 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Multipledatabases\HtmlView $this */
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div id="akEditorDialog"
|
||||
class="modal fade"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="akEditorDialogLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-scrollable modal-dialog-centered modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 id="akEditorDialogLabel" class="modal-title">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_EDITOR_TITLE') ?>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div id="akEditorDialogBody" class="modal-body p-3">
|
||||
<div id="ak_editor_table">
|
||||
<div class="row mb-3">
|
||||
<label class="col-xs-3 col-form-label" for="ake_driver">
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_DRIVER')?>
|
||||
</label>
|
||||
<div class="col-xs-9">
|
||||
<?= HTMLHelper::_('select.genericlist', [
|
||||
'mysqli' => 'MySQLi',
|
||||
'pdomysql' => 'PDO MySQL',
|
||||
], 'ake_driver', [
|
||||
'list.attr' => [
|
||||
'class' => 'form-select',
|
||||
],
|
||||
], 'value', 'text', null, 'ake_driver') ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-xs-3 col-form-label" for="ake_host">
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_HOST') ?>
|
||||
</label>
|
||||
<div class="col-xs-9">
|
||||
<input class="form-control" id="ake_host" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-xs-3 col-form-label" for="ake_port">
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_PORT') ?>
|
||||
</label>
|
||||
<div class="col-xs-9">
|
||||
<input id="ake_port" type="text" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-xs-3 col-form-label" for="ake_username">
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_USERNAME') ?>
|
||||
</label>
|
||||
<div class="col-xs-9">
|
||||
<input id="ake_username" type="text" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-xs-3 col-form-label" for="ake_password">
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_PASSWORD') ?>
|
||||
</label>
|
||||
<div class="col-xs-9">
|
||||
<input id="ake_password" type="password" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-xs-3 col-form-label" for="ake_database">
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_DATABASE') ?>
|
||||
</label>
|
||||
<div class="col-xs-9">
|
||||
<input id="ake_database" type="text" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-xs-3 col-form-label" for="ake_prefix">
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_PREFIX') ?>
|
||||
</label>
|
||||
<div class="col-xs-9">
|
||||
<input id="ake_prefix" type="text" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="row mb-3">
|
||||
<div class="col">
|
||||
<button type="button"
|
||||
class="btn btn-dark" id="akEditorBtnDefault">
|
||||
<span class="fa fa-heartbeat"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_TEST') ?>
|
||||
</button>
|
||||
|
||||
<button type="button"
|
||||
class="btn btn-success" id="akEditorBtnSave">
|
||||
<span class="fa fa-check"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_SAVE') ?>
|
||||
</button>
|
||||
|
||||
<button type="button"
|
||||
class="btn btn-danger" id="akEditorBtnCancel">
|
||||
<span class="fa fa-times-circle"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_GUI_LBL_CANCEL') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/profilename');
|
||||
?>
|
||||
|
||||
<div class="card">
|
||||
<div id="ak_list_container" class="card-body">
|
||||
<table id="ak_list_table" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 40px"> </td>
|
||||
<td style="width: 40px"> </td>
|
||||
<th>
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_LABEL_HOST') ?>
|
||||
</th>
|
||||
<th>
|
||||
<?= Text::_('COM_AKEEBABACKUP_MULTIDB_LABEL_DATABASE') ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ak_list_contents">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Profile\HtmlView $this */
|
||||
|
||||
use Joomla\CMS\Factory as JoomlaFactory;
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
$user = JoomlaFactory::getApplication()->getIdentity();
|
||||
$wa = $this->document->getWebAssetManager();
|
||||
$wa->useScript('keepalive')
|
||||
->useScript('form.validate');
|
||||
|
||||
?>
|
||||
<form action="<?php echo Route::_('index.php?option=com_akeebabackup&view=Profile&layout=edit&id=' . (int) $this->item->id); ?>"
|
||||
method="post" name="adminForm" id="profile-form"
|
||||
aria-label="<?php echo Text::_('COM_AKEEBABACKUP_PROFILES_PAGETITLE_' . ( (int) $this->item->id === 0 ? 'NEW' : 'EDIT'), true); ?>"
|
||||
class="form-validate">
|
||||
|
||||
<div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<?php echo $this->form->renderField('description'); ?>
|
||||
<?php echo $this->form->renderField('quickicon'); ?>
|
||||
|
||||
<?php
|
||||
// If we're working on the default profile (ID=1), hide the access level field. Since this is our fallback
|
||||
// field, it MUST be always available to everyone
|
||||
if ($this->item->id != 1 && $user->authorise('core.manage', 'com_akeebabackup'))
|
||||
{
|
||||
echo $this->form->renderField('access');
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="task" value="">
|
||||
<?php echo HTMLHelper::_('form.token'); ?>
|
||||
</form>
|
||||
@@ -0,0 +1,165 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Layout\LayoutHelper;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Profiles\HtmlView $this */
|
||||
|
||||
HTMLHelper::_('behavior.multiselect');
|
||||
|
||||
$user = Factory::getApplication()->getIdentity();
|
||||
$userId = $user->get('id');
|
||||
$listOrder = $this->escape($this->state->get('list.ordering'));
|
||||
$listDirn = $this->escape($this->state->get('list.direction'));
|
||||
|
||||
?>
|
||||
<form action="<?= Route::_('index.php?option=com_akeebabackup&view=Profiles'); ?>"
|
||||
method="post" name="adminForm" id="adminForm">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div id="j-main-container" class="j-main-container">
|
||||
<?= LayoutHelper::render('joomla.searchtools.default', ['view' => $this]) ?>
|
||||
<?php if (empty($this->items)) : ?>
|
||||
<div class="alert alert-info">
|
||||
<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden"><?= Text::_('INFO'); ?></span>
|
||||
<?= Text::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
|
||||
</div>
|
||||
<?php else : ?>
|
||||
<table class="table" id="articleList">
|
||||
<caption class="visually-hidden">
|
||||
<?= Text::_('COM_AKEEBABACKUP_PROFILES_TABLE_CAPTION'); ?>,
|
||||
<span id="orderedBy"><?= Text::_('JGLOBAL_SORTED_BY'); ?> </span>,
|
||||
<span id="filteredBy"><?= Text::_('JGLOBAL_FILTERED_BY'); ?></span>
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="w-1 text-center">
|
||||
<?= HTMLHelper::_('grid.checkall'); ?>
|
||||
</td>
|
||||
<th scope="col" class="w-25 d-none d-md-table-cell">
|
||||
</th>
|
||||
<th scope="col">
|
||||
<?= HTMLHelper::_('searchtools.sort', 'COM_AKEEBABACKUP_PROFILES_LABEL_DESCRIPTION', 'description', $listDirn, $listOrder); ?>
|
||||
</th>
|
||||
<th scope="col" class="w-1 text-center">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_QUICKICON_LABEL') ?>
|
||||
</th>
|
||||
<th scope="col" class="w-1 text-center">
|
||||
<?= Text::_('JGRID_HEADING_ACCESS') ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($this->items as $i => $item) :?>
|
||||
<tr class="row<?= $i % 2; ?>">
|
||||
<td class="text-center">
|
||||
<?= HTMLHelper::_('grid.id', $i, $item->id, false, 'cid', 'cb', $item->name); ?>
|
||||
</td>
|
||||
|
||||
<td class="d-none d-md-table-cell">
|
||||
<a href="<?= Route::_('index.php?option=com_akeebabackup&task=SwitchProfile&profileid=' . $item->id . '&returnurl=' . base64_encode('index.php?option=com_akeebabackup&view=Configuration') . '&' . Factory::getApplication()->getFormToken() . '=1') ?>"
|
||||
class="btn btn-primary btn-sm text-decoration-none"
|
||||
>
|
||||
<span class="fa fa-cog"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_UI_CONFIG') ?>
|
||||
</a>
|
||||
<a href="<?= Route::_('index.php?option=com_akeebabackup&task=Profile.export&id=' . (int) $item->id . '&format=json&' . Factory::getApplication()->getFormToken() . '=1'); ?>"
|
||||
class="btn btn-secondary btn-sm text-decoration-none"
|
||||
>
|
||||
<span class="fa fa-download"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_PROFILES_BTN_EXPORT') ?>
|
||||
</a>
|
||||
</td>
|
||||
|
||||
<td scope="row">
|
||||
<div class="break-word">
|
||||
<a href="<?= Route::_('index.php?option=com_akeebabackup&task=Profile.edit&id=' . (int) $item->id); ?>"
|
||||
title="<?= Text::_('JACTION_EDIT'); ?><?= $this->escape($item->description); ?>">
|
||||
<?= $this->escape($item->description); ?>
|
||||
</a>
|
||||
<div class="small">
|
||||
<?= Text::_('JGLOBAL_FIELD_ID_LABEL') ?>:
|
||||
<strong><?= $item->id ?></strong>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td class="text-center">
|
||||
<?= HTMLHelper::_('jgrid.published', $item->quickicon, $i, 'Profiles.', true, 'cb'); ?>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<?= $this->escape($item->access_level) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<?php // Load the pagination. ?>
|
||||
<?= $this->pagination->getListFooter(); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<input type="hidden" name="task" value="">
|
||||
<input type="hidden" name="boxchecked" value="0">
|
||||
<?= HTMLHelper::_('form.token'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div id="importModal"
|
||||
class="modal fade"
|
||||
role="dialog"
|
||||
tabindex="-1"
|
||||
aria-labelledby="akeeba-config-confwiz-title"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title" id="akeeba-config-confwiz-title">
|
||||
<?= Text::_('COM_AKEEBABACKUP_PROFILES_IMPORT') ?>
|
||||
</h3>
|
||||
<button type="button" class="btn-close novalidate" data-bs-dismiss="modal"
|
||||
aria-label="<?= Text::_('JLIB_HTML_BEHAVIOR_CLOSE') ?>"></button>
|
||||
</div>
|
||||
<div class="modal-body p-5">
|
||||
<form action="index.php" method="post" name="importForm" id="importForm"
|
||||
enctype="multipart/form-data"
|
||||
class="border rounded p-3 bg-light"
|
||||
>
|
||||
<input type="hidden" name="option" value="com_akeebabackup" />
|
||||
<input type="hidden" name="view" value="Profiles" />
|
||||
<input type="hidden" name="boxchecked" id="boxchecked" value="0" />
|
||||
<input type="hidden" name="task" id="task" value="import" />
|
||||
<?= HTMLHelper::_('form.token') ?>
|
||||
|
||||
<div class="input-group mb-2">
|
||||
<input type="file" name="importfile" class="form-control" />
|
||||
|
||||
<button type="submit"
|
||||
class="btn btn-success">
|
||||
<span class="fa fa-upload"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_PROFILES_HEADER_IMPORT') ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="text-muted">
|
||||
<?= Text::_('COM_AKEEBABACKUP_PROFILES_LBL_IMPORT_HELP') ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Regexdatabasefilters\HtmlView $this */
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/profilename');
|
||||
|
||||
?>
|
||||
<div class="border row row-cols-lg-auto g-3 align-items-center my-3 mx-1 pb-3">
|
||||
|
||||
<div class="col-12">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_DBFILTER_LABEL_ROOTDIR') ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<span><?= $this->root_select ?></span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="ak_list_container">
|
||||
<table id="ak_list_table" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 8rem"></td>
|
||||
<th class="w-25" scope="col">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_TYPE') ?>
|
||||
</th>
|
||||
<th scope="col">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_FILTERITEM') ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ak_list_contents">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Regexfilefilters\HtmlView $this */
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
echo $this->loadAnyTemplate('commontemplates/profilename');
|
||||
|
||||
?>
|
||||
<div class="border row row-cols-lg-auto g-3 align-items-center my-3 mx-1 pb-3">
|
||||
|
||||
<div class="col-12">
|
||||
<label>
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_ROOTDIR') ?>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<span><?= $this->root_select ?></span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="ak_list_container">
|
||||
<table id="ak_list_table" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<td style="width: 8rem"></td>
|
||||
<th class="w-25" scope="col">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_TYPE') ?>
|
||||
</th>
|
||||
<th scope="col">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_FILTERITEM') ?>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ak_list_contents">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text as JText;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Remotefiles\HtmlView $this */
|
||||
|
||||
// Is the engine incapable of any action?
|
||||
$noCapabilities = !$this->capabilities['delete']
|
||||
&& !$this->capabilities['downloadToFile']
|
||||
&& !$this->capabilities['downloadToBrowser'];
|
||||
|
||||
// Are all remote files no longer present?
|
||||
$downloadToFileNotAvailable = !$this->actions['downloadToFile'] && $this->capabilities['downloadToFile'];
|
||||
$deleteNotAvailable = !$this->actions['delete'] && $this->capabilities['delete'];
|
||||
$allRemoteFilesGone = $downloadToFileNotAvailable && $deleteNotAvailable;
|
||||
|
||||
?>
|
||||
<div class="card d-none text-center mb-3" id="akeebaBackupRemoteFilesWorkInProgress">
|
||||
<h3 class="card-header"><?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_INPROGRESS_HEADER') ?></h3>
|
||||
<div class="card-body">
|
||||
<?= \Joomla\CMS\HTML\HTMLHelper::_('image',
|
||||
\Joomla\CMS\Uri\Uri::root() . 'media/com_akeebabackup/icons/spinner.gif',
|
||||
JText::_('COM_AKEEBABACKUP_REMOTEFILES_INPROGRESS_LBL_PLEASEWAIT')
|
||||
) ?>
|
||||
|
||||
<p>
|
||||
<?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_INPROGRESS_LBL_UNDERWAY')?>
|
||||
</p>
|
||||
<p>
|
||||
<?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_INPROGRESS_LBL_WAITINGINFO')?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="akeebaBackupRemoteFilesMainInterface">
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header bg-primary text-white"><?= JText::_('COM_AKEEBABACKUP_REMOTEFILES')?></h3>
|
||||
<div class="card-body">
|
||||
<?php // ===== No capabilities ===== ?>
|
||||
<?php if($noCapabilities): ?>
|
||||
<div class="alert alert-danger">
|
||||
<h3>
|
||||
<?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_ERR_NOTSUPPORTED_HEADER')?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_ERR_NOTSUPPORTED')?>
|
||||
</p>
|
||||
</div>
|
||||
<?php // ===== Remote files gone, no operations available ===== ?>
|
||||
<?php elseif($deleteNotAvailable): ?>
|
||||
<div class="alert alert-danger">
|
||||
<h3>
|
||||
<?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_ERR_NOTSUPPORTED_HEADER')?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_ERR_NOTSUPPORTED_ALREADYONSERVER')?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<?php if($this->actions['downloadToFile']): ?>
|
||||
<a class="btn btn-primary text-decoration-none akeebaRemoteFilesShowWait"
|
||||
href="index.php?option=com_akeebabackup&view=Remotefiles&task=dltoserver&tmpl=component&id=<?= $this->id ?>&part=-1"
|
||||
>
|
||||
<span class="fa fa-cloud-download-alt"></span>
|
||||
<span><?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_FETCH')?></span>
|
||||
</a>
|
||||
<?php else: ?>
|
||||
<button type="button"
|
||||
class="btn btn-primary"
|
||||
disabled="disabled"
|
||||
title="<?= JText::_($this->capabilities['downloadToFile'] ? 'COM_AKEEBABACKUP_REMOTEFILES_ERR_DOWNLOADEDTOFILE_ALREADY' : 'COM_AKEEBABACKUP_REMOTEFILES_ERR_UNSUPPORTED')?>">
|
||||
<span class="fa fa-cloud-download-alt"></span>
|
||||
<span><?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_FETCH')?></span>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if($this->actions['delete']): ?>
|
||||
<a class="btn btn-danger text-decoration-none akeebaRemoteFilesShowWait"
|
||||
href="index.php?option=com_akeebabackup&view=Remotefiles&task=delete&tmpl=component&id=<?= $this->id ?>&part=-1"
|
||||
>
|
||||
<span class="fa fa-trash"></span>
|
||||
<span><?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_DELETE')?></span>
|
||||
</a>
|
||||
<?php else: ?>
|
||||
<button type="button"
|
||||
class="btn btn-primary" disabled="disabled"
|
||||
title="<?= JText::_($this->capabilities['delete'] ? 'COM_AKEEBABACKUP_REMOTEFILES_ERR_DELETE_ALREADY' : 'COM_AKEEBABACKUP_REMOTEFILES_ERR_UNSUPPORTED')?>">
|
||||
<span class="fa fa-trash"></span>
|
||||
<span><?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_DELETE')?></span>
|
||||
</button>
|
||||
<?php endif ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if($this->actions['downloadToBrowser'] != 0): ?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header bg-info text-white">
|
||||
<?= JText::_('COM_AKEEBABACKUP_REMOTEFILES_LBL_DOWNLOADLOCALLY')?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<?php for($part = 0; $part < $this->actions['downloadToBrowser']; $part++): ?>
|
||||
<a href="index.php?option=com_akeebabackup&view=Remotefiles&task=dlfromremote&id=<?= $this->id ?>&part=<?= $part ?>"
|
||||
class="btn btn-sm btn-secondary">
|
||||
<span class="fa fa-file-download"></span>
|
||||
<?= JText::sprintf('COM_AKEEBABACKUP_REMOTEFILES_PART', $part) ?>
|
||||
</a>
|
||||
<?php endfor ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var Akeeba\Component\AkeebaBackup\Administrator\View\Remotefiles\HtmlView $this */
|
||||
?>
|
||||
<div id="backup-percentage" class="progress">
|
||||
<div id="progressbar-inner" class="progress-bar" style="width: <?= min(max(0, (int) $this->percent), 100) ?>%"></div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_REMOTEFILES_LBL_DOWNLOADEDSOFAR', $this->done, $this->total, $this->percent) ?>
|
||||
</div>
|
||||
|
||||
<form action="<?= Route::_('index.php?option=com_akeebabackup&view=Remotefiles&task=dltoserver&tmpl=component') ?>" method="post" name="adminForm" id="adminForm">
|
||||
<input type="hidden" name="id" value="<?= (int)$this->id ?>" />
|
||||
<input type="hidden" name="part" value="<?= (int)$this->part ?>" />
|
||||
<input type="hidden" name="frag" value="<?= (int)$this->frag ?>" />
|
||||
</form>
|
||||
@@ -0,0 +1,247 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Component\ComponentHelper;
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Restore\HtmlView $this */
|
||||
|
||||
echo $this->loadAnyTemplate('commontemplates/ftpconnectiontest');
|
||||
echo $this->loadAnyTemplate('commontemplates/errormodal');
|
||||
|
||||
$cParams = ComponentHelper::getParams('com_akeebabackup');
|
||||
|
||||
[$startTime, $duration, $timeZoneText] = $this->getTimeInformation($this->backupRecord);
|
||||
?>
|
||||
|
||||
<form name="adminForm" id="adminForm"
|
||||
action="<?= Route::_('index.php?option=com_akeebabackup&view=Restore&task=start') ?>"
|
||||
method="post">
|
||||
<input type="hidden" name="id" value="<?= (int) $this->id ?>" />
|
||||
<?= HTMLHelper::_('form.token') ?>
|
||||
|
||||
<input id="ftp_passive_mode" type="checkbox" checked autocomplete="off" style="display: none">
|
||||
<input id="ftp_ftps" type="checkbox" autocomplete="off" style="display: none">
|
||||
<input id="ftp_passive_mode_workaround" type="checkbox" autocomplete="off" style="display: none">
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<span class="fa fa-exclamation-triangle"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_WARN_ABOUT_RESTORE') ?>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<h3>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_RESTORE_LABEL_ARCHIVE_INFORMATION', $this->backupRecord['id']) ?>
|
||||
</h3>
|
||||
<div class="row mb-1">
|
||||
<div class="col-sm-3">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_DESCRIPTION') ?>
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
<?= $this->escape($this->backupRecord['description']) ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php if (!empty($this->backupRecord['comment'])): ?>
|
||||
<div class="row mb-1">
|
||||
<div class="col-sm-3">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_COMMENT') ?>
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
<?= $this->escape($this->backupRecord['comment']) ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<div class="row mb-1">
|
||||
<div class="col-sm-3">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_START') ?>
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
<?= $startTime ?> <?= $timeZoneText ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_EXTRACTIONMETHOD') ?>
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
<div class="row mb-3">
|
||||
<label for="procengine" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_EXTRACTIONMETHOD') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<?= HTMLHelper::_('select.genericlist', $this->extractionmodes, 'procengine', [
|
||||
'list.attr' => [
|
||||
'class' => 'form-select'
|
||||
]
|
||||
], 'value', 'text', $this->ftpparams['procengine']) ?>
|
||||
<p class="form-text text-muted">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_REMOTETIP') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if($cParams->get('showDeleteOnRestore', 0) == 1): ?>
|
||||
<div class="row mb-3">
|
||||
<label for="zapbefore" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_ZAPBEFORE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<div class="switcher">
|
||||
<input type="radio" id="zapbefore0" name="zapbefore" value="0" checked class="active">
|
||||
<label for="zapbefore0"><?= Text::_('JNO') ?></label>
|
||||
<input type="radio" id="zapbefore1" name="zapbefore" value="1">
|
||||
<label for="zapbefore1"><?= Text::_('JYES') ?></label>
|
||||
<span class="toggle-outside"><span class="toggle-inside"></span></span>
|
||||
</div>
|
||||
<p class="form-text text-muted">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_ZAPBEFORE_HELP') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="stealthmode" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_STEALTHMODE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<div class="switcher">
|
||||
<input type="radio" id="stealthmode0" name="stealthmode" value="0" checked class="active">
|
||||
<label for="stealthmode0"><?= Text::_('JNO') ?></label>
|
||||
<input type="radio" id="stealthmode1" name="stealthmode" value="1">
|
||||
<label for="stealthmode1"><?= Text::_('JYES') ?></label>
|
||||
<span class="toggle-outside"><span class="toggle-inside"></span></span>
|
||||
</div>
|
||||
<p class="form-text text-muted">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_STEALTHMODE_HELP') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if($this->extension == 'jps'): ?>
|
||||
<div class="row mb-3">
|
||||
<label for="jps_key" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_JPS_KEY_TITLE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input id="jps_key" name="jps_key" value="" type="password" class="form-control" autocomplete="off" />
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-sm-9 offset-sm-3">
|
||||
<button type="button"
|
||||
class="btn btn-success btn-lg me-1" id="backup-start">
|
||||
<span class="fa fa-history"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_START') ?>
|
||||
</button>
|
||||
<a href="<?= Route::_('index.php?option=com_akeebabackup&view=Manage') ?>"
|
||||
class="btn btn-outline-danger me-4">
|
||||
<span class="fa fa-arrow-left"></span>
|
||||
<?= Text::_('JCANCEL') ?>
|
||||
</a>
|
||||
<button type="button"
|
||||
class="btn btn-outline-dark btn" id="testftp">
|
||||
<span class="akion-ios-pulse-strong"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_DIRECTFTP_TEST_TITLE') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ftpOptions" class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_FTPOPTIONS') ?>
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
<div class="row mb-3">
|
||||
<label for="ftp_host" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_DIRECTFTP_HOST_TITLE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input id="ftp_host" name="" value="<?= $this->escape($this->ftpparams['ftp_host']) ?>" type="text" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="ftp_port" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_DIRECTFTP_PORT_TITLE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input id="ftp_port" name="ftp_port" value="<?= $this->escape($this->ftpparams['ftp_port']) ?>" type="text" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="ftp_user" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_DIRECTFTP_USER_TITLE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input id="ftp_user" name="ftp_user" value="<?= $this->escape($this->ftpparams['ftp_user']) ?>" type="text" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="ftp_pass" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_DIRECTFTP_PASSWORD_TITLE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input id="ftp_pass" name="ftp_pass" value="<?= $this->escape($this->ftpparams['ftp_pass'])?>" type="password" autocomplete="off" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="ftp_initial_directory" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_DIRECTFTP_INITDIR_TITLE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input id="ftp_initial_directory" name="ftp_root" value="<?= $this->escape($this->ftpparams['ftp_root']) ?>" type="text" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-2">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_TIME_HEAD') ?>
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
<div class="row mb-3">
|
||||
<label for="min_exec" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_MIN_EXEC') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="number" min="0" max="180" name="min_exec" id="min_exec" class="form-control"
|
||||
value="<?= (int) $this->getModel()->getState('min_exec', 0) ?>" />
|
||||
<p class="form-text text-muted">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_MIN_EXEC_TIP') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="max_exec" class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_MAX_EXEC') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="number" min="0" max="180" name="max_exec" id="max_exec" class="form-control"
|
||||
value="<?= (int) $this->getModel()->getState('max_exec', 5) ?>" />
|
||||
<p class="form-text text-muted">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_MAX_EXEC_TIP') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--~
|
||||
~ @package akeebabackup
|
||||
~ @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
~ @license GNU General Public License version 3, or later
|
||||
-->
|
||||
<metadata>
|
||||
<layout title="COM_AKEEBABACKUP_VIEW_RESTORE_TITLE">
|
||||
<message>
|
||||
<![CDATA[COM_AKEEBABACKUP_VIEW_RESTORE_DESC]]>
|
||||
</message>
|
||||
</layout>
|
||||
<fields name="request"
|
||||
addfieldpath="/administrator/components/com_akeebabackup/src/Field"
|
||||
addfieldprefix="Akeeba\Component\AkeebaBackup\Administrator\Field">
|
||||
<fieldset name="request">
|
||||
<field name="profileid"
|
||||
type="backupprofiles"
|
||||
show_none="no"
|
||||
default="0"
|
||||
label="COM_AKEEBABACKUP_VIEW_RESTORE_PROFILE_LABEL"
|
||||
description="COM_AKEEBABACKUP_VIEW_RESTORE_PROFILE_DESC"
|
||||
/>
|
||||
</fieldset>
|
||||
</fields>
|
||||
</metadata>
|
||||
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Log\HtmlView $this */
|
||||
?>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_DONOTCLOSE') ?>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="restoration-progress" class="card">
|
||||
<h4 class="card-header bg-primary text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_INPROGRESS') ?>
|
||||
</h4>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table table-striped">
|
||||
<tr>
|
||||
<th scope="row" class="w-25">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_BYTESREAD') ?>
|
||||
</th>
|
||||
<td>
|
||||
<span id="extbytesin"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" class="w-25">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_BYTESEXTRACTED') ?>
|
||||
</th>
|
||||
<td>
|
||||
<span id="extbytesout"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" class="w-25">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_FILESEXTRACTED') ?>
|
||||
</th>
|
||||
<td>
|
||||
<span id="extfiles"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div id="response-timer" class="my-3 p-2 border bg-light">
|
||||
<div class="text"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="restoration-error" class="card" style="display:none">
|
||||
<div class="card header bg-danger text-white">
|
||||
<h4 class="card-title">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_FAILED') ?>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="errorframe" class="card-body">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_FAILED_INFO') ?>
|
||||
</p>
|
||||
<p id="backup-error-message"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="restoration-extract-ok" class="card" style="display:none">
|
||||
<h4 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_SUCCESS') ?>
|
||||
</h4>
|
||||
<div class="card-body">
|
||||
<div class="alert alert-success">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_SUCCESS_INFO2') ?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_SUCCESS_INFO2B') ?>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p class="d-flex">
|
||||
<button type="button"
|
||||
class="btn btn-primary me-3" id="restoration-runinstaller">
|
||||
<span class="fa fa-share"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_RUNINSTALLER') ?>
|
||||
</button>
|
||||
|
||||
<button type="button"
|
||||
class="btn btn-success" id="restoration-finalize" style="display: none">
|
||||
<span class="fa fa-flag-checkered"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_RESTORE_LABEL_FINALIZE') ?>
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\S3import\HtmlView $this */
|
||||
?>
|
||||
<form action="<?= Route::_('index.php?option=com_akeebabackup&view=S3import') ?>"
|
||||
method="post" name="adminForm" id="adminForm">
|
||||
|
||||
<input type="hidden" id="ak_s3import_folder" name="folder" value="<?= $this->escape($this->root) ?>" />
|
||||
|
||||
<div class="border bg-light mb-3">
|
||||
<div class="row row-cols-lg-auto g-3 align-items-center">
|
||||
<div class="col-12">
|
||||
<label class="visually-hidden" for="s3access">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_S3ACCESSKEY_TITLE') ?>
|
||||
</label>
|
||||
<input type="text" size="40" name="s3access" id="s3access"
|
||||
class="form-control" autocomplete="off"
|
||||
value="<?= $this->escape($this->s3access) ?>"
|
||||
placeholder="<?= Text::_('COM_AKEEBABACKUP_CONFIG_S3ACCESSKEY_TITLE') ?>" />
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<label class="visually-hidden" for="s3secret">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_S3SECRETKEY_TITLE') ?>
|
||||
</label>
|
||||
<input type="password" size="40" name="s3secret" id="s3secret"
|
||||
class="form-control" autocomplete="off"
|
||||
value="<?= $this->escape($this->s3secret) ?>"
|
||||
placeholder="<?= Text::_('COM_AKEEBABACKUP_CONFIG_S3SECRETKEY_TITLE') ?>" />
|
||||
</div>
|
||||
|
||||
<?php if(empty($this->buckets)): ?>
|
||||
<div class="col-12">
|
||||
<button class="btn btn-primary" id="akeebaS3importResetRoot" type="submit">
|
||||
<span class="fa fa-wifi"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_S3IMPORT_LABEL_CONNECT') ?>
|
||||
</button>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="col-12">
|
||||
<?= $this->bucketSelect ?>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<button class="btn btn-primary" id="akeebaS3importResetRoot" type="submit">
|
||||
<span class="fa fa-folder-open"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_S3IMPORT_LABEL_CHANGEBUCKET') ?>
|
||||
</button>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav aria-label="breadcrumb" id="ak_crumbs_container">
|
||||
<ol class="breadcrumb border p-2 mb-3">
|
||||
<li>
|
||||
<a data-s3prefix="<?= base64_encode('') ?>" class="akeebaS3importChangeDirectory">
|
||||
< root >
|
||||
</a>
|
||||
<span class="divider">/</span>
|
||||
</li>
|
||||
|
||||
<?php if(!empty($this->crumbs)): ?>
|
||||
<?php $runningCrumb = ''; $i = 0;
|
||||
foreach($this->crumbs as $crumb):
|
||||
$runningCrumb .= $crumb . '/'; $i++; ?>
|
||||
<li class="breadcrumb-item <?= $i == count($this->crumbs) ? 'active' : '' ?>">
|
||||
<a
|
||||
class="akeebaS3importChangeDirectory" style="cursor: pointer"
|
||||
data-s3prefix="<?= base64_encode($runningCrumb) ?>"
|
||||
>
|
||||
<?= $this->escape( $crumb ) ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
<?php endif ?>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="row row-cols-1 row-cols-lg-2 g-3">
|
||||
<div class="col">
|
||||
<div id="ak_folder_container" class="card">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_DIRS') ?>
|
||||
</h3>
|
||||
|
||||
<div id="folders" class="card-body overflow-scroll" style="height: 45vh;">
|
||||
<?php if(!empty($this->contents['folders'])): ?>
|
||||
<?php foreach($this->contents['folders'] as $name => $record): ?>
|
||||
<div class="folder-container">
|
||||
<span class="folder-icon-container">
|
||||
<span class="fa fa-folder"></span>
|
||||
</span>
|
||||
<span class="folder-name akeebaS3importChangeDirectory"
|
||||
style="cursor: pointer"
|
||||
data-s3prefix="<?= base64_encode($record['prefix']) ?>"
|
||||
>
|
||||
<?= $this->escape( basename(rtrim($name, '/')) ) ?>
|
||||
</span>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div id="ak_files_container" class="card">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_FILEFILTERS_LABEL_FILES') ?>
|
||||
</h3>
|
||||
<div id="files" class="card-body overflow-scroll" style="height: 45vh;">
|
||||
<?php if(!empty($this->contents['files'])): ?>
|
||||
<?php foreach($this->contents['files'] as $name => $record): ?>
|
||||
<div class="file-container">
|
||||
<span class="file-icon-container">
|
||||
<span class="fa fa-file"></span>
|
||||
</span>
|
||||
<span class="file-name file-clickable akeebaS3importObjectDownload"
|
||||
style="cursor: pointer"
|
||||
data-s3object="<?= base64_encode($name) ?>">
|
||||
<?= $this->escape( basename($record['name']) ) ?>
|
||||
</span>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div id="backup-percentage" class="progress">
|
||||
<div class="progress-bar" role="progressbar"
|
||||
style="width: <?= (int) $this->percent ?>%"
|
||||
aria-valuenow="<?= (int) $this->percent ?>" aria-valuemin="0" aria-valuemax="100">
|
||||
<?= (int) $this->percent ?>%
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_REMOTEFILES_LBL_DOWNLOADEDSOFAR',
|
||||
$this->done, $this->total, $this->percent) ?>
|
||||
</p>
|
||||
</div>
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<h2>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_RUN_BACKUPS') ?>
|
||||
</h2>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_HEADERINFO') ?>
|
||||
</p>
|
||||
|
||||
<?php // CLI CRON jobs ?>
|
||||
<?= $this->loadAnyTemplate('schedule/backup_cli') ?>
|
||||
|
||||
<?php // Joomla Scheduled Tasks ?>
|
||||
<?= $this->loadAnyTemplate('schedule/backup_joomla') ?>
|
||||
|
||||
<?php // Alternate CLI CRON jobs (using legacy front-end) ?>
|
||||
<?= $this->loadAnyTemplate('schedule/backup_altcli') ?>
|
||||
|
||||
<?php // Legacy front-end backup ?>
|
||||
<?= $this->loadAnyTemplate('schedule/backup_legacy') ?>
|
||||
|
||||
<?php // JSON API ?>
|
||||
<?= $this->loadAnyTemplate('schedule/backup_json') ?>
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_ALTCLICRON') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_ALTCLICRON_INFO') ?>
|
||||
</p>
|
||||
<a class="btn btn-primary"
|
||||
href="https://www.akeeba.com/documentation/akeeba-backup-joomla/alternative-cron-script.html"
|
||||
target="_blank">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_GENERICREADDOC') ?>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<?php if(!$this->croninfo->info->legacyapi): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_LEGACYAPI_DISABLED') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php elseif(!trim($this->croninfo->info->secret)): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_SECRET') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_GENERICUSECLI') ?>
|
||||
<code>
|
||||
<?php echo $this->escape($this->croninfo->info->php_path); ?>
|
||||
<?php echo $this->escape($this->croninfo->altcli->path); ?>
|
||||
</code>
|
||||
</p>
|
||||
<p>
|
||||
<span class="badge bg-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CLIGENERICIMPROTANTINFO') ?>
|
||||
</span>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_SCHEDULE_LBL_CLIGENERICINFO', $this->croninfo->info->php_path) ?>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CLICRON') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CLICRON_INFO') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-primary"
|
||||
href="https://www.akeeba.com/documentation/akeeba-backup-joomla/native-cron-script.html"
|
||||
target="_blank">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_GENERICREADDOC') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<?php if (!$this->isConsolePluginEnabled): ?>
|
||||
<div class="alert alert-danger">
|
||||
<h3 class="alert-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CONSOLEPLUGINDISALBED_HEAD') ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CONSOLEPLUGINDISALBED_BODY') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_GENERICUSECLI') ?>
|
||||
<code>
|
||||
<?php echo $this->escape($this->croninfo->info->php_path); ?>
|
||||
<?php echo $this->escape($this->croninfo->cli->path); ?>
|
||||
</code>
|
||||
</p>
|
||||
<p>
|
||||
<span class="badge bg-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CLIGENERICIMPROTANTINFO') ?>
|
||||
</span>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_SCHEDULE_LBL_CLIGENERICINFO', $this->croninfo->info->php_path) ?>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JOOMLASCHEDULER') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<?php if ($this->croninfo->joomla->supported): ?>
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JOOMLASCHEDULER_INFO') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-primary me-3"
|
||||
href="https://www.akeeba.com/documentation/akeeba-backup-joomla/joomla-scheduled-tasks.html"
|
||||
target="_blank">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_GENERICREADDOC') ?>
|
||||
</a>
|
||||
<a class="btn btn-success"
|
||||
href="index.php?option=com_scheduler&view=tasks">
|
||||
<span class="icon-clock" aria-hidden="true"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JOOMLASCHEDULER_BUTTON') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<?php elseif (version_compare(JVERSION, '4.1.0', 'lt')): ?>
|
||||
<div class="alert alert-warning">
|
||||
<h3 class="alert-heading">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JOOMLASCHEDULER_ONLYJ41_HEAD') ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JOOMLASCHEDULER_ONLYJ41_BODY') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="alert alert-warning">
|
||||
<h3 class="alert-heading">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JOOMLASCHEDULER_PLUGIN_DISABLED_HEAD') ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JOOMLASCHEDULER_PLUGIN_DISABLED_BODY') ?>
|
||||
</p>
|
||||
<a class="btn btn-dark"
|
||||
href="index.php?option=com_plugins&filter[folder]=task&filter[enabled]=&filter[element]=akeebabackup&filter[access]=&filter[search]=">
|
||||
<span class="icon-plug" aria-hidden="true"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JOOMLASCHEDULER_PLUGIN_DISABLED_BUTTON') ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JSONAPIBACKUP') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JSONAPIBACKUP_INFO') ?>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<?php if(!$this->croninfo->info->jsonapi): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JSONAPI_DISABLED') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php elseif(!trim($this->croninfo->info->secret)): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_SECRET') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JSONAPI_INTRO') ?>
|
||||
</p>
|
||||
|
||||
<table class="table table-striped">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JSONAPI_ENDPOINT')?>
|
||||
</td>
|
||||
<td>
|
||||
<?= $this->escape($this->croninfo->info->root_url )?>/<?= $this->escape($this->croninfo->json->path) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JSONAPI_SECRET') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= $this->escape($this->croninfo->info->secret) ?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_JSONAPI_DISCLAIMER') ?>
|
||||
</small>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_INFO') ?>
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-info"
|
||||
href="https://www.akeeba.com/documentation/akeeba-backup-joomla/automating-your-backup.html"
|
||||
target="_blank">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_GENERICREADDOC') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<?php if(!$this->croninfo->info->legacyapi): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_LEGACYAPI_DISABLED') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php elseif(!trim($this->croninfo->info->secret)): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_SECRET') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_MANYMETHODS') ?>
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_WEBCRON', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON') ?>
|
||||
</p>
|
||||
|
||||
<table class="table table-striped w-100">
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_NAME') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_NAME_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_TIMEOUT') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_TIMEOUT_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_URL') ?>
|
||||
</td>
|
||||
<td class="text-break">
|
||||
<?= $this->escape($this->croninfo->info->root_url) ?>/<?= $this->escape($this->croninfo->frontend->path) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_LOGIN') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_LOGINPASSWORD_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_PASSWORD') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_LOGINPASSWORD_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_EXECUTIONTIME') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_EXECUTIONTIME_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_ALERTS') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_ALERTS_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_THENCLICKSUBMIT') ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_WGET', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WGET') ?>
|
||||
<code>
|
||||
wget --max-redirect=10000 "<?= $this->escape($this->croninfo->info->root_url ) ?>/<?= $this->escape($this->croninfo->frontend->path) ?>" -O - 1>/dev/null 2>/dev/null
|
||||
</code>
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_CURL', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_CURL') ?>
|
||||
<code>
|
||||
curl -L --max-redirs 1000 -v "<?= $this->escape($this->croninfo->info->root_url) ?>/<?= $this->escape($this->croninfo->frontend->path) ?>" 1>/dev/null 2>/dev/null
|
||||
</code>
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_SCRIPT', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_CUSTOMSCRIPT') ?>
|
||||
</p>
|
||||
<pre class="text-break">
|
||||
<?php
|
||||
$curl_handle=curl_init();
|
||||
curl_setopt($curl_handle, CURLOPT_URL,
|
||||
'<?= $this->escape($this->croninfo->info->root_url) ?>/<?= $this->escape($this->croninfo->frontend->path) ?>');
|
||||
curl_setopt($curl_handle,CURLOPT_FOLLOWLOCATION, TRUE);
|
||||
curl_setopt($curl_handle,CURLOPT_MAXREDIRS, 10000);
|
||||
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER, 1);
|
||||
$buffer = curl_exec($curl_handle);
|
||||
curl_close($curl_handle);
|
||||
if (empty($buffer))
|
||||
echo "Sorry, the backup didn't work.";
|
||||
else
|
||||
echo $buffer;
|
||||
?>
|
||||
</pre>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_URL', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_RAWURL') ?>
|
||||
<code>
|
||||
<?= $this->escape($this->croninfo->info->root_url) ?>/<?= $this->escape($this->croninfo->frontend->path) ?>
|
||||
</code>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<h2>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CHECK_BACKUPS') ?>
|
||||
</h2>
|
||||
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CHECKHEADERINFO') ?>
|
||||
|
||||
<?php // CLI CRON jobs ?>
|
||||
<?= $this->loadAnyTemplate('schedule/check_cli') ?>
|
||||
|
||||
<?php // Alternate CLI CRON jobs (using legacy front-end) ?>
|
||||
<?= $this->loadAnyTemplate('schedule/check_altcli') ?>
|
||||
|
||||
<?php // Legacy front-end backup ?>
|
||||
<?= $this->loadAnyTemplate('schedule/check_legacy') ?>
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_ALTCLICRON') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<?php if(!$this->checkinfo->info->legacyapi): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_LEGACYAPI_DISABLED') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php elseif(!trim($this->checkinfo->info->secret)): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_SECRET') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_GENERICUSECLI') ?>
|
||||
<code>
|
||||
<?= $this->escape($this->checkinfo->info->php_path); ?>
|
||||
<?= $this->escape($this->checkinfo->altcli->path); ?>
|
||||
</code>
|
||||
</p>
|
||||
<p>
|
||||
<span class="badge bg-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CLIGENERICIMPROTANTINFO') ?>
|
||||
</span>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_SCHEDULE_LBL_CLIGENERICINFO', $this->checkinfo->info->php_path) ?>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CLICRON') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<?php if (!$this->isConsolePluginEnabled): ?>
|
||||
<div class="alert alert-danger">
|
||||
<h3 class="alert-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CONSOLEPLUGINDISALBED_HEAD') ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CONSOLEPLUGINDISALBED_BODY') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_GENERICUSECLI') ?>
|
||||
<code>
|
||||
<?= $this->escape($this->checkinfo->info->php_path); ?>
|
||||
<?= $this->escape($this->checkinfo->cli->path); ?>
|
||||
</code>
|
||||
</p>
|
||||
<p>
|
||||
<span class="badge bg-warning">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CLIGENERICIMPROTANTINFO') ?>
|
||||
</span>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_SCHEDULE_LBL_CLIGENERICINFO', $this->checkinfo->info->php_path) ?>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDCHECK') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<?php if(!$this->checkinfo->info->legacyapi): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_LEGACYAPI_DISABLED') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php elseif(!trim($this->checkinfo->info->secret)): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_SECRET') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_MANYMETHODS') ?>
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_WEBCRON', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON') ?>
|
||||
</p>
|
||||
|
||||
<table class="table table-striped w-100">
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_NAME') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_NAME_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_TIMEOUT') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_TIMEOUT_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_URL') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= $this->escape($this->checkinfo->info->root_url) ?>/<?= $this->escape($this->checkinfo->frontend->path) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_LOGIN') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_LOGINPASSWORD_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_PASSWORD') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_LOGINPASSWORD_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_EXECUTIONTIME') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_EXECUTIONTIME_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_ALERTS') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_ALERTS_INFO') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WEBCRON_THENCLICKSUBMIT') ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_WGET', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_WGET') ?>
|
||||
<code>
|
||||
wget --max-redirect=10000 "<?= $this->escape($this->checkinfo->info->root_url) ?>/<?= $this->escape($this->checkinfo->frontend->path) ?>" -O - 1>/dev/null 2>/dev/null
|
||||
</code>
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_CURL', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_CURL') ?>
|
||||
<code>
|
||||
curl -L --max-redirs 1000 -v "<?= $this->escape($this->checkinfo->info->root_url) ?>/<?= $this->escape($this->checkinfo->frontend->path) ?>" 1>/dev/null 2>/dev/null
|
||||
</code>
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_SCRIPT', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_CUSTOMSCRIPT') ?>
|
||||
</p>
|
||||
<pre>
|
||||
<?php
|
||||
$curl_handle=curl_init();
|
||||
curl_setopt($curl_handle, CURLOPT_URL,
|
||||
'<?= $this->escape($this->checkinfo->info->root_url) ?>/<?= $this->escape($this->checkinfo->frontend->path) ?>');
|
||||
curl_setopt($curl_handle,CURLOPT_FOLLOWLOCATION, TRUE);
|
||||
curl_setopt($curl_handle,CURLOPT_MAXREDIRS, 10000);
|
||||
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER, 1);
|
||||
$buffer = curl_exec($curl_handle);
|
||||
curl_close($curl_handle);
|
||||
if (empty($buffer))
|
||||
echo "Sorry, the backup didn't work.";
|
||||
else
|
||||
echo $buffer;
|
||||
?>
|
||||
</pre>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTENDBACKUP_TAB_URL', true) ?>
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_FRONTEND_RAWURL') ?>
|
||||
<code>
|
||||
<?= $this->escape($this->checkinfo->info->root_url) ?>/<?= $this->escape($this->checkinfo->frontend->path) ?>
|
||||
</code>
|
||||
</p>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Schedule\HtmlView $this */
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
echo HTMLHelper::_('uitab.startTabSet', 'akeebabackup-scheduling', ['active' => 'akeebabackup-scheduling-backups']);
|
||||
|
||||
echo HTMLHelper::_('uitab.addTab', 'akeebabackup-scheduling', 'akeebabackup-scheduling-backups', Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_RUN_BACKUPS', true));
|
||||
|
||||
echo $this->loadAnyTemplate('schedule/backup');
|
||||
|
||||
echo HTMLHelper::_('uitab.endTab');
|
||||
|
||||
echo HTMLHelper::_('uitab.addTab', 'akeebabackup-scheduling', 'akeebabackup-scheduling-checkbackups', Text::_('COM_AKEEBABACKUP_SCHEDULE_LBL_CHECK_BACKUPS', true));
|
||||
|
||||
echo $this->loadAnyTemplate('schedule/check');
|
||||
|
||||
echo HTMLHelper::_('uitab.endTab');
|
||||
|
||||
echo HTMLHelper::_('uitab.endTabSet');
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Profile\HtmlView $this */
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
$wa = $this->document->getWebAssetManager();
|
||||
$wa->useScript('keepalive')
|
||||
->useScript('form.validate');
|
||||
|
||||
?>
|
||||
<form action="<?php echo Route::_('index.php?option=com_akeebabackup&view=Statistic&layout=edit&id=' . (int) $this->item->id); ?>"
|
||||
method="post" name="adminForm" id="profile-form"
|
||||
aria-label="<?php echo Text::_('COM_AKEEBABACKUP_BUADMIN_LOG_EDITCOMMENT', true); ?>"
|
||||
class="form-validate">
|
||||
|
||||
<div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<?php echo $this->form->renderField('id'); ?>
|
||||
<?php echo $this->form->renderField('description'); ?>
|
||||
<?php echo $this->form->renderField('comment'); ?>
|
||||
<?php echo $this->form->renderField('frozen'); ?>
|
||||
<?php echo $this->form->renderField('profile_id'); ?>
|
||||
<?php echo $this->form->renderField('origin'); ?>
|
||||
<?php echo $this->form->renderField('status'); ?>
|
||||
<?php echo $this->form->renderField('backupstart'); ?>
|
||||
<?php echo $this->form->renderField('backupend'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="task" value="">
|
||||
<?php echo HTMLHelper::_('form.token'); ?>
|
||||
</form>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Transfer\HtmlView */
|
||||
?>
|
||||
|
||||
<?php if ($this->force): ?>
|
||||
<div class="alert alert-warning">
|
||||
<h3>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_FORCE_HEADER') ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_FORCE_BODY') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<?= $this->loadTemplate('prerequisites') ?>
|
||||
|
||||
<?php if (!empty($this->latestBackup)): ?>
|
||||
<?= $this->loadTemplate('remoteconnection') ?>
|
||||
<?= $this->loadTemplate('manualtransfer') ?>
|
||||
<?= $this->loadTemplate('upload') ?>
|
||||
<?php endif; ?>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--~
|
||||
~ @package akeebabackup
|
||||
~ @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
~ @license GNU General Public License version 3, or later
|
||||
-->
|
||||
<metadata>
|
||||
<layout title="COM_AKEEBABACKUP_VIEW_TRANSFER_TITLE">
|
||||
<message>
|
||||
<![CDATA[COM_AKEEBABACKUP_VIEW_TRANSFER_DESC]]>
|
||||
</message>
|
||||
</layout>
|
||||
</metadata>
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Akeeba\Component\AkeebaBackup\Administrator\Helper\Utils;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Transfer\HtmlView */
|
||||
|
||||
$dotPos = strrpos($this->latestBackup['archivename'], '.');
|
||||
$extension = substr($this->latestBackup['archivename'], $dotPos + 1);
|
||||
$bareName = basename($this->latestBackup['archivename'], '.' . $extension);
|
||||
|
||||
?>
|
||||
<div id="akeeba-transfer-manualtransfer" class="card mb-3" style="display: none;">
|
||||
<h3 class="card-header bg-primary text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_HEAD_MANUALTRANSFER') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="alert alert-info">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_MANUALTRANSFER_INFO') ?>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<a class="btn btn-primary btn-lg"
|
||||
href="https://www.akeeba.com/videos/1212-akeeba-backup/1618-abtc04-restore-site-new-server.html"
|
||||
target="_blank">
|
||||
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_MANUALTRANSFER_LINK') ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_BACKUPINFO') ?>
|
||||
</h4>
|
||||
|
||||
<h5>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_ARCHIVENAME') ?>
|
||||
</h5>
|
||||
|
||||
<p>
|
||||
<?php if($this->latestBackup['multipart'] < 2): ?>
|
||||
<?= $this->escape($this->latestBackup['archivename']) ?>
|
||||
<?php else: ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_TRANSFER_LBL_MANUALTRANSFER_MULTIPART', $this->latestBackup['multipart']) ?>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
|
||||
<?php if($this->latestBackup['multipart'] >= 2): ?>
|
||||
<ul>
|
||||
<?php for($i = 1; $i < $this->latestBackup['multipart']; $i++): ?>
|
||||
<li><?= $this->escape($bareName . '.' . substr($extension, 0, 1) . sprintf('%02u', $i)) ?></li>
|
||||
<?php endfor ?>
|
||||
<li>
|
||||
<?= $this->escape($this->latestBackup['archivename']) ?>
|
||||
</li>
|
||||
</ul>
|
||||
<?php endif ?>
|
||||
|
||||
<h5>
|
||||
<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LBL_ARCHIVEPATH') ?>
|
||||
</h5>
|
||||
<p>
|
||||
<?= $this->escape(Utils::getRelativePath(JPATH_SITE, dirname($this->latestBackup['absolute_path'])))?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Transfer\HtmlView */
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header <?= empty($this->latestBackup) ? 'bg-danger' : 'bg-success' ?> text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_HEAD_PREREQUISITES') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table table-striped w-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<strong>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_COMPLETEBACKUP') ?>
|
||||
</strong>
|
||||
<br/>
|
||||
<small>
|
||||
<?php if(empty($this->latestBackup)): ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_COMPLETEBACKUP') ?>
|
||||
<?php else: ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_TRANSFER_LBL_COMPLETEBACKUP_INFO', $this->lastBackupDate) ?>
|
||||
<?php endif ?>
|
||||
</small>
|
||||
</td>
|
||||
<td width="20%">
|
||||
<?php if(empty($this->latestBackup)): ?>
|
||||
<a href="<?= Route::_('index.php?option=com_akeebabackup&view=Backup') ?>"
|
||||
class="btn btn-success"
|
||||
id="akeeba-transfer-btn-backup">
|
||||
<?= Text::_('COM_AKEEBABACKUP_BACKUP_LABEL_START') ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if(!(empty($this->latestBackup))): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<strong>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_TRANSFER_LBL_SPACE', $this->spaceRequired['string']) ?>
|
||||
</strong>
|
||||
<br/>
|
||||
<small id="akeeba-transfer-err-space" style="display: none">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_SPACE') ?>
|
||||
</small>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,278 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Transfer\HtmlView */
|
||||
|
||||
?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header bg-primary text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_HEAD_REMOTECONNECTION') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div id="akeeba-transfer-main-container">
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-url">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_NEWURL') ?>
|
||||
</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="akeeba-transfer-url" placeholder="http://www.example.com"
|
||||
type="url" autocomplete="off"
|
||||
value="<?= $this->escape($this->newSiteUrl)?>">
|
||||
<button class="btn btn-dark"
|
||||
id="akeeba-transfer-btn-url" type="button">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_NEWURL_BTN') ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="form-text" id="akeeba-transfer-lbl-url">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_NEWURL_TIP') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="akeeba-transfer-row-url" class="row mb-3">
|
||||
<div class="col-sm-9 col-sm-offset-3">
|
||||
<img alt="Loading. Please wait..."
|
||||
id="akeeba-transfer-loading"
|
||||
src="<?= Uri::root() ?>media/com_akeebabackup/icons/loading.gif"
|
||||
style="display: none;" />
|
||||
<br />
|
||||
|
||||
<div class="alert alert-danger"
|
||||
id="akeeba-transfer-err-url-same" style="display: none;">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_NEWURL_SAME') ?>
|
||||
<p class="text-center">
|
||||
<a href="https://www.akeeba.com/videos/1212-akeeba-backup/1618-abtc04-restore-site-new-server.html"
|
||||
class="btn btn-link">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_MANUALTRANSFER_LINK') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-danger"
|
||||
id="akeeba-transfer-err-url-invalid" style="display: none;">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_NEWURL_INVALID') ?>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-danger"
|
||||
id="akeeba-transfer-err-url-notexists" style="display: none;">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_NEWURL_NOTEXISTS') ?>
|
||||
</p>
|
||||
<p>
|
||||
<button class="btn btn-danger" id="akeeba-transfer-err-url-notexists-btn-ignore"
|
||||
type="button">
|
||||
⚠
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_NEWURL_BTN_IGNOREERROR') ?>
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="akeeba-transfer-ftp-container" style="display: none">
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-method">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_TRANSFERMETHOD') ?>
|
||||
</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<?= HTMLHelper::_('select.genericlist', $this->transferOptions, 'akeeba-transfer-ftp-method', ['list.attr' => ['class' => 'form-select']], 'value', 'text', $this->transferOption, 'akeeba-transfer-ftp-method') ?>
|
||||
<?php if($this->hasFirewalledMethods): ?>
|
||||
<div class="alert alert-warning">
|
||||
<h5>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_WARN_FIREWALLED_HEAD') ?>
|
||||
</h5>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_WARN_FIREWALLED_BODY') ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-host">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_FTP_HOST') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" id="akeeba-transfer-ftp-host" placeholder="ftp.example.com"
|
||||
type="text"
|
||||
value="<?= $this->escape($this->ftpHost)?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-port">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_FTP_PORT') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" id="akeeba-transfer-ftp-port" placeholder="21"
|
||||
type="text" value="<?= $this->escape($this->ftpPort)?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-username">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_FTP_USERNAME') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" id="akeeba-transfer-ftp-username" placeholder="myUserName" type="text"
|
||||
value="<?= $this->escape($this->ftpUsername)?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="akeeba-transfer-ftp-password"
|
||||
class="col-sm-3 col-form-label">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_FTP_PASSWORD') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" id="akeeba-transfer-ftp-password" placeholder="myPassword"
|
||||
type="password" value="<?= $this->escape($this->ftpPassword)?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-pubkey">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_FTP_PUBKEY') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" id="akeeba-transfer-ftp-pubkey" placeholder="<?= $this->escape(JPATH_SITE . DIRECTORY_SEPARATOR)?>id_rsa.pub"
|
||||
type="text"
|
||||
value="<?= $this->escape($this->ftpPubKey)?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-privatekey">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_FTP_PRIVATEKEY') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" id="akeeba-transfer-ftp-privatekey"
|
||||
placeholder="<?= $this->escape(JPATH_SITE . DIRECTORY_SEPARATOR)?>id_rsa"
|
||||
type="text"
|
||||
value="<?= $this->escape($this->ftpPrivateKey)?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-directory">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_FTP_DIRECTORY') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" id="akeeba-transfer-ftp-directory"
|
||||
placeholder="public_html" type="text" value="<?= $this->escape($this->ftpDirectory)?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Chunk method -->
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-chunkmode">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_TRANSFERMODE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<?= HTMLHelper::_('select.genericlist', $this->chunkOptions, 'akeeba-transfer-chunkmode', ['list.attr' => ['class' => 'form-select']], 'value', 'text', $this->chunkMode, 'akeeba-transfer-chunkmode') ?>
|
||||
<p class="form-text">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_TRANSFERMODE_INFO') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Chunk size -->
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-chunksize">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_CHUNKSIZE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<?= HTMLHelper::_('select.genericlist', $this->chunkSizeOptions, 'akeeba-transfer-chunksize', ['list.attr' => ['class' => 'form-select']], 'value', 'text', $this->chunkSize, 'akeeba-transfer-chunksize') ?>
|
||||
<p class="form-text">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_CHUNKSIZE_INFO') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3" id="akeeba-transfer-ftp-passive-container">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-passive">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_FTP_PASSIVE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<?= $this->booleanSwitch('akeeba-transfer-ftp-passive', $this->ftpPassive ? 1 : 0) ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3" id="akeeba-transfer-ftp-passive-fix-container">
|
||||
<label class="col-sm-3 col-form-label"
|
||||
for="akeeba-transfer-ftp-passive-fix">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_ENGINE_ARCHIVER_DIRECTFTPCURL_PASVWORKAROUND_TITLE') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<?= $this->booleanSwitch('akeeba-transfer-ftp-passive-fix', $this->ftpPassiveFix ? 1 : 0) ?>
|
||||
<p class="form-text">
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONFIG_ENGINE_ARCHIVER_DIRECTFTPCURL_PASVWORKAROUND_DESCRIPTION') ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-danger" id="akeeba-transfer-ftp-error" style="display:none;">
|
||||
<p id="akeeba-transfer-ftp-error-body">MESSAGE</p>
|
||||
|
||||
<a class="btn btn-warning"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&view=Transfer&force=1') ?>"
|
||||
id="akeeba-transfer-ftp-error-force" style="display:none">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_OVERRIDE') ?>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-sm-9 col-sm-offset-3">
|
||||
<button class="btn btn-primary"
|
||||
id="akeeba-transfer-btn-apply"
|
||||
type="button">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_BTN_FTP_PROCEED') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info" id="akeeba-transfer-apply-loading" style="display: none;">
|
||||
<h4>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_VALIDATING') ?>
|
||||
</h4>
|
||||
<p class="text-center">
|
||||
<img src="<?= Uri::root() ?>media/com_akeebabackup/icons/loading.gif"
|
||||
alt="<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_VALIDATING') ?>" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var $this \Akeeba\Component\AkeebaBackup\Administrator\View\Transfer\HtmlView */
|
||||
?>
|
||||
|
||||
<div id="akeeba-transfer-upload" class="card mb-3" style="display: none;">
|
||||
<h3 class="card-header bg-primary text-white">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_HEAD_UPLOAD') ?>
|
||||
</h3>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="alert alert-danger" id="akeeba-transfer-upload-error" style="display: none">
|
||||
<p id="akeeba-transfer-upload-error-body">MESSAGE</p>
|
||||
<a class="btn btn-warning"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&view=Transfer&force=1') ?>"
|
||||
id="akeeba-transfer-upload-error-force"
|
||||
style="display:none">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_ERR_OVERRIDE') ?>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="akeeba-transfer-upload-area-upload" style="display: none">
|
||||
<div id="backup-steps" class="d-flex flex-column align-items-stretch">
|
||||
<div class="mt-1 mb-1 p-1 border rounded bg-warning" id="akeeba-transfer-upload-lbl-kickstart">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_UPLOAD_KICKSTART') ?>
|
||||
</div>
|
||||
<div class="mt-1 mb-1 p-1 border rounded bg-light" id="akeeba-transfer-upload-lbl-archive">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_UPLOAD_BACKUP') ?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="backup-status" class="backup-steps-container mt-4 p-2 bg-light border-top border-3">
|
||||
<div id="backup-step" class="border-bottom border-1">
|
||||
☁ <span id="akeeba-transfer-upload-percent"></span>
|
||||
</div>
|
||||
<div id="backup-substep">
|
||||
💾 <span id="akeeba-transfer-upload-size"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="akeeba-transfer-upload-area-kickstart" style="display: none">
|
||||
<p>
|
||||
<a class="btn btn-success btn-lg" href="" id="akeeba-transfer-upload-btn-kickstart" target="_blank">
|
||||
<span class="fa fa-arrow-right"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_BTN_OPEN_KICKSTART') ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_LBL_OPEN_KICKSTART_INFO') ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') || die;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Router\Route;
|
||||
|
||||
/** @var \Akeeba\Component\AkeebaBackup\Administrator\View\Upgrade\HtmlView $this */
|
||||
|
||||
$btnWarning = !$this->needsMigration || !$this->hasCompatibleVersion;
|
||||
?>
|
||||
|
||||
<div class="card">
|
||||
<h3 class="card-header">
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE') ?>
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
<?php if ($this->needsMigration && $this->hasCompatibleVersion): ?>
|
||||
<div class="alert alert-warning">
|
||||
<span class="fa fa-exclamation-triangle"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE_LBL_WARNING_STANDARD') ?>
|
||||
</div>
|
||||
<?php elseif (!$this->hasCompatibleVersion): ?>
|
||||
<div class="alert alert-danger">
|
||||
<p class="text-danger text-center fs-1">
|
||||
<span class="fa fa-exclamation-circle"></span>
|
||||
<strong>
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE_LBL_WARNING_INCOMPATIBLE_HEAD') ?>
|
||||
</strong>
|
||||
<span class="fa fa-exclamation-circle"></span>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE_LBL_WARNING_INCOMPATIBLE_BODY' )?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="alert alert-danger">
|
||||
<p class="text-danger text-center fs-1">
|
||||
<span class="fa fa-exclamation-circle"></span>
|
||||
<strong>
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE_LBL_WARNING_ALREADY_RAN_HEAD' )?>
|
||||
</strong>
|
||||
<span class="fa fa-exclamation-circle"></span>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE_LBL_WARNING_ALREADY_RAN_BODY' )?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
<div class="my-2 p-3">
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE_LBL_WHAT_IT_DOES' )?>
|
||||
</p>
|
||||
<p>
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE_LBL_REMEMBER_TO_UNINSTALL' )?>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<a class="btn btn-<?= $btnWarning ? 'outline-warning' : 'primary' ?> btn-lg me-4"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup&task=Upgrade.migrate&' . Factory::getApplication()->getSession()->getFormToken() . '=1') ?>"
|
||||
>
|
||||
<span class="fa fa-file-import"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_UPGRADE_BTN_PROCEED') ?>
|
||||
</a>
|
||||
<a class="btn btn-dark"
|
||||
href="<?= Route::_('index.php?option=com_akeebabackup') ?>"
|
||||
>
|
||||
<span class="fa fa-<?= Factory::getApplication()->getLanguage()->isRtl() ? 'arrow-right' : 'arrow-left' ?>"></span>
|
||||
<?= Text::_('COM_AKEEBABACKUP_CONTROLPANEL') ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<form action="index.php?option=com_akeebabackup&view=Upload&task=upload&tmpl=component"
|
||||
method="post" name="akeebauploadform">
|
||||
<input type="hidden" name="id" value="<?= (int) $this->id ?>" />
|
||||
<input type="hidden" name="part" value="-1" />
|
||||
<input type="hidden" name="frag" value="-1" />
|
||||
</form>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_MSG_START') ?>
|
||||
</div>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<div class="alert alert-success" id="comAkeebaUploadDone">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_MSG_DONE') ?>
|
||||
</div>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Akeeba\Component\AkeebaBackup\Administrator\View\Upload\HtmlView;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
/** @var HtmlView $this */
|
||||
|
||||
$errorParts = explode("\n", $this->errorMessage, 2);
|
||||
|
||||
?>
|
||||
<div class="alert alert-danger">
|
||||
<?php if (!empty($this->errorMessage)): ?>
|
||||
<h3 class="alert-heading">
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_MSG_FAILED') ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?= $errorParts[0] ?>
|
||||
</p>
|
||||
<?php if(isset($errorParts[1])): ?>
|
||||
<pre><?= $errorParts[1] ?></pre>
|
||||
<?php endif ?>
|
||||
<?php else: ?>
|
||||
<?= Text::_('COM_AKEEBABACKUP_TRANSFER_MSG_FAILED') ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/**
|
||||
* @package akeebabackup
|
||||
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Protect from unauthorized access
|
||||
defined('_JEXEC') || die();
|
||||
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
?>
|
||||
<form action="index.php?option=com_akeebabackup&view=Upload&task=upload&tmpl=component"
|
||||
method="post" name="akeebauploadform">
|
||||
<input type="hidden" name="id" value="<?= (int) $this->id ?>" />
|
||||
<input type="hidden" name="part" value="<?= (int) $this->part ?>" />
|
||||
<input type="hidden" name="frag" value="<?= (int) $this->frag ?>" />
|
||||
</form>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<?php if($this->frag == 0): ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_TRANSFER_MSG_UPLOADINGPART', $this->part+1, max($this->parts, 1)) ?>
|
||||
<?php else: ?>
|
||||
<?= Text::sprintf('COM_AKEEBABACKUP_TRANSFER_MSG_UPLOADINGFRAG', $this->part+1, max($this->parts, 1), max(++$this->frag, 1)) ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
16
administrator/components/com_akeebabackup/tmpl/web.config
Normal file
16
administrator/components/com_akeebabackup/tmpl/web.config
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
This only works on IIS 7 or later. See https://www.iis.net/configreference/system.webserver/security/requestfiltering/fileextensions
|
||||
-->
|
||||
<configuration>
|
||||
<system.webServer>
|
||||
<security>
|
||||
<requestFiltering>
|
||||
<fileExtensions allowUnlisted="false" >
|
||||
<clear />
|
||||
<add fileExtension=".html" allowed="true"/>
|
||||
</fileExtensions>
|
||||
</requestFiltering>
|
||||
</security>
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user