wekan/client/config/router.js
Maxime Quandalle 92dd05d06d Click on the page to escape the last action
This is a generalization of what we had for closing a popup by
clicking outside of it. It now works for inlinedForms and detailsPane
as well.
2015-06-07 10:34:19 +02:00

44 lines
1.3 KiB
JavaScript

// 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();
}
});