router.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. Meteor.subscribe('boards');
  2. var boardSubsManager = new SubsManager();
  3. Router.route('/boards', {
  4. name: 'Boards',
  5. template: 'boards',
  6. authenticated: true,
  7. onBeforeAction: function() {
  8. Session.set('currentBoard', '');
  9. Filter.reset();
  10. this.next();
  11. }
  12. });
  13. Router.route('/boards/:_id/:slug', {
  14. name: 'Board',
  15. template: 'board',
  16. onAfterAction: function() {
  17. // XXX We probably shouldn't rely on Session
  18. Session.set('sidebarIsOpen', true);
  19. Session.set('menuWidgetIsOpen', false);
  20. },
  21. waitOn: function() {
  22. var params = this.params;
  23. Session.set('currentBoard', params._id);
  24. Session.set('currentCard', null);
  25. return boardSubsManager.subscribe('board', params._id, params.slug);
  26. },
  27. data: function() {
  28. return Boards.findOne(this.params._id);
  29. }
  30. });
  31. Router.route('/boards/:boardId/:slug/:cardId', {
  32. name: 'Card',
  33. template: 'board',
  34. noEscapeActions: true,
  35. onAfterAction: function() {
  36. Tracker.nonreactive(function() {
  37. if (! Session.get('currentCard') && Sidebar) {
  38. Sidebar.hide();
  39. }
  40. });
  41. var params = this.params;
  42. Session.set('currentBoard', params.boardId);
  43. Session.set('currentCard', params.cardId);
  44. },
  45. waitOn: function() {
  46. var params = this.params;
  47. return boardSubsManager.subscribe('board', params.boardId, params.slug);
  48. },
  49. data: function() {
  50. return Boards.findOne(this.params.boardId);
  51. }
  52. });
  53. // Close the card details pane by pressing escape
  54. EscapeActions.register('detailsPane',
  55. function() { Utils.goBoardId(Session.get('currentBoard')); },
  56. function() { return ! Session.equals('currentCard', null); }
  57. );