load tags, start showing in template drop down

This commit is contained in:
Dan Ballard 2015-05-07 08:31:18 -07:00
parent 2d6a58f5e7
commit 605fc93409
3 changed files with 26 additions and 10 deletions

View File

@ -10,6 +10,7 @@ import (
"io/ioutil"
"regexp"
"strings"
"github.com/dballard/transmet/tags"
)
func GetFlashes(session *sessions.Session) map[string]interface{} {
@ -102,6 +103,7 @@ func LoginPostHandler(w http.ResponseWriter, r *http.Request) {
// ?url=
func addFormHandler(w http.ResponseWriter, r *http.Request, user *user.User) {
tags.LoadTags(db)
var url = r.URL.Query().Get("url")
reHttp := regexp.MustCompile("^http://")
if ! reHttp.Match([]byte(url)) {
@ -118,13 +120,13 @@ func addFormHandler(w http.ResponseWriter, r *http.Request, user *user.User) {
re := regexp.MustCompile("< *[Tt][Ii][Tt][Ll][Ee] *>(.*)</ *[Tt][Ii][Tt][Ll][Ee] *>")
title := re.FindStringSubmatch(string(body))
if title != nil {
ShowTemplate("add", w, map[string]interface{}{"user": user, "link": url, "title": strings.TrimSpace(title[1])})
ShowTemplate("add", w, map[string]interface{}{"user": user, "link": url, "tags": tags.Tags, "title": strings.TrimSpace(title[1])})
return
}
}
}
ShowTemplate("add", w, map[string]interface{}{"user": user, "link": url})
ShowTemplate("add", w, map[string]interface{}{"user": user, "link": url, "tags": tags.Tags})
}
func addPostHandler(w http.ResponseWriter, r *http.Request, user *user.User) {

View File

@ -10,22 +10,26 @@ import (
type Tag struct {
Name string
Parent int
Parent sql.NullInt64
Children []int
}
var Tags map[int]*Tag
func LoadTags(db *sql.DB) {
rows, err := db.Query("select tag_id, name, parent_id, array_agg(distinct(parent_of.tag_id)) from tags join tags as parent_of on tags.parent_id=parent_of.tag_id group by tags.tag_id")
Tags = make(map[int]*Tag)
rows, err := db.Query("select tags.tag_id, tags.name, tags.parent_id, array_agg(distinct(parent_of.tag_id)) as children from tags left join tags as parent_of on parent_of.parent_id=tags.tag_id group by tags.tag_id")
if err != nil {
fmt.Println("DB Error loading tags:", err)
return
}
for rows.Next() {
tag := &Tag{Children: nil}
var children sql.NullString
var tag_id int
err = rows.Scan(&tag_id, &tag.Name, &tag.Name, &tag.Parent, &children)
err = rows.Scan(&tag_id, &tag.Name, &tag.Parent, &children)
if err != nil {
fmt.Println("tags DB Error: ", err)
}
@ -36,12 +40,11 @@ func LoadTags(db *sql.DB) {
pids := strings.Split(childrenStr, ",")
for _, spid := range pids {
pid, _ := strconv.Atoi(spid)
tags.C
tag.Children = append(tag.Children, pid)
}
}
}
tags[tag_d] = tag
Tags[tag_id] = tag
}
}

View File

@ -5,10 +5,21 @@
<div class="row">
<div class="col-xs-2">Link:</div><div class="col-xs-10"><input type="text" class="form-control" name="link" placeholder="Link" value="{{.link}}"/></div>
<div class="col-xs-2">Title:</div><div class="col-xs-10"><input type="text" class="form-control" name="title" placeholder="Title" value="{{.title}}"/></div>
<div class="col-xs-2">Path:</div><div class="col-xs-10"><input type="text" class="form-control" name="path" placeholder="Path"/></div>
<div class="col-xs-2">Path:</div><div class="col-xs-10">
<select class="form-control" name="path" placeholder="Path">
{{range $tag := .tags}}
{{template "option-tag" $tag}}
{{end}}
</select>
</div>
<div class="col-xs-2">Description:</div><div class="col-xs-10"><textarea class="form-control" name="description" placeholder="Description" rows="3" cols="80">{{.task.Description}}</textarea></div>
<div class="col-xs-2"></div><div class="col-xs-10"><input class="btn btn-lg btn-primary btn-block" type="submit" value="Add Link" /></div>
</div>
</form>
{{end}}
{{define "option-tag"}}
<option>{{.Name}}</option>
{{end}}