Exemple #1
0
func setupPages(app *App) {
	app.Page.Navi("/", "記事一覧").
		AssetPath("/blogapp/index.js").
		Templates("./blogapp/list.html", "./blogapp/post_part.html").
		Handler(
			func(res *wcg.Response, req *wcg.Request, p *lib.Page) {
				result, err := queryPosts(res, req, 20)
				if err != nil {
					panic(err)
				}
				p.Ogp("type", "blog")
				res.SetLocal("Posts", result.Posts)
				res.SetLocal("Next", result.Next)
				res.SetLocal("Previous", result.Previous)
			},
		)

	app.Page.Navi("/admin/editor.html", "記事管理").
		RequireAuth(lib.Admin).
		Templates("./blogapp/admin/editor.html").
		AssetPath("/blogapp/admin/editor.js")

	app.Page.Page("/posts/:id.html", "").
		Templates("./blogapp/show.html", "./blogapp/post_part.html").
		AssetPath("/blogapp/posts/show.js").
		Handler(
			func(res *wcg.Response, req *wcg.Request, p *lib.Page) {
				var post blog.Post
				driver := NewPostDriver(lib.NewAppContextFromRequest(req))
				key := driver.NewKey(req.Param("id"), 0, nil)
				err := driver.Get(key, &post)
				if err != nil {
					lib.Error(res, req, err)
					return
				}
				p.Title = post.Title
				p.Canonical = wcg.AbsoluteUrl(req, app.Page.Path(fmt.Sprintf("/posts/%s.html", post.Id)))
				p.Ogp("title", fmt.Sprintf("%s: %s", p.App.Title, p.Title))
				p.Ogp("url", p.Canonical)
				p.Ogp("type", "article")
				p.Ogp("description", post.Summary())
				imageUrl := post.ExtractFirstImageUrl()
				if imageUrl != "" {
					p.Ogp("image", imageUrl)
				}
				res.SetLocal("Post", post)
			})
}