mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-10-29 09:15:33 +00:00
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package pages
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/Theodor-Springmann-Stiftung/musenalm/app"
|
|
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
|
|
"github.com/Theodor-Springmann-Stiftung/musenalm/templating"
|
|
"github.com/pocketbase/pocketbase/core"
|
|
"github.com/pocketbase/pocketbase/tools/router"
|
|
)
|
|
|
|
const URL_ERROR_404 = "/errors/404/"
|
|
|
|
func init() {
|
|
rp := &Error404Page{
|
|
Page: pagemodels.Page{
|
|
Name: URL_ERROR_404,
|
|
},
|
|
}
|
|
app.Register(rp)
|
|
}
|
|
|
|
type Error404Page struct {
|
|
pagemodels.Page
|
|
}
|
|
|
|
func (p *Error404Page) Setup(router *router.Router[*core.RequestEvent], app core.App, engine *templating.Engine) error {
|
|
router.GET(URL_ERROR_404, func(e *core.RequestEvent) error {
|
|
return Error404(e, engine, nil)
|
|
})
|
|
return nil
|
|
}
|
|
|
|
func Error404(e *core.RequestEvent, engine *templating.Engine, err error) error {
|
|
data := make(map[string]interface{})
|
|
var sb strings.Builder
|
|
if err != nil {
|
|
e.App.Logger().Error("404 error fetching URL!", "error", err, "request", e.Request.URL)
|
|
data["Error"] = err.Error()
|
|
}
|
|
err = engine.Render(&sb, URL_ERROR_404, data, "default")
|
|
if err != nil {
|
|
return e.String(http.StatusInternalServerError, err.Error())
|
|
}
|
|
return e.HTML(http.StatusNotFound, sb.String())
|
|
}
|