From 2f7a747e4f3ace73c6bd475f2415e6ed06431e49 Mon Sep 17 00:00:00 2001
From: Brad Albright <32200834+bhalbright@users.noreply.github.com>
Date: Tue, 21 Jan 2020 04:18:52 -0600
Subject: [PATCH] Fixed repo link in generated comment for cross repository
 dependency (#9863)

* fixed link to issue in issue comments after adding/removing a dependency, before links assumed the issue was in the same repository. also changed the format of the displayed issue since the issue will not necessarily be in the same repo

* based on pr comments, changed to use HTMLURL instead of piecing together the issue url, and added an if statement around the issue link display as a nil protection

* only showing repo name in dependency comment if the issue is from another repo

Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
---
 models/issue_comment_list.go                  |  5 +++
 .../repo/issue/view_content/comments.tmpl     | 36 ++++++++++++++-----
 2 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/models/issue_comment_list.go b/models/issue_comment_list.go
index ae2a89a01a..f8739e32a6 100644
--- a/models/issue_comment_list.go
+++ b/models/issue_comment_list.go
@@ -376,6 +376,11 @@ func (comments CommentList) loadDependentIssues(e Engine) error {
 	for _, comment := range comments {
 		if comment.DependentIssue == nil {
 			comment.DependentIssue = issues[comment.DependentIssueID]
+			if comment.DependentIssue != nil {
+				if err := comment.DependentIssue.loadRepo(e); err != nil {
+					return err
+				}
+			}
 		}
 	}
 	return nil
diff --git a/templates/repo/issue/view_content/comments.tmpl b/templates/repo/issue/view_content/comments.tmpl
index 658494ac30..40db434dec 100644
--- a/templates/repo/issue/view_content/comments.tmpl
+++ b/templates/repo/issue/view_content/comments.tmpl
@@ -277,10 +277,20 @@
 			<span class="text grey">
 				{{$.i18n.Tr "repo.issues.dependency.added_dependency" .Poster.HomeLink (.Poster.GetDisplayName|Escape) $createdStr | Safe}}
 			</span>
-			<div class="detail">
-				<span class="octicon octicon-plus"></span>
-				<span class="text grey"><a href="{{$.RepoLink}}/issues/{{.DependentIssue.Index}}">#{{.DependentIssue.Index}} {{.DependentIssue.Title}}</a></span>
-			</div>
+			{{if .DependentIssue}}
+				<div class="detail">
+					<span class="octicon octicon-plus"></span>
+					<span class="text grey">
+						<a href="{{.DependentIssue.HTMLURL}}">
+							{{if eq .DependentIssue.RepoID .Issue.RepoID}}
+								#{{.DependentIssue.Index}} {{.DependentIssue.Title}}
+							{{else}}
+								{{.DependentIssue.Repo.FullName}}#{{.DependentIssue.Index}} - {{.DependentIssue.Title}}
+							{{end}}
+						</a>
+					</span>
+				</div>
+			{{end}}
 		</div>
 	{{else if eq .Type 20}}
 		<div class="event" id="{{.HashTag}}">
@@ -291,10 +301,20 @@
 			<span class="text grey">
 				{{$.i18n.Tr "repo.issues.dependency.removed_dependency" .Poster.HomeLink (.Poster.GetDisplayName|Escape) $createdStr | Safe}}
 			</span>
-			<div class="detail">
-				<span class="text grey octicon octicon-trashcan"></span>
-				<span class="text grey"><a href="{{$.RepoLink}}/issues/{{.DependentIssue.Index}}">#{{.DependentIssue.Index}} {{.DependentIssue.Title}}</a></span>
-			</div>
+			{{if .DependentIssue}}
+				<div class="detail">
+					<span class="text grey octicon octicon-trashcan"></span>
+					<span class="text grey">
+						<a href="{{.DependentIssue.HTMLURL}}">
+							{{if eq .DependentIssue.RepoID .Issue.RepoID}}
+								#{{.DependentIssue.Index}} {{.DependentIssue.Title}}
+							{{else}}
+								{{.DependentIssue.Repo.FullName}}#{{.DependentIssue.Index}} - {{.DependentIssue.Title}}
+							{{end}}
+						</a>
+					</span>
+				</div>
+			{{end}}
 		</div>
 	{{else if eq .Type 22}}
 		<div class="event" id="{{.HashTag}}">