diff --git a/routers/web/user/profile.go b/routers/web/user/profile.go index 73ab93caed..e7f133e981 100644 --- a/routers/web/user/profile.go +++ b/routers/web/user/profile.go @@ -29,6 +29,7 @@ import ( const ( tplProfileBigAvatar base.TplName = "shared/user/profile_big_avatar" + tplFollowUnfollow base.TplName = "shared/user/follow_unfollow" ) // OwnerProfile render profile page for a user or a organization (aka, repo owner) @@ -318,6 +319,15 @@ func Action(ctx *context.Context) { return } - shared_user.PrepareContextForProfileBigAvatar(ctx) - ctx.HTML(http.StatusOK, tplProfileBigAvatar) + if ctx.ContextUser.IsIndividual() { + shared_user.PrepareContextForProfileBigAvatar(ctx) + ctx.HTML(http.StatusOK, tplProfileBigAvatar) + return + } else if ctx.ContextUser.IsOrganization() { + ctx.Data["IsFollowing"] = ctx.Doer != nil && user_model.IsFollowing(ctx, ctx.Doer.ID, ctx.ContextUser.ID) + ctx.HTML(http.StatusOK, tplFollowUnfollow) + return + } + log.Error("Failed to apply action %q: unsupport context user type: %s", ctx.FormString("action"), ctx.ContextUser.Type) + ctx.Error(http.StatusBadRequest, fmt.Sprintf("Action %q failed", ctx.FormString("action"))) } diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index fc65d4691c..322be3271d 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -25,13 +25,15 @@ {{svg "octicon-rss" 24}} </a> {{end}} - <button class="link-action ui basic button gt-mr-0" data-url="{{.Org.HomeLink}}?action={{if $.IsFollowing}}unfollow{{else}}follow{{end}}"> - {{if $.IsFollowing}} - {{ctx.Locale.Tr "user.unfollow"}} - {{else}} - {{ctx.Locale.Tr "user.follow"}} - {{end}} - </button> + {{if .IsSigned}} + <button class="ui basic button gt-mr-0" hx-post="{{.Org.HomeLink}}?action={{if $.IsFollowing}}unfollow{{else}}follow{{end}}"> + {{if $.IsFollowing}} + {{ctx.Locale.Tr "user.unfollow"}} + {{else}} + {{ctx.Locale.Tr "user.follow"}} + {{end}} + </button> + {{end}} </div> </div>