diff --git a/modules/templates/helper.go b/modules/templates/helper.go index c25645539..f65b8c685 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -117,6 +117,17 @@ func NewFuncMap() []template.FuncMap { } return "tab-size-8" }, + "SubJumpablePath": func(str string) []string { + var path []string + index := strings.LastIndex(str, "/") + if index != -1 && index != len(str) { + path = append(path, string(str[0:index+1])) + path = append(path, string(str[index+1:])) + } else { + path = append(path, str) + } + return path + }, }} } diff --git a/public/css/index.css b/public/css/index.css index a05802118..d64c71ca2 100644 --- a/public/css/index.css +++ b/public/css/index.css @@ -1272,6 +1272,9 @@ footer .ui.language .menu { .repository.file.list #repo-files-table tr:hover { background-color: #ffffEE; } +.repository.file.list #repo-files-table .jumpable-path { + color: #888; +} .repository.file.list #file-content .header .icon { font-size: 1em; margin-top: -2px; diff --git a/public/less/_repository.less b/public/less/_repository.less index 07274880f..259aa2639 100644 --- a/public/less/_repository.less +++ b/public/less/_repository.less @@ -205,6 +205,9 @@ tr:hover { background-color: #ffffEE; } + .jumpable-path { + color: #888; + } } #file-content { diff --git a/templates/repo/view_list.tmpl b/templates/repo/view_list.tmpl index f1cbf58a4..82167de64 100644 --- a/templates/repo/view_list.tmpl +++ b/templates/repo/view_list.tmpl @@ -43,8 +43,21 @@ {{else}} - - {{$entry.Name}} + {{if $entry.IsDir}} + {{$subJumpablePathName := $entry.GetSubJumpablePathName}} + {{$subJumpablePath := SubJumpablePath $subJumpablePathName}} + + + {{if eq (len $subJumpablePath) 2}} + {{index $subJumpablePath 0}}{{index $subJumpablePath 1}} + {{else}} + {{index $subJumpablePath 0}} + {{end}} + + {{else}} + + {{$entry.Name}} + {{end}} {{end}} diff --git a/vendor/code.gitea.io/git/tree_entry.go b/vendor/code.gitea.io/git/tree_entry.go index 175431673..3f68d9868 100644 --- a/vendor/code.gitea.io/git/tree_entry.go +++ b/vendor/code.gitea.io/git/tree_entry.go @@ -94,6 +94,25 @@ func (te *TreeEntry) Blob() *Blob { } } +// GetSubJumpablePathName return the full path of subdirectory jumpable ( contains only one directory ) +func (te *TreeEntry) GetSubJumpablePathName() string { + if te.IsSubModule() || !te.IsDir() { + return "" + } + tree, err := te.ptree.SubTree(te.name) + if err != nil { + return te.name + } + entries, _ := tree.ListEntries() + if len(entries) == 1 && entries[0].IsDir() { + name := entries[0].GetSubJumpablePathName() + if name != "" { + return te.name + "/" + name + } + } + return te.name +} + // Entries a list of entry type Entries []*TreeEntry diff --git a/vendor/vendor.json b/vendor/vendor.json index b440e48fb..4382892ed 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -3,10 +3,10 @@ "ignore": "test", "package": [ { - "checksumSHA1": "OWuUWQ8sWC8n+eTQttx+3vfES8g=", + "checksumSHA1": "mIaKLz6373W+jDLjgE/Yzt/exeo=", "path": "code.gitea.io/git", - "revision": "634abd6a61c350a95f6b146c3a5fc323282608ae", - "revisionTime": "2016-12-22T08:49:21Z" + "revision": "3d0fa331865619d2f3a7a0fcf23670a389310954", + "revisionTime": "2016-12-28T14:57:51Z" }, { "checksumSHA1": "dnGaLR7sd9D5YpQZP4QUGZiEq+c=",