openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 3fe4d90ebd25f34cf6866fa7c9ef6e4d141a163b
parent 010c48b233a0c25ac56c86beda0ee663e5201874
Author: Jan Dankert <develop@jandankert.de>
Date:   Mon, 13 Jun 2022 22:00:39 +0200

Fix: Show the error description in the UI notice.

Diffstat:
Mmodules/cms/output/APIOutput.class.php | 23++++++++++++++---------
Mmodules/cms/ui/themes/default/script/openrat/api.js | 12++++++++----
Mmodules/cms/ui/themes/default/script/openrat/notice.js | 2+-
3 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/modules/cms/output/APIOutput.class.php b/modules/cms/output/APIOutput.class.php @@ -24,15 +24,15 @@ abstract class APIOutput extends BaseOutput private static function exceptionToArray($e) { $data = array( - 'error'=>get_class($e), - 'description'=>$e->getMessage(), - 'code'=>$e->getCode(), + 'error' => get_class($e), + 'description'=> $e->getMessage(), + 'code' => $e->getCode(), 'trace'=>array_merge( array( array( - 'file'=>$e->getFile(), - 'line'=>$e->getLine(), - 'function'=>'', - 'class' => '' + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'function' => '', + 'class' => '', )), self::removeArgsFromTrace($e->getTrace())) ); @@ -101,14 +101,19 @@ abstract class APIOutput extends BaseOutput abstract protected function renderOutput( $data ); + /** + * @param string $text + * @param Exception $cause + */ protected function setError($text, $cause) { $data = [ 'message' => $text, 'notices' => [ [ - 'status'=>'error', - 'text' =>$text, + 'status'=> 'error', + 'text' => $text, + 'log' => (!defined('DEVELOPMENT') || DEVELOPMENT) ? $cause->getMessage() : '', ] ], 'errors' => [], diff --git a/modules/cms/ui/themes/default/script/openrat/api.js b/modules/cms/ui/themes/default/script/openrat/api.js @@ -65,18 +65,22 @@ export default class Api { data : formData, } ); - let msg = ''; + let msg = ''; + let description = ''; try { - msg = JSON.parse( cause ).message; + let parsedCause = JSON.parse( cause ); + msg = parsedCause.message; + description = parsedCause.cause.description; } catch( e ) { - msg = cause; + msg = 'Internal CMS error'; + description = cause + "\n\n" + e; } let notice = new Notice(); notice.setStatus('error'); notice.msg = msg; - notice.log = cause; //JSON.stringify( $.parseJSON(jqXHR.responseText),null,2); + notice.log = description; notice.show(); reject( msg ); diff --git a/modules/cms/ui/themes/default/script/openrat/notice.js b/modules/cms/ui/themes/default/script/openrat/notice.js @@ -87,7 +87,7 @@ export default class Notice { } if (this.log) - this.element.append( $.create('div').addClass('notice-log').addClass('collapsible-value').append( $.create('pre').text(Notice.htmlEntities(this.log)))); + this.element.append( $.create('div').addClass('notice-log').addClass('collapsible-value').append( $.create('pre').text(this.log))); this.element.append( $.create('div').addClass('notice-date').addClass('collapsible-value').text(new Date().toLocaleTimeString()));