95 lines
4.2 KiB
HTML
95 lines
4.2 KiB
HTML
<!DOCTYPE html>
|
|
{{/*
|
|
This template is based on the file provided at
|
|
https://github.com/caddyserver/caddy/blob/master/modules/caddyhttp/fileserver/browse.html
|
|
|
|
Features:
|
|
- Simpler design than the original template
|
|
- README file rendering
|
|
- embed mode (activated by appending a '?embed' query)
|
|
*/}}
|
|
<html lang="en">
|
|
<head>
|
|
<title>{{html .Name}}</title>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link href="/style.css" rel="stylesheet">
|
|
</head>
|
|
<body>
|
|
{{if (not .Req.URL.Query.embed)}}
|
|
<header>
|
|
<h1>
|
|
{{range $i, $crumb := .Breadcrumbs}}<a href="{{html $crumb.Link}}">{{html $crumb.Text}}</a>{{if ne $i 0}}/{{end}}{{end}}
|
|
</h1>
|
|
</header>
|
|
{{end}}
|
|
{{$embed := .Req.URL.Query.embed}}
|
|
<main>
|
|
<div class="listing">
|
|
<table>
|
|
<thead>
|
|
<th>
|
|
{{- if and (eq .Sort "name") (ne .Order "desc")}}
|
|
<a href="?sort=name&order=desc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Name</a>
|
|
{{- else if and (eq .Sort "name") (ne .Order "asc")}}
|
|
<a href="?sort=name&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Name</a>
|
|
{{- else}}
|
|
<a href="?sort=name&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Name </a>
|
|
{{- end}}
|
|
</th>
|
|
<th>
|
|
{{- if and (eq .Sort "size") (ne .Order "desc")}}
|
|
<a href="?sort=size&order=desc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Size</a>
|
|
{{- else if and (eq .Sort "size") (ne .Order "asc")}}
|
|
<a href="?sort=size&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Size</a>
|
|
{{- else}}
|
|
<a href="?sort=size&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Size</a>
|
|
{{- end}}
|
|
</th>
|
|
<th class="hideable">
|
|
{{- if and (eq .Sort "time") (ne .Order "desc")}}
|
|
<a href="?sort=time&order=desc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Modified</a>
|
|
{{- else if and (eq .Sort "time") (ne .Order "asc")}}
|
|
<a href="?sort=time&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Modified</a>
|
|
{{- else}}
|
|
<a href="?sort=time&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}{{if $embed}}&embed{{end}}">Modified</a>
|
|
{{- end}}
|
|
</th>
|
|
</thead>
|
|
<tbody>
|
|
{{- if .CanGoUp}}
|
|
<td><a href="..">..</a></td>
|
|
<td>—</td>
|
|
<td class="hideable">—</td>
|
|
</tr>
|
|
{{- end}}
|
|
{{- range .Items}}
|
|
<tr class="file">
|
|
<td>
|
|
<a href="{{html .URL}}" target="_top">
|
|
<span class="name">{{html .Name}}</span>
|
|
</a>
|
|
</td>
|
|
{{- if .IsDir}}
|
|
<td data-order="-1">—</td>
|
|
{{- else}}
|
|
<td data-order="{{.Size}}">{{.HumanSize}}</td>
|
|
{{- end}}
|
|
<td class="hideable"><time datetime="{{.HumanModTime "2006-01-02T15:04:05Z"}}">{{.HumanModTime "01/02/2006 03:04:05 PM -07:00"}}</time></td>
|
|
</tr>
|
|
{{- end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{if (not .Req.URL.Query.embed)}}
|
|
{{ $readmeFilePath := list (placeholder "http.request.uri.path") "README" | join ""}}
|
|
{{if (fileExists $readmeFilePath )}}
|
|
<div class="readmeFile">
|
|
<div class="readmeHeader">README</div>
|
|
{{markdown (include $readmeFilePath)}}
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|
|
</main>
|
|
</body>
|
|
</html>
|