mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 09:31:53 +01:00 
			
		
		
		
	Fix display problems of members and teams unit (#26363)
Fix: - display member count and team count in the menu bar  - Also display member unit in the menu bar if there are no hidden members in public org  - hidden member board when there's no seeable members. In this org, we only have hidden members:  We will hidden the member board when doer is not the member of this org  Before:  If you click the number in the members board, you will access the members page, which is not expected.  --------- Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: Giteabot <teabot@gitea.io>
This commit is contained in:
		
							parent
							
								
									27e4ac3e40
								
							
						
					
					
						commit
						7f8028e5a1
					
				| @ -24,6 +24,7 @@ type Organization struct { | |||||||
| 	Organization     *organization.Organization | 	Organization     *organization.Organization | ||||||
| 	OrgLink          string | 	OrgLink          string | ||||||
| 	CanCreateOrgRepo bool | 	CanCreateOrgRepo bool | ||||||
|  | 	PublicMemberOnly bool // Only display public members | ||||||
| 
 | 
 | ||||||
| 	Team  *organization.Team | 	Team  *organization.Team | ||||||
| 	Teams []*organization.Team | 	Teams []*organization.Team | ||||||
| @ -172,6 +173,18 @@ func HandleOrgAssignment(ctx *Context, args ...bool) { | |||||||
| 	ctx.Org.OrgLink = org.AsUser().OrganisationLink() | 	ctx.Org.OrgLink = org.AsUser().OrganisationLink() | ||||||
| 	ctx.Data["OrgLink"] = ctx.Org.OrgLink | 	ctx.Data["OrgLink"] = ctx.Org.OrgLink | ||||||
| 
 | 
 | ||||||
|  | 	// Member | ||||||
|  | 	ctx.Org.PublicMemberOnly = ctx.Doer == nil || !ctx.Org.IsMember && !ctx.Doer.IsAdmin | ||||||
|  | 	opts := &organization.FindOrgMembersOpts{ | ||||||
|  | 		OrgID:      org.ID, | ||||||
|  | 		PublicOnly: ctx.Org.PublicMemberOnly, | ||||||
|  | 	} | ||||||
|  | 	ctx.Data["NumMembers"], err = organization.CountOrgMembers(opts) | ||||||
|  | 	if err != nil { | ||||||
|  | 		ctx.ServerError("CountOrgMembers", err) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	// Team. | 	// Team. | ||||||
| 	if ctx.Org.IsMember { | 	if ctx.Org.IsMember { | ||||||
| 		shouldSeeAllTeams := false | 		shouldSeeAllTeams := false | ||||||
| @ -203,6 +216,7 @@ func HandleOrgAssignment(ctx *Context, args ...bool) { | |||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 		ctx.Data["NumTeams"] = len(ctx.Org.Teams) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	teamName := ctx.Params(":team") | 	teamName := ctx.Params(":team") | ||||||
|  | |||||||
| @ -120,31 +120,15 @@ func Home(ctx *context.Context) { | |||||||
| 
 | 
 | ||||||
| 	opts := &organization.FindOrgMembersOpts{ | 	opts := &organization.FindOrgMembersOpts{ | ||||||
| 		OrgID:       org.ID, | 		OrgID:       org.ID, | ||||||
| 		PublicOnly:  true, | 		PublicOnly:  ctx.Org.PublicMemberOnly, | ||||||
| 		ListOptions: db.ListOptions{Page: 1, PageSize: 25}, | 		ListOptions: db.ListOptions{Page: 1, PageSize: 25}, | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	if ctx.Doer != nil { |  | ||||||
| 		isMember, err := org.IsOrgMember(ctx.Doer.ID) |  | ||||||
| 		if err != nil { |  | ||||||
| 			ctx.Error(http.StatusInternalServerError, "IsOrgMember") |  | ||||||
| 			return |  | ||||||
| 		} |  | ||||||
| 		opts.PublicOnly = !isMember && !ctx.Doer.IsAdmin |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	members, _, err := organization.FindOrgMembers(opts) | 	members, _, err := organization.FindOrgMembers(opts) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		ctx.ServerError("FindOrgMembers", err) | 		ctx.ServerError("FindOrgMembers", err) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	membersCount, err := organization.CountOrgMembers(opts) |  | ||||||
| 	if err != nil { |  | ||||||
| 		ctx.ServerError("CountOrgMembers", err) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	var isFollowing bool | 	var isFollowing bool | ||||||
| 	if ctx.Doer != nil { | 	if ctx.Doer != nil { | ||||||
| 		isFollowing = user_model.IsFollowing(ctx.Doer.ID, ctx.ContextUser.ID) | 		isFollowing = user_model.IsFollowing(ctx.Doer.ID, ctx.ContextUser.ID) | ||||||
| @ -152,7 +136,6 @@ func Home(ctx *context.Context) { | |||||||
| 
 | 
 | ||||||
| 	ctx.Data["Repos"] = repos | 	ctx.Data["Repos"] = repos | ||||||
| 	ctx.Data["Total"] = count | 	ctx.Data["Total"] = count | ||||||
| 	ctx.Data["MembersTotal"] = membersCount |  | ||||||
| 	ctx.Data["Members"] = members | 	ctx.Data["Members"] = members | ||||||
| 	ctx.Data["Teams"] = ctx.Org.Teams | 	ctx.Data["Teams"] = ctx.Org.Teams | ||||||
| 	ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull | 	ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull | ||||||
| @ -171,5 +154,7 @@ func Home(ctx *context.Context) { | |||||||
| 	ctx.Data["Page"] = pager | 	ctx.Data["Page"] = pager | ||||||
| 	ctx.Data["ContextUser"] = ctx.ContextUser | 	ctx.Data["ContextUser"] = ctx.ContextUser | ||||||
| 
 | 
 | ||||||
|  | 	ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 | ||||||
|  | 
 | ||||||
| 	ctx.HTML(http.StatusOK, tplOrgHome) | 	ctx.HTML(http.StatusOK, tplOrgHome) | ||||||
| } | } | ||||||
|  | |||||||
| @ -37,12 +37,13 @@ | |||||||
| 
 | 
 | ||||||
| 	<div class="ui container"> | 	<div class="ui container"> | ||||||
| 		<div class="ui mobile reversed stackable grid"> | 		<div class="ui mobile reversed stackable grid"> | ||||||
| 			<div class="ui eleven wide column"> | 			<div class="ui {{if .ShowMemberAndTeamTab}}eleven wide{{end}} column"> | ||||||
| 				{{template "explore/repo_search" .}} | 				{{template "explore/repo_search" .}} | ||||||
| 				{{template "explore/repo_list" .}} | 				{{template "explore/repo_list" .}} | ||||||
| 				{{template "base/paginate" .}} | 				{{template "base/paginate" .}} | ||||||
| 			</div> | 			</div> | ||||||
| 
 | 
 | ||||||
|  | 			{{if .ShowMemberAndTeamTab}} | ||||||
| 			<div class="ui five wide column"> | 			<div class="ui five wide column"> | ||||||
| 				{{if .CanCreateOrgRepo}} | 				{{if .CanCreateOrgRepo}} | ||||||
| 					<div class="center aligned"> | 					<div class="center aligned"> | ||||||
| @ -53,19 +54,20 @@ | |||||||
| 					</div> | 					</div> | ||||||
| 					<div class="divider"></div> | 					<div class="divider"></div> | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 				<h4 class="ui top attached header gt-df"> | 				{{if .NumMembers}} | ||||||
| 					<strong class="gt-f1">{{.locale.Tr "org.members"}}</strong> | 					<h4 class="ui top attached header gt-df"> | ||||||
| 					<a class="text grey gt-dif gt-ac" href="{{.OrgLink}}/members"><span>{{.MembersTotal}}</span> {{svg "octicon-chevron-right"}}</a> | 						<strong class="gt-f1">{{.locale.Tr "org.members"}}</strong> | ||||||
| 				</h4> | 						<a class="text grey gt-dif gt-ac" href="{{.OrgLink}}/members"><span>{{.NumMembers}}</span> {{svg "octicon-chevron-right"}}</a> | ||||||
| 				<div class="ui attached segment members"> | 					</h4> | ||||||
| 					{{$isMember := .IsOrganizationMember}} | 					<div class="ui attached segment members"> | ||||||
| 					{{range .Members}} | 						{{$isMember := .IsOrganizationMember}} | ||||||
| 						{{if or $isMember (call $.IsPublicMember .ID)}} | 						{{range .Members}} | ||||||
| 							<a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}">{{ctx.AvatarUtils.Avatar . 48}}</a> | 							{{if or $isMember (call $.IsPublicMember .ID)}} | ||||||
|  | 								<a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}">{{ctx.AvatarUtils.Avatar . 48}}</a> | ||||||
|  | 							{{end}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 					{{end}} | 					</div> | ||||||
| 				</div> | 				{{end}} | ||||||
| 
 |  | ||||||
| 				{{if .IsOrganizationMember}} | 				{{if .IsOrganizationMember}} | ||||||
| 					<div class="ui top attached header gt-df"> | 					<div class="ui top attached header gt-df"> | ||||||
| 						<strong class="gt-f1">{{.locale.Tr "org.teams"}}</strong> | 						<strong class="gt-f1">{{.locale.Tr "org.teams"}}</strong> | ||||||
| @ -89,6 +91,7 @@ | |||||||
| 					{{end}} | 					{{end}} | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 			</div> | 			</div> | ||||||
|  | 			{{end}} | ||||||
| 		</div> | 		</div> | ||||||
| 	</div> | 	</div> | ||||||
| </div> | </div> | ||||||
|  | |||||||
| @ -21,13 +21,13 @@ | |||||||
| 			{{svg "octicon-code"}} {{$.locale.Tr "org.code"}} | 			{{svg "octicon-code"}} {{$.locale.Tr "org.code"}} | ||||||
| 		</a> | 		</a> | ||||||
| 		{{end}} | 		{{end}} | ||||||
| 		{{if .IsOrganizationMember}} | 		{{if .NumMembers}} | ||||||
| 			<a class="{{if $.PageIsOrgMembers}}active {{end}}item" href="{{$.OrgLink}}/members"> | 			<a class="{{if $.PageIsOrgMembers}}active {{end}}item" href="{{$.OrgLink}}/members"> | ||||||
| 				{{svg "octicon-person"}} {{$.locale.Tr "org.members"}} | 				{{svg "octicon-person"}} {{$.locale.Tr "org.members"}} | ||||||
| 				{{if .NumMembers}} | 				<div class="ui small label">{{.NumMembers}}</div> | ||||||
| 					<div class="ui small label">{{.NumMembers}}</div> |  | ||||||
| 				{{end}} |  | ||||||
| 			</a> | 			</a> | ||||||
|  | 		{{end}} | ||||||
|  | 		{{if .IsOrganizationMember}} | ||||||
| 			<a class="{{if $.PageIsOrgTeams}}active {{end}}item" href="{{$.OrgLink}}/teams"> | 			<a class="{{if $.PageIsOrgTeams}}active {{end}}item" href="{{$.OrgLink}}/teams"> | ||||||
| 				{{svg "octicon-people"}} {{$.locale.Tr "org.teams"}} | 				{{svg "octicon-people"}} {{$.locale.Tr "org.teams"}} | ||||||
| 				{{if .NumTeams}} | 				{{if .NumTeams}} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user