From 58e75cf7a67e53e5b2141543321c12c95f6c924f Mon Sep 17 00:00:00 2001 From: mikestefanello Date: Sat, 11 Dec 2021 16:06:28 -0500 Subject: [PATCH] Combine error templates. --- Makefile | 1 + controllers/error.go | 4 +--- controllers/page.go | 2 ++ views/layouts/main.gohtml | 10 +++++----- views/pages/error.gohtml | 11 +++++++++++ views/pages/errors/404.gohtml | 3 --- views/pages/errors/500.gohtml | 3 --- views/pages/register.gohtml | 8 ++++---- 8 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 views/pages/error.gohtml delete mode 100644 views/pages/errors/404.gohtml delete mode 100644 views/pages/errors/500.gohtml diff --git a/Makefile b/Makefile index 715b09b..c98bc93 100644 --- a/Makefile +++ b/Makefile @@ -21,4 +21,5 @@ up: .PHONY: run run: + clear go run main.go \ No newline at end of file diff --git a/controllers/error.go b/controllers/error.go index e719962..0dd243e 100644 --- a/controllers/error.go +++ b/controllers/error.go @@ -1,7 +1,6 @@ package controllers import ( - "fmt" "net/http" "github.com/labstack/echo/v4" @@ -26,8 +25,7 @@ func (e *Error) Get(err error, c echo.Context) { p := NewPage(c) p.Layout = "main" p.Title = http.StatusText(code) - // TODO: fallback if there is no error template - p.Name = fmt.Sprintf("errors/%d", code) + p.Name = "error" p.StatusCode = code if err = e.RenderPage(c, p); err != nil { diff --git a/controllers/page.go b/controllers/page.go index d87f2f7..5e10f3c 100644 --- a/controllers/page.go +++ b/controllers/page.go @@ -41,6 +41,7 @@ type Page struct { MaxAge time.Duration Tags []string } + RequestID string } func NewPage(c echo.Context) Page { @@ -51,6 +52,7 @@ func NewPage(c echo.Context) Page { StatusCode: http.StatusOK, Pager: pager.NewPager(c, DefaultItemsPerPage), Headers: make(map[string]string), + RequestID: c.Response().Header().Get(echo.HeaderXRequestID), } p.IsHome = p.Path == "/" diff --git a/views/layouts/main.gohtml b/views/layouts/main.gohtml index f2d941f..73345bc 100644 --- a/views/layouts/main.gohtml +++ b/views/layouts/main.gohtml @@ -28,12 +28,12 @@
- {{- if .Title}} -

{{.Title}}

- {{- end}} + {{- if .Title}} +

{{.Title}}

+ {{- end}} - {{template "messages" .}} - {{template "content" .}} + {{template "messages" .}} + {{template "content" .}}
diff --git a/views/pages/error.gohtml b/views/pages/error.gohtml new file mode 100644 index 0000000..2a323ff --- /dev/null +++ b/views/pages/error.gohtml @@ -0,0 +1,11 @@ +{{define "content"}} + {{if gt .StatusCode 500}} +

Please try again. Request ID: {{.RequestID}}

+ {{else if or (eq .StatusCode 403) (eq .StatusCode 401)}} +

You are not authorized to view the requested page.

+ {{else if eq .StatusCode 404}} +

Click {{link (call .Reverse "home") "here" .Path}} to return home

+ {{else}} +

Something went wrong

+ {{end}} +{{end}} \ No newline at end of file diff --git a/views/pages/errors/404.gohtml b/views/pages/errors/404.gohtml deleted file mode 100644 index c62cb6b..0000000 --- a/views/pages/errors/404.gohtml +++ /dev/null @@ -1,3 +0,0 @@ -{{define "content"}} -

Click {{link (call .Reverse "home") "here" .Path}} to return home

-{{end}} \ No newline at end of file diff --git a/views/pages/errors/500.gohtml b/views/pages/errors/500.gohtml deleted file mode 100644 index b043f8b..0000000 --- a/views/pages/errors/500.gohtml +++ /dev/null @@ -1,3 +0,0 @@ -{{define "content"}} -

Please try again

-{{end}} \ No newline at end of file diff --git a/views/pages/register.gohtml b/views/pages/register.gohtml index c4d4b54..ccf02e2 100644 --- a/views/pages/register.gohtml +++ b/views/pages/register.gohtml @@ -1,15 +1,15 @@ {{define "content"}}
- +
- +
- +
- +