feat: Add guide page

This commit is contained in:
2022-08-27 12:14:24 +02:00
parent 9553dbe252
commit 9c10e1b8fc
8 changed files with 157 additions and 9 deletions
+40 -7
View File
@@ -20,11 +20,13 @@ type Service interface {
HandleStoriaPage(w io.Writer, ctx Context) error
HandleQueryAppunti(w io.Writer, query string, ctx Context) error
HandleNewsPage(w io.Writer, ctx Context) error
HandleGuidePage(w io.Writer, ctx Context) error
HandleLogin(username, password string) (*model.Session, error)
HandleUser(token string) *model.User
HandleRequiredUser(ctx Context) (*model.User, error)
HandleProfilePage(w io.Writer, ctx Context) error
HandleArticlePage(w io.Writer, articleID string, ctx Context) error
HandleNewsArticlePage(w io.Writer, articleID string, ctx Context) error
HandleGuideArticlePage(w io.Writer, articleID string, ctx Context) error
}
//
@@ -40,11 +42,12 @@ func (ctx Context) getUser() *model.User {
// Handler holds references to abstract services for easy testing provided by every module (TODO: Make every field an interface of -Service)
type DefaultHandler struct {
AuthService auth.Service
Renderer *templates.TemplateRenderer
NewsArticlesRegistry *articles.Registry
ListaUtenti website.ListaUtentiService
Storia website.StoriaService
AuthService auth.Service
Renderer *templates.TemplateRenderer
NewsArticlesRegistry *articles.Registry
GuideArticlesRegistry *articles.Registry
ListaUtenti website.ListaUtentiService
Storia website.StoriaService
}
func (h *DefaultHandler) HandleStaticPage(w io.Writer, view string, ctx Context) error {
@@ -102,6 +105,18 @@ func (h *DefaultHandler) HandleNewsPage(w io.Writer, ctx Context) error {
})
}
func (h *DefaultHandler) HandleGuidePage(w io.Writer, ctx Context) error {
articles, err := h.GuideArticlesRegistry.GetArticles()
if err != nil {
return err
}
return h.Renderer.Render(w, "guide.html", util.Map{
"User": ctx.getUser(),
"Articles": articles,
})
}
func (h *DefaultHandler) HandleLogin(username, password string) (*model.Session, error) {
session, err := h.AuthService.Login(username, password)
if err != nil {
@@ -138,7 +153,7 @@ func (h *DefaultHandler) HandleProfilePage(w io.Writer, ctx Context) error {
})
}
func (h *DefaultHandler) HandleArticlePage(w io.Writer, articleID string, ctx Context) error {
func (h *DefaultHandler) HandleNewsArticlePage(w io.Writer, articleID string, ctx Context) error {
article, err := h.NewsArticlesRegistry.GetArticle(articleID)
if err != nil {
return err
@@ -155,3 +170,21 @@ func (h *DefaultHandler) HandleArticlePage(w io.Writer, articleID string, ctx Co
"ContentHTML": template.HTML(html),
})
}
func (h *DefaultHandler) HandleGuideArticlePage(w io.Writer, articleID string, ctx Context) error {
article, err := h.GuideArticlesRegistry.GetArticle(articleID)
if err != nil {
return err
}
html, err := article.Render()
if err != nil {
return err
}
return h.Renderer.Render(w, "guide-base.html", util.Map{
"User": ctx.getUser(),
"Article": article,
"ContentHTML": template.HTML(html),
})
}