2015-04-13 14:52:03 +09:00
|
|
|
Template.userPosts.created = function () {
|
2014-12-08 17:52:29 +09:00
|
|
|
|
2014-12-08 15:26:06 +09:00
|
|
|
var user = this.data;
|
2014-12-08 17:52:29 +09:00
|
|
|
var instance = this;
|
|
|
|
|
2014-12-09 13:16:34 +09:00
|
|
|
// initialize the terms reactive variable
|
2014-12-08 17:52:29 +09:00
|
|
|
instance.terms = new ReactiveVar({
|
|
|
|
view: 'userPosts',
|
|
|
|
userId: user._id,
|
2014-12-09 13:16:34 +09:00
|
|
|
limit: 5,
|
|
|
|
previousLimit: 0 // should always be equal to limit's previous value
|
2014-12-08 17:52:29 +09:00
|
|
|
});
|
2014-12-09 13:16:34 +09:00
|
|
|
|
|
|
|
// initialize the posts cursor ReVar
|
2014-12-08 18:03:30 +09:00
|
|
|
instance.posts = new ReactiveVar({});
|
2014-12-08 17:52:29 +09:00
|
|
|
|
2014-12-09 13:16:34 +09:00
|
|
|
// initialize the subscription handle ReVar
|
|
|
|
instance.subscription = new ReactiveVar({});
|
|
|
|
|
|
|
|
// will re-run when the "terms" or "subscription" reactive variables change
|
2014-12-18 10:36:41 +09:00
|
|
|
this.autorun(function () {
|
2014-12-08 18:03:30 +09:00
|
|
|
|
|
|
|
// get the new terms and generate new parameters from them
|
|
|
|
var terms = instance.terms.get();
|
2015-04-20 13:57:37 +09:00
|
|
|
var parameters = Posts.getSubParams(terms);
|
2014-12-08 18:03:30 +09:00
|
|
|
|
|
|
|
// subscribe to the userPosts publication
|
2014-12-09 13:16:34 +09:00
|
|
|
instance.subscription.set(Meteor.subscribe('userPosts', terms));
|
|
|
|
|
2015-04-20 13:57:37 +09:00
|
|
|
// until subscription is ready, overwrite limit to restrict number of posts to previousLimit
|
2014-12-09 13:16:34 +09:00
|
|
|
if (!instance.subscription.get().ready())
|
|
|
|
parameters.options.limit = terms.previousLimit
|
2014-12-08 18:03:30 +09:00
|
|
|
|
|
|
|
// update the instance's "posts" cursor
|
|
|
|
instance.posts.set(Posts.find(parameters.find, parameters.options));
|
2014-12-09 13:16:34 +09:00
|
|
|
|
2014-12-08 15:26:06 +09:00
|
|
|
});
|
2014-12-08 14:53:26 +09:00
|
|
|
};
|
|
|
|
|
2015-04-13 14:52:03 +09:00
|
|
|
Template.userPosts.helpers({
|
2014-12-08 14:53:26 +09:00
|
|
|
posts: function () {
|
2014-12-08 18:03:30 +09:00
|
|
|
return Template.instance().posts.get();
|
2014-12-08 14:53:26 +09:00
|
|
|
},
|
2014-12-09 11:19:49 +09:00
|
|
|
isReady: function () {
|
2014-12-09 13:16:34 +09:00
|
|
|
return Template.instance().subscription.get().ready();
|
2014-12-09 11:19:49 +09:00
|
|
|
},
|
2014-12-08 14:53:26 +09:00
|
|
|
hasMorePosts: function () {
|
2014-12-09 13:16:34 +09:00
|
|
|
return Template.instance().posts.get().count() >= Template.instance().terms.get().previousLimit;
|
2014-12-08 14:53:26 +09:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2015-04-13 14:52:03 +09:00
|
|
|
Template.userPosts.events({
|
2014-12-08 14:53:26 +09:00
|
|
|
'click .posts-more': function (e) {
|
|
|
|
e.preventDefault();
|
2014-12-08 17:52:29 +09:00
|
|
|
var terms = Template.instance().terms.get();
|
2014-12-09 13:16:34 +09:00
|
|
|
// previousLimit starts at 0, so by increasing both values by 5 we keep them 5 apart
|
|
|
|
terms.previousLimit += 5;
|
2014-12-08 17:52:29 +09:00
|
|
|
terms.limit += 5;
|
|
|
|
Template.instance().terms.set(terms)
|
2014-12-08 14:53:26 +09:00
|
|
|
}
|
2015-04-20 13:57:37 +09:00
|
|
|
});
|