Implementation of Folder Jumping
This commit is contained in:
		
							parent
							
								
									331316894e
								
							
						
					
					
						commit
						c22f9114c7
					
				
					 6 changed files with 54 additions and 5 deletions
				
			
		|  | @ -117,6 +117,17 @@ func NewFuncMap() []template.FuncMap { | ||||||
| 			} | 			} | ||||||
| 			return "tab-size-8" | 			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 { | .repository.file.list #repo-files-table tr:hover { | ||||||
|   background-color: #ffffEE; |   background-color: #ffffEE; | ||||||
| } | } | ||||||
|  | .repository.file.list #repo-files-table .jumpable-path { | ||||||
|  |   color: #888; | ||||||
|  | } | ||||||
| .repository.file.list #file-content .header .icon { | .repository.file.list #file-content .header .icon { | ||||||
|   font-size: 1em; |   font-size: 1em; | ||||||
|   margin-top: -2px; |   margin-top: -2px; | ||||||
|  |  | ||||||
|  | @ -205,6 +205,9 @@ | ||||||
| 			tr:hover { | 			tr:hover { | ||||||
| 				background-color: #ffffEE; | 				background-color: #ffffEE; | ||||||
| 			} | 			} | ||||||
|  |             .jumpable-path { | ||||||
|  |                 color: #888; | ||||||
|  |             } | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		#file-content { | 		#file-content { | ||||||
|  |  | ||||||
|  | @ -43,8 +43,21 @@ | ||||||
| 					</td> | 					</td> | ||||||
| 				{{else}} | 				{{else}} | ||||||
| 					<td class="name"> | 					<td class="name"> | ||||||
| 						<span class="octicon octicon-file-{{if or $entry.IsDir}}directory{{else}}text{{end}}"></span> | 						{{if $entry.IsDir}} | ||||||
| 						<a href="{{EscapePound $.TreeLink}}/{{EscapePound $entry.Name}}">{{$entry.Name}}</a> | 							{{$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> | 					</td> | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 				<td class="message collapsing has-emoji"> | 				<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
 | // Entries a list of entry
 | ||||||
| type Entries []*TreeEntry | type Entries []*TreeEntry | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							|  | @ -3,10 +3,10 @@ | ||||||
| 	"ignore": "test", | 	"ignore": "test", | ||||||
| 	"package": [ | 	"package": [ | ||||||
| 		{ | 		{ | ||||||
| 			"checksumSHA1": "OWuUWQ8sWC8n+eTQttx+3vfES8g=", | 			"checksumSHA1": "mIaKLz6373W+jDLjgE/Yzt/exeo=", | ||||||
| 			"path": "code.gitea.io/git", | 			"path": "code.gitea.io/git", | ||||||
| 			"revision": "634abd6a61c350a95f6b146c3a5fc323282608ae", | 			"revision": "3d0fa331865619d2f3a7a0fcf23670a389310954", | ||||||
| 			"revisionTime": "2016-12-22T08:49:21Z" | 			"revisionTime": "2016-12-28T14:57:51Z" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"checksumSHA1": "dnGaLR7sd9D5YpQZP4QUGZiEq+c=", | 			"checksumSHA1": "dnGaLR7sd9D5YpQZP4QUGZiEq+c=", | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue