mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08: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:
		@@ -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))
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user