beta2 preNextBlog fixed

This commit is contained in:
life
2014-11-13 16:46:22 +08:00
parent c894b7b308
commit 034ad821ca
3 changed files with 16 additions and 9 deletions
app
public/blog/themes/elegant

@ -581,7 +581,8 @@ func (c Blog) Post(userIdOrEmail, noteId string) (re revel.Result) {
return c.e404(userBlog.ThemePath) // 404 TODO 使用用户的404 return c.e404(userBlog.ThemePath) // 404 TODO 使用用户的404
} }
c.RenderArgs["post"] = blogService.FixBlog(blogInfo) post := blogService.FixBlog(blogInfo)
c.RenderArgs["post"] = post
// c.RenderArgs["userInfo"] = userInfo // c.RenderArgs["userInfo"] = userInfo
c.RenderArgs["curIsPost"] = true c.RenderArgs["curIsPost"] = true
@ -597,7 +598,7 @@ func (c Blog) Post(userIdOrEmail, noteId string) (re revel.Result) {
baseTime = blogInfo.Title baseTime = blogInfo.Title
} }
prePost, nextPost := blogService.PreNextBlog(userId, userBlog.SortField, userBlog.IsAsc, baseTime) prePost, nextPost := blogService.PreNextBlog(userId, userBlog.SortField, userBlog.IsAsc, post.NoteId, baseTime)
if prePost.NoteId != "" { if prePost.NoteId != "" {
c.RenderArgs["prePost"] = prePost c.RenderArgs["prePost"] = prePost
} }

@ -353,7 +353,7 @@ func (this *BlogService) SearchBlog(key, userId string, page, pageSize int, sort
// 上一篇文章, 下一篇文章 // 上一篇文章, 下一篇文章
// sorterField, baseTime是基准, sorterField=PublicTime, title // sorterField, baseTime是基准, sorterField=PublicTime, title
// isAsc是用户自定义的排序方式 // isAsc是用户自定义的排序方式
func (this *BlogService) PreNextBlog(userId string, sorterField string, isAsc bool, baseTime interface{}) (info.Post, info.Post) { func (this *BlogService) PreNextBlog(userId string, sorterField string, isAsc bool, noteId string, baseTime interface{}) (info.Post, info.Post) {
userIdO := bson.ObjectIdHex(userId) userIdO := bson.ObjectIdHex(userId)
var sortFieldT1, sortFieldT2 bson.M var sortFieldT1, sortFieldT2 bson.M
@ -367,10 +367,10 @@ func (this *BlogService) PreNextBlog(userId string, sorterField string, isAsc bo
-- --
*/ */
// 上一篇时间要比它大, 找最小的 // 上一篇时间要比它大, 找最小的
sortFieldT1 = bson.M{"$gt": baseTime} sortFieldT1 = bson.M{"$gte": baseTime} // 为什么要相等, 因为将notebook发布成博客, 会统一修改note的publicTime, 此时所有notes都一样
sortFieldR1 = sorterField sortFieldR1 = sorterField
// 下一篇时间要比它小 // 下一篇时间要比它小
sortFieldT2 = bson.M{"$lt": baseTime} sortFieldT2 = bson.M{"$lte": baseTime}
sortFieldR2 = "-" + sorterField sortFieldR2 = "-" + sorterField
} else { } else {
// 升序 // 升序
@ -381,22 +381,28 @@ func (this *BlogService) PreNextBlog(userId string, sorterField string, isAsc bo
--------- ---------
*/ */
// 上一篇要比它小, 找最大的 // 上一篇要比它小, 找最大的
sortFieldT1 = bson.M{"$lt": baseTime} sortFieldT1 = bson.M{"$lte": baseTime}
sortFieldR1 = "-" + sorterField sortFieldR1 = "-" + sorterField
// 下一篇, 找最小的 // 下一篇, 找最小的
sortFieldT2 = bson.M{"$gt": baseTime} sortFieldT2 = bson.M{"$gte": baseTime}
sortFieldR2 = sorterField sortFieldR2 = sorterField
} }
// 上一篇, 比基时间要小, 但是是最后一篇, 所以是降序 // 上一篇, 比基时间要小, 但是是最后一篇, 所以是降序
note := info.Note{} note := info.Note{}
query := bson.M{"UserId": userIdO, "IsTrash": false, "IsBlog": true, query := bson.M{"UserId": userIdO,
"IsTrash": false,
"IsBlog": true,
"_id": bson.M{"$ne": bson.ObjectIdHex(noteId)},
sorterField: sortFieldT1, sorterField: sortFieldT1,
} }
q := db.Notes.Find(query) q := db.Notes.Find(query)
q.Sort(sortFieldR1).Limit(1).One(&note) q.Sort(sortFieldR1).Limit(1).One(&note)
// 下一篇, 比基时间要大, 但是是第一篇, 所以是升序 // 下一篇, 比基时间要大, 但是是第一篇, 所以是升序
if note.NoteId != "" {
query["_id"] = bson.M{"$nin": []bson.ObjectId{bson.ObjectIdHex(noteId), note.NoteId}}
}
note2 := info.Note{} note2 := info.Note{}
query[sorterField] = sortFieldT2 query[sorterField] = sortFieldT2
// Log(isAsc) // Log(isAsc)

@ -279,7 +279,7 @@ a:hover {
color: #000000; color: #000000;
} }
#header h1 a img { #header h1 a img {
height: 40px; max-height: 40px;
} }
#header #blogDesc { #header #blogDesc {
font-size: 32px; font-size: 32px;