]> source.dussan.org Git - gitea.git/commitdiff
Fix implementation of repo Home func (#2601)
authorMorlinest <Morlinest@users.noreply.github.com>
Sun, 1 Oct 2017 13:50:56 +0000 (15:50 +0200)
committerLauris BH <lauris@nix.lv>
Sun, 1 Oct 2017 13:50:56 +0000 (16:50 +0300)
* Fix implementation of repo Home func

* Make fixture changes for testing

models/fixtures/repo_unit.yml
models/unit.go
routers/repo/view.go

index 57cf35e19889404d5dfff842c9d9813296ce5c82..ef06107928d629aad0cb8c854af2cbe32c2af6d6 100644 (file)
@@ -1,40 +1,40 @@
 -
   id: 1
   repo_id: 1
-  type: 1
-  index: 0
+  type: 4
+  index: 3
   config: "{}"
   created_unix: 946684810
 
 -
   id: 2
   repo_id: 1
-  type: 2
-  index: 1
-  config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}"
+  type: 5
+  index: 4
+  config: "{}"
   created_unix: 946684810
 
 -
   id: 3
   repo_id: 1
-  type: 3
-  index: 2
+  type: 1
+  index: 0
   config: "{}"
   created_unix: 946684810
 
 -
   id: 4
   repo_id: 1
-  type: 4
-  index: 3
-  config: "{}"
+  type: 2
+  index: 1
+  config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}"
   created_unix: 946684810
 
 -
   id: 5
   repo_id: 1
-  type: 5
-  index: 4
+  type: 3
+  index: 2
   config: "{}"
   created_unix: 946684810
 
index a14edcec0c1e590f0ae00ac22be037313ae9216b..1d263595280e23eefefeb58713ce5b9186e8ef81 100644 (file)
@@ -60,6 +60,14 @@ func (u *Unit) CanDisable() bool {
        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
 var (
        UnitCode = Unit{
index 64a2e2ea7662f59d9c2af3f5a2ba762f432723f0..fa1087fe093043c99a1ae6271e2d33890ec4c737 100644 (file)
@@ -264,16 +264,21 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
 // Home render repository home page
 func Home(ctx *context.Context) {
        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
                }
        }