mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-29 07:03:55 +03:00
Fix implementation of repo Home func (#2601)
* Fix implementation of repo Home func * Make fixture changes for testing
This commit is contained in:
parent
bae9cbce9c
commit
1ad902d529
3 changed files with 46 additions and 33 deletions
|
@ -1,43 +1,43 @@
|
||||||
-
|
-
|
||||||
id: 1
|
id: 1
|
||||||
repo_id: 1
|
repo_id: 1
|
||||||
type: 1
|
|
||||||
index: 0
|
|
||||||
config: "{}"
|
|
||||||
created_unix: 946684810
|
|
||||||
|
|
||||||
-
|
|
||||||
id: 2
|
|
||||||
repo_id: 1
|
|
||||||
type: 2
|
|
||||||
index: 1
|
|
||||||
config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}"
|
|
||||||
created_unix: 946684810
|
|
||||||
|
|
||||||
-
|
|
||||||
id: 3
|
|
||||||
repo_id: 1
|
|
||||||
type: 3
|
|
||||||
index: 2
|
|
||||||
config: "{}"
|
|
||||||
created_unix: 946684810
|
|
||||||
|
|
||||||
-
|
|
||||||
id: 4
|
|
||||||
repo_id: 1
|
|
||||||
type: 4
|
type: 4
|
||||||
index: 3
|
index: 3
|
||||||
config: "{}"
|
config: "{}"
|
||||||
created_unix: 946684810
|
created_unix: 946684810
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 5
|
id: 2
|
||||||
repo_id: 1
|
repo_id: 1
|
||||||
type: 5
|
type: 5
|
||||||
index: 4
|
index: 4
|
||||||
config: "{}"
|
config: "{}"
|
||||||
created_unix: 946684810
|
created_unix: 946684810
|
||||||
|
|
||||||
|
-
|
||||||
|
id: 3
|
||||||
|
repo_id: 1
|
||||||
|
type: 1
|
||||||
|
index: 0
|
||||||
|
config: "{}"
|
||||||
|
created_unix: 946684810
|
||||||
|
|
||||||
|
-
|
||||||
|
id: 4
|
||||||
|
repo_id: 1
|
||||||
|
type: 2
|
||||||
|
index: 1
|
||||||
|
config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}"
|
||||||
|
created_unix: 946684810
|
||||||
|
|
||||||
|
-
|
||||||
|
id: 5
|
||||||
|
repo_id: 1
|
||||||
|
type: 3
|
||||||
|
index: 2
|
||||||
|
config: "{}"
|
||||||
|
created_unix: 946684810
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 6
|
id: 6
|
||||||
repo_id: 3
|
repo_id: 3
|
||||||
|
|
|
@ -60,6 +60,14 @@ func (u *Unit) CanDisable() bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsLessThan compares order of two units
|
||||||
|
func (u Unit) IsLessThan(unit Unit) bool {
|
||||||
|
if (u.Type == UnitTypeExternalTracker || u.Type == UnitTypeExternalWiki) && unit.Type != UnitTypeExternalTracker && unit.Type != UnitTypeExternalWiki {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return u.Idx < unit.Idx
|
||||||
|
}
|
||||||
|
|
||||||
// Enumerate all the units
|
// Enumerate all the units
|
||||||
var (
|
var (
|
||||||
UnitCode = Unit{
|
UnitCode = Unit{
|
||||||
|
|
|
@ -264,16 +264,21 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
|
||||||
// Home render repository home page
|
// Home render repository home page
|
||||||
func Home(ctx *context.Context) {
|
func Home(ctx *context.Context) {
|
||||||
if len(ctx.Repo.Repository.Units) > 0 {
|
if len(ctx.Repo.Repository.Units) > 0 {
|
||||||
tp := ctx.Repo.Repository.Units[0].Type
|
var firstUnit *models.Unit
|
||||||
if tp == models.UnitTypeCode {
|
for _, repoUnit := range ctx.Repo.Repository.Units {
|
||||||
renderCode(ctx)
|
if repoUnit.Type == models.UnitTypeCode {
|
||||||
return
|
renderCode(ctx)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
unit, ok := models.Units[repoUnit.Type]
|
||||||
|
if ok && (firstUnit == nil || !firstUnit.IsLessThan(unit)) {
|
||||||
|
firstUnit = &unit
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unit, ok := models.Units[tp]
|
if firstUnit != nil {
|
||||||
if ok {
|
ctx.Redirect(fmt.Sprintf("%s/%s%s", setting.AppSubURL, ctx.Repo.Repository.FullName(), firstUnit.URI))
|
||||||
ctx.Redirect(setting.AppSubURL + fmt.Sprintf("/%s%s",
|
|
||||||
ctx.Repo.Repository.FullName(), unit.URI))
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue