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:
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()));