1
0
mirror of https://github.com/go-gitea/gitea.git synced 2024-07-01 02:05:30 +00:00

Compare commits

...

2 Commits

Author SHA1 Message Date
a1012112796
109a9a3fe2
Merge d3f415d105 into f446e3b4ab 2024-06-16 16:45:21 +08:00
a1012112796
d3f415d105
split Propfile README to a new tab overview
like user profile, add a new overviw tab
to show profile READEME when it is exist.

Signed-off-by: a1012112796 <1012112796@qq.com>
2024-06-14 17:49:18 +08:00
6 changed files with 63 additions and 34 deletions

View File

@ -12,7 +12,6 @@ import (
"code.gitea.io/gitea/models/organization" "code.gitea.io/gitea/models/organization"
repo_model "code.gitea.io/gitea/models/repo" repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/markup/markdown"
@ -100,10 +99,35 @@ func Home(ctx *context.Context) {
private := ctx.FormOptionalBool("private") private := ctx.FormOptionalBool("private")
ctx.Data["IsPrivate"] = private ctx.Data["IsPrivate"] = private
err := shared_user.LoadHeaderCount(ctx)
if err != nil {
ctx.ServerError("LoadHeaderCount", err)
return
}
opts := &organization.FindOrgMembersOpts{
OrgID: org.ID,
PublicOnly: ctx.Org.PublicMemberOnly,
ListOptions: db.ListOptions{Page: 1, PageSize: 25},
}
members, _, err := organization.FindOrgMembers(ctx, opts)
if err != nil {
ctx.ServerError("FindOrgMembers", err)
return
}
ctx.Data["Members"] = members
ctx.Data["Teams"] = ctx.Org.Teams
ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
prepareOrgProfileReadme(ctx)
if ctx.Written() {
return
}
var ( var (
repos []*repo_model.Repository repos []*repo_model.Repository
count int64 count int64
err error
) )
repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{ repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{
ListOptions: db.ListOptions{ ListOptions: db.ListOptions{
@ -128,49 +152,32 @@ func Home(ctx *context.Context) {
return return
} }
opts := &organization.FindOrgMembersOpts{
OrgID: org.ID,
PublicOnly: ctx.Org.PublicMemberOnly,
ListOptions: db.ListOptions{Page: 1, PageSize: 25},
}
members, _, err := organization.FindOrgMembers(ctx, opts)
if err != nil {
ctx.ServerError("FindOrgMembers", err)
return
}
ctx.Data["Repos"] = repos ctx.Data["Repos"] = repos
ctx.Data["Total"] = count ctx.Data["Total"] = count
ctx.Data["Members"] = members
ctx.Data["Teams"] = ctx.Org.Teams
ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
ctx.Data["PageIsViewRepositories"] = true ctx.Data["PageIsViewRepositories"] = true
err = shared_user.LoadHeaderCount(ctx)
if err != nil {
ctx.ServerError("LoadHeaderCount", err)
return
}
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5) pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
pager.SetDefaultParams(ctx) pager.SetDefaultParams(ctx)
pager.AddParamString("language", language) pager.AddParamString("language", language)
ctx.Data["Page"] = pager ctx.Data["Page"] = pager
ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
profileDbRepo, profileGitRepo, profileReadmeBlob, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
defer profileClose()
prepareOrgProfileReadme(ctx, profileGitRepo, profileDbRepo, profileReadmeBlob)
ctx.HTML(http.StatusOK, tplOrgHome) ctx.HTML(http.StatusOK, tplOrgHome)
} }
func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repository, profileDbRepo *repo_model.Repository, profileReadme *git.Blob) { func prepareOrgProfileReadme(ctx *context.Context) {
profileDbRepo, profileGitRepo, profileReadme, profileClose := shared_user.FindUserProfileReadme(ctx, ctx.Doer)
defer profileClose()
ctx.Data["HasProfileReadme"] = profileReadme != nil
if profileGitRepo == nil || profileReadme == nil { if profileGitRepo == nil || profileReadme == nil {
return return
} }
viewRepositorys := ctx.FormOptionalBool("view_repositorys")
if viewRepositorys.Value() {
return
}
if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil { if bytes, err := profileReadme.GetBlobContent(setting.UI.MaxDisplayFileSize); err != nil {
log.Error("failed to GetBlobContent: %v", err) log.Error("failed to GetBlobContent: %v", err)
} else { } else {
@ -190,4 +197,7 @@ func prepareOrgProfileReadme(ctx *context.Context, profileGitRepo *git.Repositor
ctx.Data["ProfileReadme"] = profileContent ctx.Data["ProfileReadme"] = profileContent
} }
} }
ctx.Data["PageIsViewOverview"] = true
ctx.HTML(http.StatusOK, tplOrgHome)
} }

