diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index e525f2c43f3ac..708dea05e9c16 100644 --- a/routers/web/org/projects.go +++ b/routers/web/org/projects.go @@ -41,6 +41,7 @@ func MustEnableProjects(ctx *context.Context) { // Projects renders the home page of projects func Projects(ctx *context.Context) { + shared_user.RenderProfileBigAvatar(ctx) ctx.Data["Title"] = ctx.Tr("repo.project_board") sortType := ctx.FormTrim("sort") diff --git a/routers/web/shared/user/header.go b/routers/web/shared/user/header.go index 9594e6975a8ef..d76a24120259c 100644 --- a/routers/web/shared/user/header.go +++ b/routers/web/shared/user/header.go @@ -4,12 +4,102 @@ package user import ( + "fmt" + + "code.gitea.io/gitea/models/db" + "code.gitea.io/gitea/models/organization" repo_model "code.gitea.io/gitea/models/repo" + user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/markup" + "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" ) +// RenderProfileBigAvatar set the context for big avatar view on repo +func RenderProfileBigAvatar(ctx *context.Context) { + // check view permissions + if !user_model.IsUserVisibleToViewer(ctx, ctx.ContextUser, ctx.Doer) { + ctx.NotFound("user", fmt.Errorf(ctx.ContextUser.Name)) + return + } + + // advertise feed via meta tag + ctx.Data["FeedURL"] = ctx.ContextUser.HomeLink() + + // Show OpenID URIs + openIDs, err := user_model.GetUserOpenIDs(ctx.ContextUser.ID) + if err != nil { + ctx.ServerError("GetUserOpenIDs", err) + return + } + + var isFollowing bool + if ctx.Doer != nil { + isFollowing = user_model.IsFollowing(ctx.Doer.ID, ctx.ContextUser.ID) + } + + ctx.Data["ContextUser"] = ctx.ContextUser + ctx.Data["OpenIDs"] = openIDs + ctx.Data["IsFollowing"] = isFollowing + + if len(ctx.ContextUser.Description) != 0 { + content, err := markdown.RenderString(&markup.RenderContext{ + URLPrefix: ctx.Repo.RepoLink, + Metas: map[string]string{"mode": "document"}, + GitRepo: ctx.Repo.GitRepo, + Ctx: ctx, + }, ctx.ContextUser.Description) + if err != nil { + ctx.ServerError("RenderString", err) + return + } + ctx.Data["RenderedDescription"] = content + } + showPrivate := ctx.IsSigned && (ctx.Doer.IsAdmin || ctx.Doer.ID == ctx.ContextUser.ID) + orgs, err := organization.FindOrgs(organization.FindOrgOptions{ + UserID: ctx.ContextUser.ID, + IncludePrivate: showPrivate, + }) + if err != nil { + ctx.ServerError("FindOrgs", err) + return + } + ctx.Data["Orgs"] = orgs + ctx.Data["HasOrgsVisible"] = organization.HasOrgsVisible(orgs, ctx.Doer) + + badges, _, err := user_model.GetUserBadges(ctx, ctx.ContextUser) + if err != nil { + ctx.ServerError("GetUserBadges", err) + return + } + ctx.Data["Badges"] = badges + + pagingNum := setting.UI.User.RepoPagingNum + page := ctx.FormInt("page") + _, numFollowers, err := user_model.GetUserFollowers(ctx, ctx.ContextUser, ctx.Doer, db.ListOptions{ + PageSize: pagingNum, + Page: page, + }) + if err != nil { + ctx.ServerError("GetUserFollowers", err) + return + } + ctx.Data["NumFollowers"] = numFollowers + _, numFollowing, err := user_model.GetUserFollowing(ctx, ctx.ContextUser, ctx.Doer, db.ListOptions{ + PageSize: pagingNum, + Page: page, + }) + if err != nil { + ctx.ServerError("GetUserFollowing", err) + return + } + ctx.Data["NumFollowing"] = numFollowing + ctx.Data["ShowUserEmail"] = setting.UI.ShowUserEmail && ctx.ContextUser.Email != "" && ctx.IsSigned && !ctx.ContextUser.KeepEmailPrivate + ctx.Data["EnableFeed"] = setting.Other.EnableFeed +} + func RenderUserHeader(ctx *context.Context) { ctx.Data["IsProjectEnabled"] = true ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled diff --git a/routers/web/user/code.go b/routers/web/user/code.go index 15524de7d651e..fe91932a60a5d 100644 --- a/routers/web/user/code.go +++ b/routers/web/user/code.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/modules/context" code_indexer "code.gitea.io/gitea/modules/indexer/code" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/routers/web/shared/user" ) const ( @@ -19,17 +20,16 @@ const ( // CodeSearch render user/organization code search page func CodeSearch(ctx *context.Context) { + user.RenderProfileBigAvatar(ctx) if !setting.Indexer.RepoIndexerEnabled { ctx.Redirect(ctx.ContextUser.HomeLink()) return } - ctx.Data["IsProjectEnabled"] = true ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled ctx.Data["Title"] = ctx.Tr("explore.code") ctx.Data["ContextUser"] = ctx.ContextUser - language := ctx.FormTrim("l") keyword := ctx.FormTrim("q") @@ -109,6 +109,5 @@ func CodeSearch(ctx *context.Context) { pager.SetDefaultParams(ctx) pager.AddParam(ctx, "l", "Language") ctx.Data["Page"] = pager - ctx.HTML(http.StatusOK, tplUserCode) } diff --git a/routers/web/user/package.go b/routers/web/user/package.go index 20141914b655b..3bcdd00b582c9 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -36,6 +36,7 @@ const ( // ListPackages displays a list of all packages of the context user func ListPackages(ctx *context.Context) { + shared_user.RenderProfileBigAvatar(ctx) page := ctx.FormInt("page") if page <= 1 { page = 1 diff --git a/templates/org/projects/list.tmpl b/templates/org/projects/list.tmpl index 1f113b28c84c9..dcf11f345d88f 100644 --- a/templates/org/projects/list.tmpl +++ b/templates/org/projects/list.tmpl @@ -1,6 +1,23 @@ {{template "base/head" .}} -
- {{template "user/overview/header" .}} - {{template "projects/list" .}} -
+{{if .ContextUser.IsOrganization}} +
+ {{template "shared/user/profile_big_avatar" .}} + {{template "user/overview/header" .}} + {{template "projects/list" .}} +
+{{else}} +
+
+
+
+ {{template "shared/user/profile_big_avatar" .}} +
+
+ {{template "user/overview/header" .}} + {{template "projects/list" .}} +
+
+
+
+{{end}} {{template "base/footer" .}} diff --git a/templates/package/shared/list.tmpl b/templates/package/shared/list.tmpl index 3d14eda3efa19..9d76d2e46cbd8 100644 --- a/templates/package/shared/list.tmpl +++ b/templates/package/shared/list.tmpl @@ -1,7 +1,21 @@ -
+
{{template "base/alert" .}} -
+
+ + {{template "shared/searchinput" dict "locale" .locale "Value" .Query "AutoFocus" true}} diff --git a/templates/projects/list.tmpl b/templates/projects/list.tmpl index 9725c1e63b337..64c6bafe28147 100644 --- a/templates/projects/list.tmpl +++ b/templates/projects/list.tmpl @@ -1,5 +1,5 @@
-
+
{{if .CanWriteProjects}}