func blogPage(ctx *web.Context, page string) string { pn := app.PageNumber(page) perPage := 15 paginator := app.NewPaginator(pn, perPage) paginator.Link = "/blog/page/" var post *Post var posts []Post // do a search, if required, of title and content var err error var numObjects int if len(ctx.Params["Search"]) > 0 { term := M{"$regex": ctx.Params["Search"]} search := M{"published": 1, "$or": []M{M{"title": term}, M{"content": term}}} err = db.Latest(post, search).Skip(paginator.Skip).Limit(perPage).All(&posts) numObjects, _ = db.Latest(post, search).Count() } else { err = db.Latest(post, M{"published": 1}).Skip(paginator.Skip). Limit(perPage).Iter().All(&posts) numObjects, _ = db.Find(post, M{"published": 1}).Count() } if err != nil { fmt.Println(err) } return base.Render("blog/index.mandira", M{ "Rss": RssHref, "Atom": AtomHref, "Posts": posts, "Pagination": paginator.Render(numObjects)}, ctx.Params) }
func Index() string { var post *Post = &Post{} var entry *Entry var posts []Post var entries []*Entry err := db.Latest(post, M{"published": 1}).Limit(7).All(&posts) if err != nil { fmt.Println(err) } err = db.Latest(entry, nil).Limit(4).All(&entries) if err != nil { fmt.Println(err) } renderPosts := []Post{} if len(posts) > 0 { post = &posts[0] renderPosts = append(renderPosts, posts[1:]...) } return base.Render("index.mandira", M{ "Post": RenderPost(post), "Posts": renderPosts, "Entries": entries, "title": "Jamil Seaidoun", "description": post.Summary}) }
func (up *UnpublishedPanel) Render() string { var posts []Post db.Latest(&Post{}, M{"published": 0}).Limit(indexListSize).All(&posts) return template.Render("blog/admin/unpublished-panel.mandira", M{ "posts": posts, }) }
func _createFeed() *feeds.Feed { var posts []Post var post *Post err := db.Latest(post, M{"published": 1}).Limit(10).Iter().All(&posts) if err != nil { fmt.Println(err) return nil } feed := &feeds.Feed{ Title: "jmoiron.net blog", Link: &feeds.Link{Href: "http://jmoiron.net"}, Description: "the blog of Jason Moiron, all thoughts his own", Author: &feeds.Author{"Jason Moiron", "*****@*****.**"}, Updated: time.Now(), } for _, post := range posts { feed.Add(&feeds.Item{ Title: post.Title, Link: &feeds.Link{Href: "http://jmoiron.net/blog/" + post.Slug + "/"}, Description: post.ContentRendered, Created: time.Unix(int64(post.Timestamp), 0), }) } return feed }
// A shortcut to return the latest blog post (or nil if there aren't any) func LatestPost() *Post { var post *Post err := db.Latest(post, bson.M{}).One(&post) if err != nil && err != mgo.ErrNotFound { panic(err) } if err == mgo.ErrNotFound { return nil } return post }
func Index(s string) string { var post *Post var entry *Entry var posts []Post var entries []*Entry err := db.Latest(post, M{"published": 1}).Limit(7).All(&posts) if err != nil { fmt.Println(err) } err = db.Latest(entry, nil).Limit(4).All(&entries) if err != nil { fmt.Println(err) } post = &posts[0] return base.Render("index.mandira", M{ "Post": RenderPost(post), "Posts": posts[1:], "Entries": entries, "title": "jmoiron.net", "description": post.Summary}) }
// List detail for published posts func postList(ctx *web.Context, page string) string { if app.RequireAuthentication(ctx) { return "" } num := app.PageNumber(page) paginator := app.NewPaginator(num, listPageSize) paginator.Link = "/admin/posts/" var posts []Post // do a search, if required, of title and content var err error var numObjects int if len(ctx.Params["Search"]) > 0 { term := M{"$regex": ctx.Params["Search"]} search := M{"published": 1, "$or": []M{ M{"title": term}, M{"content": term}, }} err = db.Latest(&Post{}, search).Skip(paginator.Skip).Limit(listPageSize).All(&posts) numObjects, _ = db.Latest(&Post{}, search).Count() } else { err = db.Latest(&Post{}, M{"published": 1}).Skip(paginator.Skip). Limit(listPageSize).All(&posts) numObjects, _ = db.Find(&Post{}, M{"published": 1}).Count() } if err != nil { fmt.Println(err) } return adminBase.Render("blog/admin/post-list.mandira", M{ "Posts": posts, "Pagination": paginator.Render(numObjects)}) }
func streamPage(ctx *web.Context, page string) string { num := app.PageNumber(page) perPage := 25 paginator := app.NewPaginator(num, perPage) paginator.Link = "/stream/page/" var entry *Entry var entries []*Entry // do a search, if required, of title and content var err error var numObjects int if len(ctx.Params["Search"]) > 0 { re := new(bson.RegEx) re.Pattern = ctx.Params["Search"] re.Options = "i" term := M{"$regex": re} search := M{"summaryrendered": term} //search := M{"$or": []M{M{"title": term}, M{"summaryrendered": term}}} err = db.Latest(entry, search).Skip(paginator.Skip).Limit(perPage).All(&entries) numObjects, _ = db.Latest(entry, search).Count() } else { err = db.Latest(entry, nil).Skip(paginator.Skip).Limit(perPage).Iter().All(&entries) numObjects, _ = db.Cursor(entry).Count() } if err != nil { fmt.Println(err) } return base.Render("blog/stream/index.mandira", M{ "Entries": entries, "Pagination": paginator.Render(numObjects), "title": "Lifestream"}, ctx.Params) }
// List detail for unpublished posts func unpublishedList(ctx *web.Context, page string) string { if app.RequireAuthentication(ctx) { return "" } num := app.PageNumber(page) paginator := app.NewPaginator(num, listPageSize) paginator.Link = "/admin/unpublished/" var posts []Post latest := db.Latest(&Post{}, M{"published": 0}) latest.Limit(listPageSize).All(&posts) numObjects, _ := latest.Count() return adminBase.Render("blog/admin/post-list.mandira", M{ "Posts": posts, "Pagination": paginator.Render(numObjects), "Unpublished": true, }) }