View File

@ -54,9 +54,9 @@ func Members(ctx *context.Context) {
return return
} }
err = shared_user.LoadHeaderCount(ctx) err = shared_user.RenderOrgHeader(ctx)
if err != nil { if err != nil {
ctx.ServerError("LoadHeaderCount", err) ctx.ServerError("RenderOrgHeader", err)
return return
} }

View File

@ -59,9 +59,9 @@ func Teams(ctx *context.Context) {
} }
ctx.Data["Teams"] = ctx.Org.Teams ctx.Data["Teams"] = ctx.Org.Teams
err := shared_user.LoadHeaderCount(ctx) err := shared_user.RenderOrgHeader(ctx)
if err != nil { if err != nil {
ctx.ServerError("LoadHeaderCount", err) ctx.ServerError("RenderOrgHeader", err)
return return
} }

View File

@ -162,3 +162,15 @@ func LoadHeaderCount(ctx *context.Context) error {
return nil return nil
} }
func RenderOrgHeader(ctx *context.Context) error {
if err := LoadHeaderCount(ctx); err != nil {
return err
}
_, _, profileReadmeBlob, profileClose := FindUserProfileReadme(ctx, ctx.Doer)
defer profileClose()
ctx.Data["HasProfileReadme"] = profileReadmeBlob != nil
return nil
}

View File

@ -8,9 +8,11 @@
{{if .ProfileReadme}} {{if .ProfileReadme}}
<div id="readme_profile" class="markup">{{.ProfileReadme}}</div> <div id="readme_profile" class="markup">{{.ProfileReadme}}</div>
{{end}} {{end}}
{{if .PageIsViewRepositories}}
{{template "shared/repo_search" .}} {{template "shared/repo_search" .}}
{{template "explore/repo_list" .}} {{template "explore/repo_list" .}}
{{template "base/paginate" .}} {{template "base/paginate" .}}
{{end}}
</div> </div>
{{if .ShowMemberAndTeamTab}} {{if .ShowMemberAndTeamTab}}

View File

@ -1,7 +1,12 @@
<div class="ui container"> <div class="ui container">
<overflow-menu class="ui secondary pointing tabular borderless menu tw-mb-4"> <overflow-menu class="ui secondary pointing tabular borderless menu tw-mb-4">
<div class="overflow-menu-items"> <div class="overflow-menu-items">
<a class="{{if .PageIsViewRepositories}}active {{end}}item" href="{{$.Org.HomeLink}}"> {{if .HasProfileReadme}}
<a class="{{if .PageIsViewOverview}}active {{end}}item" href="{{$.Org.HomeLink}}">
{{svg "octicon-info"}} {{ctx.Locale.Tr "user.overview"}}
</a>
{{end}}
<a class="{{if .PageIsViewRepositories}}active {{end}}item" href="{{$.Org.HomeLink}}{{if .HasProfileReadme}}?view_repositorys=true{{end}}">
{{svg "octicon-repo"}} {{ctx.Locale.Tr "user.repositories"}} {{svg "octicon-repo"}} {{ctx.Locale.Tr "user.repositories"}}
{{if .RepoCount}} {{if .RepoCount}}
<div class="ui small label">{{.RepoCount}}</div> <div class="ui small label">{{.RepoCount}}</div>