mirror of
https://github.com/Floriansylvain/RenewCMS.git
synced 2026-08-19 11:43:22 +02:00
feat: post edition save
This commit is contained in:
@@ -14,6 +14,7 @@ type UseCases struct {
|
||||
CreatePostUseCase *useCases.CreatePostUseCase
|
||||
GetPostUseCase *useCases.GetPostUseCase
|
||||
ListPostsUseCase *useCases.ListPostsUseCase
|
||||
UpdatePostUseCase *useCases.UpdatePostUseCase
|
||||
GetUserUseCase *useCases.GetUserUseCase
|
||||
CreateUserUseCase *useCases.CreateUserUseCase
|
||||
UpdateUserUseCase *useCases.UpdateUserUseCase
|
||||
@@ -49,6 +50,7 @@ func InitContainer() {
|
||||
CreatePostUseCase: useCases.NewCreatePostUseCase(db),
|
||||
GetPostUseCase: useCases.NewGetPostUseCase(db),
|
||||
ListPostsUseCase: useCases.NewListPostsUseCase(db),
|
||||
UpdatePostUseCase: useCases.NewUpdatePostUseCase(db),
|
||||
GetUserUseCase: useCases.NewGetUserUseCase(db),
|
||||
CreateUserUseCase: useCases.NewCreateUserUseCase(db),
|
||||
UpdateUserUseCase: useCases.NewUpdateUserUseCase(db),
|
||||
|
||||
@@ -123,6 +123,7 @@ func NewPageRouter() http.Handler {
|
||||
r.Get("/home", GetHomePage)
|
||||
r.Get("/post", GetPostsPage)
|
||||
r.Get("/post/{name}/edit", GetPostEditPage)
|
||||
r.Post("/post/{name}/edit", PostPostEditPage)
|
||||
r.Get("/post/create", GetPostCreatePage)
|
||||
r.Post("/post/create", PostPostCreatePage)
|
||||
})
|
||||
|
||||
+53
-10
@@ -4,22 +4,65 @@ import (
|
||||
"github.com/go-chi/chi/v5"
|
||||
"html/template"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type PostEditPageAlert struct {
|
||||
IsError bool
|
||||
Message string
|
||||
}
|
||||
|
||||
func getPostEditPageTemplate(body string, alert PostEditPageAlert) []byte {
|
||||
navbarTmpl, _ := Container.GetPageUseCase.GetPage("componentNavbar", nil)
|
||||
postTmpl, _ := Container.GetPageUseCase.GetPage("postEdit", map[string]interface{}{
|
||||
"Navbar": template.HTML(navbarTmpl),
|
||||
"Head": headTmpl,
|
||||
"Body": body,
|
||||
"Alert": alert,
|
||||
})
|
||||
return postTmpl
|
||||
}
|
||||
|
||||
func PostPostEditPage(w http.ResponseWriter, r *http.Request) {
|
||||
postName := chi.URLParam(r, "name")
|
||||
if len(postName) == 0 {
|
||||
_, _ = w.Write(getPostEditPageTemplate("", PostEditPageAlert{
|
||||
IsError: true,
|
||||
Message: "Could not find the requested post.",
|
||||
}))
|
||||
return
|
||||
}
|
||||
|
||||
_ = r.ParseForm()
|
||||
postBody := r.FormValue("postBody")
|
||||
|
||||
parsedName, _ := url.PathUnescape(postName)
|
||||
post, _ := Container.GetPostUseCase.GetPostByName(parsedName)
|
||||
err := Container.UpdatePostUseCase.UpdateBody(post.ID, postBody)
|
||||
if err != nil {
|
||||
_, _ = w.Write(getPostEditPageTemplate(postBody, PostEditPageAlert{
|
||||
IsError: true,
|
||||
Message: "Could not save the post: " + err.Error(),
|
||||
}))
|
||||
return
|
||||
}
|
||||
|
||||
_, _ = w.Write(getPostEditPageTemplate(postBody, PostEditPageAlert{
|
||||
IsError: false,
|
||||
Message: "Post successfully edited!",
|
||||
}))
|
||||
}
|
||||
|
||||
func GetPostEditPage(w http.ResponseWriter, r *http.Request) {
|
||||
postName := chi.URLParam(r, "name")
|
||||
if len(postName) == 0 {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
post, _ := Container.GetPostUseCase.GetPostByName(postName)
|
||||
|
||||
navbarTmpl, _ := Container.GetPageUseCase.GetPage("componentNavbar", nil)
|
||||
postsTmpl, _ := Container.GetPageUseCase.GetPage("postEdit", map[string]interface{}{
|
||||
"Navbar": template.HTML(navbarTmpl),
|
||||
"Head": headTmpl,
|
||||
"Body": post.Body,
|
||||
})
|
||||
_, _ = w.Write(postsTmpl)
|
||||
parsedName, _ := url.PathUnescape(postName)
|
||||
post, _ := Container.GetPostUseCase.GetPostByName(parsedName)
|
||||
_, _ = w.Write(getPostEditPageTemplate(post.Body, PostEditPageAlert{
|
||||
IsError: false,
|
||||
Message: "",
|
||||
}))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user