Implementation of Folder Jumping
parent
331316894e
commit
c22f9114c7
|
@ -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
|
||||
},
|
||||
}}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -205,6 +205,9 @@
|
|||
tr:hover {
|
||||
background-color: #ffffEE;
|
||||
}
|
||||
.jumpable-path {
|
||||
color: #888;
|
||||
}
|
||||
}
|
||||
|
||||
#file-content {
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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=",
|
||||
|
|
Loading…
Reference in New Issue