mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-31 02:27:19 -04:00 
			
		
		
		
	browse: Correct links when site defined with a path (fixes #1561)
This commit is contained in:
		
							parent
							
								
									7d15435361
								
							
						
					
					
						commit
						3ca419e2cf
					
				| @ -37,7 +37,7 @@ type Browse struct { | ||||
| 
 | ||||
| // Config is a configuration for browsing in a particular path. | ||||
| type Config struct { | ||||
| 	PathScope string | ||||
| 	PathScope string // the base path the URL must match to enable browsing | ||||
| 	Fs        staticfiles.FileServer | ||||
| 	Variables interface{} | ||||
| 	Template  *template.Template | ||||
| @ -78,10 +78,15 @@ type Listing struct { | ||||
| 	httpserver.Context | ||||
| } | ||||
| 
 | ||||
| // BreadcrumbMap returns l.Path where every element is a map | ||||
| // of URLs and path segment names. | ||||
| func (l Listing) BreadcrumbMap() map[string]string { | ||||
| 	result := map[string]string{} | ||||
| // Crumb represents part of a breadcrumb menu. | ||||
| type Crumb struct { | ||||
| 	Link, Text string | ||||
| } | ||||
| 
 | ||||
| // Breadcrumbs returns l.Path where every element maps | ||||
| // the link to the text to display. | ||||
| func (l Listing) Breadcrumbs() []Crumb { | ||||
| 	var result []Crumb | ||||
| 
 | ||||
| 	if len(l.Path) == 0 { | ||||
| 		return result | ||||
| @ -94,13 +99,12 @@ func (l Listing) BreadcrumbMap() map[string]string { | ||||
| 	} | ||||
| 
 | ||||
| 	parts := strings.Split(lpath, "/") | ||||
| 	for i, part := range parts { | ||||
| 		if i == 0 && part == "" { | ||||
| 			// Leading slash (root) | ||||
| 			result["/"] = "/" | ||||
| 			continue | ||||
| 	for i := range parts { | ||||
| 		txt := parts[i] | ||||
| 		if i == 0 && parts[i] == "" { | ||||
| 			txt = "/" | ||||
| 		} | ||||
| 		result[strings.Join(parts[:i+1], "/")] = part | ||||
| 		result = append(result, Crumb{Link: strings.Repeat("../", len(parts)-i-1), Text: txt}) | ||||
| 	} | ||||
| 
 | ||||
| 	return result | ||||
| @ -247,12 +251,12 @@ func directoryListing(files []os.FileInfo, canGoUp bool, urlPath string, config | ||||
| 			fileCount++ | ||||
| 		} | ||||
| 
 | ||||
| 		url := url.URL{Path: "./" + name} // prepend with "./" to fix paths with ':' in the name | ||||
| 
 | ||||
| 		if config.Fs.IsHidden(f) { | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		url := url.URL{Path: "./" + name} // prepend with "./" to fix paths with ':' in the name | ||||
| 
 | ||||
| 		fileinfos = append(fileinfos, FileInfo{ | ||||
| 			IsDir:   f.IsDir(), | ||||
| 			Name:    f.Name(), | ||||
|  | ||||
| @ -323,7 +323,7 @@ footer { | ||||
| 
 | ||||
| 		<header> | ||||
| 			<h1> | ||||
| 				{{range $url, $name := .BreadcrumbMap}}<a href="{{html $url}}">{{html $name}}</a>{{if ne $url "/"}}/{{end}}{{end}} | ||||
| 				{{range $i, $crumb := .Breadcrumbs}}<a href="{{html $crumb.Link}}">{{html $crumb.Text}}</a>{{if ne $i 0}}/{{end}}{{end}} | ||||
| 			</h1> | ||||
| 		</header> | ||||
| 		<main> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user