Просмотр исходного кода

#1830 new comment with status change overwrites issue content

Unknwon 9 лет назад
Родитель
Сommit
e0aab4a7f6
2 измененных файлов с 14 добавлено и 4 удалено
  1. 8 1
      models/issue.go
  2. 6 3
      routers/repo/issue.go

+ 8 - 1
models/issue.go

@@ -233,7 +233,7 @@ func (i *Issue) changeStatus(e *xorm.Session, doer *User, isClosed bool) (err er
 	}
 	i.IsClosed = isClosed
 
-	if err = updateIssue(e, i); err != nil {
+	if err = updateIssueCols(e, i, "is_closed"); err != nil {
 		return err
 	} else if err = updateIssueUsersByStatus(e, i.ID, isClosed); err != nil {
 		return err
@@ -813,11 +813,18 @@ func GetRepoIssueStats(repoID, uid int64, filterMode int, isPull bool) (numOpen
 	return numOpen, numClosed
 }
 
+// updateIssue updates all fields of given issue.
 func updateIssue(e Engine, issue *Issue) error {
 	_, err := e.Id(issue.ID).AllCols().Update(issue)
 	return err
 }
 
+// updateIssueCols update specific fields of given issue.
+func updateIssueCols(e Engine, issue *Issue, cols ...string) error {
+	_, err := e.Id(issue.ID).Cols(cols...).Update(issue)
+	return err
+}
+
 // UpdateIssue updates information of issue.
 func UpdateIssue(issue *Issue) error {
 	return updateIssue(x, issue)

+ 6 - 3
routers/repo/issue.go

@@ -786,7 +786,7 @@ func NewComment(ctx *middleware.Context, form auth.CreateCommentForm) {
 				if err = issue.ChangeStatus(ctx.User, form.Status == "close"); err != nil {
 					log.Error(4, "ChangeStatus: %v", err)
 				} else {
-					log.Trace("Issue[%d] status changed: %v", issue.ID, !issue.IsClosed)
+					log.Trace("Issue[%d] status changed to closed: %v", issue.ID, issue.IsClosed)
 				}
 			}
 		}
@@ -829,8 +829,11 @@ func NewComment(ctx *middleware.Context, form auth.CreateCommentForm) {
 
 	// Mail watchers and mentions.
 	if setting.Service.EnableNotifyMail {
-		issue.Content = form.Content
-		tos, err := mailer.SendIssueNotifyMail(ctx.User, ctx.Repo.Owner, ctx.Repo.Repository, issue)
+		tos, err := mailer.SendIssueNotifyMail(ctx.User, ctx.Repo.Owner, ctx.Repo.Repository, &models.Issue{
+			Index:   issue.Index,
+			Name:    issue.Name,
+			Content: form.Content,
+		})
 		if err != nil {
 			ctx.Handle(500, "SendIssueNotifyMail", err)
 			return