Adding #issuecomment to the URL in E-Mail notifications (#1674)
* Added comment's hashtag to url for mail notifications. Signed-off-by: Jonas <info@jonasfranz.software> * Added comment's hashtag to url for mail notifications. Added explanation to return statement. Signed-off-by: Jonas <info@jonasfranz.software> * Added comment's hashtag to url for mail notifications. Added explanation to return statement + documentation. Signed-off-by: Jonas <info@jonasfranz.software> * Added comment's hashtag to url for mail notifications. Signed-off-by: Jonas Franz <info@jonasfranz.software> * Replacing in-line link generation with HTMLURL. (+gofmt) Signed-off-by: Jonas Franz <info@jonasfranz.software> * Replaced action-based model with nil-based model. (+gofmt) Signed-off-by: Jonas Franz <info@jonasfranz.software> * Replaced mailIssueActionToParticipants with mailIssueCommentToParticipants. Signed-off-by: Jonas Franz <info@jonasfranz.software> * Updating comment for mailIssueCommentToParticipants Signed-off-by: Jonas Franz <info@jonasfranz.software>
This commit is contained in:
parent
cb74f1b84d
commit
03912ce014
3 changed files with 19 additions and 12 deletions
|
@ -153,7 +153,7 @@ func (c *Comment) HTMLURL() string {
|
||||||
log.Error(4, "GetIssueByID(%d): %v", c.IssueID, err)
|
log.Error(4, "GetIssueByID(%d): %v", c.IssueID, err)
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("%s#issuecomment-%d", issue.HTMLURL(), c.ID)
|
return fmt.Sprintf("%s#%s", issue.HTMLURL(), c.HashTag())
|
||||||
}
|
}
|
||||||
|
|
||||||
// IssueURL formats a URL-string to the issue
|
// IssueURL formats a URL-string to the issue
|
||||||
|
@ -289,7 +289,7 @@ func (c *Comment) MailParticipants(e Engine, opType ActionType, issue *Issue) (e
|
||||||
case ActionReopenIssue:
|
case ActionReopenIssue:
|
||||||
issue.Content = fmt.Sprintf("Reopened #%d", issue.Index)
|
issue.Content = fmt.Sprintf("Reopened #%d", issue.Index)
|
||||||
}
|
}
|
||||||
if err = mailIssueCommentToParticipants(issue, c.Poster, mentions); err != nil {
|
if err = mailIssueCommentToParticipants(issue, c.Poster, c, mentions); err != nil {
|
||||||
log.Error(4, "mailIssueCommentToParticipants: %v", err)
|
log.Error(4, "mailIssueCommentToParticipants: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ func (issue *Issue) mailSubject() string {
|
||||||
// This function sends two list of emails:
|
// This function sends two list of emails:
|
||||||
// 1. Repository watchers and users who are participated in comments.
|
// 1. Repository watchers and users who are participated in comments.
|
||||||
// 2. Users who are not in 1. but get mentioned in current issue/comment.
|
// 2. Users who are not in 1. but get mentioned in current issue/comment.
|
||||||
func mailIssueCommentToParticipants(issue *Issue, doer *User, mentions []string) error {
|
func mailIssueCommentToParticipants(issue *Issue, doer *User, comment *Comment, mentions []string) error {
|
||||||
if !setting.Service.EnableNotifyMail {
|
if !setting.Service.EnableNotifyMail {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,8 @@ func mailIssueCommentToParticipants(issue *Issue, doer *User, mentions []string)
|
||||||
tos = append(tos, participants[i].Email)
|
tos = append(tos, participants[i].Email)
|
||||||
names = append(names, participants[i].Name)
|
names = append(names, participants[i].Name)
|
||||||
}
|
}
|
||||||
SendIssueCommentMail(issue, doer, tos)
|
|
||||||
|
SendIssueCommentMail(issue, doer, comment, tos)
|
||||||
|
|
||||||
// Mail mentioned people and exclude watchers.
|
// Mail mentioned people and exclude watchers.
|
||||||
names = append(names, doer.Name)
|
names = append(names, doer.Name)
|
||||||
|
@ -82,7 +83,7 @@ func mailIssueCommentToParticipants(issue *Issue, doer *User, mentions []string)
|
||||||
|
|
||||||
tos = append(tos, mentions[i])
|
tos = append(tos, mentions[i])
|
||||||
}
|
}
|
||||||
SendIssueMentionMail(issue, doer, GetUserEmailsByNames(tos))
|
SendIssueMentionMail(issue, doer, comment, GetUserEmailsByNames(tos))
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -95,7 +96,7 @@ func (issue *Issue) MailParticipants() (err error) {
|
||||||
return fmt.Errorf("UpdateIssueMentions [%d]: %v", issue.ID, err)
|
return fmt.Errorf("UpdateIssueMentions [%d]: %v", issue.ID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = mailIssueCommentToParticipants(issue, issue.Poster, mentions); err != nil {
|
if err = mailIssueCommentToParticipants(issue, issue.Poster, nil, mentions); err != nil {
|
||||||
log.Error(4, "mailIssueCommentToParticipants: %v", err)
|
log.Error(4, "mailIssueCommentToParticipants: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -148,10 +148,16 @@ func composeTplData(subject, body, link string) map[string]interface{} {
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
func composeIssueMessage(issue *Issue, doer *User, tplName base.TplName, tos []string, info string) *mailer.Message {
|
func composeIssueCommentMessage(issue *Issue, doer *User, comment *Comment, tplName base.TplName, tos []string, info string) *mailer.Message {
|
||||||
subject := issue.mailSubject()
|
subject := issue.mailSubject()
|
||||||
body := string(markdown.RenderString(issue.Content, issue.Repo.HTMLURL(), issue.Repo.ComposeMetas()))
|
body := string(markdown.RenderString(issue.Content, issue.Repo.HTMLURL(), issue.Repo.ComposeMetas()))
|
||||||
data := composeTplData(subject, body, issue.HTMLURL())
|
|
||||||
|
data := make(map[string]interface{}, 10)
|
||||||
|
if comment != nil {
|
||||||
|
data = composeTplData(subject, body, issue.HTMLURL()+"#"+comment.HashTag())
|
||||||
|
} else {
|
||||||
|
data = composeTplData(subject, body, issue.HTMLURL())
|
||||||
|
}
|
||||||
data["Doer"] = doer
|
data["Doer"] = doer
|
||||||
|
|
||||||
var content bytes.Buffer
|
var content bytes.Buffer
|
||||||
|
@ -166,18 +172,18 @@ func composeIssueMessage(issue *Issue, doer *User, tplName base.TplName, tos []s
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendIssueCommentMail composes and sends issue comment emails to target receivers.
|
// SendIssueCommentMail composes and sends issue comment emails to target receivers.
|
||||||
func SendIssueCommentMail(issue *Issue, doer *User, tos []string) {
|
func SendIssueCommentMail(issue *Issue, doer *User, comment *Comment, tos []string) {
|
||||||
if len(tos) == 0 {
|
if len(tos) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
mailer.SendAsync(composeIssueMessage(issue, doer, mailIssueComment, tos, "issue comment"))
|
mailer.SendAsync(composeIssueCommentMessage(issue, doer, comment, mailIssueComment, tos, "issue comment"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendIssueMentionMail composes and sends issue mention emails to target receivers.
|
// SendIssueMentionMail composes and sends issue mention emails to target receivers.
|
||||||
func SendIssueMentionMail(issue *Issue, doer *User, tos []string) {
|
func SendIssueMentionMail(issue *Issue, doer *User, comment *Comment, tos []string) {
|
||||||
if len(tos) == 0 {
|
if len(tos) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
mailer.SendAsync(composeIssueMessage(issue, doer, mailIssueMention, tos, "issue mention"))
|
mailer.SendAsync(composeIssueCommentMessage(issue, doer, comment, mailIssueMention, tos, "issue mention"))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue