From 371cc207be8ab37435286301958c5d1f45013783 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 28 Oct 2024 23:39:02 +0100 Subject: [PATCH 01/18] Add DefaultUnit to Repository --- models/migrations/migrations.go | 1 + models/migrations/v1_23/v307.go | 13 +++++++++++++ models/repo/repo.go | 1 + 3 files changed, 15 insertions(+) create mode 100644 models/migrations/v1_23/v307.go diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index ddf20d9542cfe..b5e962cc3b90e 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -364,6 +364,7 @@ func prepareMigrationTasks() []*migration { newMigration(304, "Add index for release sha1", v1_23.AddIndexForReleaseSha1), newMigration(305, "Add Repository Licenses", v1_23.AddRepositoryLicenses), newMigration(306, "Add BlockAdminMergeOverride to ProtectedBranch", v1_23.AddBlockAdminMergeOverrideBranchProtection), + newMigration(307, "Add DefaultUnit to Repository", v1_23.AddDefaultUnitToRepository), } return preparedMigrations } diff --git a/models/migrations/v1_23/v307.go b/models/migrations/v1_23/v307.go new file mode 100644 index 0000000000000..056cb200831e2 --- /dev/null +++ b/models/migrations/v1_23/v307.go @@ -0,0 +1,13 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package v1_23 //nolint + +import "xorm.io/xorm" + +func AddDefaultUnitToRepository(x *xorm.Engine) error { + type Repository struct { + DefaultUnit int `xorm:"NOT NULL DEFAULT 1"` + } + return x.Sync(new(Repository)) +} diff --git a/models/repo/repo.go b/models/repo/repo.go index 68f8e16a21d58..ae642bd5606a3 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -168,6 +168,7 @@ type Repository struct { RenderingMetas map[string]string `xorm:"-"` DocumentRenderingMetas map[string]string `xorm:"-"` Units []*RepoUnit `xorm:"-"` + DefaultUnit unit.Type `xorm:"NOT NULL DEFAULT 1"` PrimaryLanguage *LanguageStat `xorm:"-"` IsFork bool `xorm:"INDEX NOT NULL DEFAULT false"` From 91ae32ca7c9a895fcaa553461816a58beae02a4b Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 28 Oct 2024 23:47:37 +0100 Subject: [PATCH 02/18] todo --- routers/web/repo/view.go | 1 + 1 file changed, 1 insertion(+) diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 9769117609485..35f10a1a2fac2 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -722,6 +722,7 @@ func checkHomeCodeViewable(ctx *context.Context) { } } + // TODO: ctx.Repo.Repository.DefaultUnit has to be respected here ... but we need to let code unit have it's own subpath ... var firstUnit *unit_model.Unit for _, repoUnitType := range ctx.Repo.Permission.ReadableUnitTypes() { if repoUnitType == unit_model.TypeCode { From b33f9b6c95cb93e5370396ab1f0fe781e33b2ef4 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 29 Oct 2024 00:06:39 +0100 Subject: [PATCH 03/18] code unit get its sub path as every other unit --- models/unit/unit.go | 2 +- routers/web/repo/view.go | 13 +++++++++++-- routers/web/web.go | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/models/unit/unit.go b/models/unit/unit.go index 3b62e5f982267..d07bb6782249e 100644 --- a/models/unit/unit.go +++ b/models/unit/unit.go @@ -206,7 +206,7 @@ var ( UnitCode = Unit{ TypeCode, "repo.code", - "/", + "/code", "repo.code.desc", 0, perm.AccessModeOwner, diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 35f10a1a2fac2..eb27875db1c37 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -773,8 +773,8 @@ func checkCitationFile(ctx *context.Context, entry *git.TreeEntry) { } } -// Home render repository home page -func Home(ctx *context.Context) { +// HomeWithFeedCheck render repository home page or return feed +func HomeWithFeedCheck(ctx *context.Context) { if setting.Other.EnableFeed { isFeed, _, showFeedType := feed.GetFeedType(ctx.PathParam(":reponame"), ctx.Req) if isFeed { @@ -790,6 +790,15 @@ func Home(ctx *context.Context) { } } + defaultURI := ctx.Repo.Repository.MustGetUnit(ctx, ctx.Repo.Repository.DefaultUnit).Unit().URI + if defaultURI == "/" { // support legacy code units + defaultURI = "/code" + } + ctx.Redirect(ctx.Repo.RepoLink + defaultURI) +} + +// Home render repository home page +func Home(ctx *context.Context) { checkHomeCodeViewable(ctx) if ctx.Written() { return diff --git a/routers/web/web.go b/routers/web/web.go index a6ccb7a7924e9..1d34d32db3e79 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -1140,7 +1140,8 @@ func registerRoutes(m *web.Router) { // end "/{username}/{reponame}/settings" // user/org home, including rss feeds - m.Get("/{username}/{reponame}", ignSignIn, context.RepoAssignment, context.RepoRef(), repo.SetEditorconfigIfExists, repo.Home) + m.Get("/{username}/{reponame}", ignSignIn, context.RepoAssignment, context.RepoRef(), repo.SetEditorconfigIfExists, repo.HomeWithFeedCheck) + m.Get("/{username}/{reponame}/code", ignSignIn, context.RepoAssignment, context.RepoRef(), repo.SetEditorconfigIfExists, repo.Home) // TODO: maybe it should relax the permission to allow "any access" m.Post("/{username}/{reponame}/markup", ignSignIn, context.RepoAssignment, context.RequireRepoReaderOr(unit.TypeCode, unit.TypeIssues, unit.TypePullRequests, unit.TypeReleases, unit.TypeWiki), web.Bind(structs.MarkupOption{}), misc.Markup) From 8f837206e5c3faaa00eaa98720afc7477a9ccd1e Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 29 Oct 2024 00:14:03 +0100 Subject: [PATCH 04/18] it works --- templates/repo/header.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/repo/header.tmpl b/templates/repo/header.tmpl index d52891b02a76a..5648e17226313 100644 --- a/templates/repo/header.tmpl +++ b/templates/repo/header.tmpl @@ -133,7 +133,7 @@ {{if not (or .Repository.IsBeingCreated .Repository.IsBroken)}}