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

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

parents a5cb0929 3ca57bec
No related branches found
No related tags found
No related merge requests found
...@@ -2,26 +2,30 @@ require('filebase.js', 'FileBase'); ...@@ -2,26 +2,30 @@ require('filebase.js', 'FileBase');
require('file_size.js', 'file_size_str'); require('file_size.js', 'file_size_str');
function count_files(dir) { function count_files(dir) {
var n = 0;
const fn = format("%s%s.ixb", file_area.dir[dir].data_dir, dir); 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 return Math.floor(file_size(fn) / 22); // ixb record length is 22 bytes
} }
function listLibraries() { function libHasFiles(lib) {
return file_area.lib_list.filter(function (library) { return lib.dir_list.some(function (e) {
return library.dir_list.length >= 1; return count_files(e.code) > 0;
}); });
} }
function listDirectories(library) { function listLibraries() {
var dirs = []; return file_area.lib_list.filter(function (lib) {
file_area.lib_list[library].dir_list.forEach(function (dir) { return lib.dir_list.length >= 1 && libHasFiles(lib);
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) { function listFiles(dir) {
......
...@@ -24,8 +24,13 @@ ...@@ -24,8 +24,13 @@
</li> </li>
</ol> </ol>
<?xjs function writeFileDetails(file) { ?> <? 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); ?>"> <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); ?>) <strong><? write(file.name); ?></strong> (<? write(file.size); ?>)
<p><em>Uploaded <? write(system.timestr(file.uldate)); ?></em></p> <p><em>Uploaded <? write(system.timestr(file.uldate)); ?></em></p>
<?xjs if (typeof file.extdesc === 'undefined') { ?> <?xjs if (typeof file.extdesc === 'undefined') { ?>
...@@ -35,8 +40,12 @@ ...@@ -35,8 +40,12 @@
<?xjs } else { ?> <?xjs } else { ?>
<pre class="list"><? write(file.extdesc.replace(/[^\r,\n\x20-\x7E]/g, '')); ?></pre> <pre class="list"><? write(file.extdesc.replace(/[^\r,\n\x20-\x7E]/g, '')); ?></pre>
<?xjs } ?> <?xjs } ?>
<? if (cd) { ?>
</a> </a>
<?xjs } ?> <? } else { ?>
</li>
<? } ?>
<? } ?>
<div class="clearfix" style="margin-bottom:1em;"> <div class="clearfix" style="margin-bottom:1em;">
<div class="dropdown pull-right"> <div class="dropdown pull-right">
......
...@@ -20,6 +20,7 @@ if ((http_request.method === 'GET' || http_request.method === 'POST') && ...@@ -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]].index >= 0 &&
file_area.dir[http_request.query.dir[0]].can_download && file_area.dir[http_request.query.dir[0]].can_download &&
typeof http_request.query.file !== 'undefined' 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 dircode = file_area.dir[http_request.query.dir[0]].code;
var fileBase = new FileBase(dircode); 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