added unescaping of html values for blog posts. The function can be reused elsewhere aswell.

This commit is contained in:
rawleyIfowler
2022-02-27 11:00:39 -06:00
parent 0fae702255
commit a2779c487c
3 changed files with 14 additions and 3 deletions

View File

@@ -104,8 +104,9 @@ func CreateBlogPost(c *gin.Context) {
return return
} }
// Create the blog post in the database // Create the blog post in the database
if db.Create(&data).Error != nil { err = db.Create(&data).Error
c.Status(http.StatusNotAcceptable) if err != nil {
c.JSON(http.StatusNotAcceptable, "{ \"error\": "+err.Error()+" }")
} else { } else {
c.Status(http.StatusAccepted) c.Status(http.StatusAccepted)
} }
@@ -186,6 +187,7 @@ func GetBlogPostById(id string) *models.BlogPost {
} }
func GetCommentsByContent(content string, url string) *[]models.Comment { func GetCommentsByContent(content string, url string) *[]models.Comment {
// This is used to make sure people don't paste the same thing over and over.
var comments []models.Comment var comments []models.Comment
err := db.Model(&comments).Where("content like ? and associated_post like ?", "%"+content[1:]+"%", url).Scan(&comments).Error err := db.Model(&comments).Where("content like ? and associated_post like ?", "%"+content[1:]+"%", url).Scan(&comments).Error
if err != nil { if err != nil {

View File

@@ -18,6 +18,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.Rawley Fow
*/ */
import ( import (
"html/template"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"gitlab.com/rawleyifowler/site-rework/bootstrap" "gitlab.com/rawleyifowler/site-rework/bootstrap"
) )
@@ -28,6 +30,13 @@ var dsn string
func main() { func main() {
router = gin.Default() router = gin.Default()
router.Use(gin.Recovery()) router.Use(gin.Recovery())
// Create function map for templates that will unescape HTML from the database
// Credits to: https://h1z3y3.me/posts/go-html-template-script-unescape
funcMap := make(template.FuncMap)
funcMap["UnescapeHTML"] = func(s string) template.HTML {
return template.HTML(s)
}
router.SetFuncMap(funcMap)
// This needs to change because of RCCTL in OpenBSD, not sure if you can use a ksh variable as path in Gin but i'll test // This needs to change because of RCCTL in OpenBSD, not sure if you can use a ksh variable as path in Gin but i'll test
router.LoadHTMLGlob("templates/*.tmpl") router.LoadHTMLGlob("templates/*.tmpl")
bootstrap.InitializeRoutes(router) bootstrap.InitializeRoutes(router)

View File

@@ -1,7 +1,7 @@
{{ template "header.tmpl" . }} {{ template "header.tmpl" . }}
<div> <div>
<h2>{{ .Post.Title }}</h2> <h2>{{ .Post.Title }}</h2>
<div>{{ .Post.Content }}</div> <div>{{ .Post.Content | UnescapeHTML }}</div>
<h4>Comments</h4> <h4>Comments</h4>
{{ range $comment := .Post.Comments }} {{ range $comment := .Post.Comments }}
<div class="comment"> <div class="comment">