Fix followers and following tabs in profile (#10202)
This commit is contained in:
		
							parent
							
								
									e273817154
								
							
						
					
					
						commit
						fe00886bef
					
				
					 6 changed files with 41 additions and 87 deletions
				
			
		|  | @ -490,12 +490,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||
| 	// ***** END: Admin *****
 | ||||
| 
 | ||||
| 	m.Group("", func() { | ||||
| 		m.Group("/:username", func() { | ||||
| 			m.Get("", user.Profile) | ||||
| 			m.Get("/followers", user.Followers) | ||||
| 			m.Get("/following", user.Following) | ||||
| 		}) | ||||
| 
 | ||||
| 		m.Get("/:username", user.Profile) | ||||
| 		m.Get("/attachments/:uuid", repo.GetAttachment) | ||||
| 	}, ignSignIn) | ||||
| 
 | ||||
|  |  | |||
|  | @ -11,16 +11,10 @@ import ( | |||
| 	"strings" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/models" | ||||
| 	"code.gitea.io/gitea/modules/base" | ||||
| 	"code.gitea.io/gitea/modules/context" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	"code.gitea.io/gitea/routers/org" | ||||
| 	"code.gitea.io/gitea/routers/repo" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	tplFollowers base.TplName = "user/meta/followers" | ||||
| ) | ||||
| 
 | ||||
| // GetUserByName get user by name
 | ||||
|  | @ -159,6 +153,30 @@ func Profile(ctx *context.Context) { | |||
| 	keyword := strings.Trim(ctx.Query("q"), " ") | ||||
| 	ctx.Data["Keyword"] = keyword | ||||
| 	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": | ||||
| 		retrieveFeeds(ctx, models.GetFeedsOptions{RequestedUser: ctxUser, | ||||
| 			Actor:           ctx.User, | ||||
|  | @ -226,32 +244,6 @@ func Profile(ctx *context.Context) { | |||
| 	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
 | ||||
| func Action(ctx *context.Context) { | ||||
| 	u := GetUserByParams(ctx) | ||||
|  |  | |||
|  | @ -1,7 +1,9 @@ | |||
| <div class="ui container user-cards"> | ||||
| 	{{if .CardsTitle}} | ||||
| 	<h2 class="ui dividing header"> | ||||
| 		{{.CardsTitle}} | ||||
| 	</h2> | ||||
| 	{{end}} | ||||
| 	<ul class="list"> | ||||
| 		{{range .Cards}} | ||||
| 			<li class="item ui segment"> | ||||
|  |  | |||
|  | @ -1,6 +0,0 @@ | |||
| {{template "base/head" .}} | ||||
| <div class="user followers"> | ||||
| 	{{template "user/meta/header" .}} | ||||
| 	{{template "repo/user_cards" .}} | ||||
| </div> | ||||
| {{template "base/footer" .}} | ||||
|  | @ -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> | ||||
|  | @ -49,24 +49,6 @@ | |||
| 								{{end}} | ||||
| 							{{end}} | ||||
| 							<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}} | ||||
| 							<li> | ||||
| 								<ul class="user-orgs"> | ||||
|  | @ -95,7 +77,7 @@ | |||
| 			</div> | ||||
| 			<div class="ui eleven wide column"> | ||||
| 				<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"}} | ||||
| 					</a> | ||||
| 					<a class='{{if eq .TabName "activity"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=activity"> | ||||
|  | @ -103,6 +85,15 @@ | |||
| 					</a> | ||||
| 					<a class='{{if eq .TabName "stars"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=stars"> | ||||
| 						<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> | ||||
| 				</div> | ||||
| 
 | ||||
|  | @ -126,6 +117,10 @@ | |||
| 						{{template "explore/repo_list" .}} | ||||
| 						{{template "base/paginate" .}} | ||||
| 					</div> | ||||
| 				{{else if eq .TabName "following"}} | ||||
| 					{{template "repo/user_cards" .}} | ||||
| 				{{else if eq .TabName "followers"}} | ||||
| 					{{template "repo/user_cards" .}} | ||||
| 				{{else}} | ||||
| 					{{template "explore/repo_search" .}} | ||||
| 					{{template "explore/repo_list" .}} | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue