Make use of unique element IDs for img consistent

This commit is contained in:
df 2021-03-04 15:08:15 +00:00
parent 029b115628
commit d1198d5fa6
1 changed files with 19 additions and 22 deletions

View File

@ -10,6 +10,17 @@ var plugins = {
dmenu_prepare: {} dmenu_prepare: {}
}; };
// pattern matches directory path prefix
var pathre = /.*\/|\.[^.]*$/g;
// IDs of size, img elements for folders use RFC4648 s5 encoding of name
function folderID(folder) {
return btoa(escape(folder))
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '');
}
function blockpage(msg) function blockpage(msg)
{ {
if (!msg) if (!msg)
@ -115,21 +126,11 @@ function epginfo_callback(data, status, xhr)
function insert_folder_size(folder, size) function insert_folder_size(folder, size)
{ {
// folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1'); // folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
// ID of size element is ID + RFC4648 s5 encoding of folder name size += (size.search(/\d$/) == -1? 'iB': ' bytes');
folder = "ID" + folder = folderID(folder);
btoa(escape(folder))
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '');
//console.log("Folder: (%s) = (%s)", folder, size); //console.log("Folder: (%s) = (%s)", folder, size);
if (size.search(/\d$/) == -1) $(folder == "" ? '#dirsize': '#ID' + folder)
size += 'iB'; .text(' (' + size + ')');
else
size += ' bytes';
if (folder == "")
$('#dirsize').text(' (' + size + ')');
else
$('#' + folder).text(' (' + size + ')');
} }
function folder_size_callback(data, status, xhr) function folder_size_callback(data, status, xhr)
@ -141,11 +142,9 @@ function folder_size_callback(data, status, xhr)
function set_folder_new(folder, cnt) function set_folder_new(folder, cnt)
{ {
folder = folder.replace(/ /g, '');
folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
//console.log("Folder: (%s) = (%s)", folder, cnt); //console.log("Folder: (%s) = (%s)", folder, cnt);
left = cnt > 99 ? 11 : (cnt > 9 ? 14 : 17); left = cnt > 99 ? 11 : (cnt > 9 ? 14 : 17);
$('#img' + folder) $('#img' + folderID(folder))
.attr('src', '/img/Folder_New.png') .attr('src', '/img/Folder_New.png')
.next('span.foldernum') .next('span.foldernum')
.css('left', left + 'px') .css('left', left + 'px')
@ -164,10 +163,8 @@ function new_folder_callback(data, status, xhr)
function set_folder__(folder) function set_folder__(folder)
{ {
folder = folder.replace(/ /g, '');
folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
//console.log("Folder: (%s)", folder); //console.log("Folder: (%s)", folder);
$('#img' + folder + ' ~ span.folderu').show(); $('#img' + folderID(folder) + ' ~ span.folderu').show();
} }
function __folder_callback(data, status, xhr) function __folder_callback(data, status, xhr)
@ -264,7 +261,7 @@ var $confirm; // Populated after DOM is loaded.
function confirm_action(action, callback, file, type, id) function confirm_action(action, callback, file, type, id)
{ {
var bfile = file.replace(/.*\/|\.[^.]*$/g, ''); var bfile = file.replace(pathre, '');
$confirm.dialog('option', 'buttons', { $confirm.dialog('option', 'buttons', {
'Yes': function() { $(this).dialog('close'); 'Yes': function() { $(this).dialog('close');
callback(file, type, id); }, callback(file, type, id); },
@ -437,7 +434,7 @@ var menuclick = function(action, el, pos)
{ {
var file = $(el).parent().prevAll('a.bf').last().attr('file'); var file = $(el).parent().prevAll('a.bf').last().attr('file');
var efile = encodeURIComponent(file); var efile = encodeURIComponent(file);
var bfile = file.replace(/.*\/|\.[^.]*$/g, ''); var bfile = file.replace(pathre, '');
bfile = bfile.replace(/[\x00-\x1f]+/g, ''); bfile = bfile.replace(/[\x00-\x1f]+/g, '');
var type = $(el).attr('type'); var type = $(el).attr('type');
var id = $(el).attr('did'); var id = $(el).attr('did');