first commit

This commit is contained in:
2025-06-17 11:53:18 +02:00
commit 9f0f7ba12b
8804 changed files with 1369176 additions and 0 deletions

View File

@ -0,0 +1,61 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
$hadErrors = $this->state->get('update_finished_with_error');
$errors = $this->state->get('update_errors');
$logFile = $this->state->get('log_file');
$installerMsg = $this->state->get('installer_message');
$forumLink = '<a href="https://forum.joomla.org/" target="_blank" rel="noopener noreferrer">https://forum.joomla.org/</a>';
?>
<div class="card">
<h2 class="card-header"><?php echo Text::_('COM_JOOMLAUPDATE_VIEW_COMPLETE_HEADING'); ?></h2>
<div class="card-body">
<?php if (!$hadErrors) : ?>
<div class="alert alert-success">
<span class="icon-check-circle" aria-hidden="true"></span><span class="visually-hidden"><?php echo Text::_('NOTICE'); ?></span>
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_COMPLETE_MESSAGE', '&#x200E;' . JVERSION); ?>
</div>
<?php else : ?>
<div class="alert alert-error">
<span class="icon-check-circle" aria-hidden="true"></span><span class="visually-hidden"><?php echo Text::_('NOTICE'); ?></span>
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_COMPLETE_WITH_ERROR_MESSAGE', $logFile, $forumLink); ?>
</div>
<p>
<a href="<?php echo Uri::base(true); ?>/" class="btn btn-primary"><?php echo Text::_('JGLOBAL_TPL_CPANEL_LINK_TEXT') ?></a>
</p>
<?php if ($errors) : ?>
<h3><?php echo Text::_('COM_JOOMLAUPDATE_VIEW_COMPLETE_UPDATE_ERRORS'); ?></h3>
<?php foreach ($errors as $error) : ?>
<div class="alert alert-error"><?php echo $error; ?></div>
<?php endforeach; ?>
<?php endif; ?>
<?php endif; ?>
<?php if ($installerMsg) : ?>
<div>
<h3><?php echo Text::_('COM_JOOMLAUPDATE_VIEW_COMPLETE_INSTALLER_MESSAGE'); ?></h3>
<div class="alert alert-warning"><?php echo $installerMsg ?></div>
</div>
<?php endif; ?>
</div>
</div>
<form action="<?php echo Route::_('index.php?option=com_joomlaupdate'); ?>" method="post" id="adminForm">
<input type="hidden" name="task" value="">
<?php echo HTMLHelper::_('form.token'); ?>
</form>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<layout title="COM_JOOMLAUPDATE_DEFAULT_VIEW_DEFAULT_TITLE">
<message>
<![CDATA[COM_JOOMLAUPDATE_DEFAULT_VIEW_DEFAULT_DESC]]>
</message>
</layout>
<fields name="params">
<fieldset name="basic" label="JOPTIONS">
<field
name="ajax-badge"
type="radio"
label="COM_JOOMLAUPDATE_JOOMLAUPDATE_VIEW_DISPLAY_BADGE"
layout="joomla.form.field.radio.switcher"
default=""
>
<option value="">JHIDE</option>
<option value="index.php?option=com_joomlaupdate&amp;task=getMenuBadgeData&amp;format=json">JSHOW</option>
</field>
</fieldset>
</fields>
</metadata>

View File

@ -0,0 +1,49 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Session\Session;
$uploadLink = 'index.php?option=com_joomlaupdate&view=upload';
$displayData = [
'textPrefix' => 'COM_JOOMLAUPDATE' . $this->messagePrefix,
'content' => Text::_($this->reasonNoDownload) . Text::sprintf($this->langKey, $this->updateSourceKey),
'formURL' => 'index.php?option=com_joomlaupdate&view=joomlaupdate',
'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Updating_from_an_existing_version',
'icon' => 'icon-loop joomlaupdate',
'createURL' => 'index.php?option=com_joomlaupdate&task=update.purge&' . Session::getFormToken() . '=1'
];
if ($this->getCurrentUser()->authorise('core.admin', 'com_joomlaupdate')) {
$displayData['formAppend'] = '<div class="text-center"><a href="' . $uploadLink . '" class="btn btn-sm btn-outline-secondary">' . Text::_($displayData['textPrefix'] . '_EMPTYSTATE_APPEND') . '</a></div>';
}
if (isset($this->updateInfo['object']) && isset($this->updateInfo['object']->get('infourl')->_data)) :
$displayData['content'] .= '<br>' . HTMLHelper::_(
'link',
$this->updateInfo['object']->get('infourl')->_data,
Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL'),
[
'target' => '_blank',
'rel' => 'noopener noreferrer',
'title' => isset($this->updateInfo['object']->get('infourl')->title) ? Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->get('infourl')->title) : ''
]
);
endif;
$content = LayoutHelper::render('joomla.content.emptystate', $displayData);
// Inject Joomla! version
echo str_replace('%1$s', '&#x200E;' . $this->updateInfo['latest'], $content);

