package pkg import ( "fmt" "html/template" "io" "net/http" ) func templateFile(name string) string { return "web/template/" + name } func mustRenderTemplate(wr io.Writer, r *http.Request, layout string, filename string, data interface{}) { locale := getLocale(r) user := getUser(r) t := template.New(filename) t.Funcs(template.FuncMap{ "gettext": locale.Get, "pgettext": locale.GetC, "currentLocale": func() string { return locale.Language.String() }, "csrfToken": func() template.HTML { return template.HTML(fmt.Sprintf(``, csrfTokenField, user.CsrfToken)) }, }) if _, err := t.ParseFiles(templateFile(filename), templateFile(layout), templateFile("form.gohtml")); err != nil { panic(err) } if w, ok := wr.(http.ResponseWriter); ok { w.Header().Set("Content-Type", "text/html; charset=utf-8") } if err := t.ExecuteTemplate(wr, layout, data); err != nil { panic(err) } } func mustRenderWebTemplate(w io.Writer, r *http.Request, filename string, data interface{}) { mustRenderTemplate(w, r, "web.gohtml", filename, data) }