router.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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('currentWidget', 'home');
  20. Session.set('menuWidgetIsOpen', false);
  21. },
  22. waitOn: function() {
  23. var params = this.params;
  24. Session.set('currentBoard', params._id);
  25. Session.set('currentCard', null);
  26. return boardSubsManager.subscribe('board', params._id, params.slug);
  27. },
  28. data: function() {
  29. return Boards.findOne(this.params._id);
  30. }
  31. });
  32. Router.route('/boards/:boardId/:slug/:cardId', {
  33. name: 'Card',
  34. template: 'board',
  35. onAfterAction: function() {
  36. Tracker.nonreactive(function() {
  37. if (! Session.get('currentCard') && typeof Sidebar !== 'undefined') {
  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. });