openmedialibrary/static/js/errorDialog.js

79 lines
2.2 KiB
JavaScript

'use strict';
oml.ui.errorDialog = function() {
var ui = oml.user.ui,
that = oml.ui.iconDialog({
buttons: getButtons(),
content: Ox.Element(),
keys: {enter: 'close', escape: 'close'}
})
.addClass('OxErrorDialog')
.bindEvent({
oml_enabledebugmenu: function() {
that.options({buttons: getButtons()});
}
}),
open = that.open;
function getButtons() {
return (ui.enableDebugMenu ? [
Ox.Button({
style: 'squared',
title: Ox._('View Error Logs...')
})
.bindEvent({
click: function() {
that.close();
oml.UI.set({page: 'errorlogs'});
}
}),
{}
] : []).concat([
Ox.Button({
id: 'close',
style: 'squared',
title: Ox._('Close')
})
.bindEvent({
click: function() {
that.close();
}
})
]);
}
that.open = function() {
// on window unload, pending request will time out, so
// in order to keep the dialog from appearing, delay it
setTimeout(function() {
if ($('.OxErrorDialog').length == 0 && !oml.isUnloading) {
open();
}
}, 250);
return that;
};
that.updateElement = function(data) {
// 0 (timeout) or 500 (error)
var error = data.status.code == 0 ? 'a timeout' : 'an error',
title = data.status.code == 0 ? 'Timeout' : 'Error';
that.options({
content: Ox.Element().html(
Ox._(
'Sorry, {0} occured while handling your request.'
+ ' In case this happens repeatedly, you may want to file a bug report.'
+ ' Otherwise, please try again later.', [error]
)
),
title: title
});
return that;
}
return that;
};