diff options
author | Steffen Busch <[email protected]> | 2023-12-30 19:47:13 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2023-12-30 18:47:13 +0000 |
commit | 8f9ffc587e622b6e48e9816fe69bbb9cff3073fe (patch) | |
tree | badaae67c28083966ad9c2716c849ce0ba6cb079 /modules/caddyhttp | |
parent | f976c84d9e5b3fe5b30102e37527062e6c6a2378 (diff) | |
download | caddy-8f9ffc587e622b6e48e9816fe69bbb9cff3073fe.tar.gz caddy-8f9ffc587e622b6e48e9816fe69bbb9cff3073fe.zip |
fileserver: Add total file size to directory listing (#6003)
* browse: Add total file size to directory listing
* Apply suggestion to remove "in "
Co-authored-by: Matt Holt <[email protected]>
---------
Co-authored-by: Matt Holt <[email protected]>
Diffstat (limited to 'modules/caddyhttp')
-rw-r--r-- | modules/caddyhttp/fileserver/browse.html | 3 | ||||
-rw-r--r-- | modules/caddyhttp/fileserver/browsetplcontext.go | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/modules/caddyhttp/fileserver/browse.html b/modules/caddyhttp/fileserver/browse.html index e0e12969e..af1772bfd 100644 --- a/modules/caddyhttp/fileserver/browse.html +++ b/modules/caddyhttp/fileserver/browse.html @@ -790,6 +790,9 @@ footer { <span class="meta-item"> <b>{{.NumFiles}}</b> file{{if ne 1 .NumFiles}}s{{end}} </span> + <span class="meta-item"> + <b>{{.HumanTotalFileSize}}</b> total + </span> {{- if ne 0 .Limit}} <span class="meta-item"> (of which only <b>{{.Limit}}</b> are displayed) diff --git a/modules/caddyhttp/fileserver/browsetplcontext.go b/modules/caddyhttp/fileserver/browsetplcontext.go index 682273c0a..a74fe3164 100644 --- a/modules/caddyhttp/fileserver/browsetplcontext.go +++ b/modules/caddyhttp/fileserver/browsetplcontext.go @@ -86,6 +86,10 @@ func (fsrv *FileServer) directoryListing(ctx context.Context, entries []fs.DirEn // was already set above. } + if !isDir { + tplCtx.TotalFileSize += size + } + u := url.URL{Path: "./" + name} // prepend with "./" to fix paths with ':' in the name tplCtx.Items = append(tplCtx.Items, fileInfo{ @@ -129,6 +133,9 @@ type browseTemplateContext struct { // The number of files (items that aren't directories) in the listing. NumFiles int `json:"num_files"` + // The total size of all files in the listing. + TotalFileSize int64 `json:"total_file_size"` + // Sort column used Sort string `json:"sort,omitempty"` @@ -252,6 +259,13 @@ func (fi fileInfo) HumanSize() string { return humanize.IBytes(uint64(fi.Size)) } +// HumanTotalFileSize returns the total size of all files +// in the listing as a human-readable string in IEC format +// (i.e. power of 2 or base 1024). +func (btc browseTemplateContext) HumanTotalFileSize() string { + return humanize.IBytes(uint64(btc.TotalFileSize)) +} + // HumanModTime returns the modified time of the file // as a human-readable string given by format. func (fi fileInfo) HumanModTime(format string) string { |