Browse Source

Merge pull request #2444 from bkcsoft/feature/participants

Implemented participant-listing for issue-pages (Fixes #2377)
Unknwon 9 years ago
parent
commit
d3ba246693
2 changed files with 35 additions and 5 deletions
  1. 19 5
      routers/repo/issue.go
  2. 16 0
      templates/repo/issue/view_content.tmpl

+ 19 - 5
routers/repo/issue.go

@@ -591,12 +591,14 @@ func ViewIssue(ctx *middleware.Context) {
 	}
 
 	var (
-		tag     models.CommentTag
-		ok      bool
-		marked  = make(map[int64]models.CommentTag)
-		comment *models.Comment
+		tag          models.CommentTag
+		ok           bool
+		marked       = make(map[int64]models.CommentTag)
+		comment      *models.Comment
+		participants []*models.User
 	)
-	// Render comments.
+	participants = append(participants, issue.Poster)
+	// Render comments. (and fetch participants)
 	for _, comment = range issue.Comments {
 		if comment.Type == models.COMMENT_TYPE_COMMENT {
 			comment.RenderedContent = string(base.RenderMarkdown([]byte(comment.Content), ctx.Repo.RepoLink,
@@ -619,9 +621,21 @@ func ViewIssue(ctx *middleware.Context) {
 			}
 
 			marked[comment.PosterID] = comment.ShowTag
+
+			isAdded := false
+			for j := range participants {
+				if comment.Poster == participants[j] {
+					isAdded = true
+					break
+				}
+			}
+			if !isAdded && !issue.IsPoster(comment.Poster.Id) {
+				participants = append(participants, comment.Poster)
+			}
 		}
 	}
 
+	ctx.Data["Participants"] = participants
 	ctx.Data["Issue"] = issue
 	ctx.Data["IsIssueOwner"] = ctx.Repo.IsAdmin() || (ctx.IsSigned && issue.IsPoster(ctx.User.Id))
 	ctx.Data["SignInLink"] = setting.AppSubUrl + "/user/login"

+ 16 - 0
templates/repo/issue/view_content.tmpl

@@ -313,6 +313,22 @@
 					{{end}}
 				</div>
 			</div>
+
+			<div class="ui divider"></div>
+
+			<div class="ui participants floating jump">
+				<span class="text"><strong>{{len .Participants }} Participants</strong></span>
+				<div class="ui floating jump">
+					{{range .Participants}}
+						<a href="{{.HomeLink}}">
+							<img class="ui avatar image" src="{{.AvatarLink}}" data-content={{.FullName}}>
+						</a>
+					{{end}}
+				</div>
+				<script>
+					$('.participants .ui.avatar.image').popup();
+				</script>
+			</div>
 		</div>
 	</div>
 </div>