<?php

/**
 * @package     Joomla.Administrator
 * @subpackage  Template.system
 *
 * @copyright   (C) 2006 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\Language\Text;
use Joomla\CMS\Router\Route;

/** @var \Joomla\CMS\Document\ErrorDocument $this */

// Load template CSS file
$this->getWebAssetManager()->registerAndUseStyle('template.system.error', 'media/system/css/system-admin-error.min.css');

// Set page title
$this->setTitle($this->error->getCode() . ' - ' . htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'));
?>
<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
    <jdoc:include type="metas" />
    <jdoc:include type="styles" />
    <jdoc:include type="scripts" />
</head>
<body>
    <table class="outline">
        <tr>
            <td style="text-align: center;">
                <h1><?php echo $this->error->getCode() ?> - <?php echo Text::_('JERROR_AN_ERROR_HAS_OCCURRED'); ?></h1>
            </td>
        </tr>
        <tr>
            <td style="text-align: center;">
                <p>
                    <?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'); ?>
                    <?php if ($this->debug) : ?>
                        <br><?php echo htmlspecialchars($this->error->getFile(), ENT_QUOTES, 'UTF-8');?>:<?php echo $this->error->getLine(); ?>
                    <?php endif; ?>
                </p>
                <p><a href="<?php echo Route::_('index.php'); ?>"><?php echo Text::_('JGLOBAL_TPL_CPANEL_LINK_TEXT'); ?></a></p>
                <?php if ($this->debug) : ?>
                    <div>
                        <?php echo $this->renderBacktrace(); ?>
                        <?php // Check if there are more Exceptions and render their data as well ?>
                        <?php if ($this->error->getPrevious()) : ?>
                            <?php $loop = true; ?>
                            <?php // Reference $this->_error here and in the loop as setError() assigns errors to this property and we need this for the backtrace to work correctly ?>
                            <?php // Make the first assignment to setError() outside the loop so the loop does not skip Exceptions ?>
                            <?php $this->setError($this->_error->getPrevious()); ?>
                            <?php while ($loop === true) : ?>
                                <p><strong><?php echo Text::_('JERROR_LAYOUT_PREVIOUS_ERROR'); ?></strong></p>
                                <p>
                                    <?php echo htmlspecialchars($this->_error->getMessage(), ENT_QUOTES, 'UTF-8'); ?>
                                    <br><?php echo htmlspecialchars($this->_error->getFile(), ENT_QUOTES, 'UTF-8');?>:<?php echo $this->_error->getLine(); ?>
                                </p>
                                <?php echo $this->renderBacktrace(); ?>
                                <?php $loop = $this->setError($this->_error->getPrevious()); ?>
                            <?php endwhile; ?>
                            <?php // Reset the main error object to the base error ?>
                            <?php $this->setError($this->error); ?>
                        <?php endif; ?>
                    </div>
                <?php endif; ?>
            </td>
        </tr>
    </table>

    <jdoc:include type="modules" name="debug" style="none" />
</body>
</html>
