remove old fatalError(), move everything to App.Error
update exception dialog css
This commit is contained in:
parent
071ca5aa96
commit
7a98105960
|
@ -577,14 +577,21 @@ body.ttrss_main #feed_browser_spinner {
|
||||||
height: 18px;
|
height: 18px;
|
||||||
width: 18px;
|
width: 18px;
|
||||||
}
|
}
|
||||||
body.ttrss_main .error-contents .message {
|
body.ttrss_main #exceptionDlg .dijitDialogTitleBar {
|
||||||
|
background: red;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
body.ttrss_main #exceptionDlg .dijitDialogPaneContent {
|
||||||
|
background: #fcc;
|
||||||
|
}
|
||||||
|
body.ttrss_main #exceptionDlg .error-contents .message {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
body.ttrss_main .error-contents textarea {
|
body.ttrss_main #exceptionDlg .error-contents textarea {
|
||||||
width: 99%;
|
width: 99%;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
}
|
}
|
||||||
body.ttrss_main .error-contents .dlgButtons {
|
body.ttrss_main #exceptionDlg .error-contents .dlgButtons {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
body.ttrss_main #content-wrap {
|
body.ttrss_main #content-wrap {
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -676,6 +676,16 @@ body.ttrss_main {
|
||||||
width : 18px;
|
width : 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#exceptionDlg {
|
||||||
|
.dijitDialogTitleBar {
|
||||||
|
background : red;
|
||||||
|
color : white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dijitDialogPaneContent {
|
||||||
|
background : #fcc;
|
||||||
|
}
|
||||||
|
|
||||||
.error-contents {
|
.error-contents {
|
||||||
.message {
|
.message {
|
||||||
color : red;
|
color : red;
|
||||||
|
@ -689,6 +699,7 @@ body.ttrss_main {
|
||||||
text-align : center;
|
text-align : center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#content-wrap {
|
#content-wrap {
|
||||||
padding : 0px;
|
padding : 0px;
|
||||||
|
|
|
@ -191,17 +191,17 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
const reply = JSON.parse(transport.responseText);
|
const reply = JSON.parse(transport.responseText);
|
||||||
|
|
||||||
if (reply) {
|
if (reply) {
|
||||||
|
|
||||||
const error = reply['error'];
|
const error = reply['error'];
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
const code = error['code'];
|
const code = error['code'];
|
||||||
const msg = error['msg'];
|
const msg = error['message'];
|
||||||
|
|
||||||
console.warn("[handleRpcJson] received fatal error " + code + "/" + msg);
|
console.warn("[handleRpcJson] received fatal error ", code, msg);
|
||||||
|
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
fatalError(code, msg);
|
/* global ERRORS */
|
||||||
|
this.Error.fatal(ERRORS[code], {info: msg, code: code});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -299,18 +299,22 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data);
|
PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data);
|
||||||
},
|
},
|
||||||
backendSanityCallback: function (transport) {
|
backendSanityCallback: function (transport) {
|
||||||
|
|
||||||
const reply = JSON.parse(transport.responseText);
|
const reply = JSON.parse(transport.responseText);
|
||||||
|
|
||||||
|
/* global ERRORS */
|
||||||
|
|
||||||
if (!reply) {
|
if (!reply) {
|
||||||
fatalError(3, "Sanity check: invalid RPC reply", transport.responseText);
|
this.Error.fatal(ERRORS[3], {info: transport.responseText});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const error_code = reply['error']['code'];
|
if (reply['error']) {
|
||||||
|
const code = reply['error']['code'];
|
||||||
|
|
||||||
if (error_code && error_code != 0) {
|
if (code && code != 0) {
|
||||||
return fatalError(error_code, reply['error']['message']);
|
return this.Error.fatal(ERRORS[code],
|
||||||
|
{code: code, info: reply['error']['message']});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("sanity check ok");
|
console.log("sanity check ok");
|
||||||
|
@ -387,6 +391,22 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
return this.displayDlg(__("Error explained"), "explainError", code);
|
return this.displayDlg(__("Error explained"), "explainError", code);
|
||||||
},
|
},
|
||||||
Error: {
|
Error: {
|
||||||
|
fatal: function (error, params) {
|
||||||
|
params = params || {};
|
||||||
|
|
||||||
|
if (params.code) {
|
||||||
|
if (params.code == 6) {
|
||||||
|
window.location.href = "index.php";
|
||||||
|
return;
|
||||||
|
} else if (params.code == 5) {
|
||||||
|
window.location.href = "public.php?op=dbupdate";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.report(error,
|
||||||
|
Object.extend({title: __("Fatal error")}, params));
|
||||||
|
},
|
||||||
report: function(error, params) {
|
report: function(error, params) {
|
||||||
params = params || {};
|
params = params || {};
|
||||||
|
|
||||||
|
@ -414,10 +434,19 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
if (dijit.byId("exceptionDlg"))
|
if (dijit.byId("exceptionDlg"))
|
||||||
dijit.byId("exceptionDlg").destroyRecursive();
|
dijit.byId("exceptionDlg").destroyRecursive();
|
||||||
|
|
||||||
|
let stack_msg = "";
|
||||||
|
|
||||||
|
if (error.stack)
|
||||||
|
stack_msg += `<div><b>Stack trace:</b></div>
|
||||||
|
<textarea name="stack" readonly="1">${error.stack}</textarea>`;
|
||||||
|
|
||||||
|
if (params.info)
|
||||||
|
stack_msg += `<div><b>Additional information:</b></div>
|
||||||
|
<textarea name="stack" readonly="1">${params.info}</textarea>`;
|
||||||
|
|
||||||
let content = `<div class="error-contents">
|
let content = `<div class="error-contents">
|
||||||
<p class="message">${message}</p>
|
<p class="message">${message}</p>
|
||||||
<div><b>Stack trace:</b></div>
|
${stack_msg}
|
||||||
<textarea name="stack" readonly="1">${error.stack}</textarea>
|
|
||||||
<div class="dlgButtons">
|
<div class="dlgButtons">
|
||||||
<button dojoType="dijit.form.Button"
|
<button dojoType="dijit.form.Button"
|
||||||
onclick=\"dijit.byId('exceptionDlg').hide()">${__('Close this window')}</button>
|
onclick=\"dijit.byId('exceptionDlg').hide()">${__('Close this window')}</button>
|
||||||
|
@ -426,7 +455,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
|
|
||||||
const dialog = new dijit.Dialog({
|
const dialog = new dijit.Dialog({
|
||||||
id: "exceptionDlg",
|
id: "exceptionDlg",
|
||||||
title: "Unhandled exception",
|
title: params.title || __("Unhandled exception"),
|
||||||
style: "width: 600px",
|
style: "width: 600px",
|
||||||
content: content
|
content: content
|
||||||
});
|
});
|
||||||
|
|
45
js/common.js
45
js/common.js
|
@ -246,51 +246,6 @@ function displayIfChecked(checkbox, elemId) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function fatalError(code, msg, ext_info) {
|
|
||||||
if (code == 6) {
|
|
||||||
window.location.href = "index.php";
|
|
||||||
} else if (code == 5) {
|
|
||||||
window.location.href = "public.php?op=dbupdate";
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (msg == "") msg = "Unknown error";
|
|
||||||
|
|
||||||
if (ext_info) {
|
|
||||||
if (ext_info.responseText) {
|
|
||||||
ext_info = ext_info.responseText;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* global ERRORS */
|
|
||||||
if (ERRORS && ERRORS[code] && !msg) {
|
|
||||||
msg = ERRORS[code];
|
|
||||||
}
|
|
||||||
|
|
||||||
let content = `<div><b>Error code:</b> ${code} </div>
|
|
||||||
<p>${msg}</p>`;
|
|
||||||
|
|
||||||
if (ext_info) {
|
|
||||||
content = content + `<div><b>Additional information:</b></div>
|
|
||||||
<textarea style='width: 100%' readonly="1">${ext_info}</textarea>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
content += `<div style='text-align : center'>
|
|
||||||
<button dojoType="dijit.form.Button" onclick="window.location.reload()">
|
|
||||||
${__('Try again')}</button></div>`;
|
|
||||||
|
|
||||||
const dialog = new dijit.Dialog({
|
|
||||||
title: "Fatal error",
|
|
||||||
style: "width: 600px",
|
|
||||||
content: content});
|
|
||||||
|
|
||||||
dialog.show();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* function strip_tags(s) {
|
/* function strip_tags(s) {
|
||||||
return s.replace(/<\/?[^>]+(>|$)/g, "");
|
return s.replace(/<\/?[^>]+(>|$)/g, "");
|
||||||
} */
|
} */
|
||||||
|
|
|
@ -103,7 +103,7 @@ require(["dojo/_base/kernel",
|
||||||
});
|
});
|
||||||
|
|
||||||
if (errorMsg) {
|
if (errorMsg) {
|
||||||
fatalError(4, errorMsg, navigator.userAgent);
|
this.Error.fatal(errorMsg, {info: navigator.userAgent});
|
||||||
}
|
}
|
||||||
|
|
||||||
return errorMsg == "";
|
return errorMsg == "";
|
||||||
|
|
|
@ -577,14 +577,21 @@ body.ttrss_main #feed_browser_spinner {
|
||||||
height: 18px;
|
height: 18px;
|
||||||
width: 18px;
|
width: 18px;
|
||||||
}
|
}
|
||||||
body.ttrss_main .error-contents .message {
|
body.ttrss_main #exceptionDlg .dijitDialogTitleBar {
|
||||||
|
background: red;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
body.ttrss_main #exceptionDlg .dijitDialogPaneContent {
|
||||||
|
background: #fcc;
|
||||||
|
}
|
||||||
|
body.ttrss_main #exceptionDlg .error-contents .message {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
body.ttrss_main .error-contents textarea {
|
body.ttrss_main #exceptionDlg .error-contents textarea {
|
||||||
width: 99%;
|
width: 99%;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
}
|
}
|
||||||
body.ttrss_main .error-contents .dlgButtons {
|
body.ttrss_main #exceptionDlg .error-contents .dlgButtons {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
body.ttrss_main #content-wrap {
|
body.ttrss_main #content-wrap {
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue