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}}
+
+ {{else}}
+
+ {{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}}
-
- {{else}}
-
- {{end}}
-
{{if $.RenderedDescription}}{{$.RenderedDescription|Str2html}}
{{end}}
@@ -32,6 +19,19 @@
{{if .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}}
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}}
-
+