View File

@ -0,0 +1,371 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Version;
use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView;
/** @var HtmlView $this */
/** @var \Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('core')
->useScript('com_joomlaupdate.default')
->useScript('bootstrap.popover')
->useScript('bootstrap.tab');
// Text::script doesn't have a sprintf equivalent so work around this
$this->document->addScriptOptions('nonCoreCriticalPlugins', $this->nonCoreCriticalPlugins);
// Push Joomla! Update client-side error messages
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_CONFIRM_MESSAGE');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_NO_COMPATIBILITY_INFORMATION');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_WARNING_UNKNOWN');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_SERVER_ERROR');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_MORE_COMPATIBILITY_INFORMATION');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_LESS_COMPATIBILITY_INFORMATION');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_DESC');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_LIST');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_POTENTIALLY_DANGEROUS_PLUGIN_CONFIRM_MESSAGE');
Text::script('COM_JOOMLAUPDATE_VIEW_DEFAULT_HELP');
// Push Joomla! core Joomla.Request error messages
Text::script('JLIB_JS_AJAX_ERROR_CONNECTION_ABORT');
Text::script('JLIB_JS_AJAX_ERROR_NO_CONTENT');
Text::script('JLIB_JS_AJAX_ERROR_OTHER');
Text::script('JLIB_JS_AJAX_ERROR_PARSE');
Text::script('JLIB_JS_AJAX_ERROR_TIMEOUT');
$compatibilityTypes = [
'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS' => [
'class' => 'info',
'icon' => 'hourglass fa-spin',
'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_RUNNING_PRE_UPDATE_CHECKS_NOTES',
'group' => 0,
],
'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE' => [
'class' => 'danger',
'icon' => 'times',
'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_REQUIRING_UPDATES_TO_BE_COMPATIBLE_NOTES',
'group' => 2,
],
'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PRE_UPDATE_CHECKS_FAILED' => [
'class' => 'warning',
'icon' => 'exclamation-triangle',
'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PRE_UPDATE_CHECKS_FAILED_NOTES',
'group' => 4,
],
'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_UPDATE_SERVER_OFFERS_NO_COMPATIBLE_VERSION' => [
'class' => 'warning',
'icon' => 'exclamation-triangle',
'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_UPDATE_SERVER_OFFERS_NO_COMPATIBLE_VERSION_NOTES',
'group' => 1,
],
'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PROBABLY_COMPATIBLE' => [
'class' => 'success',
'icon' => 'check',
'notes' => 'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_PROBABLY_COMPATIBLE_NOTES',
'group' => 3,
],
];
$latestJoomlaVersion = $this->updateInfo['latest'];
$currentJoomlaVersion = $this->updateInfo['installed'] ?? JVERSION;
$updatePossible = true;
if (version_compare($this->updateInfo['latest'], Version::MAJOR_VERSION + 1, '>=') && $this->isDefaultBackendTemplate === false) {
Factory::getApplication()->enqueueMessage(
Text::sprintf(
'COM_JOOMLAUPDATE_VIEW_DEFAULT_NON_CORE_BACKEND_TEMPLATE_USED_NOTICE',
ucfirst($this->defaultBackendTemplate)
),
'info'
);
}
?>
<div id="joomlaupdate-wrapper" class="main-card p-3 mt-3" data-joomla-target-version="<?php echo $latestJoomlaVersion; ?>" data-joomla-current-version="<?php echo $currentJoomlaVersion; ?>">
<h2 class="my-3">
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PREUPDATE_CHECK', '&#x200E;' . $this->updateInfo['latest']); ?>
</h2>
<p>
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXPLANATION_AND_LINK_TO_DOCS'); ?>
</p>
<div class="d-flex flex-wrap flex-lg-nowrap align-items-start my-4" id="preupdatecheck">
<div class="nav flex-column text-nowrap nav-pills me-3 mb-4" role="tablist" aria-orientation="vertical">
<button class="nav-link d-flex justify-content-between align-items-center active" id="joomlaupdate-precheck-required-tab" data-bs-toggle="pill" data-bs-target="#joomlaupdate-precheck-required-content" type="button" role="tab" aria-controls="joomlaupdate-precheck-required-content" aria-selected="true">
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_REQUIRED_SETTINGS'); ?>
<?php $labelClass = 'success'; ?>
<?php foreach ($this->phpOptions as $option) : ?>
<?php if (!$option->state) : ?>
<?php $labelClass = 'danger'; ?>
<?php $updatePossible = false; ?>
<?php break; ?>
<?php endif; ?>
<?php endforeach; ?>
<span class="fa fa-<?php echo $labelClass == 'danger' ? 'times' : 'check'; ?> fa-fw py-1 bg-white text-<?php echo $labelClass; ?>" aria-hidden="true"></span>
</button>
<button class="nav-link d-flex justify-content-between align-items-center" id="joomlaupdate-precheck-recommended-tab" data-bs-toggle="pill" data-bs-target="#joomlaupdate-precheck-recommended-content" type="button" role="tab" aria-controls="joomlaupdate-precheck-recommended-content" aria-selected="false">
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_RECOMMENDED_SETTINGS'); ?>
<?php $labelClass = 'success'; ?>
<?php foreach ($this->phpSettings as $setting) : ?>
<?php if ($setting->state !== $setting->recommended) : ?>
<?php $labelClass = 'warning'; ?>
<?php break; ?>
<?php endif; ?>
<?php endforeach; ?>
<span class="fa fa-<?php echo $labelClass == 'warning' ? 'exclamation-triangle' : 'check'; ?> fa-fw py-1 bg-white text-<?php echo $labelClass; ?>" aria-hidden="true"></span>
</button>
<button class="nav-link d-flex justify-content-between align-items-center" id="joomlaupdate-precheck-extensions-tab" data-bs-toggle="pill" data-bs-target="#joomlaupdate-precheck-extensions-content" type="button" role="tab" aria-controls="joomlaupdate-precheck-extensions-content" aria-selected="false">
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_EXTENSIONS'); ?>
<?php $labelClass = 'success'; ?>
<span class="fa fa-spinner fa-spin fa-fw py-1" aria-hidden="true"></span>
</button>
</div>
<div class="tab-content w-100">
<div class="tab-pane fade show active" id="joomlaupdate-precheck-required-content" role="tabpanel" aria-labelledby="joomlaupdate-precheck-required-tab">
<h3>
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_REQUIRED_SETTINGS'); ?>
</h3>
<div class="table-responsive">
<table class="table table-striped" id="preupdatecheck">
<caption class="visually-hidden">
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_CHECK_CAPTION'); ?>
</caption>
<thead>
<tr>
<th scope="col">
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_HEADING_REQUIREMENT'); ?>
</th>
<th scope="col">
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_HEADING_CHECKED'); ?>
</th>
</tr>
</thead>
<tbody>
<?php foreach ($this->phpOptions as $option) : ?>
<tr>
<th scope="row">
<?php echo $option->label; ?>
<?php if ($option->notice) : ?>
<div class="small">
<?php echo $option->notice; ?>
</div>
<?php endif; ?>
</th>
<td>
<span class="badge bg-<?php echo $option->state ? 'success' : 'danger'; ?>">
<?php echo Text::_($option->state ? 'JYES' : 'JNO'); ?>
</span>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<div class="tab-pane fade show" id="joomlaupdate-precheck-recommended-content" role="tabpanel" aria-labelledby="joomlaupdate-precheck-recommended-tab">
<h3>
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_RECOMMENDED_SETTINGS'); ?>
</h3>
<div class="table-responsive">
<table class="table table-striped" id="preupdatecheckphp">
<caption>
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_RECOMMENDED_SETTINGS_DESC'); ?>
</caption>
<thead>
<tr>
<th scope="col">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_DIRECTIVE'); ?>
</th>
<th scope="col">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_RECOMMENDED'); ?>
</th>
<th scope="col">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_ACTUAL'); ?>
</th>
</tr>
</thead>
<tbody>
<?php foreach ($this->phpSettings as $setting) : ?>
<tr>
<th scope="row">
<?php echo $setting->label; ?>
</th>
<td>
<?php echo Text::_($setting->recommended ? 'JON' : 'JOFF'); ?>
</td>
<td>
<span class="badge bg-<?php echo ($setting->state === $setting->recommended) ? 'success' : 'warning'; ?>">
<?php echo Text::_($setting->state ? 'JON' : 'JOFF'); ?>
</span>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<div class="tab-pane fade show" id="joomlaupdate-precheck-extensions-content" role="tabpanel" aria-labelledby="joomlaupdate-precheck-extensions-tab">
<h3>
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS'); ?>
</h3>
<div id="preupdateCheckWarning">
<div class="alert alert-warning">
<h4 class="alert-heading">
<?php echo Text::_('WARNING'); ?>
</h4>
<div class="alert-message">
<div class="preupdateCheckIncomplete">
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_CHECK_NOT_COMPLETE'); ?>
</div>
</div>
</div>
</div>
<div id="preupdateCheckCompleteProblems" class="hidden">
<div class="alert alert-warning">
<h4 class="alert-heading">
<?php echo Text::_('WARNING'); ?>
</h4>
<div class="alert-message">
<div class="preupdateCheckComplete">
<?php echo Text::_('COM_JOOMLAUPDATE_PREUPDATE_CHECK_COMPLETED_YOU_HAVE_DANGEROUS_PLUGINS'); ?>
</div>
</div>
</div>
</div>
<?php if (!empty($this->nonCoreExtensions)) : ?>
<div class="w-100">
<?php foreach ($compatibilityTypes as $compatibilityType => $data) : ?>
<div class="<?php echo $data['group'] > 0 ? 'hidden' : ''; ?> compatibilityTable" id="compatibilityTable<?php echo (int) $data['group']; ?>">
<h4 class="text-<?php echo $data['class']; ?> align-items-center">
<span class="fa fa-<?php echo $data['icon']; ?> me-2"></span>
<?php echo Text::_($compatibilityType); ?>
<?php if ($data['group'] > 0) : ?>
<button type="button" class="btn btn-primary btn-sm ms-3 compatibilitytoggle" data-state="closed">
<?php echo Text::_(
'COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_SHOW_MORE_COMPATIBILITY_INFORMATION'
); ?>
</button>
<?php endif; ?>
</h4>
<div class="table-responsive mb-5">
<table class="table table-striped">
<caption>
<?php echo Text::_($data['notes']); ?>
</caption>
<thead class="row-fluid">
<tr>
<th class="exname" scope="col">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_NAME'); ?>
</th>
<th class="extype" scope="col">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_TYPE'); ?>
</th>
<th class="instver hidden" scope="col">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_INSTALLED_VERSION'); ?>
</th>
<th class="currcomp hidden" scope="col">
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_COMPATIBLE_WITH_JOOMLA_VERSION', isset($this->updateInfo['installed']) ? $this->escape($this->updateInfo['installed']) : JVERSION); ?>
</th>
<th class="upcomp hidden" scope="col">
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSION_COMPATIBLE_WITH_JOOMLA_VERSION', $this->escape($this->updateInfo['latest'])); ?>
</th>
</tr>
</thead>
<tbody class="row-fluid">
<?php // Only include this row once since the javascript moves the results into the right place ?>
<?php if ($data['group'] == 0) : ?>
<?php foreach ($this->nonCoreExtensions as $extension) : ?>
<tr>
<th class="exname" scope="row">
<?php echo $extension->name; ?>
</th>
<td class="extype">
<?php echo Text::_('COM_INSTALLER_TYPE_' . strtoupper($extension->type)); ?>
</td>
<td class="instver hidden">
<?php echo $extension->version; ?>
</td>
<td id="available-version-<?php echo $extension->extension_id; ?>" class="currcomp hidden"></td>
<td id="preUpdateCheck_<?php echo $extension->extension_id; ?>"
class="extension-check upcomp hidden"
data-extension-id="<?php echo $extension->extension_id; ?>"
data-extension-current-version="<?php echo $extension->version; ?>"
>
<img src="<?php echo Uri::root(true); ?>/media/system/images/ajax-loader.gif">
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
<?php endforeach; ?>
</div>
<?php else : ?>
<div class="alert alert-info">
<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden"><?php echo Text::_('INFO'); ?></span>
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_EXTENSIONS_NONE'); ?>
</div>
<?php endif; ?>
</div>
</div>
</div>
<?php if ($updatePossible) : ?>
<form action="<?php echo Route::_('index.php?option=com_joomlaupdate&layout=update'); ?>" method="post" class="d-flex flex-column mb-5">
<?php if (!$this->noVersionCheck) : ?>
<div id="preupdatecheckbox">
<div class="form-check d-flex justify-content-center mb-3">
<input type="checkbox" class="form-check-input me-3" id="noncoreplugins" name="noncoreplugins" value="1" required />
<label class="form-check-label" for="noncoreplugins">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_NON_CORE_PLUGIN_CONFIRMATION'); ?>
</label>
</div>
</div>
<?php endif; ?>
<button class="btn btn-lg btn-warning <?php echo $this->noVersionCheck ? '' : 'disabled' ?> submitupdate mx-auto"
type="submit" <?php echo $this->noVersionCheck ? '' : 'disabled' ?>>
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLUPDATE'); ?>
</button>
</form>
<?php endif; ?>
<form action="<?php echo Route::_('index.php?option=com_joomlaupdate&layout=update'); ?>" method="post" name="adminForm" id="adminForm">
<input type="hidden" name="task" value="">
<?php echo HTMLHelper::_('form.token'); ?>
</form>
<?php if ($this->getCurrentUser()->authorise('core.admin')) : ?>
<div class="text-center">
<a href="<?php echo Route::_('index.php?option=com_joomlaupdate&view=upload'); ?>" class="btn btn-sm btn-outline-secondary">
<?php echo Text::_('COM_JOOMLAUPDATE_EMPTYSTATE_APPEND'); ?>
</a>
</div>
<?php endif; ?>
</div>

View File

@ -0,0 +1,57 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
/** @var \Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView $this */
/** @var \Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('core')
->useScript('com_joomlaupdate.default')
->useScript('bootstrap.popover');
$uploadLink = 'index.php?option=com_joomlaupdate&view=upload';
$displayData = [
'textPrefix' => 'COM_JOOMLAUPDATE_REINSTALL',
'content' => Text::sprintf($this->langKey, $this->updateSourceKey),
'formURL' => 'index.php?option=com_joomlaupdate&view=joomlaupdate',
'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Updating_from_an_existing_version',
'icon' => 'icon-loop joomlaupdate',
'createURL' => '#'
];
if (isset($this->updateInfo['object']) && isset($this->updateInfo['object']->get('infourl')->_data)) :
$displayData['content'] .= '<br>' . HTMLHelper::_(
'link',
$this->updateInfo['object']->get('infourl')->_data,
Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL'),
[
'target' => '_blank',
'rel' => 'noopener noreferrer',
'title' => isset($this->updateInfo['object']->get('infourl')->title) ? Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->get('infourl')->title) : ''
]
);
endif;
if ($this->getCurrentUser()->authorise('core.admin', 'com_joomlaupdate')) :
$displayData['formAppend'] = '<div class="text-center"><a href="' . $uploadLink . '" class="btn btn-sm btn-outline-secondary">' . Text::_('COM_JOOMLAUPDATE_EMPTYSTATE_APPEND') . '</a></div>';
endif;
echo '<div id="joomlaupdate-wrapper">';
echo LayoutHelper::render('joomla.content.emptystate', $displayData);
echo '</div>';

View File

@ -0,0 +1,23 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Layout\LayoutHelper;
$displayData = [
'textPrefix' => 'COM_JOOMLAUPDATE_SELF',
'formURL' => 'index.php?option=com_joomlaupdate&view=joomlaupdate',
'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Updating_from_an_existing_version',
'icon' => 'icon-loop joomlaupdate',
'createURL' => 'index.php?option=com_installer&view=update'
];
echo LayoutHelper::render('joomla.content.emptystate', $displayData);

View File

@ -0,0 +1,68 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
/** @var \Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView $this */
/** @var \Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('core')
->useScript('com_joomlaupdate.default')
->useScript('bootstrap.popover');
$uploadLink = 'index.php?option=com_joomlaupdate&view=upload';
$displayData = [
'textPrefix' => 'COM_JOOMLAUPDATE_UPDATE',
'title' => Text::sprintf('COM_JOOMLAUPDATE_UPDATE_EMPTYSTATE_TITLE', $this->escape($this->updateInfo['latest'])),
'content' => Text::sprintf($this->langKey, $this->updateSourceKey),
'formURL' => 'index.php?option=com_joomlaupdate&view=joomlaupdate',
'helpURL' => 'https://docs.joomla.org/Special:MyLanguage/Updating_from_an_existing_version',
'icon' => 'icon-loop joomlaupdate',
'createURL' => '#'
];
if (isset($this->updateInfo['object']) && isset($this->updateInfo['object']->get('infourl')->_data)) :
$displayData['content'] .= '<br>' . HTMLHelper::_(
'link',
$this->updateInfo['object']->get('infourl')->_data,
Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL'),
[
'target' => '_blank',
'rel' => 'noopener noreferrer',
'title' => isset($this->updateInfo['object']->get('infourl')->title) ? Text::sprintf('JBROWSERTARGET_NEW_TITLE', $this->updateInfo['object']->get('infourl')->title) : ''
]
);
endif;
// Confirm backup and check
$classVisibility = $this->noBackupCheck ? 'd-none' : '';
$checked = $this->noBackupCheck ? 'checked' : '';
$displayData['content'] .= '<div class="form-check d-flex justify-content-center ' . $classVisibility . '">
<input class="form-check-input me-2" type="checkbox" value="" id="joomlaupdate-confirm-backup" ' . $checked . '>
<label class="form-check-label" for="joomlaupdate-confirm-backup">
' . Text::_('COM_JOOMLAUPDATE_UPDATE_CONFIRM_BACKUP') . '
</label>
</div>';
if ($this->getCurrentUser()->authorise('core.admin', 'com_joomlaupdate')) :
$displayData['formAppend'] = '<div class="text-center"><a href="' . $uploadLink . '" class="btn btn-sm btn-outline-secondary">' . Text::_('COM_JOOMLAUPDATE_EMPTYSTATE_APPEND') . '</a></div>';
endif;
echo '<div id="joomlaupdate-wrapper">';
echo LayoutHelper::render('joomla.content.emptystate', $displayData);
echo '</div>';

View File

@ -0,0 +1,135 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('core')
->useScript('com_joomlaupdate.admin-update')
->useScript('bootstrap.modal');
Text::script('COM_JOOMLAUPDATE_ERRORMODAL_HEAD_FORBIDDEN');
Text::script('COM_JOOMLAUPDATE_ERRORMODAL_BODY_FORBIDDEN');
Text::script('COM_JOOMLAUPDATE_ERRORMODAL_HEAD_SERVERERROR');
Text::script('COM_JOOMLAUPDATE_ERRORMODAL_BODY_SERVERERROR');
Text::script('COM_JOOMLAUPDATE_ERRORMODAL_HEAD_GENERIC');
Text::script('COM_JOOMLAUPDATE_ERRORMODAL_BODY_INVALIDLOGIN');
Text::script('COM_JOOMLAUPDATE_UPDATING_FAIL');
Text::script('COM_JOOMLAUPDATE_UPDATING_COMPLETE');
Text::script('COM_JOOMLAUPDATE_VIEW_UPDATE_ITEMS');
Text::script('JLIB_SIZE_BYTES');
Text::script('JLIB_SIZE_KB');
Text::script('JLIB_SIZE_MB');
Text::script('JLIB_SIZE_GB');
Text::script('JLIB_SIZE_TB');
Text::script('JLIB_SIZE_PB');
Text::script('JLIB_SIZE_EB');
Text::script('JLIB_SIZE_ZB');
Text::script('JLIB_SIZE_YB');
$password = Factory::getApplication()->getUserState('com_joomlaupdate.password', null);
$filesize = Factory::getApplication()->getUserState('com_joomlaupdate.filesize', null);
$ajaxUrl = Uri::base() . 'components/com_joomlaupdate/extract.php';
$returnUrl = 'index.php?option=com_joomlaupdate&task=update.finalise&' . Factory::getSession()->getFormToken() . '=1';
$this->document->addScriptOptions(
'joomlaupdate',
[
'password' => $password,
'totalsize' => $filesize,
'ajax_url' => $ajaxUrl,
'return_url' => $returnUrl,
]
);
$helpUrl = 'https://docs.joomla.org/Special:MyLanguage/J4.x:Joomla_Update_Problems';
?>
<div class="px-4 py-5 my-5 text-center" id="joomlaupdate-progress">
<span class="fa-8x mb-4 icon-loop joomlaupdate" aria-hidden="true"></span>
<h1 class="display-5 fw-bold"><?php echo Text::_('COM_JOOMLAUPDATE_UPDATING_HEAD') ?></h1>
<div class="col-lg-6 mx-auto">
<p class="lead mb-4" id="update-title">
<?php echo Text::_('COM_JOOMLAUPDATE_UPDATING_INPROGRESS'); ?>
</p>
<div id="progress" class="progress my-3">
<div id="progress-bar" class="progress-bar progress-bar-striped progress-bar-animated"
aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
</div>
</div>
<div id="update-progress" class="container text-muted my-3">
<div class="row">
<div class="col">
<span class="fa fa-file-archive" aria-hidden="true"></span>
<span class="visually-hidden"><?php echo Text::_('COM_JOOMLAUPDATE_VIEW_UPDATE_BYTESREAD'); ?></span>
<span id="extbytesin"></span>
</div>
<div class="col">
<span class="fa fa-hdd" aria-hidden="true"></span>
<span class="visually-hidden"><?php echo Text::_('COM_JOOMLAUPDATE_VIEW_UPDATE_BYTESEXTRACTED'); ?></span>
<span id="extbytesout"></span>
</div>
<div class="col">
<span class="fa fa-copy" aria-hidden="true"></span>
<span class="visually-hidden"><?php echo Text::_('COM_JOOMLAUPDATE_VIEW_UPDATE_FILESEXTRACTED'); ?></span>
<span id="extfiles"></span>
</div>
</div>
</div>
</div>
</div>
<div class="px-4 d-none" id="joomlaupdate-error">
<div class="card border-danger">
<h1 class="card-header bg-danger text-white" id="errorDialogLabel"></h1>
<div class="card-body">
<div id="errorDialogMessage"></div>
</div>
<div class="card-footer">
<div class="d-flex flex-row flex-wrap gap-2 align-items-center">
<div>
<a href="<?php echo $helpUrl ?>"
target="_blank"
class="btn btn-info">
<span class="fa fa-info-circle" aria-hidden="true"></span>
<?php echo Text::_('COM_JOOMLAUPDATE_ERRORMODAL_BTN_HELP') ?>
</a>
</div>
<div>
<button type="button" id="joomlaupdate-resume"
class="btn btn-primary">
<span class="fa fa-play" aria-hidden="true"></span>
<?php echo Text::_('COM_JOOMLAUPDATE_ERRORSTATE_BTN_RETRY') ?>
</button>
</div>
<div>
<button type="button" id="joomlaupdate-restart"
class="btn btn-warning">
<span class="fa fa-redo" aria-hidden="true"></span>
<?php echo Text::_('COM_JOOMLAUPDATE_ERRORSTATE_BTN_RESTART') ?>
</button>
</div>
<div class="flex-grow-1"></div>
<div>
<a href="<?php echo Route::_('index.php?option=com_joomlaupdate') ?>"
class="btn btn-danger btn-sm ms-3">
<?php echo Text::_('JCANCEL') ?>
</a>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,81 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('keepalive');
?>
<div class="alert warning">
<h4 class="alert-heading">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_UPDATE_FINALISE_HEAD'); ?>
</h4>
<p>
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_UPDATE_FINALISE_HEAD_DESC', Factory::getApplication()->get('sitename')); ?>
</p>
</div>
<hr>
<form action="<?php echo Route::_('index.php', true); ?>" method="post" id="form-login" class="d-flex justify-content-center text-center">
<fieldset class="loginform">
<legend><?php echo Text::_('COM_JOOMLAUPDATE_CONFIRM'); ?></legend>
<div class="control-group">
<div class="controls">
<div class="input-group">
<input name="username" id="mod-login-username" type="text" class="form-control" required="required" autocomplete="username" placeholder="<?php echo Text::_('JGLOBAL_USERNAME'); ?>" size="15" autofocus="true">
<span class="input-group-text">
<span class="icon-user" aria-hidden="true"></span>
<label for="mod-login-username" class="visually-hidden">
<?php echo Text::_('JGLOBAL_USERNAME'); ?>
</label>
</span>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<div class="input-group">
<input name="passwd" id="mod-login-password" type="password" class="form-control" required="required" autocomplete="current-password" placeholder="<?php echo Text::_('JGLOBAL_PASSWORD'); ?>" size="15">
<span class="input-group-text">
<span class="icon-lock" aria-hidden="true"></span>
<label for="mod-login-password" class="visually-hidden">
<?php echo Text::_('JGLOBAL_PASSWORD'); ?>
</label>
</span>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<div class="btn-group">
<a class="btn btn-danger" href="index.php?option=com_joomlaupdate">
<span class="icon-times" aria-hidden="true"></span> <?php echo Text::_('JCANCEL'); ?>
</a>
<button type="submit" class="btn btn-primary">
<span class="icon-play" aria-hidden="true"></span> <?php echo Text::_('COM_JOOMLAUPDATE_VIEW_UPDATE_FINALISE_CONFIRM_AND_CONTINUE'); ?>
</button>
</div>
</div>
</div>
<input type="hidden" name="option" value="com_joomlaupdate">
<input type="hidden" name="task" value="update.finaliseconfirm">
<?php echo HTMLHelper::_('form.token'); ?>
</fieldset>
</form>

View File

@ -0,0 +1,83 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('core')
->useScript('jquery')
->useScript('form.validate')
->useScript('keepalive')
->useScript('field.passwordview');
Text::script('JSHOWPASSWORD');
Text::script('JHIDEPASSWORD');
?>
<div class="alert alert-warning">
<h4 class="alert-heading">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_HEAD'); ?>
</h4>
<p>
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_UPLOAD_CAPTIVE_INTRO_BODY', Factory::getApplication()->get('sitename')); ?>
</p>
</div>
<hr>
<form action="<?php echo Route::_('index.php', true); ?>" method="post" id="form-login" class="text-center card">
<fieldset class="loginform card-body">
<legend class="h2 mb-3"><?php echo Text::_('COM_JOOMLAUPDATE_CAPTIVE_HEADLINE'); ?></legend>
<div class="control-group">
<div class="controls">
<div class="input-group">
<input name="username" id="mod-login-username" type="text" class="form-control" required="required" autocomplete="username" placeholder="<?php echo Text::_('JGLOBAL_USERNAME'); ?>" size="15" autofocus="true">
<span class="input-group-text">
<span class="icon-user icon-fw" aria-hidden="true"></span>
<label for="mod-login-username" class="visually-hidden">
<?php echo Text::_('JGLOBAL_USERNAME'); ?>
</label>
</span>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<div class="input-group">
<input name="passwd" id="mod-login-password" type="password" class="form-control" required="required" autocomplete="current-password" placeholder="<?php echo Text::_('JGLOBAL_PASSWORD'); ?>" size="15">
<button type="button" class="btn btn-secondary input-password-toggle">
<span class="icon-eye icon-fw" aria-hidden="true"></span>
<span class="visually-hidden"><?php echo Text::_('JSHOWPASSWORD'); ?></span>
</button>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<a class="btn btn-danger" href="index.php?option=com_joomlaupdate">
<span class="icon-times icon-white" aria-hidden="true"></span> <?php echo Text::_('JCANCEL'); ?>
</a>
<button type="submit" class="btn btn-primary">
<span class="icon-play icon-white" aria-hidden="true"></span> <?php echo Text::_('COM_INSTALLER_INSTALL_BUTTON'); ?>
</button>
</div>
</div>
<input type="hidden" name="option" value="com_joomlaupdate">
<input type="hidden" name="task" value="update.confirm">
<?php echo HTMLHelper::_('form.token'); ?>
</fieldset>
</form>

View File

@ -0,0 +1,102 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_joomlaupdate
*
* @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Updater\Update;
use Joomla\CMS\Utility\Utility;
use Joomla\Component\Joomlaupdate\Administrator\View\Joomlaupdate\HtmlView;
/** @var HtmlView $this */
/** @var \Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('core')
->useScript('com_joomlaupdate.default')
->useScript('bootstrap.popover');
Text::script('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE', true);
Text::script('COM_INSTALLER_MSG_WARNINGS_UPLOADFILETOOBIG', true);
Text::script('JGLOBAL_SELECTED_UPLOAD_FILE_SIZE', true);
$latestJoomlaVersion = $this->updateInfo['latest'];
$currentJoomlaVersion = $this->updateInfo['installed'] ?? JVERSION;
?>
<div id="joomlaupdate-wrapper" class="main-card mt-3 p-3" data-joomla-target-version="<?php echo $latestJoomlaVersion; ?>" data-joomla-current-version="<?php echo $currentJoomlaVersion; ?>">
<div class="alert alert-info">
<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden"><?php echo Text::_('INFO'); ?></span>
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_UPLOAD_INTRO', 'https://downloads.joomla.org/latest'); ?>
<?php if (is_object($this->updateInfo['object']) && ($this->updateInfo['object'] instanceof Update)) : ?>
<br><br>
<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden"><?php echo Text::_('INFO'); ?></span>
<?php echo Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE_INFO', $this->updateInfo['object']->downloadurl->_data); ?>
<?php endif; ?>
</div>
<?php if (count($this->warnings)) : ?>
<h3><?php echo Text::_('COM_INSTALLER_SUBMENU_WARNINGS'); ?></h3>
<?php foreach ($this->warnings as $warning) : ?>
<div class="alert alert-warning">
<h4 class="alert-heading">
<span class="icon-exclamation-triangle" aria-hidden="true"></span>
<span class="visually-hidden"><?php echo Text::_('WARNING'); ?></span>
<?php echo $warning['message']; ?>
</h4>
<p class="mb-0"><?php echo $warning['description']; ?></p>
</div>
<?php endforeach; ?>
<div class="alert alert-info">
<h4 class="alert-heading">
<span class="icon-info-circle" aria-hidden="true"></span>
<span class="visually-hidden"><?php echo Text::_('INFO'); ?></span>
<?php echo Text::_('COM_INSTALLER_MSG_WARNINGFURTHERINFO'); ?>
</h4>
<p class="mb-0"><?php echo Text::_('COM_INSTALLER_MSG_WARNINGFURTHERINFODESC'); ?></p>
</div>
<?php endif; ?>
<form enctype="multipart/form-data" action="index.php" method="post" id="uploadForm">
<div class="mb-3">
<label for="install_package" class="form-label">
<?php echo Text::_('COM_JOOMLAUPDATE_VIEW_UPLOAD_PACKAGE_FILE'); ?>
</label>
<input class="form-control" type="file" id="install_package" name="install_package" accept=".zip,application/zip">
<?php $maxSizeBytes = Utility::getMaxUploadSize(); ?>
<?php $maxSize = HTMLHelper::_('number.bytes', $maxSizeBytes); ?>
<input id="max_upload_size" name="max_upload_size" type="hidden" value="<?php echo $maxSizeBytes; ?>"/>
<div class="form-text"><?php echo Text::sprintf('JGLOBAL_MAXIMUM_UPLOAD_SIZE_LIMIT', '&#x200E;' . $maxSize); ?></div>
<div class="form-text hidden" id="file_size"><?php echo Text::sprintf('JGLOBAL_SELECTED_UPLOAD_FILE_SIZE', '&#x200E;' . ''); ?></div>
<div class="alert alert-warning hidden" id="max_upload_size_warn">
<?php echo Text::_('COM_INSTALLER_MSG_WARNINGS_UPLOADFILETOOBIG'); ?>
</div>
</div>
<div class="form-check mb-3 <?php echo $this->noBackupCheck ? 'd-none' : '' ?>">
<input class="form-check-input me-2 <?php echo $this->noBackupCheck ? 'd-none' : '' ?>"
type="checkbox" disabled value="" id="joomlaupdate-confirm-backup"
<?php echo $this->noBackupCheck ? 'checked' : '' ?>>
<label class="form-check-label" for="joomlaupdate-confirm-backup">
<?php echo Text::_('COM_JOOMLAUPDATE_UPDATE_CONFIRM_BACKUP'); ?>
</label>
</div>
<button id="uploadButton" class="btn btn-primary" disabled type="button"><?php echo Text::_('COM_INSTALLER_UPLOAD_AND_INSTALL'); ?></button>
<input type="hidden" name="task" value="update.upload">
<input type="hidden" name="option" value="com_joomlaupdate">
<?php echo HTMLHelper::_('form.token'); ?>
</form>
</div>