Vulcan/packages/telescope-posts/lib/server/fastrender.js

74 lines
1.7 KiB
JavaScript
Raw Normal View History

2015-09-23 19:01:52 +09:00
var getDays = function (daysCount) {
var daysArray = [];
// var days = this.days;
for (var i = 0; i < daysCount; i++) {
daysArray.push({
date: moment().subtract(i, 'days').startOf('day').toDate(),
index: i
});
}
return daysArray;
};
2015-09-23 15:43:22 +09:00
Posts.fastRenderSubscribe = function (params) {
2015-09-23 19:01:52 +09:00
var fr = this;
2015-09-23 15:43:22 +09:00
// generate cat array
var categories = [];
var index = 0;
while (!!params.query["cat["+index+"]"]) {
categories.push(params.query["cat["+index+"]"]);
delete params.query["cat["+index+"]"];
index++;
}
2015-09-23 15:43:22 +09:00
if (categories.length) {
params.query.cat = categories;
}
2015-09-23 19:01:52 +09:00
if (!params.query.limit) {
params.query.limit = Settings.get('postsPerPage', 10);
}
2015-09-23 19:01:52 +09:00
// special case for daily view
if (params.query.view === "daily") {
var daysCount = params.days ? params.days : 5;
var days = getDays(daysCount);
days.forEach(function (day) {
var subscriptionTerms = {
view: "top",
date: day.date,
after: moment(day.date).format("YYYY-MM-DD"),
before: moment(day.date).format("YYYY-MM-DD")
};
fr.subscribe('postsList', subscriptionTerms);
fr.subscribe('postsListUsers', subscriptionTerms);
2015-09-23 19:01:52 +09:00
});
} else {
fr.subscribe('postsList', params.query);
fr.subscribe('postsListUsers', params.query);
}
2015-09-23 15:43:22 +09:00
};
Meteor.startup(function () {
2015-09-23 19:01:52 +09:00
2015-09-23 15:43:22 +09:00
FastRender.route("/", Posts.fastRenderSubscribe);
2015-09-23 19:01:52 +09:00
2015-09-23 15:43:22 +09:00
FastRender.route("/posts/:_id/:slug?", function (params) {
var postId = params._id;
this.subscribe('singlePost', postId);
this.subscribe('postUsers', postId);
this.subscribe('commentsList', {view: 'postComments', postId: postId});
});
2015-09-23 19:01:52 +09:00
2015-09-23 15:43:22 +09:00
});