content_handlers.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package controller
  2. import (
  3. "os"
  4. "time"
  5. "git.aetherial.dev/aeth/keiji/pkg/helpers"
  6. "github.com/gin-gonic/gin"
  7. )
  8. func (c *Controller) ServeBlogDirectory(ctx *gin.Context) {
  9. ctx.HTML(200, "admin", gin.H{
  10. "navigation": gin.H{
  11. "menu": c.Menu(),
  12. "headers": c.Headers().Elements,
  13. },
  14. "Tables": c.FormatDocTable().Tables,
  15. })
  16. }
  17. func (c *Controller) GetBlogPostEditor(ctx *gin.Context) {
  18. rds := helpers.NewRedisClient(c.RedisConfig)
  19. post, exist := ctx.Params.Get("post-name")
  20. if !exist {
  21. ctx.JSON(404, map[string]string{
  22. "Error": "the requested file could not be found",
  23. })
  24. return
  25. }
  26. doc, err := rds.GetItem(post)
  27. if err != nil {
  28. ctx.JSON(500, map[string]string{
  29. "Error": err.Error(),
  30. })
  31. return
  32. }
  33. ctx.HTML(200, "blogpost_editor", gin.H{
  34. "navigation": gin.H{
  35. "menu": c.Menu(),
  36. "headers": c.Headers().Elements,
  37. },
  38. "HttpMethod": "patch",
  39. "Ident": doc.Ident,
  40. "Topics": helpers.Topics,
  41. "DefaultTopic": doc.Category,
  42. "Created": doc.Created,
  43. "Body": doc.Body,
  44. })
  45. }
  46. func (c *Controller) UpdateBlogPost(ctx *gin.Context) {
  47. var doc helpers.Document
  48. err := ctx.ShouldBind(&doc); if err != nil {
  49. ctx.HTML(500, "upload_status", gin.H{"UpdateMessage": "Update Failed!", "Color": "red"})
  50. return
  51. }
  52. rds := helpers.NewRedisClient(helpers.RedisConf{Addr: os.Getenv("REDIS_ADDR"), Port: os.Getenv("REDIS_PORT")})
  53. err = rds.UpdatePost(doc.Ident, doc); if err != nil {
  54. ctx.HTML(400, "upload_status", gin.H{"UpdateMessage": "Update Failed!", "Color": "red"})
  55. return
  56. }
  57. ctx.HTML(200, "upload_status", gin.H{"UpdateMessage": "Update Successful!", "Color": "green"})
  58. }
  59. func (c *Controller) ServeNewBlogPage(ctx *gin.Context) {
  60. ctx.HTML(200, "new_blogpost", gin.H{
  61. "navigation": gin.H{
  62. "menu": c.Menu(),
  63. "headers": c.Headers().Elements,
  64. },
  65. "HttpMethod": "post",
  66. "Topics": helpers.Topics,
  67. "Created": time.Now().UTC().String(),
  68. })
  69. }
  70. func (c *Controller) MakeBlogPost(ctx *gin.Context) {
  71. var doc helpers.Document
  72. err := ctx.ShouldBind(&doc); if err != nil {
  73. ctx.HTML(500, "upload_status", gin.H{"UpdateMessage": "Update Failed!", "Color": "red"})
  74. return
  75. }
  76. rds := helpers.NewRedisClient(helpers.RedisConf{Addr: os.Getenv("REDIS_ADDR"), Port: os.Getenv("REDIS_PORT")})
  77. err = rds.AddDoc(doc); if err != nil {
  78. ctx.HTML(400, "upload_status", gin.H{"UpdateMessage": "Update Failed!", "Color": "red"})
  79. return
  80. }
  81. ctx.HTML(200, "upload_status", gin.H{"UpdateMessage": "Update Successful!", "Color": "green"})
  82. }
  83. func (c *Controller) ServeFileUpload(ctx *gin.Context) {
  84. ctx.HTML(200, "upload", gin.H{
  85. "navigation": gin.H{
  86. "menu": c.Menu(),
  87. "headers": c.Headers().Elements,
  88. },
  89. })
  90. }
  91. func (c *Controller) SaveFile(ctx *gin.Context) {
  92. file, err := ctx.FormFile("file")
  93. if err != nil {
  94. ctx.HTML(400, "upload_status", gin.H{"UpdateMessage": err, "Color": "red"})
  95. return
  96. }
  97. var img helpers.ImageStoreItem
  98. err = ctx.ShouldBind(&img); if err != nil {
  99. ctx.HTML(500, "upload_status", gin.H{"UpdateMessage": err, "Color": "red"})
  100. return
  101. }
  102. savedImg := helpers.NewImageStoreItem(file.Filename, img.Title, img.Desc)
  103. err = c.SaveImage(savedImg); if err != nil {
  104. ctx.HTML(500, "upload_status", gin.H{"UpdateMessage": err, "Color": "red"})
  105. return
  106. }
  107. // Upload the file to specific dst.
  108. err = ctx.SaveUploadedFile(file, savedImg.AbsolutePath)
  109. if err != nil {
  110. ctx.HTML(400, "upload_status", gin.H{"UpdateMessage": err, "Color": "red"})
  111. return
  112. }
  113. ctx.HTML(200, "upload_status", gin.H{"UpdateMessage": "Update Successful!", "Color": "green"})
  114. }