mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-30 18:22:49 -04:00 
			
		
		
		
	browse: Remove whitespace from template's output, annotate output
Fixes a surplus — next to "go up". Identifies the preamble as the table's summary. Emits filesizes in bytes, which can be consumed by any browser-side scripts or utilized in sorting when the table is copy-and-pasted into a spreadsheet software. Uses <time> along with proper datetime representation, which a browser could utilize to display the datetime rendered according to the requestor's locale.
This commit is contained in:
		
							parent
							
								
									239f6825f7
								
							
						
					
					
						commit
						cc6aa6b54b
					
				| @ -85,7 +85,6 @@ const defaultTemplate = `<!DOCTYPE html> | |||||||
| <html> | <html> | ||||||
| 	<head> | 	<head> | ||||||
| 		<title>{{.Name}}</title> | 		<title>{{.Name}}</title> | ||||||
| 		<meta charset="utf-8"> |  | ||||||
| 		<meta name="viewport" content="width=device-width, initial-scale=1.0"> | 		<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
| <style> | <style> | ||||||
| * { padding: 0; margin: 0; } | * { padding: 0; margin: 0; } | ||||||
| @ -106,7 +105,7 @@ h1 a:hover { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| header, | header, | ||||||
| .content { | #summary { | ||||||
| 	padding-left: 5%; | 	padding-left: 5%; | ||||||
| 	padding-right: 5%; | 	padding-right: 5%; | ||||||
| } | } | ||||||
| @ -306,7 +305,7 @@ footer { | |||||||
| 		</header> | 		</header> | ||||||
| 		<main> | 		<main> | ||||||
| 			<div class="meta"> | 			<div class="meta"> | ||||||
| 				<div class="content"> | 				<div id="summary"> | ||||||
| 					<span class="meta-item"><b>{{.NumDirs}}</b> director{{if eq 1 .NumDirs}}y{{else}}ies{{end}}</span> | 					<span class="meta-item"><b>{{.NumDirs}}</b> director{{if eq 1 .NumDirs}}y{{else}}ies{{end}}</span> | ||||||
| 					<span class="meta-item"><b>{{.NumFiles}}</b> file{{if ne 1 .NumFiles}}s{{end}}</span> | 					<span class="meta-item"><b>{{.NumFiles}}</b> file{{if ne 1 .NumFiles}}s{{end}}</span> | ||||||
| 					{{- if ne 0 .ItemsLimitedTo}} | 					{{- if ne 0 .ItemsLimitedTo}} | ||||||
| @ -315,37 +314,40 @@ footer { | |||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| 			<div class="listing"> | 			<div class="listing"> | ||||||
| 				<table> | 				<table aria-describedby="summary"> | ||||||
|  | 					<thead> | ||||||
| 					<tr> | 					<tr> | ||||||
| 						<th> | 						<th> | ||||||
| 							{{if and (eq .Sort "name") (ne .Order "desc")}} | 							{{- if and (eq .Sort "name") (ne .Order "desc")}} | ||||||
| 							<a href="?sort=name&order=desc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Name <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#up-arrow"></use></svg></a> | 							<a href="?sort=name&order=desc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Name <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#up-arrow"></use></svg></a> | ||||||
| 							{{else if and (eq .Sort "name") (ne .Order "asc")}} | 							{{- else if and (eq .Sort "name") (ne .Order "asc")}} | ||||||
| 							<a href="?sort=name&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Name <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#down-arrow"></use></svg></a> | 							<a href="?sort=name&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Name <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#down-arrow"></use></svg></a> | ||||||
| 							{{else}} | 							{{- else}} | ||||||
| 							<a href="?sort=name&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Name</a> | 							<a href="?sort=name&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Name</a> | ||||||
| 							{{end}} | 							{{- end}} | ||||||
| 						</th> | 						</th> | ||||||
| 						<th> | 						<th> | ||||||
| 							{{if and (eq .Sort "size") (ne .Order "desc")}} | 							{{- if and (eq .Sort "size") (ne .Order "desc")}} | ||||||
| 							<a href="?sort=size&order=desc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Size <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#up-arrow"></use></svg></a></a> | 							<a href="?sort=size&order=desc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Size <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#up-arrow"></use></svg></a></a> | ||||||
| 							{{else if and (eq .Sort "size") (ne .Order "asc")}} | 							{{- else if and (eq .Sort "size") (ne .Order "asc")}} | ||||||
| 							<a href="?sort=size&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Size <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#down-arrow"></use></svg></a></a> | 							<a href="?sort=size&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Size <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#down-arrow"></use></svg></a></a> | ||||||
| 							{{else}} | 							{{- else}} | ||||||
| 							<a href="?sort=size&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Size</a> | 							<a href="?sort=size&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Size</a> | ||||||
| 							{{end}} | 							{{- end}} | ||||||
| 						</th> | 						</th> | ||||||
| 						<th class="hideable"> | 						<th class="hideable"> | ||||||
| 							{{if and (eq .Sort "time") (ne .Order "desc")}} | 							{{- if and (eq .Sort "time") (ne .Order "desc")}} | ||||||
| 							<a href="?sort=time&order=desc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Modified <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#up-arrow"></use></svg></a></a> | 							<a href="?sort=time&order=desc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Modified <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#up-arrow"></use></svg></a></a> | ||||||
| 							{{else if and (eq .Sort "time") (ne .Order "asc")}} | 							{{- else if and (eq .Sort "time") (ne .Order "asc")}} | ||||||
| 							<a href="?sort=time&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Modified <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#down-arrow"></use></svg></a></a> | 							<a href="?sort=time&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Modified <svg width="1em" height=".4em" version="1.1" viewBox="0 0 12.922194 6.0358899"><use xlink:href="#down-arrow"></use></svg></a></a> | ||||||
| 							{{else}} | 							{{- else}} | ||||||
| 							<a href="?sort=time&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Modified</a> | 							<a href="?sort=time&order=asc{{if ne 0 .ItemsLimitedTo}}&limit={{.ItemsLimitedTo}}{{end}}">Modified</a> | ||||||
| 							{{end}} | 							{{- end}} | ||||||
| 						</th> | 						</th> | ||||||
| 					</tr> | 					</tr> | ||||||
| 					{{if .CanGoUp}} | 					</thead> | ||||||
|  | 					<tbody> | ||||||
|  | 					{{- if .CanGoUp}} | ||||||
| 					<tr> | 					<tr> | ||||||
| 						<td> | 						<td> | ||||||
| 							<a href=".."> | 							<a href=".."> | ||||||
| @ -353,25 +355,30 @@ footer { | |||||||
| 							</a> | 							</a> | ||||||
| 						</td> | 						</td> | ||||||
| 						<td>—</td> | 						<td>—</td> | ||||||
| 						<td>—</td> | 						<td class="hideable">—</td> | ||||||
| 					</tr> | 					</tr> | ||||||
| 					{{end}} | 					{{- end}} | ||||||
| 					{{range .Items}} | 					{{- range .Items}} | ||||||
| 					<tr> | 					<tr> | ||||||
| 						<td> | 						<td> | ||||||
| 							<a href="{{.URL}}"> | 							<a href="{{.URL}}"> | ||||||
| 								{{if .IsDir}} | 								{{- if .IsDir}} | ||||||
| 								<svg width="1.5em" height="1em" version="1.1" viewBox="0 0 35.678803 28.527945"><use xlink:href="#folder"></use></svg> | 								<svg width="1.5em" height="1em" version="1.1" viewBox="0 0 35.678803 28.527945"><use xlink:href="#folder"></use></svg> | ||||||
| 								{{else}} | 								{{- else}} | ||||||
| 								<svg width="1.5em" height="1em" version="1.1" viewBox="0 0 26.604381 29.144726"><use xlink:href="#file"></use></svg> | 								<svg width="1.5em" height="1em" version="1.1" viewBox="0 0 26.604381 29.144726"><use xlink:href="#file"></use></svg> | ||||||
| 								{{end}} | 								{{- end}} | ||||||
| 								<span class="name">{{.Name}}</span> | 								<span class="name">{{.Name}}</span> | ||||||
| 							</a> | 							</a> | ||||||
| 						</td> | 						</td> | ||||||
| 						<td>{{.HumanSize}}</td> | 						{{- if .IsDir}} | ||||||
| 						<td class="hideable">{{.HumanModTime "01/02/2006 03:04:05 PM"}}</td> | 						<td data-order="-1">—</td> | ||||||
|  | 						{{- else}} | ||||||
|  | 						<td data-order="{{.Size}}">{{.HumanSize}}</td> | ||||||
|  | 						{{- end}} | ||||||
|  | 						<td class="hideable"><time datetime="{{.HumanModTime "2006-01-02 15:04:05-0700"}}">{{.HumanModTime "01/02/2006 03:04:05 PM"}}</time></td> | ||||||
| 					</tr> | 					</tr> | ||||||
| 					{{end}} | 					{{- end}} | ||||||
|  | 					</tbody> | ||||||
| 				</table> | 				</table> | ||||||
| 			</div> | 			</div> | ||||||
| 		</main> | 		</main> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user