|
@@ -1,44 +1,57 @@
|
|
|
-// XXX Switch to Flow-Router?
|
|
|
-var previousRoute;
|
|
|
-
|
|
|
-Router.configure({
|
|
|
- loadingTemplate: 'spinner',
|
|
|
- notFoundTemplate: 'notfound',
|
|
|
- layoutTemplate: 'defaultLayout',
|
|
|
-
|
|
|
- onBeforeAction: function() {
|
|
|
- var options = this.route.options;
|
|
|
-
|
|
|
- var loggedIn = Tracker.nonreactive(function() {
|
|
|
- return !! Meteor.userId();
|
|
|
- });
|
|
|
-
|
|
|
- // Redirect logged in users to Boards view when they try to open Login or
|
|
|
- // signup views.
|
|
|
- if (loggedIn && options.redirectLoggedInUsers) {
|
|
|
- return this.redirect('Boards');
|
|
|
- }
|
|
|
-
|
|
|
- // Authenticated
|
|
|
- if (! loggedIn && options.authenticated) {
|
|
|
- return this.redirect('atSignIn');
|
|
|
- }
|
|
|
-
|
|
|
- // We want to execute our EscapeActions.executeUpTo method any time the
|
|
|
- // route is changed, but not if the stays the same but only the parameters
|
|
|
- // change (eg when a user is navigation from a card A to a card B). Iron-
|
|
|
- // Router onBeforeAction is a reactive context (which is a bad desig choice
|
|
|
- // as explained in
|
|
|
- // https://github.com/meteorhacks/flow-router#routercurrent-is-evil) so we
|
|
|
- // need to use Tracker.nonreactive
|
|
|
- Tracker.nonreactive(function() {
|
|
|
- if (! options.noEscapeActions &&
|
|
|
- ! (previousRoute && previousRoute.options.noEscapeActions))
|
|
|
- EscapeActions.executeAll();
|
|
|
- });
|
|
|
-
|
|
|
- previousRoute = this.route;
|
|
|
-
|
|
|
- this.next();
|
|
|
+FlowRouter.route('/', {
|
|
|
+ name: 'home',
|
|
|
+ triggersEnter: [AccountsTemplates.ensureSignedIn],
|
|
|
+ action: function() {
|
|
|
+ EscapeActions.executeAll();
|
|
|
+ Filter.reset();
|
|
|
+
|
|
|
+ Session.set('currentBoard', '');
|
|
|
+
|
|
|
+ BlazeLayout.render('defaultLayout', { content: 'boardList' });
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+FlowRouter.route('/b/:id/:slug', {
|
|
|
+ name: 'board',
|
|
|
+ action: function(params) {
|
|
|
+ EscapeActions.executeAll();
|
|
|
+
|
|
|
+ Session.set('currentBoard', params.id);
|
|
|
+ Session.set('currentCard', null);
|
|
|
+
|
|
|
+ BlazeLayout.render('defaultLayout', { content: 'board' });
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+FlowRouter.route('/b/:boardId/:slug/:cardId', {
|
|
|
+ name: 'card',
|
|
|
+ action: function(params) {
|
|
|
+ Session.set('currentBoard', params.boardId);
|
|
|
+ Session.set('currentCard', params.cardId);
|
|
|
+ EscapeActions.executeUpTo('popup');
|
|
|
+
|
|
|
+ BlazeLayout.render('defaultLayout', { content: 'board' });
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+FlowRouter.notFound = {
|
|
|
+ action: function() {
|
|
|
+ BlazeLayout.render('defaultLayout', { content: 'notFound' });
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+// We maintain a list of redirections to ensure that we don't break old URLs
|
|
|
+// when we change our routing scheme.
|
|
|
+var redirections = {
|
|
|
+ '/boards': '/',
|
|
|
+ '/boards/:id/:slug': '/b/:id/:slug',
|
|
|
+ '/boards/:id/:slug/:cardId': '/b/:id/:slug/:cardId'
|
|
|
+};
|
|
|
+
|
|
|
+_.each(redirections, function(newPath, oldPath) {
|
|
|
+ FlowRouter.route(oldPath, {
|
|
|
+ triggersEnter: [function(context, redirect) {
|
|
|
+ redirect(FlowRouter.path(newPath, context.params));
|
|
|
+ }]
|
|
|
+ });
|
|
|
});
|