From 86b4df9ea7fa2af8d7370abebd883b0d9f48999c Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Wed, 26 Apr 2023 02:30:48 +0000 Subject: [PATCH 1/8] add org follow --- models/user/user.go | 1 - routers/web/org/home.go | 7 +++++++ templates/org/home.tmpl | 13 +++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/models/user/user.go b/models/user/user.go index 053d6680cddea..2ef4e8dbec90b 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -346,7 +346,6 @@ func GetUserFollowing(ctx context.Context, u, viewer *User, listOptions db.ListO Select("`user`.*"). Join("LEFT", "follow", "`user`.id=follow.follow_id"). Where("follow.user_id=?", u.ID). - And("`user`.type=?", UserTypeIndividual). And(isUserVisibleToViewerCond(viewer)) if listOptions.Page != 0 { diff --git a/routers/web/org/home.go b/routers/web/org/home.go index 201eefa61402a..7f38ec51ba6e2 100644 --- a/routers/web/org/home.go +++ b/routers/web/org/home.go @@ -10,6 +10,7 @@ import ( "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/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/markup" @@ -143,6 +144,11 @@ func Home(ctx *context.Context) { return } + var isFollowing bool + if ctx.Doer != nil { + isFollowing = user_model.IsFollowing(ctx.Doer.ID, ctx.ContextUser.ID) + } + ctx.Data["Repos"] = repos ctx.Data["Total"] = count ctx.Data["MembersTotal"] = membersCount @@ -150,6 +156,7 @@ func Home(ctx *context.Context) { ctx.Data["Teams"] = ctx.Org.Teams ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull ctx.Data["PageIsViewRepositories"] = true + ctx.Data["IsFollowing"] = isFollowing pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5) pager.SetDefaultParams(ctx) diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 1bd017d11990e..3c3557072d48d 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -12,6 +12,19 @@ {{if .Org.Visibility.IsLimited}}
{{.locale.Tr "org.settings.visibility.limited_shortname"}}
{{end}} {{if .Org.Visibility.IsPrivate}}
{{.locale.Tr "org.settings.visibility.private_shortname"}}
{{end}} +
+ {{if $.IsFollowing}} +
+ {{$.CsrfTokenHtml}} + +
+ {{else}} +
+ {{$.CsrfTokenHtml}} + +
+ {{end}} +
{{if $.RenderedDescription}}
{{$.RenderedDescription|Str2html}}
{{end}}
From ec450edaacf69289a2483d7a6829b086ecc5ab67 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Wed, 26 Apr 2023 02:58:59 +0000 Subject: [PATCH 2/8] fix follow button location --- templates/org/home.tmpl | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 3c3557072d48d..4a6e7b6664c21 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -12,19 +12,6 @@ {{if .Org.Visibility.IsLimited}}
{{.locale.Tr "org.settings.visibility.limited_shortname"}}
{{end}} {{if .Org.Visibility.IsPrivate}}
{{.locale.Tr "org.settings.visibility.private_shortname"}}
{{end}} -
- {{if $.IsFollowing}} -
- {{$.CsrfTokenHtml}} - -
- {{else}} -
- {{$.CsrfTokenHtml}} - -
- {{end}} -
{{if $.RenderedDescription}}
{{$.RenderedDescription|Str2html}}
{{end}}
@@ -32,6 +19,19 @@ {{if .Org.Website}}
{{svg "octicon-link"}} {{.Org.Website}}
{{end}}
+ {{template "org/menu" .}} From e4fde1ce0e9a0ecb3bd22ec60c8c424f118375ff Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Wed, 26 Apr 2023 04:06:23 +0000 Subject: [PATCH 3/8] fix --- models/user/user.go | 1 + 1 file changed, 1 insertion(+) diff --git a/models/user/user.go b/models/user/user.go index 2ef4e8dbec90b..1299746ce6ae9 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -346,6 +346,7 @@ func GetUserFollowing(ctx context.Context, u, viewer *User, listOptions db.ListO Select("`user`.*"). Join("LEFT", "follow", "`user`.id=follow.follow_id"). Where("follow.user_id=?", u.ID). + And("`user`.type IN (?, ?)", UserTypeIndividual, UserTypeOrganization). And(isUserVisibleToViewerCond(viewer)) if listOptions.Page != 0 { From d794c3eaf7107ebecca7031d2b9f89b65e450e09 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Wed, 26 Apr 2023 04:33:16 +0000 Subject: [PATCH 4/8] fix isUserVisibleToViewerCond --- models/user/user.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/user/user.go b/models/user/user.go index 1299746ce6ae9..9854d0a0138bf 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -1223,7 +1223,7 @@ func isUserVisibleToViewerCond(viewer *User) builder.Cond { Where(builder.Eq{"`t2`.uid": viewer.ID})), builder.In("`user`.id", builder. - Select("`team_user`.uid"). + Select("`team_user`.org_id"). From("team_user"). Join("INNER", "`team_user` AS t2", "`team_user`.org_id = `t2`.org_id"). Where(builder.Eq{"`t2`.uid": viewer.ID}))) From f287739973f38aafc9937e91ec903659717c9d67 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Wed, 26 Apr 2023 05:39:52 +0000 Subject: [PATCH 5/8] fix logic --- models/user/user.go | 8 +++++--- routers/web/user/profile.go | 41 +++++++++++++++++++------------------ templates/user/profile.tmpl | 2 +- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/models/user/user.go b/models/user/user.go index 9854d0a0138bf..46c4440e5f07e 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -1210,23 +1210,25 @@ func isUserVisibleToViewerCond(viewer *User) builder.Cond { return builder.Neq{ "`user`.visibility": structs.VisibleTypePrivate, }.Or( + // viewer's following builder.In("`user`.id", builder. Select("`follow`.user_id"). From("follow"). Where(builder.Eq{"`follow`.follow_id": viewer.ID})), + // viewer's org user builder.In("`user`.id", builder. Select("`team_user`.uid"). From("team_user"). - Join("INNER", "`team_user` AS t2", "`team_user`.id = `t2`.id"). + Join("INNER", "`team_user` AS t2", "`team_user`.org_id = `t2`.org_id"). Where(builder.Eq{"`t2`.uid": viewer.ID})), + // viewer's org builder.In("`user`.id", builder. Select("`team_user`.org_id"). From("team_user"). - Join("INNER", "`team_user` AS t2", "`team_user`.org_id = `t2`.org_id"). - Where(builder.Eq{"`t2`.uid": viewer.ID}))) + Where(builder.Eq{"`team_user`.uid": viewer.ID}))) } // IsUserVisibleToViewer check if viewer is able to see user profile diff --git a/routers/web/user/profile.go b/routers/web/user/profile.go index 367bb306b83ce..ef91d89d14e95 100644 --- a/routers/web/user/profile.go +++ b/routers/web/user/profile.go @@ -167,30 +167,31 @@ func Profile(ctx *context.Context) { language := ctx.FormTrim("language") ctx.Data["Language"] = language + followers, 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 + following, 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 + switch tab { case "followers": - items, count, 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["Cards"] = items - + ctx.Data["Cards"] = followers total = int(count) case "following": - items, count, 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["Cards"] = items - + ctx.Data["Cards"] = following total = int(count) case "activity": date := ctx.FormString("date") diff --git a/templates/user/profile.tmpl b/templates/user/profile.tmpl index 2ad92612a2b6d..171d7868179ab 100644 --- a/templates/user/profile.tmpl +++ b/templates/user/profile.tmpl @@ -22,7 +22,7 @@ {{svg "octicon-rss" 18}} {{end}}
- {{svg "octicon-person" 18 "gt-mr-2"}}{{.ContextUser.NumFollowers}} {{.locale.Tr "user.followers"}} · {{.ContextUser.NumFollowing}} {{.locale.Tr "user.following"}} + {{svg "octicon-person" 18 "gt-mr-2"}}{{.NumFollowers}} {{.locale.Tr "user.followers"}} · {{.NumFollowing}} {{.locale.Tr "user.following"}}
From 4e123d1de3eef45bf3520157c6ed97448df4a634 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Thu, 27 Apr 2023 02:02:05 +0000 Subject: [PATCH 6/8] remove red/green --- templates/org/home.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 4a6e7b6664c21..1f14e004aa76e 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -23,12 +23,12 @@ {{if $.IsFollowing}}
{{$.CsrfTokenHtml}} - +
{{else}}
{{$.CsrfTokenHtml}} - +
{{end}}
From c9af256b57f89a150c00e6833079d5293077707d Mon Sep 17 00:00:00 2001 From: silverwind Date: Sat, 29 Apr 2023 15:33:04 +0200 Subject: [PATCH 7/8] use single form template, remove button margin --- templates/org/home.tmpl | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 1f14e004aa76e..d0f5fd25512ae 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -20,17 +20,16 @@ From 7088934057bd2aaa2df5dcf7af16c032707e1237 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sat, 29 Apr 2023 15:33:40 +0200 Subject: [PATCH 8/8] indent --- templates/org/home.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index d0f5fd25512ae..afd7d61ca9f8e 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -28,7 +28,7 @@ {{else}} {{.locale.Tr "user.follow"}} {{end}} - +