Router.configure({
layoutTemplate: ‘layout’,
loadingTemplate: ‘loading’,
//waitOn: function() { return Meteor.subscribe(‘patterns’); }
});
PatternsListController = RouteController.extend({
template: ‘main’,
increment: 15,
postsLimit: function() {
return parseInt(this.params.postsLimit) || this.increment;
},
findOptions: function() {
return {sort: this.sort, limit: this.postsLimit()};
},
subscriptions: function() {
this.postsSub = Meteor.subscribe(‘patterns’, this.findOptions());
},
patterns: function() {
return Patterns.find({}, this.findOptions());
},
data: function() {
var self = this;
return {
patterns: self.patterns(),
ready: self.postsSub.ready,
nextPath: function() {
if (self.patterns().count() === self.postsLimit())
return self.nextPath();
}
};
}
});
NewPatternsListController = PatternsListController.extend({
sort: {submitted: -1, _id: -1, subpatternsCount: -1, votes: -1, commentsCount: -1},
nextPath: function() {
return Router.routes.newPatterns.path({postsLimit: this.postsLimit() + this.increment})
}
});
TopPatternsListController = PatternsListController.extend({
template: ‘mainTop’,
sort: {votes: -1, subpatternsCount: -1, commentsCount: -1, submitted: -1, _id: -1},
nextPath: function() {
return Router.routes.topPatterns.path({postsLimit: this.postsLimit() + this.increment})
}
});
SubPatternsListController = PatternsListController.extend({
template: ‘mainSBP’,
sort: {subpatternsCount: -1, votes: -1, commentsCount: -1, submitted: -1, _id: -1},
nextPath: function() {
return Router.routes.newPatterns.path({postsLimit: this.postsLimit() + this.increment})
}
});
CommentsPatternsListController = PatternsListController.extend({
template: ‘mainCMNT’,
sort: {commentsCount: -1, subpatternsCount: -1, votes: -1, submitted: -1, _id: -1},
nextPath: function() {
return Router.routes.cmntsPatterns.path({postsLimit: this.postsLimit() + this.increment})
}
});
Router.route(‘main’, {
path: ‘/’,
controller: NewPatternsListController
});
Router.route(‘newPatterns’, {
path: ‘/new/:postsLimit?’,
controller: NewPatternsListController
});
Router.route(‘topPatterns’, {
path: ‘/top/:postsLimit?’,
controller: TopPatternsListController
});
Router.route(‘subPatterns’, {
path: ‘/sbp/:postsLimit?’,
controller: SubPatternsListController
});
Router.route(‘cmntsPatterns’, {
path: ‘/cmnts/:postsLimit?’,
controller: CommentsPatternsListController
});
Router.route(’/ptrn/:_id’, {
name: ‘patternPage’,
waitOn: function() {
return [
Meteor.subscribe(‘singlePattern’, this.params._id),
Meteor.subscribe(‘patterns’),
Meteor.subscribe(‘comments’, this.params._id),
Meteor.subscribe(‘subpatterns’, this.params._id)
];
},
data: function() { return Patterns.findOne(this.params._id); }
});
Router.route(’/ptrn/:_id/edit’, {
name: ‘patternEdit’,
waitOn: function() {
return Meteor.subscribe(‘singlePattern’, this.params._id);
},
data: function() { return Patterns.findOne(this.params._id); }
});
//search
Router.route(’/srch/’, {
name: ‘searchPage’
});
//Profiles under construction
Router.route(’/usr/:username’, {
name: ‘userProfile’,
waitOn: function() {
Meteor.subscribe(‘patterns’, {sort: {submitted:-1}}),
Meteor.subscribe(‘friendRequests’);
},
data: function() {
return {
user: Meteor.users.findOne({ username: this.params.username }),
patterns: Patterns.find({ creator: this.params.username }, {sort: {submitted:-1}})
};
}
});
//Need to clear errors.
Router.onBeforeAction(function() { clearErrors(); this.next(); } );