1
1
mirror of https://github.com/go-gitea/gitea synced 2025-08-07 10:08:20 +00:00

Only show part of members on orgnization dashboard and add paging for orgnization members page (#9092)

* Only show part of members on orgnization dashboard and add paging for orgnization members page

* fix test

* fix typo
This commit is contained in:
Lunny Xiao
2019-12-06 13:34:54 +08:00
committed by GitHub
parent 77730db257
commit e3081c667a
9 changed files with 121 additions and 46 deletions

View File

@@ -18,30 +18,13 @@ import (
// listMembers list an organization's members
func listMembers(ctx *context.APIContext, publicOnly bool) {
var members []*models.User
if publicOnly {
orgUsers, err := models.GetOrgUsersByOrgID(ctx.Org.Organization.ID)
if err != nil {
ctx.Error(500, "GetOrgUsersByOrgID", err)
return
}
memberIDs := make([]int64, 0, len(orgUsers))
for _, orgUser := range orgUsers {
if orgUser.IsPublic {
memberIDs = append(memberIDs, orgUser.UID)
}
}
if members, err = models.GetUsersByIDs(memberIDs); err != nil {
ctx.Error(500, "GetUsersByIDs", err)
return
}
} else {
if err := ctx.Org.Organization.GetMembers(); err != nil {
ctx.Error(500, "GetMembers", err)
return
}
members = ctx.Org.Organization.Members
members, _, err := models.FindOrgMembers(models.FindOrgMembersOpts{
OrgID: ctx.Org.Organization.ID,
PublicOnly: publicOnly,
})
if err != nil {
ctx.Error(500, "GetUsersByIDs", err)
return
}
apiMembers := make([]*api.User, len(members))

View File

@@ -25,14 +25,44 @@ func Members(ctx *context.Context) {
ctx.Data["Title"] = org.FullName
ctx.Data["PageIsOrgMembers"] = true
if err := org.GetMembers(); err != nil {
page := ctx.QueryInt("page")
if page <= 1 {
page = 1
}
var opts = models.FindOrgMembersOpts{
OrgID: org.ID,
PublicOnly: true,
}
if ctx.User != nil {
isMember, err := ctx.Org.Organization.IsOrgMember(ctx.User.ID)
if err != nil {
ctx.Error(500, "IsOrgMember")
return
}
opts.PublicOnly = !isMember
}
total, err := models.CountOrgMembers(opts)
if err != nil {
ctx.Error(500, "CountOrgMembers")
return
}
pager := context.NewPagination(int(total), setting.UI.MembersPagingNum, page, 5)
opts.Start = (page - 1) * setting.UI.MembersPagingNum
opts.Limit = setting.UI.MembersPagingNum
members, membersIsPublic, err := models.FindOrgMembers(opts)
if err != nil {
ctx.ServerError("GetMembers", err)
return
}
ctx.Data["Members"] = org.Members
ctx.Data["MembersIsPublicMember"] = org.MembersIsPublic
ctx.Data["MembersIsUserOrgOwner"] = org.Members.IsUserOrgOwner(org.ID)
ctx.Data["MembersTwoFaStatus"] = org.Members.GetTwoFaStatus()
ctx.Data["Page"] = pager
ctx.Data["Members"] = members
ctx.Data["MembersIsPublicMember"] = membersIsPublic
ctx.Data["MembersIsUserOrgOwner"] = members.IsUserOrgOwner(org.ID)
ctx.Data["MembersTwoFaStatus"] = members.GetTwoFaStatus()
ctx.HTML(200, tplMembers)
}

View File

@@ -537,14 +537,37 @@ func showOrgProfile(ctx *context.Context) {
return
}
if err := org.GetMembers(); err != nil {
ctx.ServerError("GetMembers", err)
var opts = models.FindOrgMembersOpts{
OrgID: org.ID,
PublicOnly: true,
Limit: 25,
}
if ctx.User != nil {
isMember, err := org.IsOrgMember(ctx.User.ID)
if err != nil {
ctx.Error(500, "IsOrgMember")
return
}
opts.PublicOnly = !isMember
}
members, _, err := models.FindOrgMembers(opts)
if err != nil {
ctx.ServerError("FindOrgMembers", err)
return
}
membersCount, err := models.CountOrgMembers(opts)
if err != nil {
ctx.ServerError("CountOrgMembers", err)
return
}
ctx.Data["Repos"] = repos
ctx.Data["Total"] = count
ctx.Data["Members"] = org.Members
ctx.Data["MembersTotal"] = membersCount
ctx.Data["Members"] = members
ctx.Data["Teams"] = org.Teams
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)