50 lines
965 B
Go
50 lines
965 B
Go
package controllers
|
|
|
|
import (
|
|
"bytes"
|
|
"html/template"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type AdminController struct{}
|
|
|
|
func NewAdminController() *AdminController {
|
|
return &AdminController{}
|
|
}
|
|
|
|
func (ac *AdminController) Dashboard(c *fiber.Ctx) error {
|
|
return renderAdminPage(c, "Admin")
|
|
}
|
|
|
|
func renderAdminPage(c *fiber.Ctx, title string) error {
|
|
viewData := map[string]any{
|
|
"Title": title,
|
|
"NavSection": "admin",
|
|
}
|
|
for k, v := range localsTemplateData(c) {
|
|
viewData[k] = v
|
|
}
|
|
|
|
files := []string{
|
|
"web/templates/layout.html",
|
|
"web/templates/public/_navbar.html",
|
|
"web/templates/partials/language_dropdown.html",
|
|
"web/templates/public/_flash.html",
|
|
"web/templates/admin/admin.html",
|
|
}
|
|
|
|
tmpl, err := template.ParseFiles(files...)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var out bytes.Buffer
|
|
if err := tmpl.ExecuteTemplate(&out, "layout.html", viewData); err != nil {
|
|
return err
|
|
}
|
|
|
|
c.Type("html", "utf-8")
|
|
return c.Send(out.Bytes())
|
|
}
|