2018-11-12 22:31:10 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2024-05-31 12:02:20 +00:00
|
|
|
"embed"
|
2018-11-12 22:31:10 +00:00
|
|
|
"html/template"
|
2024-05-31 12:02:20 +00:00
|
|
|
"log"
|
2018-11-12 22:31:10 +00:00
|
|
|
"net/http"
|
|
|
|
)
|
|
|
|
|
2024-05-31 12:02:20 +00:00
|
|
|
//go:embed all:static
|
|
|
|
var assets embed.FS
|
|
|
|
|
2018-11-12 22:31:10 +00:00
|
|
|
func displayTmpl(w http.ResponseWriter, page string, vars map[string]interface{}) {
|
2024-05-31 12:02:20 +00:00
|
|
|
data, err := assets.ReadFile("static/" + page)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Unable to find %q: %s", page, err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
footer, err := assets.ReadFile("static/footer.html")
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Unable to find %q: %s", "footer.html", err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
header, err := assets.ReadFile("static/header.html")
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Unable to find %q: %s", "header.html", err.Error())
|
|
|
|
}
|
|
|
|
|
2020-09-02 13:25:34 +00:00
|
|
|
tpl := template.Must(template.New("page").Parse(string(data)))
|
2024-05-31 12:02:20 +00:00
|
|
|
tpl.New("footer.html").Parse(string(footer))
|
|
|
|
tpl.New("header.html").Parse(string(header))
|
2020-09-02 13:25:34 +00:00
|
|
|
tpl.ExecuteTemplate(w, "page", vars)
|
2018-11-12 22:31:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func displayTmplError(w http.ResponseWriter, statusCode int, page string, vars map[string]interface{}) {
|
|
|
|
w.WriteHeader(statusCode)
|
|
|
|
displayTmpl(w, page, vars)
|
|
|
|
}
|
|
|
|
|
|
|
|
func displayMsg(w http.ResponseWriter, msg string, statusCode int) {
|
|
|
|
w.WriteHeader(statusCode)
|
|
|
|
|
|
|
|
label := "error"
|
|
|
|
if statusCode < 400 {
|
|
|
|
label = "message"
|
|
|
|
}
|
|
|
|
|
|
|
|
displayTmpl(w, "message.html", map[string]interface{}{label: msg})
|
|
|
|
}
|