From 2e7e3018584db6df647f1ba445f7917581cc86cb Mon Sep 17 00:00:00 2001 From: dragon Date: Tue, 15 Apr 2025 17:38:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A8=A1=E6=9D=BF=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.go | 12 ++++++------ errors.html.tmpl | 4 ++-- pkg/utils/template.go | 6 ++++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/config.go b/config.go index bb2d4ce..711332d 100644 --- a/config.go +++ b/config.go @@ -2,14 +2,12 @@ package main import ( _ "embed" - "html/template" "net/http" "os" "path/filepath" + "text/template" "time" - sprig "github.com/go-task/slim-sprig/v3" - "github.com/alecthomas/units" "code.d7z.net/d7z-project/gitea-pages/pkg" @@ -54,13 +52,13 @@ func (c *Config) NewPageServerOptions() (*pkg.ServerOptions, error) { if c.Page.DefaultBranch == "" { c.Page.DefaultBranch = "gh-pages" } - defaultErr := template.Must(template.New("err").Funcs(sprig.FuncMap()).Parse(defaultErrPage)) + defaultErr := utils.NewTemplate(defaultErrPage) if c.Page.ErrUnknownPage != "" { data, err := os.ReadFile(c.Page.ErrUnknownPage) if err != nil { return nil, errors.Wrapf(err, "failed to read file %s", string(data)) } - c.pageErrUnknown = template.Must(template.New("err").Funcs(sprig.FuncMap()).Parse(c.Page.ErrUnknownPage)) + c.pageErrUnknown = utils.NewTemplate(c.Page.ErrUnknownPage) } else { c.pageErrUnknown = defaultErr } @@ -69,7 +67,7 @@ func (c *Config) NewPageServerOptions() (*pkg.ServerOptions, error) { if err != nil { return nil, errors.Wrapf(err, "failed to read file %s", c.Page.ErrNotFoundPage) } - c.pageErrNotFound = template.Must(template.New("err").Funcs(sprig.FuncMap()).Parse(string(data))) + c.pageErrNotFound = utils.NewTemplate(string(data)) } else { c.pageErrNotFound = defaultErr } @@ -100,6 +98,7 @@ func (c *Config) ErrorHandler(w http.ResponseWriter, r *http.Request, err error) w.WriteHeader(http.StatusNotFound) if err = c.pageErrNotFound.Execute(w, utils.NewTemplateInject(r, map[string]any{ "Error": err, + "Path": r.URL.Path, "Code": 404, })); err != nil { zap.L().Error("failed to render error page", zap.Error(err)) @@ -108,6 +107,7 @@ func (c *Config) ErrorHandler(w http.ResponseWriter, r *http.Request, err error) w.WriteHeader(http.StatusInternalServerError) if err = c.pageErrUnknown.Execute(w, utils.NewTemplateInject(r, map[string]any{ "Error": err, + "Path": r.URL.Path, "Code": 500, })); err != nil { zap.L().Error("failed to render error page", zap.Error(err)) diff --git a/errors.html.tmpl b/errors.html.tmpl index 710a58c..687601f 100644 --- a/errors.html.tmpl +++ b/errors.html.tmpl @@ -5,11 +5,11 @@ -{{ if eq .code 404 }}404 Not Found{{ else }}500 Unknown Error{{ end }} +{{ if eq .Code 404 }}404 Not Found{{ else }}500 Unknown Error{{ end }}
- {{ if eq .code 404 }}

404 Not Found

{{ else }}

500 Unknown Error

{{ end }} + {{ if eq .Code 404 }}

404 Not Found

{{ else }}

500 Unknown Error

{{ end }}

Gitea Pages
diff --git a/pkg/utils/template.go b/pkg/utils/template.go index e60ce07..113c830 100644 --- a/pkg/utils/template.go +++ b/pkg/utils/template.go @@ -1,8 +1,10 @@ package utils import ( + sprig "github.com/go-task/slim-sprig/v3" "net/http" "strings" + "text/template" ) func NewTemplateInject(r *http.Request, def map[string]any) map[string]any { @@ -23,3 +25,7 @@ func NewTemplateInject(r *http.Request, def map[string]any) map[string]any { } return def } + +func NewTemplate(data string) *template.Template { + return template.Must(template.New("err").Funcs(sprig.FuncMap()).Parse(data)) +}