Skip to content

Commit f45b64a

Browse files
committed
Fix directory listing.
1 parent aca451f commit f45b64a

1 file changed

Lines changed: 21 additions & 23 deletions

File tree

bin/totaljs

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -318,37 +318,35 @@ function main() {
318318

319319
F.route('/*', function() {
320320
var self = this;
321-
var filename = path.join(self.url, 'index.html').substring(1);
321+
var dir = F.path.public(self.url.substring(1));
322322

323-
F.path.exists(filename, function(e) {
323+
fs.readdir(dir, function(err, items) {
324324

325-
if (e)
326-
return self.file(filename, '');
325+
var render = function(controller, directories, files) {
326+
controller.content('<!DOCTYPE html><html><head><title>Directory listing: {0}</title><meta charset="utf-8" /><style>body{font-family:Arial;font-size:16px;padding:10px 30px 30px}a{display:block}.directory:last-child{margin-bottom:10px}.directory{padding:2px 10px;background-color:#F8F8F8;margin-bottom:2px;text-decoration:none;color:black;font-weight:bold;font-size:18px}.directory-back{text-decoration:none;font-size:50px;margin:0 0 10px 5px;color:gray}.file{color:gray;text-decoration:none;font-size:14px;padding:3px 10px;border-bottom:1px solid #F0F0F0;}.file span{float:right;font-size:12px;margin:2px 0 0 0;color:#A0A0A0}.file:hover{background-color:#F8F8F8}</style></head><body><div class="directories">{1}</div><div class="files">{2}</div></body></html>'.format(controller.url, directories.join(''), files.join('')), 'text/html')
327+
};
327328

328-
var dir = F.path.public(self.url.substring(1));
329+
var directories = [];
330+
var files = [];
329331

330-
fs.readdir(dir, function(err, items) {
332+
if (self.url !== '/')
333+
directories.push('<a href=".." class="directory-back">..</a>');
331334

332-
var directories = [];
333-
var files = [];
335+
if (err)
336+
return render(self, directories, files);
334337

335-
if (self.url !== '/')
336-
directories.push('<a href=".." class="directory-back">..</a>');
338+
items.wait(function(item, next) {
339+
var filename = path.join(dir, item);
340+
fs.stat(filename, function(err, info) {
337341

338-
items.wait(function(item, next) {
339-
var filename = path.join(dir, item);
340-
fs.stat(filename, function(err, info) {
342+
if (info.isFile())
343+
files.push('<a href="{1}" class="file">{0}<span>{2} kB</span></a>'.format(item, self.url + item, (info.size / 1024).format(2)));
344+
else
345+
directories.push('<a href="{1}/" class="directory">{0}</a>'.format(item, self.url + item));
341346

342-
if (info.isFile())
343-
files.push('<a href="{1}" class="file">{0}<span>{2} kB</span></a>'.format(item, self.url + item, (info.size / 1024).format(2)));
344-
else
345-
directories.push('<a href="{1}/" class="directory">{0}</a>'.format(item, self.url + item));
346-
347-
next();
348-
});
349-
}, () => self.content('<!DOCTYPE html><html><head><title>Directory listing: {0}</title><meta charset="utf-8" /><style>body{font-family:Arial;font-size:16px;padding:10px 30px 30px}a{display:block}.directory:last-child{margin-bottom:10px}.directory{padding:2px 10px;background-color:#F8F8F8;margin-bottom:2px;text-decoration:none;color:black;font-weight:bold;font-size:18px}.directory-back{text-decoration:none;font-size:50px;margin:0 0 10px 5px;color:gray}.file{color:gray;text-decoration:none;font-size:14px;padding:3px 10px;border-bottom:1px solid #F0F0F0;}.file span{float:right;font-size:12px;margin:2px 0 0 0;color:#A0A0A0}.file:hover{background-color:#F8F8F8}</style></head><body><div class="directories">{1}</div><div class="files">{2}</div></body></html>'.format(self.url, directories.join(''), files.join('')), 'text/html'));
350-
351-
});
347+
next();
348+
});
349+
}, () => render(self, directories, files));
352350
});
353351
});
354352

0 commit comments

Comments
 (0)