diff options
author | Antoni Sawicki <tenox@google.com> | 2022-03-25 01:51:47 -0700 |
---|---|---|
committer | Antoni Sawicki <tenox@google.com> | 2022-03-25 01:51:47 -0700 |
commit | 8b5204220593f8a2356a33d81117f41d1b29088c (patch) | |
tree | 6078f644f915a14a9a88515391de958e7da37b87 | |
parent | 27e7a00d27a78d4bdc660c94ba6c6eed022c3282 (diff) | |
download | wfm-8b5204220593f8a2356a33d81117f41d1b29088c.tar.gz |
add file type icons
-rw-r--r-- | dir.go | 68 | ||||
-rw-r--r-- | fileio.go | 4 |
2 files changed, 51 insertions, 21 deletions
@@ -7,13 +7,14 @@ import ( "net/url" "os" "sort" + "strings" "time" "github.com/dustin/go-humanize" ) func listFiles(w http.ResponseWriter, uDir, sort, hi, user string, modern bool) { - b := buttons(modern) + i := icons(modern) d, err := ioutil.ReadDir(uDir) if err != nil { htErr(w, "Unable to read directory", err) @@ -23,7 +24,7 @@ func listFiles(w http.ResponseWriter, uDir, sort, hi, user string, modern bool) sortFiles(d, &sl, sort) header(w, uDir, sort) - toolbars(w, uDir, user, sl, b) + toolbars(w, uDir, user, sl, i) qeDir := url.QueryEscape(uDir) r := 0 @@ -39,7 +40,7 @@ func listFiles(w http.ResponseWriter, uDir, sort, hi, user string, modern bool) continue } ldir = ls.IsDir() - li = b["li"] + li = i["li"] } if !f.IsDir() && !ldir { continue @@ -60,14 +61,14 @@ func listFiles(w http.ResponseWriter, uDir, sort, hi, user string, modern bool) w.Write([]byte(` <TD NOWRAP ALIGN="left"> <INPUT TYPE="CHECKBOX" NAME="mulf" VALUE="` + heFile + `"> - <A HREF="` + *wfmPfx + `?dir=` + qeDir + `/` + qeFile + `&sort=` + sort + `">` + b["di"] + heFile + `/</A>` + li + ` + <A HREF="` + *wfmPfx + `?dir=` + qeDir + `/` + qeFile + `&sort=` + sort + `">` + i["di"] + heFile + `/</A>` + li + ` </TD> <TD NOWRAP> </TD> <TD NOWRAP ALIGN="right">(` + humanize.Time(f.ModTime()) + `) ` + f.ModTime().Format(time.Stamp) + `</TD> <TD NOWRAP ALIGN="right"> - <A HREF="` + *wfmPfx + `?fn=renp&dir=` + qeDir + `&oldf=` + qeFile + `&sort=` + sort + `">` + b["re"] + `</A> - <A HREF="` + *wfmPfx + `?fn=movp&dir=` + qeDir + `&file=` + qeFile + `&sort=` + sort + `">` + b["mv"] + `</A> - <A HREF="` + *wfmPfx + `?fn=delp&dir=` + qeDir + `&file=` + qeFile + `&sort=` + sort + `">` + b["rm"] + `</A> + <A HREF="` + *wfmPfx + `?fn=renp&dir=` + qeDir + `&oldf=` + qeFile + `&sort=` + sort + `">` + i["re"] + `</A> + <A HREF="` + *wfmPfx + `?fn=movp&dir=` + qeDir + `&file=` + qeFile + `&sort=` + sort + `">` + i["mv"] + `</A> + <A HREF="` + *wfmPfx + `?fn=delp&dir=` + qeDir + `&file=` + qeFile + `&sort=` + sort + `">` + i["rm"] + `</A> </TD> </TR> `)) @@ -83,7 +84,7 @@ func listFiles(w http.ResponseWriter, uDir, sort, hi, user string, modern bool) continue } ldir = ls.IsDir() - li = b["li"] + li = i["li"] } if f.IsDir() || ldir { continue @@ -104,16 +105,16 @@ func listFiles(w http.ResponseWriter, uDir, sort, hi, user string, modern bool) w.Write([]byte(` <TD NOWRAP ALIGN="LEFT"> <INPUT TYPE="CHECKBOX" NAME="mulf" VALUE="` + heFile + `"> - <A HREF="` + *wfmPfx + `?fn=disp&fp=` + qeDir + "/" + qeFile + `">` + b["fi"] + heFile + `</A>` + li + ` + <A HREF="` + *wfmPfx + `?fn=disp&fp=` + qeDir + "/" + qeFile + `">` + fileIcon(qeFile, modern) + ` ` + heFile + `</A>` + li + ` </TD> <TD NOWRAP ALIGN="right">` + humanize.Bytes(uint64(f.Size())) + `</TD> <TD NOWRAP ALIGN="right">(` + humanize.Time(f.ModTime()) + `) ` + f.ModTime().Format(time.Stamp) + `</TD> <TD NOWRAP ALIGN="right"> - <A HREF="` + *wfmPfx + `?fn=down&fp=` + qeDir + "/" + qeFile + `">` + b["dn"] + `</A> - <A HREF="` + *wfmPfx + `?fn=edit&fp=` + qeDir + "/" + qeFile + `&sort=` + sort + `">` + b["ed"] + `</A> - <A HREF="` + *wfmPfx + `?fn=renp&dir=` + qeDir + `&oldf=` + qeFile + `&sort=` + sort + `">` + b["re"] + `</A> - <A HREF="` + *wfmPfx + `?fn=movp&dir=` + qeDir + `&file=` + qeFile + `&sort=` + sort + `">` + b["mv"] + `</A> - <A HREF="` + *wfmPfx + `?fn=delp&dir=` + qeDir + `&file=` + qeFile + `&sort=` + sort + `">` + b["rm"] + `</A> + <A HREF="` + *wfmPfx + `?fn=down&fp=` + qeDir + "/" + qeFile + `">` + i["dn"] + `</A> + <A HREF="` + *wfmPfx + `?fn=edit&fp=` + qeDir + "/" + qeFile + `&sort=` + sort + `">` + i["ed"] + `</A> + <A HREF="` + *wfmPfx + `?fn=renp&dir=` + qeDir + `&oldf=` + qeFile + `&sort=` + sort + `">` + i["re"] + `</A> + <A HREF="` + *wfmPfx + `?fn=movp&dir=` + qeDir + `&file=` + qeFile + `&sort=` + sort + `">` + i["mv"] + `</A> + <A HREF="` + *wfmPfx + `?fn=delp&dir=` + qeDir + `&file=` + qeFile + `&sort=` + sort + `">` + i["rm"] + `</A> </TD> </TR> `)) @@ -241,7 +242,7 @@ func sortFiles(f []os.FileInfo, l *[]string, by string) { } } -func buttons(b bool) map[string]string { +func icons(b bool) map[string]string { if b { return map[string]string{ "fi": "🗒 ", @@ -250,12 +251,12 @@ func buttons(b bool) map[string]string { "rm": "❌", "mv": "🚚", - "re": "🏷", - "ed": "📝", + "re": "🪧", + "ed": "🔬", "dn": "💾", - "tcd": "🗄 ", - "tup": "⇪ ", + "tcd": "🍱 ", + "tup": "🔺 ", "tho": "🏠 ", "tre": "🌀 ", "trm": "❌ ", @@ -288,3 +289,32 @@ func buttons(b bool) map[string]string { "tve": "WFM ", } } + +func fileIcon(f string, m bool) string { + if !m { + return "·" + } + s := strings.Split(f, ".") + switch strings.ToLower(s[len(s)-1]) { + case "iso", "udf": + return "💿" + case "mp4", "mov", "qt", "avi", "mpg", "mpeg": + return "🎬" + case "gif", "png", "jpg", "jpeg", "ico", "webp", "bmp", "tif", "tiff", "heif", "heic": + return "🖼" + case "deb", "rpm", "dpkg", "apk", "msi", "pkg": + return "📦" + case "zip", "rar", "7z", "z", "gz", "bz2", "xz", "lz", "tgz", "tbz", "txz", "arj", "lha", "tar": + return "🗜" + case "imd", "img", "raw", "dd", "tap", "dsk": + return "💾" + case "txt", "log", "csv", "md", "mhtml", "html", "htm", "cfg", "conf", "ini", "json", "xml": + return "📝" + case "pdf", "ps", "doc", "docx", "xls", "xlsx", "rtf": + return "📚" + case "url", "desktop", "webloc": + return "🌐" + // a + } + return "📒" +} @@ -18,9 +18,9 @@ import ( func dispFile(w http.ResponseWriter, uFilePath string) { fp := filepath.Clean(uFilePath) - s := strings.Split(strings.ToLower(fp), ".") + s := strings.Split(fp, ".") log.Printf("Dsiposition file=%v ext=%v", fp, s[len(s)-1]) - switch s[len(s)-1] { + switch strings.ToLower(s[len(s)-1]) { case "url", "desktop", "webloc": gourl(w, fp) |