diff --git a/js/src/error_report.js b/js/src/error_report.js index ab7a5a713f..9763e3a3d5 100644 --- a/js/src/error_report.js +++ b/js/src/error_report.js @@ -98,12 +98,18 @@ var ErrorReport = { }; $.post('index.php?route=/error-report', reportData).done(function (data) { + // Delete the modal to refresh it in case the user changed SendErrorReports value + if (document.getElementById('errorReportModal') !== null) { + $('#errorReportModal').remove(); + } + + $('body').append($(data.report_modal)); const $errorReportModal = $('#errorReportModal'); $errorReportModal.on('show.bs.modal', function () { // Prevents multiple onClick events $('#errorReportModalConfirm').off('click', sendErrorReport); $('#errorReportModalConfirm').on('click', sendErrorReport); - this.querySelector('.modal-body').innerHTML = data.message; + $('#errorReportModal .modal-body').html(data.message); }); $errorReportModal.modal('show'); }); diff --git a/libraries/classes/Controllers/ErrorReportController.php b/libraries/classes/Controllers/ErrorReportController.php index 30a689fc72..1e12ae4c2c 100644 --- a/libraries/classes/Controllers/ErrorReportController.php +++ b/libraries/classes/Controllers/ErrorReportController.php @@ -162,6 +162,7 @@ class ErrorReportController extends AbstractController } elseif (! empty($_POST['get_settings'])) { $this->response->addJSON('report_setting', $cfg['SendErrorReports']); } elseif ($_POST['exception_type'] === 'js') { + $this->response->addJSON('report_modal', $this->errorReport->getEmptyModal()); $this->response->addHTML($this->errorReport->getForm()); } else { // clear previous errors & save new ones. diff --git a/libraries/classes/ErrorReport.php b/libraries/classes/ErrorReport.php index 1ee533bee4..9ff1dacad8 100644 --- a/libraries/classes/ErrorReport.php +++ b/libraries/classes/ErrorReport.php @@ -287,6 +287,7 @@ class ErrorReport 'report_data' => $reportData, 'hidden_inputs' => Url::getHiddenInputs(), 'hidden_fields' => null, + 'allowed_to_send_error_reports' => $this->config->get('SendErrorReports') !== 'never', ]; if (! empty($reportData)) { @@ -295,4 +296,11 @@ class ErrorReport return $this->template->render('error/report_form', $datas); } + + public function getEmptyModal(): string + { + return $this->template->render('error/report_modal', [ + 'allowed_to_send_error_reports' => $this->config->get('SendErrorReports') !== 'never', + ]); + } } diff --git a/libraries/classes/Footer.php b/libraries/classes/Footer.php index b80679fc33..9bf2dbbab3 100644 --- a/libraries/classes/Footer.php +++ b/libraries/classes/Footer.php @@ -363,7 +363,6 @@ class Footer 'is_demo' => $GLOBALS['cfg']['DBG']['demo'], 'demo_message' => $demoMessage ?? '', 'footer' => $footer ?? '', - 'has_error_report_modal' => $GLOBALS['cfg']['SendErrorReports'] !== 'never', ]); } diff --git a/templates/error/report_form.twig b/templates/error/report_form.twig index eedec7574f..07b21265f0 100644 --- a/templates/error/report_form.twig +++ b/templates/error/report_form.twig @@ -1,3 +1,4 @@ +{% if allowed_to_send_error_reports %}
{% trans %} This report automatically includes data about the error and information about relevant configuration settings. It will be sent to the phpMyAdmin team for debugging the error. @@ -28,3 +29,8 @@ {{ hidden_inputs|raw }} {{ hidden_fields|raw }} +{% else %} +
{{ report_data|json_encode(constant('JSON_PRETTY_PRINT') b-or constant('JSON_UNESCAPED_SLASHES')) }}
+