Skip to content
Snippets Groups Projects
Commit cceb0068 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Merge branch 'master' of gitlab.synchro.net:sbbs/sbbs

parents 2ee5a9b1 c649aa82
Branches
Tags
No related merge requests found
......@@ -2,26 +2,30 @@ require('filebase.js', 'FileBase');
require('file_size.js', 'file_size_str');
function count_files(dir) {
var n = 0;
const fn = format("%s%s.ixb", file_area.dir[dir].data_dir, dir);
if (!file_exists(fn)) return n;
if (!file_exists(fn)) return 0;
return Math.floor(file_size(fn) / 22); // ixb record length is 22 bytes
}
function libHasFiles(lib) {
return lib.dir_list.some(function (e) {
return count_files(e.code) > 0;
});
}
function listLibraries() {
return file_area.lib_list.filter(function (library) {
return library.dir_list.length >= 1;
return file_area.lib_list.filter(function (lib) {
return lib.dir_list.length >= 1 && libHasFiles(lib);
});
}
function listDirectories(library) {
var dirs = [];
file_area.lib_list[library].dir_list.forEach(function (dir) {
const fc = count_files(dir.code);
if (fc < 1) return;
dirs.push({ dir: dir, fileCount: fc });
});
return dirs;
function listDirectories(lib) {
return file_area.lib_list[lib].dir_list.reduce(function (a, c) {
const fc = count_files(c.code);
if (fc < 1) return a;
a.push({ dir: c, fileCount: fc });
return a;
}, []);
}
function listFiles(dir) {
......
......@@ -24,19 +24,28 @@
</li>
</ol>
<?xjs function writeFileDetails(file) { ?>
<a href="./api/files.ssjs?call=download-file&amp;dir=<? Request.write_param('dir'); ?>&amp;file=<? write(file.name); ?>" target="_blank" class="list-group-item striped" data-file-list-element data-size="<? write(file._size); ?>" data-uploaded="<? write(file.uldate); ?>" data-name="<? write(file.name); ?>">
<strong><? write(file.name); ?></strong> (<? write(file.size); ?>)
<p><em>Uploaded <? write(system.timestr(file.uldate)); ?></em></p>
<?xjs if (typeof file.extdesc === 'undefined') { ?>
<p><? write(file.desc); ?></p>
<?xjs } else if (file.extdesc.search(/(\x1B\[|[\xA8-\xFE])/) > -1) { ?>
<pre class="ansi"><? write(html_encode(file.extdesc, true, false, true, true)); ?></pre>
<?xjs } else { ?>
<pre class="list"><? write(file.extdesc.replace(/[^\r,\n\x20-\x7E]/g, '')); ?></pre>
<?xjs } ?>
</a>
<?xjs } ?>
<? function writeFileDetails(file) { ?>
<? const cd = file_area.dir[Request.get_param('dir')].can_download && user.compare_ars(file_area.dir[Request.get_param('dir')].download_ars); ?>
<? if (cd) { ?>
<a href="./api/files.ssjs?call=download-file&amp;dir=<? Request.write_param('dir'); ?>&amp;file=<? write(file.name); ?>" target="_blank" class="list-group-item striped" data-file-list-element data-size="<? write(file._size); ?>" data-uploaded="<? write(file.uldate); ?>" data-name="<? write(file.name); ?>">
<? } else { ?>
<li class="list-group-item striped" data-file-list-element data-size="<? write(file._size); ?>" data-uploaded="<? write(file.uldate); ?>" data-name="<? write(file.name); ?>">
<? } ?>
<strong><? write(file.name); ?></strong> (<? write(file.size); ?>)
<p><em>Uploaded <? write(system.timestr(file.uldate)); ?></em></p>
<?xjs if (typeof file.extdesc === 'undefined') { ?>
<p><? write(file.desc); ?></p>
<?xjs } else if (file.extdesc.search(/(\x1B\[|[\xA8-\xFE])/) > -1) { ?>
<pre class="ansi"><? write(html_encode(file.extdesc, true, false, true, true)); ?></pre>
<?xjs } else { ?>
<pre class="list"><? write(file.extdesc.replace(/[^\r,\n\x20-\x7E]/g, '')); ?></pre>
<?xjs } ?>
<? if (cd) { ?>
</a>
<? } else { ?>
</li>
<? } ?>
<? } ?>
<div class="clearfix" style="margin-bottom:1em;">
<div class="dropdown pull-right">
......
......@@ -20,6 +20,7 @@ if ((http_request.method === 'GET' || http_request.method === 'POST') &&
file_area.dir[http_request.query.dir[0]].index >= 0 &&
file_area.dir[http_request.query.dir[0]].can_download &&
typeof http_request.query.file !== 'undefined'
&& user.compare_ars(file_area.dir[http_request.query.dir[0]].download_ars)
) {
var dircode = file_area.dir[http_request.query.dir[0]].code;
var fileBase = new FileBase(dircode);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment