71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package handlers
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
"lmika.dev/lmika/weiro/models"
|
|
"lmika.dev/lmika/weiro/services/sites"
|
|
)
|
|
|
|
type SiteSettingsHandler struct {
|
|
SiteService *sites.Service
|
|
}
|
|
|
|
func (s *SiteSettingsHandler) New(c fiber.Ctx) error {
|
|
return c.Render("sitesettings/new", fiber.Map{}, "layouts/bare_with_scripts")
|
|
}
|
|
|
|
func (s *SiteSettingsHandler) Create(c fiber.Ctx) error {
|
|
var params sites.CreateSiteParams
|
|
if err := c.Bind().Body(¶ms); err != nil {
|
|
return err
|
|
}
|
|
|
|
newSite, err := s.SiteService.CreateSite(c.Context(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return c.Redirect().To(fmt.Sprintf("/sites/%v/posts", newSite.ID))
|
|
}
|
|
|
|
func (s *SiteSettingsHandler) General(c fiber.Ctx) error {
|
|
site := c.Locals("site").(models.Site)
|
|
|
|
return c.Render("sitesettings/general", fiber.Map{
|
|
"site": site,
|
|
"tzones": sites.ListZones(),
|
|
})
|
|
}
|
|
|
|
func (s *SiteSettingsHandler) UpdateGeneral(c fiber.Ctx) error {
|
|
site := c.Locals("site").(models.Site)
|
|
|
|
var params sites.UpdateSiteSettingsParams
|
|
if err := c.Bind().Body(¶ms); err != nil {
|
|
return err
|
|
}
|
|
params.SiteID = site.ID
|
|
|
|
if _, err := s.SiteService.UpdateSiteSettings(c.Context(), params); err != nil {
|
|
return err
|
|
}
|
|
|
|
return c.Redirect().To(fmt.Sprintf("/sites/%v/settings", +site.ID))
|
|
}
|
|
|
|
func (ph PostsHandler) Rebuild(c fiber.Ctx) error {
|
|
site := c.Locals("site").(models.Site)
|
|
|
|
if err := ph.PostService.RebuildSite(c.Context()); err != nil {
|
|
return err
|
|
}
|
|
|
|
return accepts(c, json(func() any {
|
|
return fiber.Map{}
|
|
}), html(func(c fiber.Ctx) error {
|
|
return c.Redirect().To(fmt.Sprintf("/sites/%v/settings", +site.ID))
|
|
}))
|
|
}
|