diff --git a/xtrn/ddfilelister/ddfilelister.js b/xtrn/ddfilelister/ddfilelister.js index 214128dc488730ca5455af7ef0b9e4a1b9f7abb3..2f7c27ba15f855bc973ec132463f90d911d1608a 100644 --- a/xtrn/ddfilelister/ddfilelister.js +++ b/xtrn/ddfilelister/ddfilelister.js @@ -123,6 +123,9 @@ * Started working on adding the ability to edit file details/information (for the sysop) * 2024-08-16 Eric Oulashin Version 2.22 * Releasing this version + * 2024-09-13 Eric Oulashin Version 2.23 + * Check for null when getting extended metadata from the file DB (possibly caused + * by DB corruption). Also, allow changing the filename when editing file info. */ "use strict"; @@ -168,8 +171,8 @@ require("attr_conv.js", "convertAttrsToSyncPerSysCfg"); // Lister version information -var LISTER_VERSION = "2.22"; -var LISTER_DATE = "2024-08-16"; +var LISTER_VERSION = "2.23"; +var LISTER_DATE = "2024-09-13"; /////////////////////////////////////////////////////////////////////////////// @@ -1057,7 +1060,13 @@ function showFileInfo_ANSI(pFileMetadata) if (extendedDescEnabled()) fileMetadata = pFileMetadata; else - fileMetadata = getFileInfoFromFilebase(dirCode, pFileMetadata.name, FileBase.DETAIL.EXTENDED); + { + var tmpFileMetadata = getFileInfoFromFilebase(dirCode, pFileMetadata.name, FileBase.DETAIL.EXTENDED); + if (tmpFileMetadata != null) + fileMetadata = tmpFileMetadata; + else + fileMetadata = pFileMetadata; + } // Build a string with the file information // Make sure the displayed filename isn't too crazy long var frameInnerWidth = frameWidth - 2; // Without borders @@ -1210,7 +1219,13 @@ function showFileInfo_noANSI(pFileMetadata) if (extendedDescEnabled()) fileMetadata = pFileMetadata; else - fileMetadata = getFileInfoFromFilebase(dirCode, pFileMetadata.name, FileBase.DETAIL.EXTENDED); + { + var tmpFileMetadata = getFileInfoFromFilebase(dirCode, pFileMetadata.name, FileBase.DETAIL.EXTENDED); + if (tmpFileMetadata != null) + fileMetadata = tmpFileMetadata; + else + fileMetadata = pFileMetadata; + } console.print("\x01n\x01wFilename:\r\n"); console.print(gColors.filename + fileMetadata.name + "\x01n\x01w\r\n"); @@ -1880,27 +1895,42 @@ function editFileInfo(pFileList, pFileListMenu) { // Get the extended metadata object and check to see if it has an existing extended definition var extdMetadata = getFileInfoFromFilebase(fileMetadata.dirCode, fileMetadata.name, FileBase.DETAIL.EXTENDED); - // Let the user edit the extended description with their configured editor - var descFilename = system.temp_dir + "extdDescTemp.txt"; - var outFile = new File(descFilename); - if (outFile.open("w")) + if (extdMetadata != null) { - // An extended file description is usually up to about 45 characters long - var descWrapped = word_wrap(extdMetadata.extdesc, 45, null, false).split("\r\n"); - for (var lineIdx = 0; lineIdx < descWrapped.length; ++lineIdx) - outFile.writeln(descWrapped[lineIdx]); - outFile.close(); - if (console.editfile(descFilename, "", "", fileMetadata.name, "", false)) + // Let the user edit the extended description with their configured editor + var descFilename = system.temp_dir + "extdDescTemp.txt"; + var outFile = new File(descFilename); + if (outFile.open("w")) { - if (outFile.open("r")) + // An extended file description is usually up to about 45 characters long + var descWrapped = word_wrap(extdMetadata.extdesc, 45, null, false).split("\r\n"); + for (var lineIdx = 0; lineIdx < descWrapped.length; ++lineIdx) + outFile.writeln(descWrapped[lineIdx]); + outFile.close(); + if (console.editfile(descFilename, "", "", fileMetadata.name, "", false)) { - newMetadata.extdesc = outFile.readAll(console.screen_columns).join("\r\n"); - outFile.close(); + if (outFile.open("r")) + { + newMetadata.extdesc = outFile.readAll(console.screen_columns).join("\r\n"); + outFile.close(); + } } + if (!file_remove(descFilename)) + log(LOG_ERR, "Failed to delete temporary file " + descFilename); } - if (!file_remove(descFilename)) - log(LOG_ERR, "Failed to delete temporary file " + descFilename); } + else + console.print("\x01n\x01h\x01y* Unable to retrieve extended metadata for the file\x01n\r\n"); + } + // Filename + if (!console.noyes("Change the filename")) + { + var promptText = "\x01n\x01cFilename\x01h: \x01n"; + editWidth = console.screen_columns - console.strlen(promptText) - 1; + console.print(promptText); + newMetadata.name = console.getstr(fileMetadata.name, editWidth, K_EDIT|K_LINE|K_NOSPIN); // K_NOCRLF + if (console.aborted) + return retObj; } // Only let the sysop edit the uploader, credit value, upload time, etc. if (user.is_sysop) @@ -2762,10 +2792,21 @@ function getFileInfoFromFilebase(pDirCode, pFilename, pDetail) else fileDetail = (extendedDescEnabled() ? FileBase.DETAIL.EXTENDED : FileBase.DETAIL.NORM); fileMetadataObj = filebase.get(filename, fileDetail); - fileMetadataObj.dirCode = pDirCode; - //fileMetadataObj.size = filebase.get_size(filename); - if (!fileMetadataObj.hasOwnProperty("time")) - fileMetadataObj.time = filebase.get_time(filename); + // Temporary + if (user.is_sysop) + { + for (var prop in fileMetadataObj) + console.print(prop + ": " + fileMetadataObj[prop] + "\r\n"); + console.pause(); + } + // End Temporary + if (fileMetadataObj != null) + { + fileMetadataObj.dirCode = pDirCode; + //fileMetadataObj.size = filebase.get_size(filename); + if (!fileMetadataObj.hasOwnProperty("time")) + fileMetadataObj.time = filebase.get_time(filename); + } filebase.close(); } @@ -5387,7 +5428,7 @@ function getExtdFileDescArray(pFileList, pIdx) { var dirCode = (pFileList[pIdx].hasOwnProperty("dirCode") ? pFileList[pIdx].dirCode : gDirCode); var fileMetadata = getFileInfoFromFilebase(dirCode, pFileList[pIdx].name, FileBase.DETAIL.EXTENDED); - if (fileMetadata.hasOwnProperty("extdesc")) + if (fileMetadata != null && fileMetadata.hasOwnProperty("extdesc")) extdDesc = fileMetadata.extdesc; } if (extdDesc.length == 0) diff --git a/xtrn/ddfilelister/readme.txt b/xtrn/ddfilelister/readme.txt index 4347777709f7899015734f1d6967e491c8f3832b..5c8bb1d06bd366406505a99c0577ee6435271530 100644 --- a/xtrn/ddfilelister/readme.txt +++ b/xtrn/ddfilelister/readme.txt @@ -1,6 +1,6 @@ Digital Distortion File Lister - Version 2.22 - Release date: 2024-08-16 + Version 2.23 + Release date: 2024-09-13 by diff --git a/xtrn/ddfilelister/revision_history.txt b/xtrn/ddfilelister/revision_history.txt index c84d6c89ee9808c641b41dc532f58486d65ed5fd..97f8c723743907595c44fbdecc3bac76fce38923 100644 --- a/xtrn/ddfilelister/revision_history.txt +++ b/xtrn/ddfilelister/revision_history.txt @@ -5,6 +5,9 @@ Revision History (change log) ============================= Version Date Description ------- ---- ----------- +2.23 2024-09-13 Check for null when getting extended metadata from the + file DB (possibly caused by DB corruption). Also, allow + changing the filename when editing file info. 2.22 2024-08-16 Added the ability to edit file information using the E key when listing. Normal users can edit the description and tags, and sysops can also edit the uploader, credit