github.com/ngocphuongnb/tetua@v0.0.7-alpha/app/web/post/compose.go (about) 1 package webpost 2 3 import ( 4 "net/http" 5 6 "github.com/ngocphuongnb/tetua/app/entities" 7 "github.com/ngocphuongnb/tetua/app/repositories" 8 "github.com/ngocphuongnb/tetua/app/server" 9 "github.com/ngocphuongnb/tetua/views" 10 ) 11 12 func Compose(c server.Context) (err error) { 13 featuredImage := &entities.File{} 14 postData := entities.PostMutation{} 15 c.Meta().Title = "Create Post" 16 17 if post := c.Post(); post != nil { 18 c.Meta().Title = "Edit Post: " + post.Name 19 featuredImage = post.FeaturedImage 20 postData.Name = post.Name 21 postData.Draft = post.Draft 22 postData.Content = post.Content 23 postData.FeaturedImageID = post.FeaturedImageID 24 postTopics := post.Topics 25 26 for _, topic := range postTopics { 27 postData.TopicIDs = append(postData.TopicIDs, topic.ID) 28 } 29 } 30 31 return getComposeView(c, &postData, featuredImage) 32 } 33 34 func getComposeView(c server.Context, data *entities.PostMutation, featuredImage *entities.File) (err error) { 35 status := http.StatusOK 36 topics, err := repositories.Topic.All(c.Context()) 37 38 if err != nil { 39 c.Logger().Error("Error getting topics", err) 40 c.Messages().AppendError("Error getting topics") 41 } 42 43 if c.Messages().HasError() { 44 status = http.StatusBadRequest 45 } 46 47 return c.Status(status).Render(views.PostCompose(entities.PrintTopicsTree(topics, []int{}), data, featuredImage)) 48 }