add folder thumbnails (cover.jpg or png)

This commit is contained in:
ed 2021-06-11 23:54:54 +02:00
parent 60ac68d000
commit 081d2cc5d7
3 changed files with 30 additions and 9 deletions

View file

@ -1525,12 +1525,24 @@ class HttpCli(object):
except:
raise Pebkac(404)
if self.readable and not stat.S_ISDIR(st.st_mode):
if self.readable:
if rem.startswith(".hist/up2k."):
raise Pebkac(403)
is_dir = stat.S_ISDIR(st.st_mode)
th_fmt = self.uparam.get("th")
if th_fmt is not None:
if is_dir:
for fn in ["cover.png", "cover.jpg"]:
fp = os.path.join(abspath, fn)
if os.path.exists(fp):
vrem = "{}/{}".format(vrem.rstrip("/"), fn)
is_dir = False
break
if is_dir:
return self.tx_ico("/")
thp = None
if self.thumbcli:
thp = self.thumbcli.get(
@ -1542,10 +1554,11 @@ class HttpCli(object):
return self.tx_ico(rem)
if abspath.endswith(".md") and "raw" not in self.uparam:
return self.tx_md(abspath)
if not is_dir:
if abspath.endswith(".md") and "raw" not in self.uparam:
return self.tx_md(abspath)
return self.tx_file(abspath)
return self.tx_file(abspath)
srv_info = []

View file

@ -798,6 +798,13 @@ html.light #ghead {
padding: .2em .3em;
display: block;
}
#ggrid span.dir:before {
content: '📂';
line-height: 0;
font-size: 2em;
display: inline-block;
margin: -.7em 0 -.5em -.3em;
}
#ggrid a:hover {
background: #444;
border-color: #555;

View file

@ -858,14 +858,15 @@ var thegrid = (function () {
href = esc(ao.getAttribute('href')),
ref = ao.getAttribute('id'),
isdir = href.split('?')[0].slice(-1)[0] == '/',
ac = isdir ? ' class="dir"' : '',
ihref = href;
if (isdir) {
ihref = '/.cpr/ico/folder'
}
else if (r.thumbs) {
if (r.thumbs) {
ihref += (ihref.indexOf('?') === -1 ? '?' : '&') + 'th=' + (have_webp ? 'w' : 'j');
}
else if (isdir) {
ihref = '/.cpr/ico/folder';
}
else {
var ar = href.split('?')[0].split('.');
if (ar.length > 1)
@ -886,7 +887,7 @@ var thegrid = (function () {
}
html.push('<a href="' + href + '" ref="' + ref + '"><img src="' +
ihref + '" /><span>' + ao.innerHTML + '</span></a>');
ihref + '" /><span' + ac + '>' + ao.innerHTML + '</span></a>');
}
lfiles.style.display = 'none';
gfiles.style.display = 'block';