application.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import Ember from 'ember';
  2. export default Ember.Route.extend({
  3. actions: {
  4. // Error handlers
  5. error: function(reason) {
  6. if (reason.status === 0) {
  7. this.get('page-title').setTitle(gettext('Connection lost'));
  8. return this.intermediateTransitionTo('error-0');
  9. }
  10. if (typeof reason.responseJSON !== 'undefined' && typeof reason.responseJSON.ban !== 'undefined') {
  11. this.get('page-title').setTitle(gettext('You are banned'));
  12. return this.intermediateTransitionTo('error-banned', reason.responseJSON.ban);
  13. }
  14. if (reason.status === 403) {
  15. this.get('page-title').setTitle(gettext('Page not available'));
  16. var final_error = {status: 403, message: null};
  17. if (typeof reason.responseJSON !== 'undefined' && typeof reason.responseJSON.detail !== 'undefined' && reason.responseJSON.detail !== 'Permission denied') {
  18. final_error.message = reason.responseJSON.detail;
  19. }
  20. return this.intermediateTransitionTo('error-403', final_error);
  21. }
  22. if (reason.status === 404) {
  23. this.get('page-title').setTitle(gettext('Page not found'));
  24. return this.intermediateTransitionTo('error-404');
  25. }
  26. this.get('page-title').setTitle(gettext('Error'));
  27. return true;
  28. },
  29. toastError: function(reason) {
  30. var errorMessage = gettext('Unknown error has occured.');
  31. if (reason.status === 0) {
  32. errorMessage = gettext('Lost connection with application.');
  33. }
  34. if (reason.status === 403) {
  35. if (typeof reason.responseJSON !== 'undefined' && typeof reason.responseJSON.detail !== 'undefined' && reason.responseJSON.detail !== 'Permission denied') {
  36. errorMessage = reason.responseJSON.detail;
  37. } else {
  38. errorMessage = gettext("You don't have permission to perform this action.");
  39. }
  40. }
  41. if (reason.status === 404) {
  42. errorMessage = gettext('Action link is invalid.');
  43. }
  44. this.get('toast').error(errorMessage);
  45. },
  46. showBan: function(ban) {
  47. this.get('page-title').setTitle(gettext('You are banned'));
  48. this.intermediateTransitionTo('error-banned', ban);
  49. },
  50. // Auth
  51. openLoginModal: function() {
  52. this.controllerFor("loginModal").send('open');
  53. },
  54. logOut: function() {
  55. this.get('auth').logout();
  56. Ember.$('#hidden-logout-form').submit();
  57. }
  58. }
  59. });