router.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. EscapeActions.executeUpTo('popup');
  42. var params = this.params;
  43. Session.set('currentBoard', params.boardId);
  44. Session.set('currentCard', params.cardId);
  45. },
  46. waitOn: function() {
  47. var params = this.params;
  48. return boardSubsManager.subscribe('board', params.boardId, params.slug);
  49. },
  50. data: function() {
  51. return Boards.findOne(this.params.boardId);
  52. }
  53. });