47 lines
1003 B
Go
47 lines
1003 B
Go
package postctl
|
|
|
|
import (
|
|
"bytes"
|
|
"html/template"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/kirsle/blog/models/posts"
|
|
"github.com/kirsle/blog/src/render"
|
|
)
|
|
|
|
// tagged lets you browse blog posts by category.
|
|
func taggedHandler(w http.ResponseWriter, r *http.Request) {
|
|
params := mux.Vars(r)
|
|
tag, ok := params["tag"]
|
|
if !ok {
|
|
// They're listing all the tags.
|
|
render.Template(w, r, "blog/tags.gohtml", nil)
|
|
return
|
|
}
|
|
|
|
commonIndexHandler(w, r, tag, "")
|
|
}
|
|
|
|
// partialTags renders the tags partial.
|
|
func partialTags(r *http.Request, indexView bool) template.HTML {
|
|
idx, err := posts.GetIndex()
|
|
if err != nil {
|
|
return template.HTML("[RenderTags: error getting blog index]")
|
|
}
|
|
|
|
tags, err := idx.Tags()
|
|
if err != nil {
|
|
return template.HTML("[RenderTags: error getting tags]")
|
|
}
|
|
|
|
var output bytes.Buffer
|
|
v := map[string]interface{}{
|
|
"IndexView": indexView,
|
|
"Tags": tags,
|
|
}
|
|
render.Template(&output, r, "blog/tags.partial", v)
|
|
|
|
return template.HTML(output.String())
|
|
}
|