func (form *PostForm) UpdatePost(post *models.Post, user *models.User) error { changes := utils.FormChanges(post, form) if len(changes) == 0 { return nil } utils.SetFormValues(form, post) post.Category.Id = form.Category post.Topic.Id = form.Topic for _, c := range changes { if c == "Content" { post.ContentCache = utils.RenderMarkdown(form.Content) changes = append(changes, "ContentCache") } } // update last edit author if post.LastAuthor != nil && post.LastAuthor.Id != user.Id { post.LastAuthor = user changes = append(changes, "LastAuthor") } changes = append(changes, "Updated") return post.Update(changes...) }
func PostReplysCount(post *models.Post) { cnt, err := post.Comments().Count() if err == nil { post.Replys = int(cnt) //disable post editable post.CanEdit = false err = post.Update("Replys", "CanEdit") } if err != nil { beego.Error("PostReplysCount ", err) } }
func (form *CommentForm) SaveComment(comment *models.Comment, user *models.User, post *models.Post) error { comment.Message = form.Message comment.MessageCache = utils.RenderMarkdown(form.Message) comment.User = user comment.Post = post if err := comment.Insert(); err == nil { post.LastReply = user post.Update("LastReply", "LastReplied") cnt, _ := post.Comments().Filter("Id__lte", comment.Id).Count() comment.Floor = int(cnt) return comment.Update("Floor") } else { return err } }
func (this *ApiRouter) Post() { if this.CheckActiveRedirect() { return } if this.IsAjax() { result := map[string]interface{}{ "success": false, } action := this.GetString("action") switch action { case "toggle-best": if !this.User.IsAdmin { result["success"] = false } else { if postId, err := this.GetInt("post"); err == nil { //set post best var post models.Post if err := orm.NewOrm().QueryTable("post").Filter("Id", postId).One(&post); err == nil { post.IsBest = !post.IsBest if post.Update("IsBest") == nil { result["success"] = true } } } } case "toggle-fav": if postId, err := this.GetInt("post"); err == nil { var post models.Post if err := orm.NewOrm().QueryTable("post").Filter("Id", postId).One(&post); err == nil { if post.Id != 0 { var favoritePost models.FavoritePost if this.User.FavoritePosts().Filter("Post__id", post.Id).One(&favoritePost); err == nil { if favoritePost.Id > 0 { //toogle IsFav favoritePost.IsFav = !favoritePost.IsFav if favoritePost.Update("IsFav") == nil { //update user fav post count if favoritePost.IsFav { this.User.FavPosts += 1 } else { this.User.FavPosts -= 1 } if this.User.Update("FavPosts") == nil { result["success"] = true } } } else { favoritePost = models.FavoritePost{ User: &this.User, Post: &post, IsFav: true, } if favoritePost.Insert() == nil { //update user fav post count this.User.FavPosts += 1 if this.User.Update("FavPosts") == nil { result["success"] = true } } } } } } } } this.Data["json"] = result this.ServeJson() } }