loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix display problems of members and teams unit (#26363)

Fix:
- display member count and team count in the menu bar

![image](https://github.com/go-gitea/gitea/assets/18380374/7f03ced4-67e2-41ce-b19f-a992823726bb)
- Also display member unit in the menu bar if there are no hidden
members in public org

![image](https://github.com/go-gitea/gitea/assets/18380374/31422ad6-7190-438d-8e99-8a4af9cce908)
- hidden member board when there's no seeable members.
In this org, we only have hidden members:

![image](https://github.com/go-gitea/gitea/assets/18380374/d749420b-554a-4483-8cd2-221df61b5ca7)
We will hidden the member board when doer is not the member of this org

![image](https://github.com/go-gitea/gitea/assets/18380374/93bb782e-7d4d-4ad3-a096-133afbc51f8a)
Before:

![image](https://github.com/go-gitea/gitea/assets/18380374/eafc0b3e-6218-42ab-a892-39645d08a5eb)
If you click the number in the members board, you will access the
members page, which is not expected.

![image](https://github.com/go-gitea/gitea/assets/18380374/73d6dadc-0ef2-4ca9-8485-c5f4211bffb2)

---------

Co-authored-by: delvh <dev.lh@web.de>
Co-authored-by: Giteabot <teabot@gitea.io>

authored by

yp05327
delvh
Giteabot
and committed by
GitHub
7f8028e5 27e4ac3e

+37 -35
+14
modules/context/org.go
··· 24 24 Organization *organization.Organization 25 25 OrgLink string 26 26 CanCreateOrgRepo bool 27 + PublicMemberOnly bool // Only display public members 27 28 28 29 Team *organization.Team 29 30 Teams []*organization.Team ··· 172 173 ctx.Org.OrgLink = org.AsUser().OrganisationLink() 173 174 ctx.Data["OrgLink"] = ctx.Org.OrgLink 174 175 176 + // Member 177 + ctx.Org.PublicMemberOnly = ctx.Doer == nil || !ctx.Org.IsMember && !ctx.Doer.IsAdmin 178 + opts := &organization.FindOrgMembersOpts{ 179 + OrgID: org.ID, 180 + PublicOnly: ctx.Org.PublicMemberOnly, 181 + } 182 + ctx.Data["NumMembers"], err = organization.CountOrgMembers(opts) 183 + if err != nil { 184 + ctx.ServerError("CountOrgMembers", err) 185 + return 186 + } 187 + 175 188 // Team. 176 189 if ctx.Org.IsMember { 177 190 shouldSeeAllTeams := false ··· 203 216 return 204 217 } 205 218 } 219 + ctx.Data["NumTeams"] = len(ctx.Org.Teams) 206 220 } 207 221 208 222 teamName := ctx.Params(":team")
+3 -18
routers/web/org/home.go
··· 120 120 121 121 opts := &organization.FindOrgMembersOpts{ 122 122 OrgID: org.ID, 123 - PublicOnly: true, 123 + PublicOnly: ctx.Org.PublicMemberOnly, 124 124 ListOptions: db.ListOptions{Page: 1, PageSize: 25}, 125 125 } 126 - 127 - if ctx.Doer != nil { 128 - isMember, err := org.IsOrgMember(ctx.Doer.ID) 129 - if err != nil { 130 - ctx.Error(http.StatusInternalServerError, "IsOrgMember") 131 - return 132 - } 133 - opts.PublicOnly = !isMember && !ctx.Doer.IsAdmin 134 - } 135 - 136 126 members, _, err := organization.FindOrgMembers(opts) 137 127 if err != nil { 138 128 ctx.ServerError("FindOrgMembers", err) 139 129 return 140 130 } 141 131 142 - membersCount, err := organization.CountOrgMembers(opts) 143 - if err != nil { 144 - ctx.ServerError("CountOrgMembers", err) 145 - return 146 - } 147 - 148 132 var isFollowing bool 149 133 if ctx.Doer != nil { 150 134 isFollowing = user_model.IsFollowing(ctx.Doer.ID, ctx.ContextUser.ID) ··· 152 136 153 137 ctx.Data["Repos"] = repos 154 138 ctx.Data["Total"] = count 155 - ctx.Data["MembersTotal"] = membersCount 156 139 ctx.Data["Members"] = members 157 140 ctx.Data["Teams"] = ctx.Org.Teams 158 141 ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull ··· 170 153 pager.AddParam(ctx, "language", "Language") 171 154 ctx.Data["Page"] = pager 172 155 ctx.Data["ContextUser"] = ctx.ContextUser 156 + 157 + ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 173 158 174 159 ctx.HTML(http.StatusOK, tplOrgHome) 175 160 }
+16 -13
templates/org/home.tmpl
··· 37 37 38 38 <div class="ui container"> 39 39 <div class="ui mobile reversed stackable grid"> 40 - <div class="ui eleven wide column"> 40 + <div class="ui {{if .ShowMemberAndTeamTab}}eleven wide{{end}} column"> 41 41 {{template "explore/repo_search" .}} 42 42 {{template "explore/repo_list" .}} 43 43 {{template "base/paginate" .}} 44 44 </div> 45 45 46 + {{if .ShowMemberAndTeamTab}} 46 47 <div class="ui five wide column"> 47 48 {{if .CanCreateOrgRepo}} 48 49 <div class="center aligned"> ··· 53 54 </div> 54 55 <div class="divider"></div> 55 56 {{end}} 56 - <h4 class="ui top attached header gt-df"> 57 - <strong class="gt-f1">{{.locale.Tr "org.members"}}</strong> 58 - <a class="text grey gt-dif gt-ac" href="{{.OrgLink}}/members"><span>{{.MembersTotal}}</span> {{svg "octicon-chevron-right"}}</a> 59 - </h4> 60 - <div class="ui attached segment members"> 61 - {{$isMember := .IsOrganizationMember}} 62 - {{range .Members}} 63 - {{if or $isMember (call $.IsPublicMember .ID)}} 64 - <a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}">{{ctx.AvatarUtils.Avatar . 48}}</a> 57 + {{if .NumMembers}} 58 + <h4 class="ui top attached header gt-df"> 59 + <strong class="gt-f1">{{.locale.Tr "org.members"}}</strong> 60 + <a class="text grey gt-dif gt-ac" href="{{.OrgLink}}/members"><span>{{.NumMembers}}</span> {{svg "octicon-chevron-right"}}</a> 61 + </h4> 62 + <div class="ui attached segment members"> 63 + {{$isMember := .IsOrganizationMember}} 64 + {{range .Members}} 65 + {{if or $isMember (call $.IsPublicMember .ID)}} 66 + <a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}">{{ctx.AvatarUtils.Avatar . 48}}</a> 67 + {{end}} 65 68 {{end}} 66 - {{end}} 67 - </div> 68 - 69 + </div> 70 + {{end}} 69 71 {{if .IsOrganizationMember}} 70 72 <div class="ui top attached header gt-df"> 71 73 <strong class="gt-f1">{{.locale.Tr "org.teams"}}</strong> ··· 89 91 {{end}} 90 92 {{end}} 91 93 </div> 94 + {{end}} 92 95 </div> 93 96 </div> 94 97 </div>
+4 -4
templates/org/menu.tmpl
··· 21 21 {{svg "octicon-code"}}&nbsp;{{$.locale.Tr "org.code"}} 22 22 </a> 23 23 {{end}} 24 - {{if .IsOrganizationMember}} 24 + {{if .NumMembers}} 25 25 <a class="{{if $.PageIsOrgMembers}}active {{end}}item" href="{{$.OrgLink}}/members"> 26 26 {{svg "octicon-person"}}&nbsp;{{$.locale.Tr "org.members"}} 27 - {{if .NumMembers}} 28 - <div class="ui small label">{{.NumMembers}}</div> 29 - {{end}} 27 + <div class="ui small label">{{.NumMembers}}</div> 30 28 </a> 29 + {{end}} 30 + {{if .IsOrganizationMember}} 31 31 <a class="{{if $.PageIsOrgTeams}}active {{end}}item" href="{{$.OrgLink}}/teams"> 32 32 {{svg "octicon-people"}}&nbsp;{{$.locale.Tr "org.teams"}} 33 33 {{if .NumTeams}}