mirror of https://github.com/jlelse/GoBlog
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
4 months ago
|
package main
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"path"
|
||
|
"strconv"
|
||
|
)
|
||
|
|
||
|
const commentEditSubPath = "/edit"
|
||
|
|
||
|
func (a *goBlog) serveCommentsEditor(w http.ResponseWriter, r *http.Request) {
|
||
|
id, err := strconv.Atoi(r.FormValue("id"))
|
||
|
if err != nil {
|
||
|
a.serveError(w, r, "id missing or wrong format", http.StatusBadRequest)
|
||
|
return
|
||
|
}
|
||
|
comments, err := a.db.getComments(&commentsRequestConfig{id: id})
|
||
|
if err != nil {
|
||
|
a.serveError(w, r, "failed to query comments from database", http.StatusInternalServerError)
|
||
|
return
|
||
|
}
|
||
|
if len(comments) < 1 {
|
||
|
a.serve404(w, r)
|
||
|
return
|
||
|
}
|
||
|
comment := comments[0]
|
||
|
blog, bc := a.getBlog(r)
|
||
|
if r.Method == http.MethodPost {
|
||
|
name := r.FormValue("name")
|
||
|
website := r.FormValue("website")
|
||
|
commentText := r.FormValue("comment")
|
||
|
if err := a.db.updateComment(id, commentText, name, website); err != nil {
|
||
|
a.serveError(w, r, err.Error(), http.StatusInternalServerError)
|
||
|
return
|
||
|
}
|
||
|
a.cache.purge()
|
||
|
// Resend webmention
|
||
|
commentAddress := bc.getRelativePath(path.Join(commentPath, strconv.Itoa(id)))
|
||
|
_ = a.createWebmention(a.getFullAddress(commentAddress), a.getFullAddress(comment.Target))
|
||
|
// Redirect to comment
|
||
|
http.Redirect(w, r, commentAddress, http.StatusFound)
|
||
|
return
|
||
|
}
|
||
|
a.render(w, r, a.renderCommentEditor, &renderData{
|
||
|
Data: comment,
|
||
|
BlogString: blog,
|
||
|
})
|
||
|
}
|