| @@ -0,0 +1,133 @@ | |||
| // Copyright 2019 The Gitea Authors. All rights reserved. | |||
| // Use of this source code is governed by a MIT-style | |||
| // license that can be found in the LICENSE file. | |||
| package org | |||
| import ( | |||
| "strings" | |||
| "code.gitea.io/gitea/models" | |||
| "code.gitea.io/gitea/modules/base" | |||
| "code.gitea.io/gitea/modules/context" | |||
| "code.gitea.io/gitea/modules/setting" | |||
| ) | |||
| const ( | |||
| tplOrgHome base.TplName = "org/home" | |||
| ) | |||
| // Home show organization home page | |||
| func Home(ctx *context.Context) { | |||
| ctx.SetParams(":org", ctx.Params(":username")) | |||
| context.HandleOrgAssignment(ctx) | |||
| if ctx.Written() { | |||
| return | |||
| } | |||
| org := ctx.Org.Organization | |||
| if !models.HasOrgVisible(org, ctx.User) { | |||
| ctx.NotFound("HasOrgVisible", nil) | |||
| return | |||
| } | |||
| ctx.Data["Title"] = org.DisplayName() | |||
| var orderBy models.SearchOrderBy | |||
| ctx.Data["SortType"] = ctx.Query("sort") | |||
| switch ctx.Query("sort") { | |||
| case "newest": | |||
| orderBy = models.SearchOrderByNewest | |||
| case "oldest": | |||
| orderBy = models.SearchOrderByOldest | |||
| case "recentupdate": | |||
| orderBy = models.SearchOrderByRecentUpdated | |||
| case "leastupdate": | |||
| orderBy = models.SearchOrderByLeastUpdated | |||
| case "reversealphabetically": | |||
| orderBy = models.SearchOrderByAlphabeticallyReverse | |||
| case "alphabetically": | |||
| orderBy = models.SearchOrderByAlphabetically | |||
| case "moststars": | |||
| orderBy = models.SearchOrderByStarsReverse | |||
| case "feweststars": | |||
| orderBy = models.SearchOrderByStars | |||
| case "mostforks": | |||
| orderBy = models.SearchOrderByForksReverse | |||
| case "fewestforks": | |||
| orderBy = models.SearchOrderByForks | |||
| default: | |||
| ctx.Data["SortType"] = "recentupdate" | |||
| orderBy = models.SearchOrderByRecentUpdated | |||
| } | |||
| keyword := strings.Trim(ctx.Query("q"), " ") | |||
| ctx.Data["Keyword"] = keyword | |||
| page := ctx.QueryInt("page") | |||
| if page <= 0 { | |||
| page = 1 | |||
| } | |||
| var ( | |||
| repos []*models.Repository | |||
| count int64 | |||
| err error | |||
| ) | |||
| repos, count, err = models.SearchRepository(&models.SearchRepoOptions{ | |||
| Keyword: keyword, | |||
| OwnerID: org.ID, | |||
| OrderBy: orderBy, | |||
| Private: ctx.IsSigned, | |||
| UserIsAdmin: ctx.IsUserSiteAdmin(), | |||
| UserID: ctx.Data["SignedUserID"].(int64), | |||
| Page: page, | |||
| IsProfile: true, | |||
| PageSize: setting.UI.User.RepoPagingNum, | |||
| IncludeDescription: setting.UI.SearchRepoDescription, | |||
| }) | |||
| if err != nil { | |||
| ctx.ServerError("SearchRepository", err) | |||
| return | |||
| } | |||
| 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 && !ctx.User.IsAdmin | |||
| } | |||
| 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["MembersTotal"] = membersCount | |||
| ctx.Data["Members"] = members | |||
| ctx.Data["Teams"] = org.Teams | |||
| pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5) | |||
| pager.SetDefaultParams(ctx) | |||
| ctx.Data["Page"] = pager | |||
| ctx.HTML(200, tplOrgHome) | |||
| } | |||
| @@ -41,7 +41,7 @@ func Members(ctx *context.Context) { | |||
| ctx.Error(500, "IsOrgMember") | |||
| return | |||
| } | |||
| opts.PublicOnly = !isMember | |||
| opts.PublicOnly = !isMember && !ctx.User.IsAdmin | |||
| } | |||
| total, err := models.CountOrgMembers(opts) | |||
| @@ -29,7 +29,6 @@ const ( | |||
| tplDashboard base.TplName = "user/dashboard/dashboard" | |||
| tplIssues base.TplName = "user/dashboard/issues" | |||
| tplProfile base.TplName = "user/profile" | |||
| tplOrgHome base.TplName = "org/home" | |||
| ) | |||
| // getDashboardContextUser finds out dashboard is viewing as which context user. | |||
| @@ -463,120 +462,6 @@ func ShowGPGKeys(ctx *context.Context, uid int64) { | |||
| ctx.PlainText(200, buf.Bytes()) | |||
| } | |||
| func showOrgProfile(ctx *context.Context) { | |||
| ctx.SetParams(":org", ctx.Params(":username")) | |||
| context.HandleOrgAssignment(ctx) | |||
| if ctx.Written() { | |||
| return | |||
| } | |||
| org := ctx.Org.Organization | |||
| if !models.HasOrgVisible(org, ctx.User) { | |||
| ctx.NotFound("HasOrgVisible", nil) | |||
| return | |||
| } | |||
| ctx.Data["Title"] = org.DisplayName() | |||
| var orderBy models.SearchOrderBy | |||
| ctx.Data["SortType"] = ctx.Query("sort") | |||
| switch ctx.Query("sort") { | |||
| case "newest": | |||
| orderBy = models.SearchOrderByNewest | |||
| case "oldest": | |||
| orderBy = models.SearchOrderByOldest | |||
| case "recentupdate": | |||
| orderBy = models.SearchOrderByRecentUpdated | |||
| case "leastupdate": | |||
| orderBy = models.SearchOrderByLeastUpdated | |||
| case "reversealphabetically": | |||
| orderBy = models.SearchOrderByAlphabeticallyReverse | |||
| case "alphabetically": | |||
| orderBy = models.SearchOrderByAlphabetically | |||
| case "moststars": | |||
| orderBy = models.SearchOrderByStarsReverse | |||
| case "feweststars": | |||
| orderBy = models.SearchOrderByStars | |||
| case "mostforks": | |||
| orderBy = models.SearchOrderByForksReverse | |||
| case "fewestforks": | |||
| orderBy = models.SearchOrderByForks | |||
| default: | |||
| ctx.Data["SortType"] = "recentupdate" | |||
| orderBy = models.SearchOrderByRecentUpdated | |||
| } | |||
| keyword := strings.Trim(ctx.Query("q"), " ") | |||
| ctx.Data["Keyword"] = keyword | |||
| page := ctx.QueryInt("page") | |||
| if page <= 0 { | |||
| page = 1 | |||
| } | |||
| var ( | |||
| repos []*models.Repository | |||
| count int64 | |||
| err error | |||
| ) | |||
| repos, count, err = models.SearchRepository(&models.SearchRepoOptions{ | |||
| Keyword: keyword, | |||
| OwnerID: org.ID, | |||
| OrderBy: orderBy, | |||
| Private: ctx.IsSigned, | |||
| UserIsAdmin: ctx.IsUserSiteAdmin(), | |||
| UserID: ctx.Data["SignedUserID"].(int64), | |||
| Page: page, | |||
| IsProfile: true, | |||
| PageSize: setting.UI.User.RepoPagingNum, | |||
| IncludeDescription: setting.UI.SearchRepoDescription, | |||
| }) | |||
| if err != nil { | |||
| ctx.ServerError("SearchRepository", err) | |||
| return | |||
| } | |||
| 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["MembersTotal"] = membersCount | |||
| ctx.Data["Members"] = members | |||
| ctx.Data["Teams"] = org.Teams | |||
| pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5) | |||
| pager.SetDefaultParams(ctx) | |||
| ctx.Data["Page"] = pager | |||
| ctx.HTML(200, tplOrgHome) | |||
| } | |||
| // Email2User show user page via email | |||
| func Email2User(ctx *context.Context) { | |||
| u, err := models.GetUserByEmail(ctx.Query("email")) | |||
| @@ -15,6 +15,7 @@ import ( | |||
| "code.gitea.io/gitea/modules/context" | |||
| "code.gitea.io/gitea/modules/setting" | |||
| "code.gitea.io/gitea/modules/util" | |||
| "code.gitea.io/gitea/routers/org" | |||
| "code.gitea.io/gitea/routers/repo" | |||
| ) | |||
| @@ -83,7 +84,7 @@ func Profile(ctx *context.Context) { | |||
| } | |||
| if ctxUser.IsOrganization() { | |||
| showOrgProfile(ctx) | |||
| org.Home(ctx) | |||
| return | |||
| } | |||