added date in url to digest view

This commit is contained in:
Sacha Greif 2012-10-10 13:54:48 +09:00
parent 721e1fb02d
commit ad9fca0d4a
6 changed files with 85 additions and 57 deletions

View file

@ -85,11 +85,14 @@ SimpleRouter = FilteredRouter.extend({
routes: {
'': 'top',
'top':'top',
'top/':'top',
'top/:page':'top',
'new':'new',
'new/':'new',
'new/:page':'new',
'digest/:year/:month/:day':'digest',
'digest':'digest',
'digest/:page':'digest',
'digest/':'digest',
'test':'test',
'signin':'signin',
'signup':'signup',
@ -126,10 +129,31 @@ SimpleRouter = FilteredRouter.extend({
this.goto('posts_new');
}
},
digest: function(page){
digest: function(year, month, day){
if(canView(Meteor.user(), 'replace')) {
var page = (typeof page === 'undefined') ? 1 : page;
Session.set('currentPageNumber', page);
if(typeof day === 'undefined'){
var date = new Date();
var mDate = moment(date);
this.navigate(getDigestURL(mDate));
}else{
var date=new Date(year, month-1, day);
var mDate = moment(date);
}
sessionSetObject('currentDate', date);
var postsPerPage=5;
var postsView={
find: {submitted: {$gte: mDate.startOf('day').valueOf(), $lt: mDate.endOf('day').valueOf()}},
sort: {score: -1},
skip:0,
postsPerPage: postsPerPage,
limit: postsPerPage
}
sessionSetObject('postsView', postsView);
this.goto('posts_digest');
}
},

View file

@ -20,7 +20,7 @@
<div class="controls">
{{#each categories}}
<label class="radio inline">
<input id="category_{{_id}}" type="checkbox" value="{{name}}" name="category" {{#if isChecked }} checked {{/if}}/> {{name}}
<input id="category_{{_id}}" type="radio" value="{{name}}" name="category" {{#if isChecked }} checked {{/if}}/> {{name}}
</label>
{{/each}}
</div>

View file

@ -1,3 +1,14 @@
Template.post_page.created = function(){
var postsView={
find: {_id:Session.get('selectedPostId')},
sort: {},
skip:0,
postsPerPage:1,
limit:1
}
sessionSetObject('postsView', postsView);
};
Template.post_page.helpers({
post: function(){
var post = Posts.findOne(Session.get('selectedPostId'));

View file

@ -2,8 +2,13 @@
<div class="grid">
<div class="grid-block">
The top 5 posts of each day. |
<a href="#" class="prev-link" data-increment="-1">Previous Day</a> |
<a href="#" class="next-link" data-increment="1">Next Day</a>
{{#if showPreviousDate}}
<a href="{{previousDateURL}}" class="prev-link" data-increment="-1">Previous Day</a> |
{{/if}}
{{currentDate}} |
{{#if showNextDate}}
<a href="{{nextDateURL}}" class="next-link" data-increment="1">Next Day</a>
{{/if}}
</div>
</div>
<div class="posts grid list">

View file

@ -1,55 +1,30 @@
getDateRange= function(pageNumber){
var now = moment(new Date());
var dayToDisplay=now.subtract('days', pageNumber-1);
var range={};
range.start = dayToDisplay.startOf('day').valueOf();
range.end = dayToDisplay.endOf('day').valueOf();
console.log("after: ", dayToDisplay.startOf('day').format("dddd, MMMM Do YYYY, h:mm:ss a"));
console.log("before: ", dayToDisplay.endOf('day').format("dddd, MMMM Do YYYY, h:mm:ss a"));
return range;
}
Template.posts_digest.posts = function(){
var postsView=sessionGetObject('postsView');
console.log('postsView:: ',postsView);
var collection=Posts.find(postsView.find);
console.log('collection ', collection.fetch());
return collection;
};
Template.posts_digest.created = function(){
var postsPerPage=5;
var pageNumber=Session.get('currentPageNumber') || 1;
var range=getDateRange(pageNumber);
var postsView={
find: {submitted: {$gte: range.start, $lt: range.end}},
sort: {score: -1},
skip:0,
postsPerPage: postsPerPage,
limit: postsPerPage,
page: pageNumber
}
sessionSetObject('postsView', postsView);
}
Template.posts_digest.events({
'click .prev-link': function(e) {
e.preventDefault();
Template.posts_digest.helpers({
posts: function(){
var postsView=sessionGetObject('postsView');
postsView.page++;
var range=getDateRange(postsView.page);
postsView.find={submitted: {$gte: range.start, $lt: range.end}}
sessionSetObject('postsView', postsView);
var collection=Posts.find(postsView.find);
return collection;
},
'click .next-link': function(e) {
e.preventDefault();
var postsView=sessionGetObject('postsView');
if(postsView.page>1){
postsView.page--;
var range=getDateRange(postsView.page);
postsView.find={submitted: {$gte: range.start, $lt: range.end}}
console.log(postsView.page);
sessionSetObject('postsView', postsView);
}
currentDate: function(){
return moment(sessionGetObject('currentDate')).format("dddd, MMMM Do YYYY");
},
previousDateURL: function(){
var currentDate=moment(sessionGetObject('currentDate'));
var newDate=currentDate.subtract('days', 1);
return getDigestURL(newDate);
},
showPreviousDate: function(){
// TODO
return true;
},
nextDateURL: function(){
var currentDate=moment(sessionGetObject('currentDate'));
var newDate=currentDate.add('days', 1);
return getDigestURL(newDate);
},
showNextDate: function(){
var currentDate=moment(sessionGetObject('currentDate'));
var nextDate=currentDate.add('days', 1);
var today=moment(new Date());
return today.diff(nextDate, 'days') > 0
}
});
});

View file

@ -29,3 +29,16 @@ getAuthorName = function(item){
scrollPageTo = function(selector){
$('body').scrollTop($(selector).offset().top);
}
getDigestURL = function(moment){
return '/digest/'+moment.year()+'/'+(moment.month()+1)+'/'+moment.date()
}
getDateRange= function(pageNumber){
var now = moment(new Date());
var dayToDisplay=now.subtract('days', pageNumber-1);
var range={};
range.start = dayToDisplay.startOf('day').valueOf();
range.end = dayToDisplay.endOf('day').valueOf();
// console.log("after: ", dayToDisplay.startOf('day').format("dddd, MMMM Do YYYY, h:mm:ss a"));
// console.log("before: ", dayToDisplay.endOf('day').format("dddd, MMMM Do YYYY, h:mm:ss a"));
return range;
}