From cbf794ce42d7d685522220b36da6e2c7b72e2e4f Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 28 Mar 2025 14:51:46 -0700 Subject: [PATCH 1/5] Hide activity contributors, recent commits and code frequrency left tabs if there is no code permission --- routers/web/repo/activity.go | 1 + routers/web/repo/code_frequency.go | 2 ++ routers/web/repo/contributors.go | 3 +++ routers/web/repo/recent_commits.go | 2 ++ templates/repo/navbar.tmpl | 20 +++++++++++--------- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/routers/web/repo/activity.go b/routers/web/repo/activity.go index 1d809ad8e9d98..acf96b15ada5b 100644 --- a/routers/web/repo/activity.go +++ b/routers/web/repo/activity.go @@ -51,6 +51,7 @@ func Activity(ctx *context.Context) { ctx.Data["DateFrom"] = timeFrom ctx.Data["DateUntil"] = timeUntil ctx.Data["PeriodText"] = ctx.Tr("repo.activity.period." + ctx.Data["Period"].(string)) + ctx.Data["CanReadCode"] = ctx.Repo.CanRead(unit.TypeCode) var err error if ctx.Data["Activity"], err = activities_model.GetActivityStats(ctx, ctx.Repo.Repository, timeFrom, diff --git a/routers/web/repo/code_frequency.go b/routers/web/repo/code_frequency.go index e212d3b60c0b6..6f9d028de1b1e 100644 --- a/routers/web/repo/code_frequency.go +++ b/routers/web/repo/code_frequency.go @@ -7,6 +7,7 @@ import ( "errors" "net/http" + "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/services/context" contributors_service "code.gitea.io/gitea/services/repository" @@ -23,6 +24,7 @@ func CodeFrequency(ctx *context.Context) { ctx.Data["PageIsActivity"] = true ctx.Data["PageIsCodeFrequency"] = true ctx.PageData["repoLink"] = ctx.Repo.RepoLink + ctx.Data["CanReadCode"] = ctx.Repo.CanRead(unit.TypeCode) ctx.HTML(http.StatusOK, tplCodeFrequency) } diff --git a/routers/web/repo/contributors.go b/routers/web/repo/contributors.go index 93dec1f3503dc..5362956d6bf2a 100644 --- a/routers/web/repo/contributors.go +++ b/routers/web/repo/contributors.go @@ -7,6 +7,7 @@ import ( "errors" "net/http" + "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/services/context" contributors_service "code.gitea.io/gitea/services/repository" @@ -21,6 +22,8 @@ func Contributors(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("repo.activity.navbar.contributors") ctx.Data["PageIsActivity"] = true ctx.Data["PageIsContributors"] = true + ctx.Data["CanReadCode"] = ctx.Repo.CanRead(unit.TypeCode) + ctx.HTML(http.StatusOK, tplContributors) } diff --git a/routers/web/repo/recent_commits.go b/routers/web/repo/recent_commits.go index 228eb0dbac272..4e8571ff0577e 100644 --- a/routers/web/repo/recent_commits.go +++ b/routers/web/repo/recent_commits.go @@ -7,6 +7,7 @@ import ( "errors" "net/http" + "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/services/context" contributors_service "code.gitea.io/gitea/services/repository" @@ -23,6 +24,7 @@ func RecentCommits(ctx *context.Context) { ctx.Data["PageIsActivity"] = true ctx.Data["PageIsRecentCommits"] = true ctx.PageData["repoLink"] = ctx.Repo.RepoLink + ctx.Data["CanReadCode"] = ctx.Repo.CanRead(unit.TypeCode) ctx.HTML(http.StatusOK, tplRecentCommits) } diff --git a/templates/repo/navbar.tmpl b/templates/repo/navbar.tmpl index b2471dc17e7c0..570fb729866a4 100644 --- a/templates/repo/navbar.tmpl +++ b/templates/repo/navbar.tmpl @@ -2,13 +2,15 @@ {{ctx.Locale.Tr "repo.activity.navbar.pulse"}} - - {{ctx.Locale.Tr "repo.activity.navbar.contributors"}} - - - {{ctx.Locale.Tr "repo.activity.navbar.code_frequency"}} - - - {{ctx.Locale.Tr "repo.activity.navbar.recent_commits"}} - + {{if .CanReadCode}} + + {{ctx.Locale.Tr "repo.activity.navbar.contributors"}} + + + {{ctx.Locale.Tr "repo.activity.navbar.code_frequency"}} + + + {{ctx.Locale.Tr "repo.activity.navbar.recent_commits"}} + + {{end}} From fbda0065403a079a0180632f7f31a0104b34496c Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 28 Mar 2025 19:22:42 -0700 Subject: [PATCH 2/5] Remove duplicated function --- routers/web/repo/code_frequency.go | 6 +++--- routers/web/repo/recent_commits.go | 15 --------------- routers/web/web.go | 4 ++-- 3 files changed, 5 insertions(+), 20 deletions(-) diff --git a/routers/web/repo/code_frequency.go b/routers/web/repo/code_frequency.go index 6f9d028de1b1e..c0577ba90b536 100644 --- a/routers/web/repo/code_frequency.go +++ b/routers/web/repo/code_frequency.go @@ -29,14 +29,14 @@ func CodeFrequency(ctx *context.Context) { ctx.HTML(http.StatusOK, tplCodeFrequency) } -// CodeFrequencyData returns JSON of code frequency data -func CodeFrequencyData(ctx *context.Context) { +// ContributorStats returns JSON of code contributor stats data +func ContributorStats(ctx *context.Context) { if contributorStats, err := contributors_service.GetContributorStats(ctx, ctx.Cache, ctx.Repo.Repository, ctx.Repo.Repository.DefaultBranch); err != nil { if errors.Is(err, contributors_service.ErrAwaitGeneration) { ctx.Status(http.StatusAccepted) return } - ctx.ServerError("GetCodeFrequencyData", err) + ctx.ServerError("ContributorStats", err) } else { ctx.JSON(http.StatusOK, contributorStats["total"].Weeks) } diff --git a/routers/web/repo/recent_commits.go b/routers/web/repo/recent_commits.go index 4e8571ff0577e..d0bf248f5c4f2 100644 --- a/routers/web/repo/recent_commits.go +++ b/routers/web/repo/recent_commits.go @@ -4,13 +4,11 @@ package repo import ( - "errors" "net/http" "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/services/context" - contributors_service "code.gitea.io/gitea/services/repository" ) const ( @@ -28,16 +26,3 @@ func RecentCommits(ctx *context.Context) { ctx.HTML(http.StatusOK, tplRecentCommits) } - -// RecentCommitsData returns JSON of recent commits data -func RecentCommitsData(ctx *context.Context) { - if contributorStats, err := contributors_service.GetContributorStats(ctx, ctx.Cache, ctx.Repo.Repository, ctx.Repo.Repository.DefaultBranch); err != nil { - if errors.Is(err, contributors_service.ErrAwaitGeneration) { - ctx.Status(http.StatusAccepted) - return - } - ctx.ServerError("RecentCommitsData", err) - } else { - ctx.JSON(http.StatusOK, contributorStats["total"].Weeks) - } -} diff --git a/routers/web/web.go b/routers/web/web.go index 455d0a3a0d4b3..03fecda6684cd 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -1484,11 +1484,11 @@ func registerRoutes(m *web.Router) { }) m.Group("/code-frequency", func() { m.Get("", repo.CodeFrequency) - m.Get("/data", repo.CodeFrequencyData) + m.Get("/data", repo.ContributorStats) }) m.Group("/recent-commits", func() { m.Get("", repo.RecentCommits) - m.Get("/data", repo.RecentCommitsData) + m.Get("/data", repo.ContributorStats) }) }, reqUnitCodeReader) }, From 1bf9e3808035e12d6a79991a160b2bcb431aaefc Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 28 Mar 2025 20:03:03 -0700 Subject: [PATCH 3/5] make the code simpler --- routers/web/repo/activity.go | 1 - routers/web/repo/code_frequency.go | 2 -- routers/web/repo/contributors.go | 2 -- routers/web/repo/recent_commits.go | 2 -- templates/repo/navbar.tmpl | 4 +++- 5 files changed, 3 insertions(+), 8 deletions(-) diff --git a/routers/web/repo/activity.go b/routers/web/repo/activity.go index acf96b15ada5b..1d809ad8e9d98 100644 --- a/routers/web/repo/activity.go +++ b/routers/web/repo/activity.go @@ -51,7 +51,6 @@ func Activity(ctx *context.Context) { ctx.Data["DateFrom"] = timeFrom ctx.Data["DateUntil"] = timeUntil ctx.Data["PeriodText"] = ctx.Tr("repo.activity.period." + ctx.Data["Period"].(string)) - ctx.Data["CanReadCode"] = ctx.Repo.CanRead(unit.TypeCode) var err error if ctx.Data["Activity"], err = activities_model.GetActivityStats(ctx, ctx.Repo.Repository, timeFrom, diff --git a/routers/web/repo/code_frequency.go b/routers/web/repo/code_frequency.go index c0577ba90b536..b50021e786421 100644 --- a/routers/web/repo/code_frequency.go +++ b/routers/web/repo/code_frequency.go @@ -7,7 +7,6 @@ import ( "errors" "net/http" - "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/services/context" contributors_service "code.gitea.io/gitea/services/repository" @@ -24,7 +23,6 @@ func CodeFrequency(ctx *context.Context) { ctx.Data["PageIsActivity"] = true ctx.Data["PageIsCodeFrequency"] = true ctx.PageData["repoLink"] = ctx.Repo.RepoLink - ctx.Data["CanReadCode"] = ctx.Repo.CanRead(unit.TypeCode) ctx.HTML(http.StatusOK, tplCodeFrequency) } diff --git a/routers/web/repo/contributors.go b/routers/web/repo/contributors.go index 5362956d6bf2a..be498ec598414 100644 --- a/routers/web/repo/contributors.go +++ b/routers/web/repo/contributors.go @@ -7,7 +7,6 @@ import ( "errors" "net/http" - "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/services/context" contributors_service "code.gitea.io/gitea/services/repository" @@ -22,7 +21,6 @@ func Contributors(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("repo.activity.navbar.contributors") ctx.Data["PageIsActivity"] = true ctx.Data["PageIsContributors"] = true - ctx.Data["CanReadCode"] = ctx.Repo.CanRead(unit.TypeCode) ctx.HTML(http.StatusOK, tplContributors) } diff --git a/routers/web/repo/recent_commits.go b/routers/web/repo/recent_commits.go index d0bf248f5c4f2..266011606259f 100644 --- a/routers/web/repo/recent_commits.go +++ b/routers/web/repo/recent_commits.go @@ -6,7 +6,6 @@ package repo import ( "net/http" - "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/services/context" ) @@ -22,7 +21,6 @@ func RecentCommits(ctx *context.Context) { ctx.Data["PageIsActivity"] = true ctx.Data["PageIsRecentCommits"] = true ctx.PageData["repoLink"] = ctx.Repo.RepoLink - ctx.Data["CanReadCode"] = ctx.Repo.CanRead(unit.TypeCode) ctx.HTML(http.StatusOK, tplRecentCommits) } diff --git a/templates/repo/navbar.tmpl b/templates/repo/navbar.tmpl index 570fb729866a4..d6e9b1b8d7868 100644 --- a/templates/repo/navbar.tmpl +++ b/templates/repo/navbar.tmpl @@ -1,8 +1,10 @@ +{{$canReadCode := $.Permission.CanRead ctx.Consts.RepoUnitTypeCode}} +