|
|
|
@ -295,5 +295,39 @@ func Comment(ctx *middleware.Context, params martini.Params) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Notify watchers.
|
|
|
|
|
if err = models.NotifyWatchers(&models.Action{ActUserId: ctx.User.Id, ActUserName: ctx.User.Name, ActEmail: ctx.User.Email, |
|
|
|
|
OpType: models.OP_COMMENT_ISSUE, Content: fmt.Sprintf("%d|%s", issue.Index, strings.Split(content, "\n")[0]), |
|
|
|
|
RepoId: ctx.Repo.Repository.Id, RepoName: ctx.Repo.Repository.Name, RefName: ""}); err != nil { |
|
|
|
|
ctx.Handle(500, "issue.CreateIssue(NotifyWatchers)", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Mail watchers and mentions.
|
|
|
|
|
if base.Service.NotifyMail { |
|
|
|
|
issue.Content = content |
|
|
|
|
tos, err := mailer.SendIssueNotifyMail(ctx.User, ctx.Repo.Owner, ctx.Repo.Repository, issue) |
|
|
|
|
if err != nil { |
|
|
|
|
ctx.Handle(500, "issue.Comment(SendIssueNotifyMail)", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
tos = append(tos, ctx.User.LowerName) |
|
|
|
|
ms := base.MentionPattern.FindAllString(issue.Content, -1) |
|
|
|
|
newTos := make([]string, 0, len(ms)) |
|
|
|
|
for _, m := range ms { |
|
|
|
|
if com.IsSliceContainsStr(tos, m[1:]) { |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
newTos = append(newTos, m[1:]) |
|
|
|
|
} |
|
|
|
|
if err = mailer.SendIssueMentionMail(ctx.Render, ctx.User, ctx.Repo.Owner, |
|
|
|
|
ctx.Repo.Repository, issue, models.GetUserEmailsByNames(newTos)); err != nil { |
|
|
|
|
ctx.Handle(500, "issue.Comment(SendIssueMentionMail)", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ctx.Redirect(fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, index)) |
|
|
|
|
} |
|
|
|
|