'use strict'; pandora.ui.errorDialog = function(data) { var that, error, showLogsButton; //dont open dialog on unload or if antoher error is open //fixme: error dialog should updated instead if ($('.OxErrorDialog').length || pandora.isUnloading) { return; } if (data.status.code == 401 || data.status.code == 403) { that = pandora.ui.iconDialog({ buttons: [ Ox.Button({ id: 'close', title: Ox._('Close') }) .bindEvent({ click: function() { that.close(); } }) ], content: Ox._('Sorry, you have made an unauthorized request.'), keys: {enter: 'close', escape: 'close'}, title: Ox.toTitleCase(data.status.text) }) .addClass('OxErrorDialog') .open(); } else { // 0 (timeout) or 500 (error) error = data.status.code == 0 ? 'timeout' : 'error'; // 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 && !pandora.isUnloading) { showLogsButton = error == 'error' && pandora.hasCapability('canSeeDebugMenu') that = pandora.ui.iconDialog({ buttons: (showLogsButton ? [ Ox.Button({ title: Ox._('View Error Logs...') }) .bindEvent({ click: function() { that.close(); pandora.$ui.errorlogsDialog = pandora.ui.errorlogsDialog().open(); } }), {} ] : []).concat([ Ox.Button({ id: 'close', title: Ox._('Close') }) .bindEvent({ click: function() { that.close(); } }) ]), content: Ox._('Sorry, a server {0}' + ' occurred while handling your request.' + ' To help us find out what went wrong,' + ' you may want to report this error to an administrator.' + ' Otherwise, please try again later.', [error]), keys: {enter: 'close', escape: 'close'}, title: Ox._('Server {0}', [Ox.toTitleCase(error)]) }) .addClass('OxErrorDialog') .open(); } }, 250); } };