diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js index fe8c09487c5bda1e12b4c521162ed5dabbaed34d..2198bd35c6e78e938b57f0b92b77cb1870ce8f9a 100644 --- a/xtrn/DDMsgReader/DDMsgReader.js +++ b/xtrn/DDMsgReader/DDMsgReader.js @@ -133,6 +133,9 @@ * loadable module by Synchronet (work started on March 8). * Also, refactored to use attr_conv.js and removed the * attribute conversion functions from this script. + * 2022-03-23 Eric Oulashin Version 1.47a + * Now calls bbs.edit_msg() to edit an existing message (if + * that function exists - It was added in Synchronet 3.18). */ // TODO: In the message list, add the ability to search with / similar to my area chooser @@ -250,8 +253,8 @@ if (system.version_num < 31500) } // Reader version information -var READER_VERSION = "1.47"; -var READER_DATE = "2022-03-14"; +var READER_VERSION = "1.47a"; +var READER_DATE = "2022-03-23"; // Keyboard key codes for displaying on the screen var UP_ARROW = ascii(24); @@ -832,6 +835,7 @@ function DigDistMsgReader(pSubBoardCode, pScriptArgs) this.SetMsgListPauseTextAndLightbarHelpLine = DigDistMsgReader_SetMsgListPauseTextAndLightbarHelpLine; this.SetEnhancedReaderHelpLine = DigDistMsgReader_SetEnhancedReaderHelpLine; this.EditExistingMsg = DigDistMsgReader_EditExistingMsg; + this.EditExistingMessageOldWay = DigDistMsgReader_EditExistingMessageOldWay; this.CanDelete = DigDistMsgReader_CanDelete; this.CanDeleteLastMsg = DigDistMsgReader_CanDeleteLastMsg; this.CanEdit = DigDistMsgReader_CanEdit; @@ -8114,15 +8118,46 @@ function DigDistMsgReader_EditExistingMsg(pMsgIndex) return returnObj; } + // Make use of bbs.edit_msg() if the function exists (it was added in + // Synchronet 3.18c). Otherwise, edit the old way. + if (typeof(bbs.edit_msg) === "function") + { + if (!bbs.edit_msg(msgHeader)) + { + var grpIdx = msg_area.sub[this.subBoardCode].grp_index; + var areaDesc = msg_area.grp_list[grpIdx].description + " - " + msg_area.sub[this.subBoardCode].description; + var logMsg = user.alias + " was unable to edit message number " + msgHeader.number + " in " + areaDesc; + log(LOG_ERROR, logMsg); + bbs.log_str(logMsg); + } + } + else + this.EditExistingMessageOldWay(msgbase, msgHeader, pMsgIndex); + + msgbase.close(); + + return returnObj; +} +// Helper for DigDistMsgReader_EditExistingMsg(): Edits an existing message by writing it +// to a temporary file, having the user edit that, and saving it as a new message. +// This was done before the bbs.edit_msg() function existed (it was added in Synchronet +// 3.18c). +// +// Parameters: +// pMsgbase: The MessageBase object. Assumed to be open. +// pOrigMsgHdr: The header of the original message +// pMsgIndex: The index of the message to edit +function DigDistMsgReader_EditExistingMessageOldWay(pMsgbase, pOrigMsgHdr, pMsgIndex) +{ // Dump the message body to a temporary file in the node dir - //var originalMsgBody = msgbase.get_msg_body(true, pMsgIndex, false, false, true, true); + //var originalMsgBody = pMsgbase.get_msg_body(true, pMsgIndex, false, false, true, true); var originalMsgBody; - var tmpMsgHdr = this.GetMsgHdrByIdx(pMsgIndex, false, msgbase); + var tmpMsgHdr = this.GetMsgHdrByIdx(pMsgIndex, false, pMsgbase); var msgHdrIsBogus = (tmpMsgHdr.hasOwnProperty("isBogus") ? tmpMsgHdr.isBogus : false); if (msgHdrIsBogus) - originalMsgBody = msgbase.get_msg_body(true, pMsgIndex, false, false, true, true); + originalMsgBody = pMsgbase.get_msg_body(true, pMsgIndex, false, false, true, true); else - originalMsgBody = msgbase.get_msg_body(false, tmpMsgHdr.number, false, false, true, true); + originalMsgBody = pMsgbase.get_msg_body(false, tmpMsgHdr.number, false, false, true, true); var tempFilename = system.node_dir + "DDMsgLister_message.txt"; var tmpFile = new File(tempFilename); if (tmpFile.open("w")) @@ -8141,15 +8176,15 @@ function DigDistMsgReader_EditExistingMsg(pMsgIndex) // bbs.msg_number is a unique message identifier that won't // change, so it's probably best for scripts to use bbs.msg_number // instead of offsets. - bbs.msg_to = msgHeader.to; - bbs.msg_to_ext = msgHeader.to_ext; - bbs.msg_subject = msgHeader.subject; - bbs.msg_offset = msgHeader.offset; - bbs.msg_number = msgHeader.number; + bbs.msg_to = pOrigMsgHdr.to; + bbs.msg_to_ext = pOrigMsgHdr.to_ext; + bbs.msg_subject = pOrigMsgHdr.subject; + bbs.msg_offset = pOrigMsgHdr.offset; + bbs.msg_number = pOrigMsgHdr.number; // Let the user edit the temporary file console.editfile(tempFilename); - // Load the temp file back into msgBodyColor and have msgbase + // Load the temp file back into msgBodyColor and have pMsgbase // save the message. if (tmpFile.open("r")) { @@ -8162,18 +8197,18 @@ function DigDistMsgReader_EditExistingMsg(pMsgIndex) // aborted out of the message editor.) if (newMsgBody != originalMsgBody) { - var newHdr = { to: msgHeader.to, to_ext: msgHeader.to_ext, from: msgHeader.from, - from_ext: msgHeader.from_ext, attr: msgHeader.attr, - subject: msgHeader.subject }; - var savedNewMsg = msgbase.save_msg(newHdr, newMsgBody); + var newHdr = { to: pOrigMsgHdr.to, to_ext: pOrigMsgHdr.to_ext, from: pOrigMsgHdr.from, + from_ext: pOrigMsgHdr.from_ext, attr: pOrigMsgHdr.attr, + subject: pOrigMsgHdr.subject }; + var savedNewMsg = pMsgbase.save_msg(newHdr, newMsgBody); // If the message was successfully saved, then mark the original // message for deletion and output a message to the user. if (savedNewMsg) { returnObj.msgEdited = true; - returnObj.newMsgIdx = msgbase.total_msgs - 1; + returnObj.newMsgIdx = pMsgbase.total_msgs - 1; var message = "\1n\1cThe edited message has been saved as a new message."; - if (msgbase.remove_msg(true, pMsgIndex)) + if (pMsgbase.remove_msg(true, pMsgIndex)) message += " The original has been\r\nmarked for deletion."; else message += " \1h\1yHowever, the original\r\ncould not be marked for deletion."; @@ -8206,11 +8241,8 @@ function DigDistMsgReader_EditExistingMsg(pMsgIndex) } // Delete the temporary file from disk. tmpFile.remove(); - - msgbase.close(); - - return returnObj; } + // For the DigDistMsgReader Class: Returns whether or not the user can delete // their messages in the sub-board (distinct from being able to delete only // their last message). diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt index d96d09ba66a352728492a8ae64dcb0eee2ff3c17..3dfd8210739c26f8ffbbb453383be4fec1be88af 100644 --- a/xtrn/DDMsgReader/readme.txt +++ b/xtrn/DDMsgReader/readme.txt @@ -1,6 +1,6 @@ Digital Distortion Message Reader - Version 1.47 - Release date: 2022-03-14 + Version 1.47a + Release date: 2022-03-23 by diff --git a/xtrn/DDMsgReader/revision_history.txt b/xtrn/DDMsgReader/revision_history.txt index 6ab65d86fe30fb1c2c7624b464da97a0c7f41854..fdf18f32614a50fc189c9d328e9afe14147c109a 100644 --- a/xtrn/DDMsgReader/revision_history.txt +++ b/xtrn/DDMsgReader/revision_history.txt @@ -5,6 +5,9 @@ Revision History (change log) ============================= Version Date Description ------- ---- ----------- +1.47a 2022-03-23 Internal change: Now calls bbs.edit_msg() for editing an + existing message (for Synchronet 3.18 and up). + Functionally no change. 1.47 2022-03-14 DDMsgReader can now be called directly as a loadable module by Synchronet (though requires the included ddmr_lm.js if DDMsgReader.js is not in sbbs/exec or