From 095c30ce15797f79839f65997e65c3d0265fd6a6 Mon Sep 17 00:00:00 2001 From: puni9869 Date: Tue, 6 Jun 2023 23:34:52 +0530 Subject: [PATCH 1/7] Fix ::User Profile Page - Project/Packages Tabs Have Inconsistent Layout and Style --- routers/web/org/projects.go | 1 + routers/web/shared/user/header.go | 90 ++++++++++++ routers/web/user/package.go | 1 + templates/org/projects/list.tmpl | 25 +++- templates/package/shared/list.tmpl | 6 +- templates/package/shared/versionlist.tmpl | 4 +- templates/projects/list.tmpl | 2 +- templates/shared/user/profile_big_avatar.tmpl | 135 ++++++++++++++++++ templates/user/overview/header.tmpl | 22 +-- templates/user/overview/package_versions.tmpl | 25 +++- templates/user/overview/packages.tmpl | 26 +++- templates/user/profile.tmpl | 117 +-------------- web_src/css/user.css | 9 ++ 13 files changed, 308 insertions(+), 155 deletions(-) create mode 100644 templates/shared/user/profile_big_avatar.tmpl diff --git a/routers/web/org/projects.go b/routers/web/org/projects.go index b3f6024b60606..9cb3f93db152c 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/package.go b/routers/web/user/package.go index 81a26da827283..2ef12c6f56cb7 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 707fbe357fbb8..907c582dc5f22 100644 --- a/templates/package/shared/list.tmpl +++ b/templates/package/shared/list.tmpl @@ -1,6 +1,6 @@ -
+
{{template "base/alert" .}} -
+
- +
From 91906db03d0fb86f24d6e0929f18de0c1aac0858 Mon Sep 17 00:00:00 2001 From: puni9869 Date: Wed, 7 Jun 2023 12:29:34 +0530 Subject: [PATCH 3/7] Code tab fix for profile avatar --- routers/web/user/code.go | 5 +- templates/shared/user/profile_big_avatar.tmpl | 2 +- templates/user/code.tmpl | 74 ++++++++++++++----- templates/user/overview/header.tmpl | 2 +- web_src/css/user.css | 3 +- 5 files changed, 60 insertions(+), 26 deletions(-) diff --git a/routers/web/user/code.go b/routers/web/user/code.go index b3adbcb8d3a8f..11ce6f4cd1cd7 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,15 @@ 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") diff --git a/templates/shared/user/profile_big_avatar.tmpl b/templates/shared/user/profile_big_avatar.tmpl index e2ac20f2bb98a..2950f63daabe3 100644 --- a/templates/shared/user/profile_big_avatar.tmpl +++ b/templates/shared/user/profile_big_avatar.tmpl @@ -1,4 +1,4 @@ -{{if .ContextUser.IsOrganization}} +{{if .ContextUser.IsOrganization }} {{with .ContextUser}}
diff --git a/templates/user/code.tmpl b/templates/user/code.tmpl index 338aae2be169f..9a4dc2112b277 100644 --- a/templates/user/code.tmpl +++ b/templates/user/code.tmpl @@ -1,25 +1,59 @@ {{template "base/head" .}} -