upgraded dependencies
This commit is contained in:
@@ -42,13 +42,54 @@
|
||||
--base-6: #222;
|
||||
}
|
||||
|
||||
.theme-dark {
|
||||
--page-background: #36393e;
|
||||
--color-text: #e0e0e0;
|
||||
--color-muted: #777;
|
||||
--color-error: #d43934;
|
||||
--tab-background: #555;
|
||||
--tab-color: #ccc;
|
||||
--tab-active-background: #888;
|
||||
--tab-active-color: #fafafa;
|
||||
--tab-disabled-background: var(--page-background);
|
||||
--tab-disabled-color: #777;
|
||||
--metric-value-background: #555;
|
||||
--metric-value-color: inherit;
|
||||
--metric-unit-color: #999;
|
||||
--metric-label-background: #777;
|
||||
--metric-label-color: #e0e0e0;
|
||||
--trace-selected-background: #71663acc;
|
||||
--table-border: #444;
|
||||
--table-background: #333;
|
||||
--table-header: #555;
|
||||
--info-background: rgba(79, 148, 195, 0.5);
|
||||
--tree-active-background: var(--metric-label-background);
|
||||
--exception-title-color: var(--base-2);
|
||||
--shadow: 0px 0px 1px rgba(32, 32, 32, .2);
|
||||
--border: 1px solid #666;
|
||||
--background-error: #b0413e;
|
||||
--highlight-comment: #dedede;
|
||||
--highlight-default: var(--base-6);
|
||||
--highlight-keyword: #ff413c;
|
||||
--highlight-string: #70a6fd;
|
||||
--base-0: #2e3136;
|
||||
--base-1: #444;
|
||||
--base-2: #666;
|
||||
--base-3: #666;
|
||||
--base-4: #666;
|
||||
--base-5: #e0e0e0;
|
||||
--base-6: #f5f5f5;
|
||||
--card-label-background: var(--tab-active-background);
|
||||
--card-label-color: var(--tab-active-color);
|
||||
}
|
||||
|
||||
html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}
|
||||
|
||||
html {
|
||||
/* always display the vertical scrollbar to avoid jumps when toggling contents */
|
||||
overflow-y: scroll;
|
||||
}
|
||||
body { background-color: #F9F9F9; color: var(--base-6); font: 14px/1.4 Helvetica, Arial, sans-serif; padding-bottom: 45px; }
|
||||
body { background-color: var(--page-background); color: var(--base-6); font: 14px/1.4 Helvetica, Arial, sans-serif; padding-bottom: 45px; }
|
||||
|
||||
a { cursor: pointer; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
@@ -56,8 +97,8 @@ abbr[title] { border-bottom: none; cursor: help; text-decoration: none; }
|
||||
|
||||
code, pre { font: 13px/1.5 Consolas, Monaco, Menlo, "Ubuntu Mono", "Liberation Mono", monospace; }
|
||||
|
||||
table, tr, th, td { background: #FFF; border-collapse: collapse; vertical-align: top; }
|
||||
table { background: #FFF; border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; }
|
||||
table, tr, th, td { background: var(--base-0); border-collapse: collapse; vertical-align: top; }
|
||||
table { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; }
|
||||
table th, table td { border: solid var(--base-2); border-width: 1px 0; padding: 8px 10px; }
|
||||
table th { background-color: var(--base-2); font-weight: bold; text-align: left; }
|
||||
|
||||
@@ -79,11 +120,11 @@ table th { background-color: var(--base-2); font-weight: bold; text-align: left;
|
||||
.status-warning { background: rgba(240, 181, 24, 0.3); }
|
||||
.status-error { background: rgba(176, 65, 62, 0.2); }
|
||||
.status-success td, .status-warning td, .status-error td { background: transparent; }
|
||||
tr.status-error td, tr.status-warning td { border-bottom: 1px solid #FAFAFA; border-top: 1px solid #FAFAFA; }
|
||||
tr.status-error td, tr.status-warning td { border-bottom: 1px solid var(--base-2); border-top: 1px solid var(--base-2); }
|
||||
.status-warning .colored { color: #A46A1F; }
|
||||
.status-error .colored { color: var(--color-error); }
|
||||
|
||||
.sf-toggle { cursor: pointer; }
|
||||
.sf-toggle { cursor: pointer; position: relative; }
|
||||
.sf-toggle-content { -moz-transition: display .25s ease; -webkit-transition: display .25s ease; transition: display .25s ease; }
|
||||
.sf-toggle-content.sf-toggle-hidden { display: none; }
|
||||
.sf-toggle-content.sf-toggle-visible { display: block; }
|
||||
@@ -139,7 +180,7 @@ thead.sf-toggle-content.sf-toggle-visible, tbody.sf-toggle-content.sf-toggle-vis
|
||||
.container { max-width: 1024px; margin: 0 auto; padding: 0 15px; }
|
||||
.container::after { content: ""; display: table; clear: both; }
|
||||
|
||||
header { background-color: var(--base-6); color: rgba(255, 255, 255, 0.75); font-size: 13px; height: 33px; line-height: 33px; padding: 0; }
|
||||
header { background-color: #222; color: rgba(255, 255, 255, 0.75); font-size: 13px; height: 33px; line-height: 33px; padding: 0; }
|
||||
header .container { display: flex; justify-content: space-between; }
|
||||
.logo { flex: 1; font-size: 13px; font-weight: normal; margin: 0; padding: 0; }
|
||||
.logo svg { height: 18px; width: 18px; opacity: .8; vertical-align: -5px; }
|
||||
@@ -174,7 +215,7 @@ header .container { display: flex; justify-content: space-between; }
|
||||
.trace-head .trace-class { color: var(--base-6); font-size: 18px; font-weight: bold; line-height: 1.3; margin: 0; position: relative; }
|
||||
.trace-head .trace-namespace { color: #999; display: block; font-size: 13px; }
|
||||
.trace-head .icon { position: absolute; right: 0; top: 0; }
|
||||
.trace-head .icon svg { height: 24px; width: 24px; }
|
||||
.trace-head .icon svg { fill: var(--base-5); height: 24px; width: 24px; }
|
||||
|
||||
.trace-details { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; table-layout: fixed; }
|
||||
|
||||
@@ -185,7 +226,9 @@ header .container { display: flex; justify-content: space-between; }
|
||||
.trace-line:hover { background: var(--base-1); }
|
||||
.trace-line a { color: var(--base-6); }
|
||||
.trace-line .icon { opacity: .4; position: absolute; left: 10px; }
|
||||
.trace-line .icon svg { height: 16px; width: 16px; }
|
||||
.trace-line .icon svg { fill: var(--base-5); height: 16px; width: 16px; }
|
||||
.trace-line .icon.icon-copy { left: auto; top: auto; padding-left: 5px; display: none }
|
||||
.trace-line:hover .icon.icon-copy:not(.hidden) { display: inline-block }
|
||||
.trace-line-header { padding-left: 36px; padding-right: 10px; }
|
||||
|
||||
.trace-file-path, .trace-file-path a { color: var(--base-6); font-size: 13px; }
|
||||
|
1
vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg
vendored
Normal file
1
vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>
|
After Width: | Height: | Size: 265 B |
@@ -30,6 +30,15 @@ if (typeof Sfjs === 'undefined') {
|
||||
};
|
||||
}
|
||||
|
||||
if (navigator.clipboard) {
|
||||
document.querySelectorAll('[data-clipboard-text]').forEach(function(element) {
|
||||
removeClass(element, 'hidden');
|
||||
element.addEventListener('click', function() {
|
||||
navigator.clipboard.writeText(element.getAttribute('data-clipboard-text'));
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
addEventListener: addEventListener,
|
||||
|
||||
@@ -166,6 +175,14 @@ if (typeof Sfjs === 'undefined') {
|
||||
});
|
||||
}
|
||||
|
||||
/* Prevents from disallowing clicks on "copy to clipboard" elements inside toggles */
|
||||
var copyToClipboardElements = toggles[i].querySelectorAll('span[data-clipboard-text]');
|
||||
for (var k = 0; k < copyToClipboardElements.length; k++) {
|
||||
addEventListener(copyToClipboardElements[k], 'click', function(e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
}
|
||||
|
||||
toggles[i].setAttribute('data-processed', 'true');
|
||||
}
|
||||
},
|
||||
|
84
vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php
vendored
Executable file
84
vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php
vendored
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
if ('cli' !== \PHP_SAPI) {
|
||||
throw new Exception('This script must be run from the command line.');
|
||||
}
|
||||
|
||||
// Run from the root of the php-src repository, this script generates
|
||||
// a table with all the methods that have a tentative return type.
|
||||
//
|
||||
// Usage: find -name *.stub.php | sort | /path/to/extract-tentative-return-types.php > /path/to/TentativeTypes.php
|
||||
|
||||
echo <<<EOPHP
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\ErrorHandler\Internal;
|
||||
|
||||
/**
|
||||
* This class has been generated by extract-tentative-return-types.php.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class TentativeTypes
|
||||
{
|
||||
public const RETURN_TYPES = [
|
||||
|
||||
EOPHP;
|
||||
|
||||
while (false !== $file = fgets(\STDIN)) {
|
||||
$code = file_get_contents(substr($file, 0, -1));
|
||||
|
||||
if (!str_contains($code, '@tentative-return-type')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$code = preg_split('{^\s*(?:(?:abstract )?class|interface|trait) ([^\s]++)}m', $code, -1, \PREG_SPLIT_DELIM_CAPTURE);
|
||||
|
||||
if (1 === count($code)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for ($i = 1; null !== $class = $code[$i] ?? null; $i += 2) {
|
||||
$methods = $code[1 + $i];
|
||||
|
||||
if (!str_contains($methods, '@tentative-return-type')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
echo " '$class' => [\n";
|
||||
|
||||
preg_replace_callback('{@tentative-return-type.*?[\s]function ([^(]++)[^)]++\)\s*+:\s*+([^\n;\{]++)}s', function ($m) {
|
||||
$m[2] = str_replace(' ', '', $m[2]);
|
||||
echo " '$m[1]' => '$m[2]',\n";
|
||||
|
||||
return '';
|
||||
}, $methods);
|
||||
|
||||
echo " ],\n";
|
||||
}
|
||||
}
|
||||
|
||||
echo <<<EOPHP
|
||||
];
|
||||
}
|
||||
|
||||
EOPHP;
|
98
vendor/symfony/error-handler/Resources/bin/patch-type-declarations
vendored
Executable file
98
vendor/symfony/error-handler/Resources/bin/patch-type-declarations
vendored
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
if ('cli' !== \PHP_SAPI) {
|
||||
throw new Exception('This script must be run from the command line.');
|
||||
}
|
||||
|
||||
if (\in_array('-h', $argv) || \in_array('--help', $argv)) {
|
||||
echo implode(PHP_EOL, [
|
||||
' Patches type declarations based on "@return" PHPDoc and triggers deprecations for',
|
||||
' incompatible method declarations.',
|
||||
'',
|
||||
' This assists you to make your package compatible with Symfony 6, but it can be used',
|
||||
' for any class/package.',
|
||||
'',
|
||||
' Available configuration via environment variables:',
|
||||
' SYMFONY_PATCH_TYPE_DECLARATIONS',
|
||||
' An url-encoded string to change the behavior of the script. Available parameters:',
|
||||
' - "force": any value enables deprecation notices - can be any of:',
|
||||
' - "phpdoc" to patch only docblock annotations',
|
||||
' - "2" to add all possible return types',
|
||||
' - "1" to add return types but only to tests/final/internal/private methods',
|
||||
' - "php": the target version of PHP - e.g. "7.1" doesn\'t generate "object" types',
|
||||
' - "deprecations": "1" to trigger a deprecation notice when a child class misses a',
|
||||
' return type while the parent declares an "@return" annotation',
|
||||
'',
|
||||
' SYMFONY_PATCH_TYPE_EXCLUDE',
|
||||
' A regex matched against the full path to the class - any match will be excluded',
|
||||
'',
|
||||
' Example: "SYMFONY_PATCH_TYPE_DECLARATIONS=php=7.4 ./patch-type-declarations"',
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
if (false === getenv('SYMFONY_PATCH_TYPE_DECLARATIONS')) {
|
||||
putenv('SYMFONY_PATCH_TYPE_DECLARATIONS=force=2');
|
||||
echo 'No SYMFONY_PATCH_TYPE_DECLARATIONS env var set, patching type declarations in all methods (run the command with "-h" for more information).'.PHP_EOL;
|
||||
}
|
||||
|
||||
if (is_file($autoload = __DIR__.'/../../../../autoload.php')) {
|
||||
// noop
|
||||
} elseif (is_file($autoload = __DIR__.'/../../../../../../../autoload.php')) {
|
||||
// noop
|
||||
} else {
|
||||
echo PHP_EOL.' /!\ Cannot find the Composer autoloader, did you forget to run "composer install"?'.PHP_EOL;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (is_file($phpunitAutoload = dirname($autoload).'/bin/.phpunit/phpunit/vendor/autoload.php')) {
|
||||
require $phpunitAutoload;
|
||||
}
|
||||
|
||||
$loader = require $autoload;
|
||||
|
||||
Symfony\Component\ErrorHandler\DebugClassLoader::enable();
|
||||
|
||||
$deprecations = [];
|
||||
set_error_handler(function ($type, $msg, $file, $line, $context = []) use (&$deprecations) {
|
||||
if (\E_USER_DEPRECATED !== $type) {
|
||||
return;
|
||||
}
|
||||
|
||||
[,,,,, $class,] = explode('"', $msg);
|
||||
$deprecations[$class][] = $msg;
|
||||
});
|
||||
|
||||
$exclude = getenv('SYMFONY_PATCH_TYPE_EXCLUDE') ?: null;
|
||||
foreach ($loader->getClassMap() as $class => $file) {
|
||||
if (false !== strpos($file = realpath($file), \DIRECTORY_SEPARATOR.'vendor'.\DIRECTORY_SEPARATOR)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($exclude && preg_match($exclude, $file)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
class_exists($class);
|
||||
}
|
||||
|
||||
Symfony\Component\ErrorHandler\DebugClassLoader::checkClasses();
|
||||
|
||||
foreach ($deprecations as $class => $classDeprecations) {
|
||||
echo $class.' ('.\count($classDeprecations).')'.PHP_EOL;
|
||||
echo implode(PHP_EOL, $classDeprecations).PHP_EOL.PHP_EOL;
|
||||
}
|
||||
|
||||
if ($deprecations && false !== strpos(getenv('SYMFONY_PATCH_TYPE_DECLARATIONS') ?? '', 'force')) {
|
||||
echo 'These deprecations might be fixed by the patch script, run this again to check for type deprecations.'.PHP_EOL;
|
||||
}
|
@@ -11,6 +11,12 @@
|
||||
<style><?= $this->include('assets/css/exception_full.css'); ?></style>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
document.body.classList.add(
|
||||
localStorage.getItem('symfony/profiler/theme') || (matchMedia('(prefers-color-scheme: dark)').matches ? 'theme-dark' : 'theme-light')
|
||||
);
|
||||
</script>
|
||||
|
||||
<?php if (class_exists(\Symfony\Component\HttpKernel\Kernel::class)) { ?>
|
||||
<header>
|
||||
<div class="container">
|
||||
|
@@ -23,7 +23,7 @@
|
||||
$status = \E_DEPRECATED === $severity || \E_USER_DEPRECATED === $severity ? 'warning' : 'normal';
|
||||
} ?>
|
||||
<tr class="status-<?= $status; ?>" data-filter-level="<?= strtolower($this->escape($log['priorityName'])); ?>"<?php if ($channelIsDefined) { ?> data-filter-channel="<?= $this->escape($log['channel']); ?>"<?php } ?>>
|
||||
<td class="text-small" nowrap>
|
||||
<td class="text-small nowrap">
|
||||
<span class="colored text-bold"><?= $this->escape($log['priorityName']); ?></span>
|
||||
<span class="text-muted newline"><?= date('H:i:s', $log['timestamp']); ?></span>
|
||||
</td>
|
||||
|
@@ -25,6 +25,9 @@
|
||||
<span class="trace-method"><?= $trace['function']; ?></span>
|
||||
<?php } ?>
|
||||
(line <?= $lineNumber; ?>)
|
||||
<span class="icon icon-copy hidden" data-clipboard-text="<?php echo implode(\DIRECTORY_SEPARATOR, $filePathParts).':'.$lineNumber; ?>">
|
||||
<?php echo $this->include('assets/images/icon-copy.svg'); ?>
|
||||
</span>
|
||||
</span>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
@@ -1,21 +1,30 @@
|
||||
<div class="trace trace-as-html" id="trace-box-<?= $index; ?>">
|
||||
<div class="trace-details">
|
||||
<div class="trace-head">
|
||||
<span class="sf-toggle" data-toggle-selector="#trace-html-<?= $index; ?>" data-toggle-initial="<?= $expand ? 'display' : ''; ?>">
|
||||
<h3 class="trace-class">
|
||||
<span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square-o.svg'); ?></span>
|
||||
<span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square-o.svg'); ?></span>
|
||||
|
||||
<span class="trace-namespace">
|
||||
<?= implode('\\', array_slice(explode('\\', $exception['class']), 0, -1)); ?><?= count(explode('\\', $exception['class'])) > 1 ? '\\' : ''; ?>
|
||||
</span>
|
||||
<?= ($parts = explode('\\', $exception['class'])) ? end($parts) : ''; ?>
|
||||
</h3>
|
||||
<div class="sf-toggle" data-toggle-selector="#trace-html-<?= $index; ?>" data-toggle-initial="<?= $expand ? 'display' : ''; ?>">
|
||||
<span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square-o.svg'); ?></span>
|
||||
<span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square-o.svg'); ?></span>
|
||||
<?php
|
||||
$separator = strrpos($exception['class'], '\\');
|
||||
$separator = false === $separator ? 0 : $separator + 1;
|
||||
|
||||
$namespace = substr($exception['class'], 0, $separator);
|
||||
$class = substr($exception['class'], $separator);
|
||||
?>
|
||||
<?php if ('' === $class) { ?>
|
||||
<br>
|
||||
<?php } else { ?>
|
||||
<h3 class="trace-class">
|
||||
<?php if ('' !== $namespace) { ?>
|
||||
<span class="trace-namespace"><?= $namespace; ?></span>
|
||||
<?php } ?>
|
||||
<?= $class; ?>
|
||||
</h3>
|
||||
<?php } ?>
|
||||
<?php if ($exception['message'] && $index > 1) { ?>
|
||||
<p class="break-long-words trace-message"><?= $this->escape($exception['message']); ?></p>
|
||||
<?php } ?>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="trace-html-<?= $index; ?>" class="sf-toggle-content">
|
||||
|
@@ -2,14 +2,14 @@
|
||||
<thead class="trace-head">
|
||||
<tr>
|
||||
<th class="sf-toggle" data-toggle-selector="#trace-text-<?= $index; ?>" data-toggle-initial="<?= 1 === $index ? 'display' : ''; ?>">
|
||||
<h3 class="trace-class">
|
||||
<div class="trace-class">
|
||||
<?php if ($numExceptions > 1) { ?>
|
||||
<span class="text-muted">[<?= $numExceptions - $index + 1; ?>/<?= $numExceptions; ?>]</span>
|
||||
<?php } ?>
|
||||
<?= ($parts = explode('\\', $exception['class'])) ? end($parts) : ''; ?>
|
||||
<span class="icon icon-close"><?= $this->include('assets/images/icon-minus-square-o.svg'); ?></span>
|
||||
<span class="icon icon-open"><?= $this->include('assets/images/icon-plus-square-o.svg'); ?></span>
|
||||
</h3>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
Reference in New Issue
Block a user