mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Project: show referenced PRs in issue cards (#14183)
Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user