func FuncMap(domain *gettext.Domain) template.FuncMap { return template.FuncMap{ "UnEscaped": func(x string) interface{} { return template.HTML(x) }, "UnEscapedURL": func(x string) interface{} { return template.URL(x) }, "GetText": func(lang string, text string) string { return domain.GetText(lang, text) }, "Equal": func(one string, two string) bool { return one == two }, "Not": func(b bool) bool { return !b }, "And": func(a bool, b bool) bool { return a && b }, "UserManual": func(lang string) string { if _, ok := HaveManual[lang]; !ok { lang = "en" } return lang }, } }
func FuncMap(domain *gettext.Domain) template.FuncMap { return template.FuncMap{ "UnEscaped": func(x string) interface{} { return template.HTML(x) }, "UnEscapedURL": func(x string) interface{} { return template.URL(x) }, "GetText": func(lang string, text string) string { return domain.GetText(lang, text) }, } }
func WriteHTMLBuf(w http.ResponseWriter, r *http.Request, Layout *template.Template, domain *gettext.Domain, tmp string, p Page) { buf := new(bytes.Buffer) // render template if err := Layout.ExecuteTemplate(buf, tmp, p); err != nil { log.Printf("Layout.ExecuteTemplate: %v", err) http.Error(w, domain.GetText(p.Lang, "Sorry, your query failed or an unexpected response was received."), http.StatusInternalServerError) return } // set some headers w.Header().Set("Content-Type", "text/html; charset=utf-8") if r.Method == "HEAD" { w.Header().Set("Content-Length", strconv.Itoa(buf.Len())) return } // write buf if _, err := io.Copy(w, buf); err != nil { log.Printf("io.Copy: %v", err) } }