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
					
				| @ -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 New Issue
	
	Block a user