2013-10-09 20:59:42 +09:00
|
|
|
/*
|
|
|
|
|
2013-10-10 11:41:11 +09:00
|
|
|
//--------------------------------------------------------------------------------------------------//
|
|
|
|
//---------------------------------------- Table Of Contents ---------------------------------------//
|
|
|
|
//--------------------------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
---------------------------------------------------------------
|
|
|
|
# Config #
|
|
|
|
---------------------------------------------------------------
|
|
|
|
|
|
|
|
//
|
|
|
|
|
2013-10-09 20:59:42 +09:00
|
|
|
---------------------------------------------------------------
|
2013-10-10 11:41:11 +09:00
|
|
|
# Filters #
|
2013-10-09 20:59:42 +09:00
|
|
|
---------------------------------------------------------------
|
|
|
|
|
2013-10-10 11:41:11 +09:00
|
|
|
isLoggedIn
|
|
|
|
isLoggedOut
|
|
|
|
isAdmin
|
|
|
|
|
|
|
|
canView
|
|
|
|
canPost
|
|
|
|
canEditPost
|
|
|
|
canEditComment
|
|
|
|
|
|
|
|
hasCompletedProfile
|
|
|
|
|
2013-10-12 11:59:34 +09:00
|
|
|
---------------------------------------------------------------
|
|
|
|
# Subscription Functions #
|
|
|
|
---------------------------------------------------------------
|
2013-10-10 11:41:11 +09:00
|
|
|
|
|
|
|
---------------------------------------------------------------
|
|
|
|
# Routes #
|
|
|
|
---------------------------------------------------------------
|
2013-10-09 20:59:42 +09:00
|
|
|
|
|
|
|
1) Paginated Lists
|
|
|
|
----------------------
|
|
|
|
Top
|
|
|
|
New
|
|
|
|
Best
|
|
|
|
Pending
|
|
|
|
Categories
|
|
|
|
|
|
|
|
2) Digest
|
|
|
|
--------------------
|
|
|
|
Digest
|
|
|
|
|
|
|
|
3) Posts
|
|
|
|
--------------------
|
|
|
|
Post Page
|
|
|
|
Post Page (scroll to comment)
|
|
|
|
Post Edit
|
|
|
|
Post Submit
|
|
|
|
|
|
|
|
4) Comments
|
|
|
|
--------------------
|
|
|
|
Comment Page
|
|
|
|
Comment Edit
|
|
|
|
Comment Submit
|
|
|
|
|
|
|
|
5) Users
|
|
|
|
--------------------
|
|
|
|
User Profie
|
|
|
|
User Edit
|
|
|
|
Forgot Password
|
|
|
|
Account
|
|
|
|
All Users
|
|
|
|
Unsubscribe (from notifications)
|
|
|
|
Sign Up
|
|
|
|
Sign In
|
|
|
|
|
|
|
|
6) Misc Routes
|
|
|
|
--------------------
|
|
|
|
Settings
|
2013-10-09 22:21:28 +09:00
|
|
|
Categories
|
2013-10-09 20:59:42 +09:00
|
|
|
Toolbox
|
|
|
|
|
2013-10-09 21:34:55 +09:00
|
|
|
|
|
|
|
|
2013-10-09 20:59:42 +09:00
|
|
|
*/
|
|
|
|
|
2013-10-10 11:41:11 +09:00
|
|
|
//--------------------------------------------------------------------------------------------------//
|
|
|
|
//--------------------------------------------- Config ---------------------------------------------//
|
|
|
|
//--------------------------------------------------------------------------------------------------//
|
|
|
|
|
2013-10-06 08:37:17 +09:00
|
|
|
Router.configure({
|
2013-10-12 11:44:29 +09:00
|
|
|
// autoRender: false,
|
|
|
|
layoutTemplate: 'layout',
|
2013-10-06 09:33:00 +09:00
|
|
|
loadingTemplate: 'loading',
|
2013-10-14 12:14:12 +09:00
|
|
|
notFoundTemplate: 'not_found',
|
2013-10-23 10:45:12 +08:00
|
|
|
after: function() {
|
2013-10-15 12:15:32 +09:00
|
|
|
console.log('// Routing to '+Router._currentController.template)
|
2013-10-14 12:14:12 +09:00
|
|
|
|
|
|
|
// currentScroll stores the position of the user in the page
|
|
|
|
Session.set('currentScroll', null);
|
|
|
|
|
|
|
|
$('body').css('min-height','0');
|
|
|
|
|
|
|
|
// set all errors who have already been seen to not show anymore
|
|
|
|
clearSeenErrors();
|
|
|
|
|
|
|
|
// log this request with mixpanel, etc
|
|
|
|
analyticsRequest();
|
|
|
|
}
|
2013-10-06 08:37:17 +09:00
|
|
|
});
|
|
|
|
|
2013-10-10 11:41:11 +09:00
|
|
|
//--------------------------------------------------------------------------------------------------//
|
|
|
|
//--------------------------------------------- Filters --------------------------------------------//
|
|
|
|
//--------------------------------------------------------------------------------------------------//
|
|
|
|
|
2013-10-12 11:59:34 +09:00
|
|
|
|
|
|
|
|
2013-10-10 11:41:11 +09:00
|
|
|
var filters = {
|
2013-10-13 10:27:49 +09:00
|
|
|
|
|
|
|
isLoggedIn: function() {
|
|
|
|
if (Meteor.loggingIn()) {
|
|
|
|
this.render('loading');
|
|
|
|
this.stop();
|
|
|
|
} else if (!Meteor.user()) {
|
|
|
|
this.render('user_signin');
|
|
|
|
this.stop();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
isLoggedOut: function() {
|
|
|
|
if(Meteor.user()){
|
|
|
|
this.render('already_logged_in');
|
|
|
|
this.stop();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
isAdmin: function() {
|
|
|
|
if(!isAdmin(Meteor.user())){
|
|
|
|
this.render('no_rights');
|
|
|
|
this.stop();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
canView: function() {
|
|
|
|
if(!canView(Meteor.user())){
|
|
|
|
this.render('no_rights');
|
|
|
|
this.stop();
|
|
|
|
}
|
|
|
|
},
|
2013-10-12 11:44:29 +09:00
|
|
|
|
|
|
|
canEditPost: function() {
|
|
|
|
var post = Posts.findOne(this.params._id);
|
|
|
|
if(!currentUserCanEdit(post)){
|
|
|
|
this.render('no_rights');
|
|
|
|
this.stop();
|
2013-10-10 11:41:11 +09:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2013-10-12 11:44:29 +09:00
|
|
|
canEditComment: function() {
|
|
|
|
var comment = Comments.findOne(this.params._id);
|
|
|
|
if(!currentUserCanEdit(comment)){
|
|
|
|
this.render('no_rights');
|
|
|
|
this.stop();
|
2013-10-10 11:41:11 +09:00
|
|
|
}
|
2013-10-13 10:27:49 +09:00
|
|
|
},
|
|
|
|
|
|
|
|
hasCompletedProfile: function() {
|
|
|
|
var user = Meteor.user();
|
|
|
|
if (user && ! Meteor.loggingIn() && ! userProfileComplete(user)){
|
|
|
|
// Session.set('selectedUserId', user._id);
|
|
|
|
this.render('user_email');
|
|
|
|
this.stop();
|
|
|
|
}
|
2013-10-12 11:44:29 +09:00
|
|
|
}
|
2013-10-10 11:41:11 +09:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2013-10-15 12:35:05 +09:00
|
|
|
// TODO: enable filters with "only"
|
|
|
|
|
|
|
|
// Meteor.Router.filter('requireProfile');
|
|
|
|
// Meteor.Router.filter('requireLogin', {only: ['comment_reply','post_submit']});
|
|
|
|
// Meteor.Router.filter('canView', {only: ['posts_top', 'posts_new', 'posts_digest', 'posts_best']});
|
|
|
|
// Meteor.Router.filter('isLoggedOut', {only: ['user_signin', 'user_signup']});
|
|
|
|
// Meteor.Router.filter('canPost', {only: ['posts_pending', 'comment_reply', 'post_submit']});
|
|
|
|
// Meteor.Router.filter('canEdit', {only: ['post_edit', 'comment_edit']});
|
|
|
|
// Meteor.Router.filter('requirePost', {only: ['post_page', 'post_edit']});
|
|
|
|
// Meteor.Router.filter('isAdmin', {only: ['posts_pending', 'users', 'settings', 'categories', 'admin']});
|
|
|
|
// Meteor.Router.filter('setRequestTimestamp', {only: ['post_page']});
|
|
|
|
|
|
|
|
|
2013-10-09 21:49:02 +09:00
|
|
|
//--------------------------------------------------------------------------------------------------//
|
|
|
|
//--------------------------------------------- Routes ---------------------------------------------//
|
|
|
|
//--------------------------------------------------------------------------------------------------//
|
2013-10-09 21:34:55 +09:00
|
|
|
|
2013-10-06 08:37:17 +09:00
|
|
|
Router.map(function() {
|
2013-10-06 09:33:00 +09:00
|
|
|
|
2013-10-15 12:35:05 +09:00
|
|
|
// TODO: put paginated subscriptions inside router
|
|
|
|
|
2013-10-09 20:59:42 +09:00
|
|
|
// Top
|
|
|
|
|
2013-10-12 11:59:34 +09:00
|
|
|
this.route('home', {
|
|
|
|
path: '/',
|
2013-10-12 13:01:16 +09:00
|
|
|
template:'posts_list',
|
2013-10-15 12:09:19 +09:00
|
|
|
// waitOn: postListSubscription(selectPosts, sortPosts('score'), 11),
|
2013-10-12 13:01:16 +09:00
|
|
|
after: function() {
|
|
|
|
Session.set('view', 'top');
|
|
|
|
}
|
2013-10-12 11:59:34 +09:00
|
|
|
});
|
|
|
|
|
|
|
|
this.route('posts_top', {
|
|
|
|
path: '/top',
|
2013-10-12 13:01:16 +09:00
|
|
|
template:'posts_list',
|
2013-10-15 12:09:19 +09:00
|
|
|
// waitOn: postListSubscription(selectPosts, sortPosts('score'), 11),
|
2013-10-12 13:01:16 +09:00
|
|
|
after: function() {
|
|
|
|
Session.set('view', 'top');
|
|
|
|
}
|
2013-10-12 11:59:34 +09:00
|
|
|
});
|
2013-10-09 22:21:28 +09:00
|
|
|
|
2013-10-09 20:59:42 +09:00
|
|
|
// New
|
|
|
|
|
2013-10-12 11:59:34 +09:00
|
|
|
this.route('posts_new', {
|
|
|
|
path: '/new',
|
2013-10-12 13:01:16 +09:00
|
|
|
template:'posts_list',
|
2013-10-15 12:09:19 +09:00
|
|
|
// waitOn: postListSubscription(selectPosts, sortPosts('submitted'), 12),
|
2013-10-12 13:01:16 +09:00
|
|
|
after: function() {
|
|
|
|
Session.set('view', 'new');
|
|
|
|
}
|
2013-10-12 11:59:34 +09:00
|
|
|
});
|
2013-10-09 22:21:28 +09:00
|
|
|
|
2013-10-09 20:59:42 +09:00
|
|
|
// Best
|
|
|
|
|
2013-10-12 11:59:34 +09:00
|
|
|
this.route('posts_best', {
|
|
|
|
path: '/best',
|
2013-10-12 13:01:16 +09:00
|
|
|
template:'posts_list',
|
2013-10-15 12:09:19 +09:00
|
|
|
// waitOn: postListSubscription(selectPosts, sortPosts('baseScore'), 13),
|
2013-10-12 13:01:16 +09:00
|
|
|
after: function() {
|
|
|
|
Session.set('view', 'best');
|
|
|
|
}
|
2013-10-12 11:59:34 +09:00
|
|
|
});
|
2013-10-09 22:21:28 +09:00
|
|
|
|
2013-10-09 20:59:42 +09:00
|
|
|
// Pending
|
|
|
|
|
2013-10-12 11:59:34 +09:00
|
|
|
this.route('posts_pending', {
|
|
|
|
path: '/pending',
|
2013-10-12 13:01:16 +09:00
|
|
|
template:'posts_list',
|
2013-10-15 12:09:19 +09:00
|
|
|
// waitOn: postListSubscription(function(){
|
|
|
|
// return selectPosts({status: STATUS_PENDING})
|
|
|
|
// }, sortPosts('createdAt'), 14),
|
2013-10-12 13:01:16 +09:00
|
|
|
after: function() {
|
|
|
|
Session.set('view', 'pending');
|
|
|
|
}
|
2013-10-12 11:59:34 +09:00
|
|
|
});
|
2013-10-09 22:21:28 +09:00
|
|
|
|
2013-10-09 20:59:42 +09:00
|
|
|
// Categories
|
|
|
|
|
2013-10-12 13:32:34 +09:00
|
|
|
this.route('category', {
|
|
|
|
path: '/c/:slug',
|
|
|
|
template:'posts_list',
|
2013-10-15 12:15:32 +09:00
|
|
|
// waitOn: postListSubscription(function(){
|
|
|
|
// // problem: :slug param is not accessible from here
|
|
|
|
// return selectPosts({status: STATUS_PENDING, slug: 'experiments'});
|
|
|
|
// }, sortPosts('score'), 15)
|
2013-10-12 14:57:39 +09:00
|
|
|
// waitOn: function(){
|
|
|
|
// problem: infinite loading screen
|
|
|
|
// var slug = this.params.slug;
|
|
|
|
// console.log(slug)
|
|
|
|
|
|
|
|
// return postListSubscription(function(){
|
|
|
|
// return selectPosts({status: STATUS_PENDING, slug: slug});
|
|
|
|
// }, sortPosts('createdAt'), 14);
|
|
|
|
// }
|
2013-10-15 12:15:32 +09:00
|
|
|
after: function() {
|
|
|
|
Session.set('view', 'category');
|
|
|
|
Session.set('categorySlug', this.params.slug);
|
|
|
|
}
|
2013-10-12 13:32:34 +09:00
|
|
|
});
|
2013-10-12 13:01:16 +09:00
|
|
|
|
2013-10-15 12:35:05 +09:00
|
|
|
// TODO: enable /category/new, /category/best, etc. views
|
|
|
|
|
2013-10-12 13:01:16 +09:00
|
|
|
// this.route('category_view', {
|
|
|
|
// path: '/c/:slug/:view',
|
|
|
|
// });
|
2013-10-15 12:35:05 +09:00
|
|
|
|
2013-10-09 11:32:36 +09:00
|
|
|
// Digest
|
2013-10-09 11:21:23 +09:00
|
|
|
|
|
|
|
this.route('posts_digest', {
|
2013-10-06 09:33:00 +09:00
|
|
|
path: '/digest/:year/:month/:day',
|
2013-10-12 12:24:41 +09:00
|
|
|
waitOn: function() {
|
2013-10-09 11:32:36 +09:00
|
|
|
currentDate = new Date(this.params.year, this.params.month-1, this.params.day);
|
|
|
|
Session.set('currentDate', currentDate);
|
|
|
|
return Meteor.subscribe('postDigest', currentDate);
|
2013-10-06 09:33:00 +09:00
|
|
|
},
|
|
|
|
data: function() {
|
2013-10-09 11:21:23 +09:00
|
|
|
return {
|
2013-10-09 11:32:36 +09:00
|
|
|
posts: findDigestPosts(moment(currentDate))
|
2013-10-09 11:21:23 +09:00
|
|
|
}
|
2013-10-06 09:33:00 +09:00
|
|
|
}
|
|
|
|
});
|
2013-10-06 08:37:17 +09:00
|
|
|
|
2013-10-09 21:49:02 +09:00
|
|
|
this.route('posts_digest_shortcut', {
|
|
|
|
path: '/digest',
|
|
|
|
template: 'posts_digest',
|
|
|
|
waitOn: function() {
|
2013-10-12 12:24:41 +09:00
|
|
|
// note: this runs twice for some reason? is 'today' changing?
|
|
|
|
currentDate = Session.get('today');
|
|
|
|
Session.set('currentDate', currentDate);
|
2013-10-09 21:49:02 +09:00
|
|
|
return Meteor.subscribe('postDigest', currentDate);
|
|
|
|
},
|
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
posts: findDigestPosts(moment(currentDate))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2013-10-12 11:44:29 +09:00
|
|
|
// -------------------------------------------- Post -------------------------------------------- //
|
|
|
|
|
2013-10-09 11:32:36 +09:00
|
|
|
// Post Page
|
|
|
|
|
2013-10-06 08:47:15 +09:00
|
|
|
this.route('post_page', {
|
|
|
|
path: '/posts/:_id',
|
2013-10-14 11:43:55 +09:00
|
|
|
waitOn: function() {
|
|
|
|
return [
|
|
|
|
Meteor.subscribe('singlePost', this.params._id),
|
2013-10-21 23:07:36 +08:00
|
|
|
Meteor.subscribe('comments', this.params._id),
|
2013-10-22 09:03:18 +08:00
|
|
|
Meteor.subscribe('postUsers', this.params._id)
|
2013-10-14 11:43:55 +09:00
|
|
|
];
|
2013-10-06 08:47:15 +09:00
|
|
|
},
|
2013-10-14 11:43:55 +09:00
|
|
|
template: 'post_page',
|
|
|
|
// before: function() {
|
|
|
|
// var postsHandle = Meteor.subscribe('singlePost', this.params._id);
|
|
|
|
// var commentsHandle = Meteor.subscribe('comments', { post : this.params._id })
|
|
|
|
// if(postsHandle.ready() && commentsHandle.ready()) {
|
|
|
|
// console.log('ready')
|
|
|
|
// } else {
|
|
|
|
// console.log('loading…')
|
|
|
|
// this.stop();
|
|
|
|
// }
|
|
|
|
// },
|
2013-10-06 08:47:15 +09:00
|
|
|
data: function() {
|
2013-10-21 17:47:30 +08:00
|
|
|
// note: do not pass actual post object in data property because we don't want the route to be reactive
|
|
|
|
// and re-run every time a post score changes
|
2013-10-09 11:21:23 +09:00
|
|
|
return {
|
2013-10-21 17:47:30 +08:00
|
|
|
postId: this.params._id
|
2013-10-09 20:11:58 +09:00
|
|
|
}
|
2013-10-21 23:07:36 +08:00
|
|
|
},
|
|
|
|
after: function() {
|
2013-10-23 08:14:06 +08:00
|
|
|
window.queueComments = false;
|
2013-10-23 10:40:29 +08:00
|
|
|
window.openedComments = [];
|
2013-10-09 20:11:58 +09:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2013-10-09 20:23:20 +09:00
|
|
|
// Post Page (scroll to a comment)
|
2013-10-23 10:45:12 +08:00
|
|
|
// TODO: merge this route with previous one using optional parameters
|
2013-10-09 20:11:58 +09:00
|
|
|
this.route('post_page_with_comment', {
|
|
|
|
path: '/posts/:_id/comment/:_commentId',
|
|
|
|
template: 'post_page',
|
|
|
|
waitOn: function() {
|
2013-10-09 21:49:02 +09:00
|
|
|
return [
|
|
|
|
Meteor.subscribe('singlePost', this.params._id),
|
2013-10-21 23:07:36 +08:00
|
|
|
Meteor.subscribe('comments', this.params._id ),
|
2013-10-22 09:03:18 +08:00
|
|
|
Meteor.subscribe('postUsers', this.params._id)
|
2013-10-09 21:49:02 +09:00
|
|
|
];
|
2013-10-09 20:11:58 +09:00
|
|
|
},
|
|
|
|
data: function() {
|
|
|
|
return {
|
2013-10-21 23:07:36 +08:00
|
|
|
postId: this.params._id
|
2013-10-09 11:21:23 +09:00
|
|
|
}
|
2013-10-23 10:45:12 +08:00
|
|
|
},
|
|
|
|
after: function() {
|
|
|
|
window.queueComments = false;
|
|
|
|
window.openedComments = [];
|
2013-10-06 08:47:15 +09:00
|
|
|
}
|
2013-10-09 20:23:20 +09:00
|
|
|
// TODO: scroll window to specific comment
|
2013-10-06 08:47:15 +09:00
|
|
|
});
|
2013-10-09 12:39:05 +09:00
|
|
|
|
2013-10-09 11:32:36 +09:00
|
|
|
// Post Edit
|
|
|
|
|
2013-10-06 09:17:37 +09:00
|
|
|
this.route('post_edit', {
|
|
|
|
path: '/posts/:_id/edit',
|
|
|
|
waitOn: function() {
|
|
|
|
return Meteor.subscribe('singlePost', this.params._id);
|
|
|
|
},
|
|
|
|
data: function() {
|
2013-10-09 11:21:23 +09:00
|
|
|
return {
|
|
|
|
post: Posts.findOne(this.params._id)
|
|
|
|
}
|
2013-10-10 11:41:11 +09:00
|
|
|
},
|
2013-10-12 11:44:29 +09:00
|
|
|
after: filters.canEditPost
|
2013-10-06 09:17:37 +09:00
|
|
|
});
|
2013-10-09 11:32:36 +09:00
|
|
|
|
2013-10-09 12:39:05 +09:00
|
|
|
// Post Submit
|
|
|
|
|
|
|
|
this.route('post_submit', {path: '/submit'});
|
|
|
|
|
2013-10-12 11:44:29 +09:00
|
|
|
// -------------------------------------------- Comment -------------------------------------------- //
|
|
|
|
|
2013-10-09 11:32:36 +09:00
|
|
|
// Comment Page
|
|
|
|
|
2013-10-09 11:46:44 +09:00
|
|
|
this.route('comment_page', {
|
2013-10-09 12:39:05 +09:00
|
|
|
path: '/comments/:_id',
|
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
comment: Comments.findOne(this.params._id)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Comment Reply
|
|
|
|
|
|
|
|
this.route('comment_reply', {
|
|
|
|
path: '/comments/:_id/reply',
|
2013-10-09 20:11:58 +09:00
|
|
|
waitOn: function() {
|
2013-10-23 08:14:06 +08:00
|
|
|
return Meteor.subscribe('singleComment', this.params._id);
|
2013-10-09 20:11:58 +09:00
|
|
|
},
|
2013-10-09 11:46:44 +09:00
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
comment: Comments.findOne(this.params._id)
|
|
|
|
}
|
2013-10-23 10:40:29 +08:00
|
|
|
},
|
|
|
|
after: function() {
|
|
|
|
window.queueComments = false;
|
2013-10-09 11:46:44 +09:00
|
|
|
}
|
|
|
|
});
|
2013-10-09 11:32:36 +09:00
|
|
|
|
|
|
|
// Comment Edit
|
|
|
|
|
2013-10-09 12:39:05 +09:00
|
|
|
this.route('comment_edit', {
|
|
|
|
path: '/comments/:_id/edit',
|
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
comment: Comments.findOne(this.params._id)
|
|
|
|
}
|
2013-10-10 11:41:11 +09:00
|
|
|
},
|
2013-10-12 11:44:29 +09:00
|
|
|
after: filters.canEditComment
|
2013-10-09 12:39:05 +09:00
|
|
|
});
|
|
|
|
|
2013-10-14 11:37:37 +09:00
|
|
|
// -------------------------------------------- Users -------------------------------------------- //
|
|
|
|
|
2013-10-09 20:50:26 +09:00
|
|
|
// User Profile
|
|
|
|
|
|
|
|
this.route('user_profile', {
|
2013-10-24 11:04:27 +09:00
|
|
|
path: '/users/:_idOrSlug',
|
2013-10-09 22:16:47 +09:00
|
|
|
waitOn: function() {
|
2013-10-24 11:04:27 +09:00
|
|
|
return Meteor.subscribe('singleUser', this.params._idOrSlug);
|
2013-10-09 22:16:47 +09:00
|
|
|
},
|
2013-10-09 20:50:26 +09:00
|
|
|
data: function() {
|
2013-10-24 11:04:27 +09:00
|
|
|
var findById = Meteor.users.findOne(this.params._idOrSlug);
|
|
|
|
var findBySlug = Meteor.users.findOne({'profile.slug': this.params._idOrSlug});
|
|
|
|
console.log(findById)
|
|
|
|
console.log(findBySlug)
|
2013-10-09 20:50:26 +09:00
|
|
|
return {
|
2013-10-24 11:04:27 +09:00
|
|
|
user: (typeof findById == "undefined") ? findBySlug : findById
|
2013-10-09 20:50:26 +09:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// User Edit
|
|
|
|
|
|
|
|
this.route('user_edit', {
|
|
|
|
path: '/users/:_id/edit',
|
2013-10-09 22:16:47 +09:00
|
|
|
waitOn: function() {
|
|
|
|
return Meteor.subscribe('singleUser', this.params._id);
|
|
|
|
},
|
2013-10-09 20:50:26 +09:00
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
user: Meteor.users.findOne(this.params._id)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Forgot Password
|
|
|
|
|
|
|
|
this.route('forgot_password');
|
|
|
|
|
|
|
|
// Account
|
|
|
|
|
|
|
|
this.route('account', {
|
|
|
|
path: '/account',
|
|
|
|
template: 'user_edit',
|
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
user: Meteor.user()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// All Users
|
|
|
|
|
2013-10-09 22:16:47 +09:00
|
|
|
this.route('users', {
|
|
|
|
waitOn: function() {
|
|
|
|
return Meteor.subscribe('allUsers');
|
|
|
|
},
|
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
users: Meteor.users.find({}, {sort: {createdAt: -1}})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2013-10-09 20:50:26 +09:00
|
|
|
|
2013-10-09 20:26:58 +09:00
|
|
|
// Unsubscribe (from notifications)
|
|
|
|
|
|
|
|
this.route('unsubscribe', {
|
|
|
|
path: '/unsubscribe/:hash',
|
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
hash: this.params.hash
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2013-10-09 20:50:26 +09:00
|
|
|
|
2013-10-09 20:53:55 +09:00
|
|
|
// User Sign-Up
|
|
|
|
|
|
|
|
this.route('signup');
|
2013-10-09 20:59:42 +09:00
|
|
|
|
2013-10-09 20:53:55 +09:00
|
|
|
// User Sign-In
|
|
|
|
|
|
|
|
this.route('signin');
|
|
|
|
|
2013-10-14 11:37:37 +09:00
|
|
|
// -------------------------------------------- Other -------------------------------------------- //
|
|
|
|
|
2013-10-09 22:21:28 +09:00
|
|
|
// Categories
|
|
|
|
|
|
|
|
this.route('categories');
|
|
|
|
|
2013-10-09 20:53:55 +09:00
|
|
|
// Settings
|
|
|
|
|
|
|
|
this.route('settings');
|
|
|
|
|
|
|
|
// Toolbox
|
|
|
|
|
|
|
|
this.route('toolbox');
|
|
|
|
|
2013-10-06 08:37:17 +09:00
|
|
|
});
|