* Fix implementation of repo Home func * Make fixture changes for testingtags/v1.21.12.1
| @@ -1,40 +1,40 @@ | |||||
| - | - | ||||
| id: 1 | id: 1 | ||||
| repo_id: 1 | repo_id: 1 | ||||
| type: 1 | |||||
| index: 0 | |||||
| type: 4 | |||||
| index: 3 | |||||
| config: "{}" | config: "{}" | ||||
| created_unix: 946684810 | created_unix: 946684810 | ||||
| - | - | ||||
| id: 2 | id: 2 | ||||
| repo_id: 1 | repo_id: 1 | ||||
| type: 2 | |||||
| index: 1 | |||||
| config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}" | |||||
| type: 5 | |||||
| index: 4 | |||||
| config: "{}" | |||||
| created_unix: 946684810 | created_unix: 946684810 | ||||
| - | - | ||||
| id: 3 | id: 3 | ||||
| repo_id: 1 | repo_id: 1 | ||||
| type: 3 | |||||
| index: 2 | |||||
| type: 1 | |||||
| index: 0 | |||||
| config: "{}" | config: "{}" | ||||
| created_unix: 946684810 | created_unix: 946684810 | ||||
| - | - | ||||
| id: 4 | id: 4 | ||||
| repo_id: 1 | repo_id: 1 | ||||
| type: 4 | |||||
| index: 3 | |||||
| config: "{}" | |||||
| type: 2 | |||||
| index: 1 | |||||
| config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}" | |||||
| created_unix: 946684810 | created_unix: 946684810 | ||||
| - | - | ||||
| id: 5 | id: 5 | ||||
| repo_id: 1 | repo_id: 1 | ||||
| type: 5 | |||||
| index: 4 | |||||
| type: 3 | |||||
| index: 2 | |||||
| config: "{}" | config: "{}" | ||||
| created_unix: 946684810 | created_unix: 946684810 | ||||
| @@ -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 | |||||
| if tp == models.UnitTypeCode { | |||||
| renderCode(ctx) | |||||
| return | |||||
| var firstUnit *models.Unit | |||||
| for _, repoUnit := range ctx.Repo.Repository.Units { | |||||
| if repoUnit.Type == models.UnitTypeCode { | |||||
| renderCode(ctx) | |||||
| return | |||||
| } | |||||
| unit, ok := models.Units[repoUnit.Type] | |||||
| if ok && (firstUnit == nil || !firstUnit.IsLessThan(unit)) { | |||||
| firstUnit = &unit | |||||
| } | |||||
| } | } | ||||
| unit, ok := models.Units[tp] | |||||
| if ok { | |||||
| ctx.Redirect(setting.AppSubURL + fmt.Sprintf("/%s%s", | |||||
| ctx.Repo.Repository.FullName(), unit.URI)) | |||||
| if firstUnit != nil { | |||||
| ctx.Redirect(fmt.Sprintf("%s/%s%s", setting.AppSubURL, ctx.Repo.Repository.FullName(), firstUnit.URI)) | |||||
| return | return | ||||
| } | } | ||||
| } | } | ||||