Skip to content

Commit 39d2fde

Browse files
authored
Split org Propfile README to a new tab overview (#31373)
like user profile, add a new overviw tab to show profile READEME when it is exist. replace #31349 (another solution option) example view: ![屏幕截图 2024-06-14 094116](https://github.com/go-gitea/gitea/assets/25342410/3303a1f2-ae02-48e0-9519-7fa11e65657f) ![屏幕截图 2024-06-14 094101](https://github.com/go-gitea/gitea/assets/25342410/7a4a5a48-dc2b-4ad4-b2a2-9ea4ab5d5808) --------- Signed-off-by: a1012112796 <[email protected]>
1 parent 521d919 commit 39d2fde

File tree

6 files changed

+67
-37
lines changed

6 files changed

+67
-37
lines changed

routers/web/org/home.go

+43-32
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"code.gitea.io/gitea/models/organization"
1414
repo_model "code.gitea.io/gitea/models/repo"
1515
"code.gitea.io/gitea/modules/base"
16-
"code.gitea.io/gitea/modules/git"
1716
"code.gitea.io/gitea/modules/log"
1817
"code.gitea.io/gitea/modules/markup"
1918
"code.gitea.io/gitea/modules/markup/markdown"
@@ -42,6 +41,14 @@ func Home(ctx *context.Context) {
4241
return
4342
}
4443

44+
home(ctx, false)
45+
}
46+
47+
func Repositories(ctx *context.Context) {
48+
home(ctx, true)
49+
}
50+
51+
func home(ctx *context.Context, viewRepositories bool) {
4552
org := ctx.Org.Organization
4653

4754
ctx.Data["PageIsUserProfile"] = true
@@ -101,10 +108,34 @@ func Home(ctx *context.Context) {
101108
private := ctx.FormOptionalBool("private")
102109
ctx.Data["IsPrivate"] = private
103110

111+
err := shared_user.LoadHeaderCount(ctx)
112+
if err != nil {
113+
ctx.ServerError("LoadHeaderCount", err)
114+
return
115+
}
116+
117+
opts := &organization.FindOrgMembersOpts{
118+
OrgID: org.ID,
119+
PublicOnly: ctx.Org.PublicMemberOnly,
120+
ListOptions: db.ListOptions{Page: 1, PageSize: 25},
121+
}
122+
members, _, err := organization.FindOrgMembers(ctx, opts)
123+
if err != nil {
124+
ctx.ServerError("FindOrgMembers", err)
125+
return
126+
}
127+
ctx.Data["Members"] = members
128+
ctx.Data["Teams"] = ctx.Org.Teams
129+
ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
130+
ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
131+
132+
if !prepareOrgProfileReadme(ctx, viewRepositories) {
133+
ctx.Data["PageIsViewRepositories"] = true
134+
}
135+
104136
var (
105137
repos []*repo_model.Repository
106138
count int64
107-
err error
108139
)
109140
repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{
110141
ListOptions: db.ListOptions{
@@ -129,29 +160,8 @@ func Home(ctx *context.Context) {
129160
return
130161
}
131162

132-
opts := &organization.FindOrgMembersOpts{
133-
OrgID: org.ID,
134-
PublicOnly: ctx.Org.PublicMemberOnly,
135-
ListOptions: db.ListOptions{Page: 1, PageSize: 25},
136-
}
137-
members, _, err := organization.FindOrgMembers(ctx, opts)
138-
if err != nil {
139-
ctx.ServerError("FindOrgMembers", err)
140-
return
141-
}
142-
143163
ctx.Data["Repos"] = repos
144164
ctx.Data["Total"] = count
145-
ctx.Data["Members"] = members
146-
ctx.Data["Teams"] = ctx.Org.Teams
147-
ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
148-
ctx.Data["PageIsViewRepositories"] = true
149-
150-
err = shared_user.LoadHeaderCount(ctx)
151-
if err != nil {
152-
ctx.ServerError("LoadHeaderCount", err)
153-
return
154-
}
155165

156166
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
157167
pager.SetDefaultParams(ctx)
@@ -173,18 +183,16 @@ func Home(ctx *context.Context) {
173183
}
174184
ctx.Data["Page"] = pager
175185

176-
ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
177-
178-
profileDbRepo, profileGitRepo, profileReadmeBlob, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
179-
defer profileClose()
180-
prepareOrgProfileReadme(ctx, profileGitRepo, profileDbRepo, profileReadmeBlob)
181-
182186
ctx.HTML(http.StatusOK, tplOrgHome)
183187
}
184188

185-
func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repository, profileDbRepo *repo_model.Repository, profileReadme *git.Blob) {
186-
if profileGitRepo == nil || profileReadme == nil {
187-
return
189+
func prepareOrgProfileReadme(ctx *context.Context, viewRepositories bool) bool {
190+
profileDbRepo, profileGitRepo, profileReadme, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
191+
defer profileClose()
192+
ctx.Data["HasProfileReadme"] = profileReadme != nil
193+
194+
if profileGitRepo == nil || profileReadme == nil || viewRepositories {
195+
return false
188196
}
189197

190198
if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil {
@@ -206,4 +214,7 @@ func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repositor
206214
ctx.Data["ProfileReadme"] = profileContent
207215
}
208216
}
217+
218+
ctx.Data["PageIsViewOverview"] = true
219+
return true
209220
}

routers/web/org/members.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ func Members(ctx *context.Context) {
5454
return
5555
}
5656

57-
err = shared_user.LoadHeaderCount(ctx)
57+
err = shared_user.RenderOrgHeader(ctx)
5858
if err != nil {
59-
ctx.ServerError("LoadHeaderCount", err)
59+
ctx.ServerError("RenderOrgHeader", err)
6060
return
6161
}
6262

routers/web/org/teams.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ func Teams(ctx *context.Context) {
5959
}
6060
ctx.Data["Teams"] = ctx.Org.Teams
6161

62-
err := shared_user.LoadHeaderCount(ctx)
62+
err := shared_user.RenderOrgHeader(ctx)
6363
if err != nil {
64-
ctx.ServerError("LoadHeaderCount", err)
64+
ctx.ServerError("RenderOrgHeader", err)
6565
return
6666
}
6767

routers/web/shared/user/header.go

+12
Original file line numberDiff line numberDiff line change
@@ -162,3 +162,15 @@ func LoadHeaderCount(ctx *context.Context) error {
162162

163163
return nil
164164
}
165+
166+
func RenderOrgHeader(ctx *context.Context) error {
167+
if err := LoadHeaderCount(ctx); err != nil {
168+
return err
169+
}
170+
171+
_, _, profileReadmeBlob, profileClose := FindUserProfileReadme(ctx, ctx.Doer)
172+
defer profileClose()
173+
ctx.Data["HasProfileReadme"] = profileReadmeBlob != nil
174+
175+
return nil
176+
}

routers/web/web.go

+2
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,8 @@ func registerRoutes(m *web.Router) {
995995
}, context.PackageAssignment(), reqPackageAccess(perm.AccessModeRead))
996996
}
997997

998+
m.Get("/repositories", org.Repositories)
999+
9981000
m.Group("/projects", func() {
9991001
m.Group("", func() {
10001002
m.Get("", org.Projects)

templates/org/menu.tmpl

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
<div class="ui container">
22
<overflow-menu class="ui secondary pointing tabular borderless menu tw-mb-4">
33
<div class="overflow-menu-items">
4-
<a class="{{if .PageIsViewRepositories}}active {{end}}item" href="{{$.Org.HomeLink}}">
4+
{{if .HasProfileReadme}}
5+
<a class="{{if .PageIsViewOverview}}active {{end}}item" href="{{$.Org.HomeLink}}">
6+
{{svg "octicon-info"}} {{ctx.Locale.Tr "user.overview"}}
7+
</a>
8+
{{end}}
9+
<a class="{{if .PageIsViewRepositories}}active {{end}}item" href="{{$.Org.HomeLink}}{{if .HasProfileReadme}}/-/repositories{{end}}">
510
{{svg "octicon-repo"}} {{ctx.Locale.Tr "user.repositories"}}
611
{{if .RepoCount}}
712
<div class="ui small label">{{.RepoCount}}</div>

0 commit comments

Comments
 (0)