@@ -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 | |||
} | |||