mirror of
https://github.com/Floriansylvain/RenewCMS.git
synced 2026-08-19 11:43:22 +02:00
76 lines
2.0 KiB
Go
76 lines
2.0 KiB
Go
package pages
|
|
|
|
import (
|
|
"RenewCMS/api"
|
|
"RenewCMS/domain/article"
|
|
"html/template"
|
|
"net/http"
|
|
"os"
|
|
"strconv"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
)
|
|
|
|
type ArticleEditPageAlert struct {
|
|
IsError bool
|
|
Message string
|
|
}
|
|
|
|
func getArticleEditPageTemplate(post article.Article, alert ArticleEditPageAlert) []byte {
|
|
navbarTmpl, _ := api.Container.GetPageUseCase.GetPage("componentNavbar", nil)
|
|
articleTmpl, _ := api.Container.GetPageUseCase.GetPage("articleEdit", map[string]any{
|
|
"Navbar": template.HTML(navbarTmpl),
|
|
"Head": headTmpl,
|
|
"Article": post,
|
|
"Alert": alert,
|
|
"Secured": os.Getenv("ENVIRONMENT") == "production",
|
|
})
|
|
return articleTmpl
|
|
}
|
|
|
|
func PostArticleEditPage(w http.ResponseWriter, r *http.Request) {
|
|
articleID := chi.URLParam(r, "id")
|
|
articleIDint, err := strconv.Atoi(articleID)
|
|
if err != nil {
|
|
_, _ = w.Write(getArticleEditPageTemplate(article.Article{}, ArticleEditPageAlert{
|
|
IsError: true,
|
|
Message: "Could not find the requested article.",
|
|
}))
|
|
return
|
|
}
|
|
|
|
_ = r.ParseForm()
|
|
articleBody := r.FormValue("articleBody")
|
|
|
|
getArticle, _ := api.Container.GetArticleUseCase.GetArticle(uint32(articleIDint))
|
|
updatedArticle, err := api.Container.UpdateArticleUseCase.UpdateBody(getArticle.ID, articleBody)
|
|
if err != nil {
|
|
_, _ = w.Write(getArticleEditPageTemplate(article.Article{Body: articleBody}, ArticleEditPageAlert{
|
|
IsError: true,
|
|
Message: "Could not save the article: " + err.Error(),
|
|
}))
|
|
return
|
|
}
|
|
|
|
_, _ = w.Write(getArticleEditPageTemplate(updatedArticle, ArticleEditPageAlert{
|
|
IsError: false,
|
|
Message: "Article successfully edited!",
|
|
}))
|
|
}
|
|
|
|
func GetArticleEditPage(w http.ResponseWriter, r *http.Request) {
|
|
articleID := chi.URLParam(r, "id")
|
|
articleIDint, err := strconv.Atoi(articleID)
|
|
if err != nil {
|
|
w.WriteHeader(http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
getArticle, _ := api.Container.GetArticleUseCase.GetArticle(uint32(articleIDint))
|
|
|
|
_, _ = w.Write(getArticleEditPageTemplate(getArticle, ArticleEditPageAlert{
|
|
IsError: false,
|
|
Message: "",
|
|
}))
|
|
}
|