Browse Source
Project: show referenced PRs in issue cards (#14183)
Co-authored-by: Lauris BH <lauris@nix.lv>
mj-v1.14.3
Roberto Santalla
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
38 additions and
4 deletions
-
models/project_board.go
-
routers/repo/projects.go
-
templates/repo/projects/view.tmpl
-
web_src/less/_repository.less
|
|
@ -256,6 +256,10 @@ func (b *ProjectBoard) LoadIssues() (IssueList, error) { |
|
|
|
issueList = append(issueList, issues...) |
|
|
|
} |
|
|
|
|
|
|
|
if err := IssueList(issueList).LoadComments(); err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
|
|
|
|
b.Issues = issueList |
|
|
|
return issueList, nil |
|
|
|
} |
|
|
|
|
|
@ -280,10 +280,32 @@ func ViewProject(ctx *context.Context) { |
|
|
|
boards[0].Title = ctx.Tr("repo.projects.type.uncategorized") |
|
|
|
} |
|
|
|
|
|
|
|
if ctx.Data["Issues"], err = boards.LoadIssues(); err != nil { |
|
|
|
issueList, err := boards.LoadIssues() |
|
|
|
if err != nil { |
|
|
|
ctx.ServerError("LoadIssuesOfBoards", err) |
|
|
|
return |
|
|
|
} |
|
|
|
ctx.Data["Issues"] = issueList |
|
|
|
|
|
|
|
linkedPrsMap := make(map[int64][]*models.Issue) |
|
|
|
for _, issue := range issueList { |
|
|
|
var referencedIds []int64 |
|
|
|
for _, comment := range issue.Comments { |
|
|
|
if comment.RefIssueID != 0 && comment.RefIsPull { |
|
|
|
referencedIds = append(referencedIds, comment.RefIssueID) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if len(referencedIds) > 0 { |
|
|
|
if linkedPrs, err := models.Issues(&models.IssuesOptions{ |
|
|
|
IssueIDs: referencedIds, |
|
|
|
IsPull: util.OptionalBoolTrue, |
|
|
|
}); err == nil { |
|
|
|
linkedPrsMap[issue.ID] = linkedPrs |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
ctx.Data["LinkedPRs"] = linkedPrsMap |
|
|
|
|
|
|
|
project.RenderedContent = string(markdown.Render([]byte(project.Description), ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas())) |
|
|
|
|
|
|
|
|
|
@ -166,13 +166,21 @@ |
|
|
|
</span> |
|
|
|
<a class="project-board-title" href="{{$.RepoLink}}/issues/{{.Index}}">#{{.Index}} {{.Title}}</a> |
|
|
|
</div> |
|
|
|
{{- if .MilestoneID }} |
|
|
|
<div class="meta"> |
|
|
|
{{ if .MilestoneID }} |
|
|
|
<a class="milestone" href="{{$.RepoLink}}/milestone/{{ .MilestoneID}}"> |
|
|
|
{{svg "octicon-milestone"}} {{ .Milestone.Name }} |
|
|
|
</a> |
|
|
|
{{ end }} |
|
|
|
</div> |
|
|
|
{{- end }} |
|
|
|
{{- range index $.LinkedPRs .ID }} |
|
|
|
<div class="meta"> |
|
|
|
<a href="{{$.RepoLink}}/pulls/{{ .ID }}"> |
|
|
|
<span class="{{if .PullRequest.HasMerged}}purple{{else if .IsClosed}}red{{else}}green{{end}}">{{svg "octicon-git-merge"}}</span> |
|
|
|
{{ .Title}} (#{{ .ID }}) |
|
|
|
</a> |
|
|
|
</div> |
|
|
|
{{- end }} |
|
|
|
</div> |
|
|
|
<div class="extra content"> |
|
|
|
{{ range .Labels }} |
|
|
|
|
|
@ -2921,7 +2921,7 @@ tbody.commit-list { |
|
|
|
} |
|
|
|
|
|
|
|
.board-card .content { |
|
|
|
padding: 5px 8px !important; |
|
|
|
padding: 8px 8px 5px !important; |
|
|
|
} |
|
|
|
|
|
|
|
.board-card .extra.content { |
|
|
|