misago.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import Ember from 'ember';
  2. import DocumentTitle from 'misago/mixins/document-title';
  3. import ResetScroll from 'misago/mixins/reset-scroll';
  4. import ModelUrlName from 'misago/mixins/model-url-name';
  5. export default Ember.Route.extend(DocumentTitle, ResetScroll, ModelUrlName, {
  6. // Shorthand for validating page number
  7. cleanPage: function(page, transition) {
  8. var cleanPage = parseInt(page);
  9. if ("" + cleanPage === page && cleanPage > 0) {
  10. if (cleanPage > 1) {
  11. // return page number for an app
  12. return cleanPage;
  13. } else {
  14. // redirect to first page
  15. var routePath = transition.targetName.split('.');
  16. routePath[routePath.length - 1] = 'index';
  17. this.transitionTo(routePath.join('.'));
  18. }
  19. } else {
  20. this.throw404(); // not a valid page number
  21. }
  22. },
  23. // Shorthands for raising errors
  24. throw403: function(reason) {
  25. if (reason) {
  26. throw {
  27. status: 403,
  28. responseJSON: {
  29. detail: reason
  30. }
  31. };
  32. } else {
  33. throw { status: 403 };
  34. }
  35. },
  36. throw404: function() {
  37. throw { status: 404 };
  38. }
  39. });