From 6ccf2a6898b443811edaed1a055298a1cede4500 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Wed, 13 May 2015 08:26:30 -0700 Subject: [PATCH] html tempalte works! --- news/news.go | 38 +++++++++++++++++++++--------------- route_handlers.go | 14 ++++++++++++- templates/html_template.html | 6 ++++++ templates/pages/list.html | 2 +- 4 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 templates/html_template.html diff --git a/news/news.go b/news/news.go index 54b7b02..934efb3 100644 --- a/news/news.go +++ b/news/news.go @@ -22,6 +22,7 @@ type News struct { type NewsContainer struct { Name string News []News + Category *categories.Category Children map[int]*NewsContainer } @@ -42,6 +43,20 @@ func nullStringToString(str *sql.NullString) string { } } +func addContainer(category_id int, flat, tree map[int]*NewsContainer) { + container := &NewsContainer{ Category: categories.CategoriesFlat[category_id], Name: categories.CategoriesFlat[category_id].Name, News: []News{}, Children: map[int]*NewsContainer{} } + flat[category_id] = container + parent := categories.CategoriesFlat[category_id].Parent + if parent.Valid { + if _, ok := flat[int(parent.Int64)]; !ok { + addContainer(int(parent.Int64), flat, tree) + } + flat[int(parent.Int64)].Children[category_id] = container + } else { + tree[category_id] = container + } +} + func Unexported(db *sql.DB) (map[int]*NewsContainer, error) { categories.LoadCategories(db) @@ -78,25 +93,16 @@ func Unexported(db *sql.DB) (map[int]*NewsContainer, error) { cid = int(category_id.Int64) } - var container *NewsContainer - var ok bool - fmt.Println("cid: ", cid) - if container, ok = newsFlat[cid]; !ok { - fmt.Println("ADDING") - // need new container for new cid - container = &NewsContainer{ Name: categories.CategoriesFlat[cid].Name, News: []News{}, Children: map[int]*NewsContainer{} } - newsFlat[cid] = container - parent := categories.CategoriesFlat[cid].Parent - if parent.Valid { - fmt.Println("parent: ", parent.Int64) - newsFlat[int(parent.Int64)].Children[cid] = container - } else { - fmt.Println("no parent") - newsTree[cid] = container - } + if _, ok := newsFlat[cid]; !ok { + addContainer(cid, newsFlat, newsTree) } + container := newsFlat[cid] container.News = append(container.News, news) } return newsTree, nil +} + +func (this *NewsContainer) HeaderDepth(start int) int { + return start + this.Category.Depth() } \ No newline at end of file diff --git a/route_handlers.go b/route_handlers.go index 90a0ac4..16848c4 100644 --- a/route_handlers.go +++ b/route_handlers.go @@ -13,6 +13,8 @@ import ( "strconv" "github.com/dballard/transmet/categories" "github.com/dballard/transmet/news" + "bytes" + "html/template" ) func GetFlashes(session *sessions.Session) map[string]interface{} { @@ -195,8 +197,18 @@ func templateFormHandler(w http.ResponseWriter, r *http.Request, user *user.User if err != nil { return } + + var templateBuf bytes.Buffer + template, err := template.ParseFiles("templates/html_template.html") + if err != nil { + fmt.Println("Error processing html_tempalte:" , err) + } + err = template.Execute(&templateBuf, map[string]interface{}{"news": news}) + if err != nil { + fmt.Println("Exec err: ", err) + } - ShowTemplate("list", w, map[string]interface{}{"user": user, "flashes": flashes, "news": news}) + ShowTemplate("list", w, map[string]interface{}{"user": user, "flashes": flashes, "template": &templateBuf}) } func templatePostHandler(w http.ResponseWriter, r *http.Request, user *user.User) { diff --git a/templates/html_template.html b/templates/html_template.html new file mode 100644 index 0000000..f865e47 --- /dev/null +++ b/templates/html_template.html @@ -0,0 +1,6 @@ +{{range $nc := .news}}{{template "news-category" $nc}}{{end}} +{{define "news-category"}}{{$.Name}} +{{range $n := .News}}{{template "news" $n}}{{end}}{{range $nc := .Children}}{{template "news-category" $nc}}{{end}}{{end}} +{{define "news"}}

{{.Title}}
+{{.Notes}}

+{{end}} \ No newline at end of file diff --git a/templates/pages/list.html b/templates/pages/list.html index a959583..ce2cece 100644 --- a/templates/pages/list.html +++ b/templates/pages/list.html @@ -10,6 +10,6 @@ - + {{end}} \ No newline at end of file