mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Implementation of Folder Jumping
This commit is contained in:
		
				
					committed by
					
						
						Kim "BKC" Carlbäcker
					
				
			
			
				
	
			
			
			
						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>
 | 
			
		||||
						<a href="{{EscapePound $.TreeLink}}/{{EscapePound $entry.Name}}">{{$entry.Name}}</a>
 | 
			
		||||
						{{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">
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/code.gitea.io/git/tree_entry.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/code.gitea.io/git/tree_entry.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -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
									
									
								
							
							
						
						
									
										6
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							@@ -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=",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user