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 pageList(ctx *web.Context, page string) string { if app.RequireAuthentication(ctx) { return "" } num := app.PageNumber(page) paginator := app.NewPaginator(num, listPageSize) paginator.Link = "/admin/pages/" sort := "url" var p *Page var pages []Page // 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{"$or": []M{M{"url": term}, M{"content": term}}} err = db.Find(p, search).Sort(sort).Skip(paginator.Skip).Limit(listPageSize).All(&pages) numObjects, _ = db.Find(p, search).Count() } else { err = db.Find(p, nil).Sort(sort).Skip(paginator.Skip).Limit(listPageSize).All(&pages) numObjects, _ = db.Cursor(p).Count() } if err != nil { fmt.Println(err) } return adminBase.Render("blog/admin/page-list.mandira", M{ "Pages": pages, "Pagination": paginator.Render(numObjects)}) }
// 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, }) }
// 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) }