-
Notifications
You must be signed in to change notification settings - Fork 0
/
template.go
72 lines (54 loc) · 1.34 KB
/
template.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package calcutta
import (
"bytes"
"golang.org/x/net/xsrftoken"
"github.com/likestripes/kolkata"
"html/template"
"io/ioutil"
"net/http"
)
type TemplateData map[string]interface{}
var fs = FS(false)
func Template(w http.ResponseWriter, person kolkata.Person, tpl_name, page_title, param string) error {
var inner bytes.Buffer
xsrf_token := xsrftoken.Generate(person.Secret, person.PersonIdStr, tpl_name)
fields := TemplateData{
"xsrf_token": xsrf_token,
"param": param,
}
tpl_file, err := file("/" + tpl_name + "_form.html")
if err != nil {
return err
}
tpl, err := template.New(tpl_name).Parse(tpl_file)
err = tpl.Execute(&inner, fields)
if err != nil {
return err
}
form := TemplateData{
"form": template.HTML(inner.String()),
"page_title": page_title,
}
base_file, err := file("/base.html")
if err != nil {
return err
}
base, err := template.New("base").Parse(base_file)
if err != nil {
return err
}
return base.Execute(w, form)
}
func file(file_name string) (contents string, err error) {
f, err := fs.Open(file_name)
if err != nil {
return "", err
}
t, err := ioutil.ReadAll(f)
if err != nil {
return "", err
}
f.Close()
return string(t), nil
}
//go:generate esc -o templates.go -pkg calcutta -prefix templates templates/base.html templates/sign_in_form.html templates/sign_up_form.html