Add prettier default error page.

This commit is contained in:
Mihai Parparita 2014-12-07 14:58:46 -08:00
parent fc216fb3de
commit e72f87d801
2 changed files with 38 additions and 3 deletions

View file

@ -5,7 +5,6 @@ import (
"errors"
"fmt"
"html/template"
"io"
"io/ioutil"
"log"
"net/http"
@ -209,7 +208,19 @@ func handleAppError(e *AppError, w http.ResponseWriter, r *http.Request) {
}
if e.Type != AppErrorTypeBadInput {
c.Errorf("%v", e.Error)
sendAppErrorMail(e, r)
if !appengine.IsDevAppServer() {
sendAppErrorMail(e, r)
}
var data = map[string]interface{}{
"ShowDetails": appengine.IsDevAppServer(),
"Error": e,
}
w.WriteHeader(e.Code)
templateError := templates["internal-error"].Render(w, data)
if templateError != nil {
c.Errorf("Error %s rendering error template.", templateError.Error.Error())
}
return
} else {
c.Infof("%v", e.Error)
}
@ -249,10 +260,11 @@ type Template struct {
*template.Template
}
func (t *Template) Render(w io.Writer, data map[string]interface{}, state ...*AppSignedInState) *AppError {
func (t *Template) Render(w http.ResponseWriter, data map[string]interface{}, state ...*AppSignedInState) *AppError {
if len(state) > 0 {
data["Flashes"] = state[0].Flashes()
}
w.Header().Set("Content-Type", "text/html; charset=utf-8")
err := t.Execute(w, data)
if err != nil {
return &AppError{

View file

@ -0,0 +1,23 @@
{{define "title"}} Internal Error {{end}}
{{define "body"}}
{{if .ShowDetails}}
<p>
<b>HTTP status code:</b> {{.Error.Code}}<br>
<b>Error type:</b> {{.Error.Type}}<br>
</p>
<p>
<b>Message:</b> {{.Error.Message}}<br>
<b>Error:</b> <pre>{{.Error.Error}}</pre>
</p>
{{else}}
An internal error occured. The developer has been notified. Hopefully it'll
be fixed soon. You can also try checking the
<a href="https://github.com/mihaip/retrogit/issues">current issues list</a>.
{{end}}
{{end}}