Implementation of Folder Jumping

release/v1.15
Sl@ny 2016-12-28 17:35:52 +01:00 committed by Kim "BKC" Carlbäcker
parent 331316894e
commit c22f9114c7
6 changed files with 54 additions and 5 deletions

View File

@ -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
},
}}
}

View File

@ -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;

View File

@ -205,6 +205,9 @@
tr:hover {
background-color: #ffffEE;
}
.jumpable-path {
color: #888;
}
}
#file-content {

View File

@ -43,8 +43,21 @@
</td>
{{else}}
<td class="name">
<span class="octicon octicon-file-{{if or $entry.IsDir}}directory{{else}}text{{end}}"></span>
{{if $entry.IsDir}}
{{$subJumpablePathName := $entry.GetSubJumpablePathName}}
{{$subJumpablePath := SubJumpablePath $subJumpablePathName}}
<span class="octicon octicon-file-directory"></span>
<a href="{{EscapePound $.TreeLink}}/{{EscapePound $subJumpablePathName}}">
{{if eq (len $subJumpablePath) 2}}
<span class="jumpable-path">{{index $subJumpablePath 0}}</span>{{index $subJumpablePath 1}}
{{else}}
{{index $subJumpablePath 0}}
{{end}}
</a>
{{else}}
<span class="octicon octicon-file-text"></span>
<a href="{{EscapePound $.TreeLink}}/{{EscapePound $entry.Name}}">{{$entry.Name}}</a>
{{end}}
</td>
{{end}}
<td class="message collapsing has-emoji">

View File

@ -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

6
vendor/vendor.json vendored
View File

@ -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=",