first commit

This commit is contained in:
2026-02-08 21:16:11 +01:00
commit e17b7026fd
8881 changed files with 1160453 additions and 0 deletions

View 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 ?>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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');

View File

@@ -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 ?>

View File

@@ -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, '&lt;root&gt;', $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, '&lt;root&gt;', $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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View 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
*/
// 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>&nbsp;
<?= 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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">&nbsp;</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>

View File

@@ -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 ?>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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'
])
?>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>&nbsp;</td>
<!-- Edit -->
<td>&nbsp;</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>

View File

@@ -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 ?>

View 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();

View File

@@ -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>&nbsp;
<?= $startTime ?> <?= $timeZoneText ?>
</span>
<span class="col-lg akeeba-buadmin-duration">
<span class="fa fa-stopwatch akeebaTooltip"
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_DURATION') ?>"
></span>&nbsp;
<?= $duration ?: '&mdash;' ?>
</span>
<span class="col-lg akeeba-buadmin-size">
<span class="fa fa-weight-hanging akeebaTooltip"
title="<?= Text::_('COM_AKEEBABACKUP_BUADMIN_LABEL_SIZE') ?>"
></span>&nbsp;
<?php if ($record['meta'] == 'ok'): ?>
<?= $this->formatFilesize($record['size']) ?>
<?php elseif ($record['total_size'] > 0): ?>
<i><?= $this->formatFilesize($record['total_size']) ?></i>
<?php else: ?>
&mdash;
<?php endif ?>
</span>
</div>
<div class="row d-block d-md-none">
<div class="col-md">
<span class="fa fa-users"></span>&nbsp;
#<?= (int) $record['profile_id'] ?>.
<?= $profileName == '&mdash;' ? $profileName : $this->escape($profileName) ?>
</div>
<div class="col-md">
<span class="fa fa-align-justify"></span>&nbsp;
<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 == '&mdash;' ? $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']) ?>"
>
&nbsp;<span class="<?= $statusIcon ?>"></span>&nbsp;
</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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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">&nbsp;</td>
<td style="width: 40px">&nbsp;</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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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">
&lt; root &gt;
</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>

View File

@@ -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>

View File

@@ -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') ?>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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">
&lt;?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;
?&gt;
</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>

View File

@@ -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') ?>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>
&lt;?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;
?&gt;
</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>

View File

@@ -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');

View File

@@ -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>

View File

@@ -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; ?>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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">
&#9888;
<?= 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>

View File

@@ -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">
&#9729; <span id="akeeba-transfer-upload-percent"></span>
</div>
<div id="backup-substep">
&#128190; <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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View 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>