@@ -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") | ctx.Error(500, "IsOrgMember") | ||||
return | return | ||||
} | } | ||||
opts.PublicOnly = !isMember | |||||
opts.PublicOnly = !isMember && !ctx.User.IsAdmin | |||||
} | } | ||||
total, err := models.CountOrgMembers(opts) | total, err := models.CountOrgMembers(opts) | ||||
@@ -29,7 +29,6 @@ const ( | |||||
tplDashboard base.TplName = "user/dashboard/dashboard" | tplDashboard base.TplName = "user/dashboard/dashboard" | ||||
tplIssues base.TplName = "user/dashboard/issues" | tplIssues base.TplName = "user/dashboard/issues" | ||||
tplProfile base.TplName = "user/profile" | tplProfile base.TplName = "user/profile" | ||||
tplOrgHome base.TplName = "org/home" | |||||
) | ) | ||||
// getDashboardContextUser finds out dashboard is viewing as which context user. | // 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()) | 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 | // Email2User show user page via email | ||||
func Email2User(ctx *context.Context) { | func Email2User(ctx *context.Context) { | ||||
u, err := models.GetUserByEmail(ctx.Query("email")) | u, err := models.GetUserByEmail(ctx.Query("email")) | ||||
@@ -15,6 +15,7 @@ import ( | |||||
"code.gitea.io/gitea/modules/context" | "code.gitea.io/gitea/modules/context" | ||||
"code.gitea.io/gitea/modules/setting" | "code.gitea.io/gitea/modules/setting" | ||||
"code.gitea.io/gitea/modules/util" | "code.gitea.io/gitea/modules/util" | ||||
"code.gitea.io/gitea/routers/org" | |||||
"code.gitea.io/gitea/routers/repo" | "code.gitea.io/gitea/routers/repo" | ||||
) | ) | ||||
@@ -83,7 +84,7 @@ func Profile(ctx *context.Context) { | |||||
} | } | ||||
if ctxUser.IsOrganization() { | if ctxUser.IsOrganization() { | ||||
showOrgProfile(ctx) | |||||
org.Home(ctx) | |||||
return | return | ||||
} | } | ||||