From d1198d5fa6ff049ccd29c52045b7c398661ef0a8 Mon Sep 17 00:00:00 2001 From: df Date: Thu, 4 Mar 2021 15:08:15 +0000 Subject: [PATCH] Make use of unique element IDs for img consistent --- webif/html/browse/script.js | 41 +++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/webif/html/browse/script.js b/webif/html/browse/script.js index d0548be..12c0a19 100755 --- a/webif/html/browse/script.js +++ b/webif/html/browse/script.js @@ -10,6 +10,17 @@ var plugins = { 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) { if (!msg) @@ -115,21 +126,11 @@ function epginfo_callback(data, status, xhr) function insert_folder_size(folder, size) { // folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1'); - // ID of size element is ID + RFC4648 s5 encoding of folder name - folder = "ID" + - btoa(escape(folder)) - .replace(/\+/g, '-') - .replace(/\//g, '_') - .replace(/=/g, ''); + size += (size.search(/\d$/) == -1? 'iB': ' bytes'); + folder = folderID(folder); //console.log("Folder: (%s) = (%s)", folder, size); - if (size.search(/\d$/) == -1) - size += 'iB'; - else - size += ' bytes'; - if (folder == "") - $('#dirsize').text(' (' + size + ')'); - else - $('#' + folder).text(' (' + size + ')'); + $(folder == "" ? '#dirsize': '#ID' + folder) + .text(' (' + size + ')'); } function folder_size_callback(data, status, xhr) @@ -141,11 +142,9 @@ function folder_size_callback(data, status, xhr) function set_folder_new(folder, cnt) { - folder = folder.replace(/ /g, ''); - folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1'); //console.log("Folder: (%s) = (%s)", folder, cnt); left = cnt > 99 ? 11 : (cnt > 9 ? 14 : 17); - $('#img' + folder) + $('#img' + folderID(folder)) .attr('src', '/img/Folder_New.png') .next('span.foldernum') .css('left', left + 'px') @@ -164,10 +163,8 @@ function new_folder_callback(data, status, xhr) function set_folder__(folder) { - folder = folder.replace(/ /g, ''); - folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1'); //console.log("Folder: (%s)", folder); - $('#img' + folder + ' ~ span.folderu').show(); + $('#img' + folderID(folder) + ' ~ span.folderu').show(); } 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) { - var bfile = file.replace(/.*\/|\.[^.]*$/g, ''); + var bfile = file.replace(pathre, ''); $confirm.dialog('option', 'buttons', { 'Yes': function() { $(this).dialog('close'); 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 efile = encodeURIComponent(file); - var bfile = file.replace(/.*\/|\.[^.]*$/g, ''); + var bfile = file.replace(pathre, ''); bfile = bfile.replace(/[\x00-\x1f]+/g, ''); var type = $(el).attr('type'); var id = $(el).attr('did');