diff --git a/modules/context/org.go b/modules/context/org.go index 835c76137..2d7cf5185 100644 --- a/modules/context/org.go +++ b/modules/context/org.go @@ -24,6 +24,7 @@ type Organization struct { Organization *organization.Organization OrgLink string CanCreateOrgRepo bool + PublicMemberOnly bool // Only display public members Team *organization.Team Teams []*organization.Team @@ -172,6 +173,18 @@ func HandleOrgAssignment(ctx *Context, args ...bool) { ctx.Org.OrgLink = org.AsUser().OrganisationLink() 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. if ctx.Org.IsMember { shouldSeeAllTeams := false @@ -203,6 +216,7 @@ func HandleOrgAssignment(ctx *Context, args ...bool) { return } } + ctx.Data["NumTeams"] = len(ctx.Org.Teams) } teamName := ctx.Params(":team") diff --git a/routers/web/org/home.go b/routers/web/org/home.go index 9104c15f9..613dff218 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -120,31 +120,15 @@ func Home(ctx *context.Context) { opts := &organization.FindOrgMembersOpts{ OrgID: org.ID, - PublicOnly: true, + PublicOnly: ctx.Org.PublicMemberOnly, 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) if err != nil { ctx.ServerError("FindOrgMembers", err) return } - membersCount, err := organization.CountOrgMembers(opts) - if err != nil { - ctx.ServerError("CountOrgMembers", err) - return - } - var isFollowing bool if ctx.Doer != nil { 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["Total"] = count - ctx.Data["MembersTotal"] = membersCount ctx.Data["Members"] = members ctx.Data["Teams"] = ctx.Org.Teams ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull @@ -171,5 +154,7 @@ func Home(ctx *context.Context) { ctx.Data["Page"] = pager ctx.Data["ContextUser"] = ctx.ContextUser + ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 + ctx.HTML(http.StatusOK, tplOrgHome) } diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 766dd5b7a..0bd744d2b 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -37,12 +37,13 @@ <div class="ui container"> <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_list" .}} {{template "base/paginate" .}} </div> + {{if .ShowMemberAndTeamTab}} <div class="ui five wide column"> {{if .CanCreateOrgRepo}} <div class="center aligned"> @@ -53,19 +54,20 @@ </div> <div class="divider"></div> {{end}} - <h4 class="ui top attached header gt-df"> - <strong class="gt-f1">{{.locale.Tr "org.members"}}</strong> - <a class="text grey gt-dif gt-ac" href="{{.OrgLink}}/members"><span>{{.MembersTotal}}</span> {{svg "octicon-chevron-right"}}</a> - </h4> - <div class="ui attached segment members"> - {{$isMember := .IsOrganizationMember}} - {{range .Members}} - {{if or $isMember (call $.IsPublicMember .ID)}} - <a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}">{{ctx.AvatarUtils.Avatar . 48}}</a> + {{if .NumMembers}} + <h4 class="ui top attached header gt-df"> + <strong class="gt-f1">{{.locale.Tr "org.members"}}</strong> + <a class="text grey gt-dif gt-ac" href="{{.OrgLink}}/members"><span>{{.NumMembers}}</span> {{svg "octicon-chevron-right"}}</a> + </h4> + <div class="ui attached segment members"> + {{$isMember := .IsOrganizationMember}} + {{range .Members}} + {{if or $isMember (call $.IsPublicMember .ID)}} + <a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}">{{ctx.AvatarUtils.Avatar . 48}}</a> + {{end}} {{end}} - {{end}} - </div> - + </div> + {{end}} {{if .IsOrganizationMember}} <div class="ui top attached header gt-df"> <strong class="gt-f1">{{.locale.Tr "org.teams"}}</strong> @@ -89,6 +91,7 @@ {{end}} {{end}} </div> + {{end}} </div> </div> </div> diff --git a/templates/org/menu.tmpl b/templates/org/menu.tmpl index a4f602730..26c9f980a 100644 --- a/templates/org/menu.tmpl +++ b/templates/org/menu.tmpl @@ -21,13 +21,13 @@ {{svg "octicon-code"}} {{$.locale.Tr "org.code"}} </a> {{end}} - {{if .IsOrganizationMember}} + {{if .NumMembers}} <a class="{{if $.PageIsOrgMembers}}active {{end}}item" href="{{$.OrgLink}}/members"> {{svg "octicon-person"}} {{$.locale.Tr "org.members"}} - {{if .NumMembers}} - <div class="ui small label">{{.NumMembers}}</div> - {{end}} + <div class="ui small label">{{.NumMembers}}</div> </a> + {{end}} + {{if .IsOrganizationMember}} <a class="{{if $.PageIsOrgTeams}}active {{end}}item" href="{{$.OrgLink}}/teams"> {{svg "octicon-people"}} {{$.locale.Tr "org.teams"}} {{if .NumTeams}}