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()) }