| 
<div class="container-fluid"><div class="row">
 <div class="col-md-3 order-2 order-md-1">
 <div class="sticky-top">
 <div class="pretty-scrollbar">
 <?php
 $errors = null;
 
 if ($logs) {
 foreach ($logs as $key => $val) {
 $errors .= '
 <li class="list-group-item px-0">
 <a href="' . current_page('remove', ['log' => $val]) . '" class="float-end text-danger --modal" data-bs-toggle="tooltip" title="' . phrase('Remove') . '">
 <i class="mdi mdi-window-close"></i>
 </a>
 <a href="' . current_page(null, ['report' => $val]) . '" class="' . ($val == service('request')->getGet('report') ? ' fw-bold' : null) . ' --xhr">' . $val . '</a>
 </li>
 ';
 }
 
 echo '
 <div class="d-grid mt-3 mb-3">
 <a href="' . current_page('clear') . '" class="btn btn-danger btn-sm --modal">
 <i class="mdi mdi-delete-empty"></i>
 ' . phrase('Clear Logs') . '
 </a>
 </div>
 <ul class="list-group list-group-flush">
 ' . $errors . '
 </ul>
 ';
 } else {
 echo '<div class="pt-3 pb-3">' . phrase('No error log') . '</div>';
 }
 ?>
 </div>
 </div>
 </div>
 <div class="col-md-9 order-1 order-md-2 stretch-height">
 <div class="sticky-top">
 <?php
 if ($report) {
 $errors = [];
 $num = 0;
 
 foreach ($report as $key => $val) {
 if (! $val || ! trim($val)) {
 continue;
 }
 
 $title = null;
 
 if (strpos($val, 'CRITICAL - ') !== false || strpos($val, 'ALERT - ') !== false || strpos($val, 'EMERGENCY - ') !== false || strpos($val, 'DEBUG - ') !== false || strpos($val, 'ERROR - ') !== false || strpos($val, 'INFO - ') !== false || strpos($val, 'NOTICE - ') !== false || strpos($val, 'WARNING - ') !== false) {
 $errors[$num] = [
 'title' => $val,
 'traces' => []
 ];
 
 $num++;
 } elseif (isset($errors[$num - 1])) {
 $errors[$num - 1]['traces'][] = htmlspecialchars($val);
 }
 }
 
 foreach($errors as $key => $val) {
 $traces = null;
 
 foreach($val['traces'] as $_key => $_val) {
 $traces .= '<li>' . preg_replace('/^[\d\\s]+/', '', $_val) . '</li>';
 }
 
 echo '
 <div>
 <h6 class="text-danger">
 ' . $val['title'] . '
 </h6>
 ' . ($traces ? '<ol>' . $traces . '</ol>' : null) . '
 </div>
 ';
 }
 } else {
 echo '<div class="pt-3 pb-3">' . ($errors ? phrase('Click on the log file to show the error details.') : phrase('Yay! Your application is working fine.')) . '</div>';
 }
 ?>
 </div>
 </div>
 </div>
 </div>
 
 <script type="text/javascript">
 $(document).ready(function() {
 if (UA !== 'mobile') {
 $('.stretch-height').css({
 minHeight: $(window).outerHeight(true) - (($('[role=header]').outerHeight(true) ?? 0) + ($('[role=breadcrumb]').outerHeight(true) ?? 0) + ($('[role=meta]').outerHeight(true) ?? 0)),
 borderLeft: '1px solid rgba(0,0,0,.2)'
 });
 
 if (typeof mCustomScrollbar === 'function') {
 $('.pretty-scrollbar').mCustomScrollbar({
 autoHideScrollbar: true,
 axis: 'y',
 scrollInertia: 170,
 mouseWheelPixels: 170,
 setHeight:  $(window).outerHeight(true) - (($('[role=header]').outerHeight(true) ?? 0) + ($('[role=breadcrumb]').outerHeight(true) ?? 0) + ($('[role=meta]').outerHeight(true) ?? 0)),
 advanced:
 {
 updateOnContentResize: true
 },
 autoHideScrollbar: false
 })
 }
 }
 })
 </script>
 
 |