Fix followers and following tabs in profile (#10202)

This commit is contained in:
Lauris BH 2020-02-09 22:18:01 +02:00 committed by GitHub
parent e273817154
commit fe00886bef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 41 additions and 87 deletions

View file

@ -490,12 +490,7 @@ func RegisterRoutes(m *macaron.Macaron) {
// ***** END: Admin ***** // ***** END: Admin *****
m.Group("", func() { m.Group("", func() {
m.Group("/:username", func() { m.Get("/:username", user.Profile)
m.Get("", user.Profile)
m.Get("/followers", user.Followers)
m.Get("/following", user.Following)
})
m.Get("/attachments/:uuid", repo.GetAttachment) m.Get("/attachments/:uuid", repo.GetAttachment)
}, ignSignIn) }, ignSignIn)

View file

@ -11,16 +11,10 @@ import (
"strings" "strings"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/routers/org" "code.gitea.io/gitea/routers/org"
"code.gitea.io/gitea/routers/repo"
)
const (
tplFollowers base.TplName = "user/meta/followers"
) )
// GetUserByName get user by name // GetUserByName get user by name
@ -159,6 +153,30 @@ func Profile(ctx *context.Context) {
keyword := strings.Trim(ctx.Query("q"), " ") keyword := strings.Trim(ctx.Query("q"), " ")
ctx.Data["Keyword"] = keyword ctx.Data["Keyword"] = keyword
switch tab { switch tab {
case "followers":
items, err := ctxUser.GetFollowers(models.ListOptions{
PageSize: setting.UI.User.RepoPagingNum,
Page: page,
})
if err != nil {
ctx.ServerError("GetFollowers", err)
return
}
ctx.Data["Cards"] = items
total = ctxUser.NumFollowers
case "following":
items, err := ctxUser.GetFollowing(models.ListOptions{
PageSize: setting.UI.User.RepoPagingNum,
Page: page,
})
if err != nil {
ctx.ServerError("GetFollowing", err)
return
}
ctx.Data["Cards"] = items
total = ctxUser.NumFollowing
case "activity": case "activity":
retrieveFeeds(ctx, models.GetFeedsOptions{RequestedUser: ctxUser, retrieveFeeds(ctx, models.GetFeedsOptions{RequestedUser: ctxUser,
Actor: ctx.User, Actor: ctx.User,
@ -226,32 +244,6 @@ func Profile(ctx *context.Context) {
ctx.HTML(200, tplProfile) ctx.HTML(200, tplProfile)
} }
// Followers render user's followers page
func Followers(ctx *context.Context) {
u := GetUserByParams(ctx)
if ctx.Written() {
return
}
ctx.Data["Title"] = u.DisplayName()
ctx.Data["CardsTitle"] = ctx.Tr("user.followers")
ctx.Data["PageIsFollowers"] = true
ctx.Data["Owner"] = u
repo.RenderUserCards(ctx, u.NumFollowers, u.GetFollowers, tplFollowers)
}
// Following render user's followering page
func Following(ctx *context.Context) {
u := GetUserByParams(ctx)
if ctx.Written() {
return
}
ctx.Data["Title"] = u.DisplayName()
ctx.Data["CardsTitle"] = ctx.Tr("user.following")
ctx.Data["PageIsFollowing"] = true
ctx.Data["Owner"] = u
repo.RenderUserCards(ctx, u.NumFollowing, u.GetFollowing, tplFollowers)
}
// Action response for follow/unfollow user request // Action response for follow/unfollow user request
func Action(ctx *context.Context) { func Action(ctx *context.Context) {
u := GetUserByParams(ctx) u := GetUserByParams(ctx)

View file

@ -1,7 +1,9 @@
<div class="ui container user-cards"> <div class="ui container user-cards">
{{if .CardsTitle}}
<h2 class="ui dividing header"> <h2 class="ui dividing header">
{{.CardsTitle}} {{.CardsTitle}}
</h2> </h2>
{{end}}
<ul class="list"> <ul class="list">
{{range .Cards}} {{range .Cards}}
<li class="item ui segment"> <li class="item ui segment">

View file

@ -1,6 +0,0 @@
{{template "base/head" .}}
<div class="user followers">
{{template "user/meta/header" .}}
{{template "repo/user_cards" .}}
</div>
{{template "base/footer" .}}

View file

@ -1,24 +0,0 @@
{{with .Owner}}
<div class="ui container">
<img class="ui avatar image" src="{{.RelAvatarLink}}">
<span class="header name">
<a href="{{.HomeLink}}">{{.Name}}</a>
{{with .FullName}}({{.}}){{end}}
</span>
<div class="ui right">
{{if or $.PageIsFollowers $.PageIsFollowing}}
{{if and $.IsSigned (ne $.SignedUserName .Name)}}
<div class="follow">
{{if $.SignedUser.IsFollowing .ID}}
<a class="ui small basic red button" href="{{.HomeLink}}/action/unfollow?redirect_to={{$.Link}}"><i class="octicon octicon-person"></i> {{$.i18n.Tr "user.unfollow"}}</a>
{{else}}
<a class="ui small basic green button" href="{{.HomeLink}}/action/follow?redirect_to={{$.Link}}"><i class="octicon octicon-person"></i> {{$.i18n.Tr "user.follow"}}</a>
{{end}}
</div>
{{end}}
{{end}}
</div>
</div>
{{end}}
<div class="ui divider"></div>

View file

@ -49,24 +49,6 @@
{{end}} {{end}}
{{end}} {{end}}
<li><i class="octicon octicon-clock"></i> {{.i18n.Tr "user.join_on"}} {{.Owner.CreatedUnix.FormatShort}}</li> <li><i class="octicon octicon-clock"></i> {{.i18n.Tr "user.join_on"}} {{.Owner.CreatedUnix.FormatShort}}</li>
<li>
<i class="octicon octicon-person"></i>
<a href="{{.Owner.HomeLink}}/followers">
{{.Owner.NumFollowers}} {{.i18n.Tr "user.followers"}}
</a>
-
<a href="{{.Owner.HomeLink}}/following">
{{.Owner.NumFollowing}} {{.i18n.Tr "user.following"}}
</a>
</li>
{{/*
<li>
<i class="octicon octicon-star"></i>
<a href="{{.Owner.HomeLink}}/stars">
{{.Owner.NumStars}} {{.i18n.Tr "user.starred"}}
</a>
</li>
*/}}
{{if and .Orgs .HasOrgsVisible}} {{if and .Orgs .HasOrgsVisible}}
<li> <li>
<ul class="user-orgs"> <ul class="user-orgs">
@ -95,7 +77,7 @@
</div> </div>
<div class="ui eleven wide column"> <div class="ui eleven wide column">
<div class="ui secondary stackable pointing menu"> <div class="ui secondary stackable pointing menu">
<a class='{{if and (ne .TabName "activity") (ne .TabName "stars")}}active{{end}} item' href="{{.Owner.HomeLink}}"> <a class='{{if and (ne .TabName "activity") (ne .TabName "following") (ne .TabName "followers") (ne .TabName "stars")}}active{{end}} item' href="{{.Owner.HomeLink}}">
<i class="octicon octicon-repo"></i> {{.i18n.Tr "user.repositories"}} <i class="octicon octicon-repo"></i> {{.i18n.Tr "user.repositories"}}
</a> </a>
<a class='{{if eq .TabName "activity"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=activity"> <a class='{{if eq .TabName "activity"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=activity">
@ -103,6 +85,15 @@
</a> </a>
<a class='{{if eq .TabName "stars"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=stars"> <a class='{{if eq .TabName "stars"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=stars">
<i class="octicon octicon-star"></i> {{.i18n.Tr "user.starred"}} <i class="octicon octicon-star"></i> {{.i18n.Tr "user.starred"}}
<div class="ui label">{{.Owner.NumStars}}</div>
</a>
<a class='{{if eq .TabName "following"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=following">
<i class="octicon octicon-person"></i> {{.i18n.Tr "user.following"}}
<div class="ui label">{{.Owner.NumFollowing}}</div>
</a>
<a class='{{if eq .TabName "followers"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=followers">
<i class="octicon octicon-person"></i> {{.i18n.Tr "user.followers"}}
<div class="ui label">{{.Owner.NumFollowers}}</div>
</a> </a>
</div> </div>
@ -126,6 +117,10 @@
{{template "explore/repo_list" .}} {{template "explore/repo_list" .}}
{{template "base/paginate" .}} {{template "base/paginate" .}}
</div> </div>
{{else if eq .TabName "following"}}
{{template "repo/user_cards" .}}
{{else if eq .TabName "followers"}}
{{template "repo/user_cards" .}}
{{else}} {{else}}
{{template "explore/repo_search" .}} {{template "explore/repo_search" .}}
{{template "explore/repo_list" .}} {{template "explore/repo_list" .}}