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

Merge branch 'dd_msg_reader_quotes_txt_case_and_terminalSupportsUTF8_error_fix' into 'master'

DDMsgReader: quotes.txt is now in the correct case for the user's editor. "terminalSupportsUTF8 not defined" error eliminated.

See merge request !406
parents f894f621 38a9faf7
No related branches found
No related tags found
1 merge request!406DDMsgReader: quotes.txt is now in the correct case for the user's editor. "terminalSupportsUTF8 not defined" error eliminated.
...@@ -148,6 +148,9 @@ ...@@ -148,6 +148,9 @@
* 2024-02-04 Eric Oulashin Version 1.95b * 2024-02-04 Eric Oulashin Version 1.95b
* Bug fix: Use the P_UTF8 mode bit when printing UTF-8 message header info (such as 'from' and 'to'). * Bug fix: Use the P_UTF8 mode bit when printing UTF-8 message header info (such as 'from' and 'to').
* A dd_lightbar_menu.js update goes along with this. * A dd_lightbar_menu.js update goes along with this.
* 2024- Eric Oulashin Version 1.95c
* The filename of quotes.txt is now in the correct case for the user's editor.
* "terminalSupportsUTF8 not defined" error eliminated.
*/ */
   
"use strict"; "use strict";
...@@ -252,8 +255,8 @@ var ansiterm = require("ansiterm_lib.js", 'expand_ctrl_a'); ...@@ -252,8 +255,8 @@ var ansiterm = require("ansiterm_lib.js", 'expand_ctrl_a');
var hexdump = load('hexdump_lib.js'); var hexdump = load('hexdump_lib.js');
   
// Reader version information // Reader version information
var READER_VERSION = "1.95b"; var READER_VERSION = "1.95c";
var READER_DATE = "2024-02-04"; var READER_DATE = "2024-02-15";
   
// Keyboard key codes for displaying on the screen // Keyboard key codes for displaying on the screen
var UP_ARROW = ascii(24); var UP_ARROW = ascii(24);
...@@ -4760,7 +4763,50 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet ...@@ -4760,7 +4763,50 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet
var msgIsUTF8 = pMsgHeader.hasOwnProperty("is_utf8") && pMsgHeader.is_utf8; var msgIsUTF8 = pMsgHeader.hasOwnProperty("is_utf8") && pMsgHeader.is_utf8;
if (msgIsUTF8) if (msgIsUTF8)
{ {
if (!userConsoleSupportsUTF8) if (userConsoleSupportsUTF8)
{
//fromName = sbbsifyStr(fromName);
// Temporary
/*
var fieldNew = "";
for (var fieldI = 0; fieldI < fromName.length; ++fieldI)
{
// Credit to Deuce for this code (this was seen in fseditor.js)
var encoded = utf8_encode(fromName[fieldI].charCodeAt(0));
for (var encodedI = 0; encodedI < encoded.length; ++encodedI)
fieldNew += encoded[encodedI];
}
fromName = fieldNew;
*/
/*
// Temporary
if (user.is_sysop)
{
var curPos = console.getxy();
if (fromName[0] == "D")
{
for (var tmpI = 0; tmpI < fromName.length; ++tmpI)
{
console.gotoxy(1, 1);
var debugMsg = tmpI + ": " + fromName[tmpI] + " ASCII: " + str_is_ascii(fromName[tmpI]) + " ";
console.print(debugMsg, P_UTF8);
mswait(500);
}
}
console.gotoxy(curPos);
}
// End Temporary
*/
/*
var printedLen = console.strlen(fromName, P_UTF8);
if (fromName.length > printedLen)
{
fromName += format("%*s", fromName.length - printedLen, "");
}
*/
}
else
{ {
fromName = utf8_cp437(fromName); fromName = utf8_cp437(fromName);
toName = utf8_cp437(toName); toName = utf8_cp437(toName);
...@@ -4801,6 +4847,35 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet ...@@ -4801,6 +4847,35 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet
else if (msgHdrHasAttachmentFlag(pMsgHeader)) else if (msgHdrHasAttachmentFlag(pMsgHeader))
msgIndicatorChar = "\x01n" + this.colors.selectedMsgMarkColor + this.colors.msgListHighlightBkgColor + this.msgListStatusChars.attachments + "\x01n"; msgIndicatorChar = "\x01n" + this.colors.selectedMsgMarkColor + this.colors.msgListHighlightBkgColor + this.msgListStatusChars.attachments + "\x01n";
   
// TODO: Handle UTF-8 in the header fields
/*
var fromNameForItemStr = fromName.substr(0, this.FROM_LEN);
var toNameForItemStr = toName.substr(0, this.TO_LEN);
var subjectForItemStr = subject.substr(0, this.SUBJ_LEN);
if (msgIsUTF8 && userConsoleSupportsUTF8)
{
var printedLen = console.strlen(fromNameForItemStr, P_UTF8);
fromNameForItemStr = fromNameForItemStr.length + "; " + printedLen;
if (fromNameForItemStr.length > printedLen)
{
//fromNameForItemStr += format("%*s", fromNameForItemStr.length - printedLen, "");
}
}
if (this.showScoresInMsgList)
{
msgHdrStr += format(this.sMsgInfoFormatHighlightStr, msgNum, msgIndicatorChar,
fromNameForItemStr, toNameForItemStr, subjectForItemStr,
msgVoteInfo.voteScore, sDate, sTime);
}
else
{
msgHdrStr += format(this.sMsgInfoFormatHighlightStr, msgNum, msgIndicatorChar,
fromNameForItemStr, toNameForItemStr, subjectForItemStr,
sDate, sTime);
}
*/
if (this.showScoresInMsgList) if (this.showScoresInMsgList)
{ {
msgHdrStr += format(this.sMsgInfoFormatHighlightStr, msgNum, msgIndicatorChar, msgHdrStr += format(this.sMsgInfoFormatHighlightStr, msgNum, msgIndicatorChar,
...@@ -4847,6 +4922,45 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet ...@@ -4847,6 +4922,45 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet
else else
formatStr = (msgToUser ? this.sMsgInfoToUserFormatStr : (msgIsFromUser ? this.sMsgInfoFromUserFormatStr : this.sMsgInfoFormatStr)); formatStr = (msgToUser ? this.sMsgInfoToUserFormatStr : (msgIsFromUser ? this.sMsgInfoFromUserFormatStr : this.sMsgInfoFormatStr));
   
// TODO: Handle UTF-8 in the header fields
/*
// Deuce said:
// <Deuce> JS Strings are intended for each codepoint to be "one character" in the JS string.
// <Deuce> Synchronet does it differently though.
// <Deuce> If you want substr to work, you'll ned to convert from UTF-8 into a JS native string.
// <Deuce> But then it won't work with format().
// <Deuce> Passing a JS native string that has real unicode codepoints in it to a Synchronet function would corrupt the string in wild and wacky ways.
//var fromNameForItemStr = format("%-" + this.FROM_LEN + "s", fromName.substr(0, this.FROM_LEN));
var fromNameForItemStr = fromName.substr(0, this.FROM_LEN);
//if (fromNameForItemStr[0] == "D") fromNameForItemStr = str_is_ascii(fromNameForItemStr);
var toNameForItemStr = toName.substr(0, this.TO_LEN);
var subjectForItemStr = subject.substr(0, this.SUBJ_LEN);
if (msgIsUTF8 && userConsoleSupportsUTF8)
{
var printedLen = console.strlen(fromNameForItemStr, P_UTF8);
//fromNameForItemStr = fromNameForItemStr.length + "; " + printedLen;
if (fromNameForItemStr.length > printedLen)
{
// TODO: This isn't working
//fromNameForItemStr += format("%*s", fromNameForItemStr.length - printedLen, "");
//fromNameForItemStr = format("%-" + this.FROM_LEN + "s", fromName.substr(0, this.FROM_LEN));
fromNameForItemStr = utf8_decode(fromName).substr(0, this.FROM_LEN);
}
}
if (this.showScoresInMsgList)
{
msgHdrStr += format(formatStr, msgNum, msgIndicatorChar, fromNameForItemStr, toNameForItemStr, subjectForItemStr,
msgVoteInfo.voteScore, sDate, sTime);
}
else
{
msgHdrStr += format(formatStr, msgNum, msgIndicatorChar, fromNameForItemStr, toNameForItemStr, subjectForItemStr,
sDate, sTime);
}
*/
if (this.showScoresInMsgList) if (this.showScoresInMsgList)
{ {
msgHdrStr += format(formatStr, msgNum, msgIndicatorChar, fromName.substr(0, this.FROM_LEN), msgHdrStr += format(formatStr, msgNum, msgIndicatorChar, fromName.substr(0, this.FROM_LEN),
...@@ -4864,6 +4978,7 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet ...@@ -4864,6 +4978,7 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet
var returnStrInstead = (typeof(pReturnStrInstead) == "boolean" ? pReturnStrInstead : false); var returnStrInstead = (typeof(pReturnStrInstead) == "boolean" ? pReturnStrInstead : false);
if (!returnStrInstead) if (!returnStrInstead)
{ {
var terminalSupportsUTF8 = (typeof(USER_UTF8) != "undefined" ? console.term_supports(USER_UTF8) : false);
var printMode = (terminalSupportsUTF8 && hdrIsUTF8 ? P_UTF8 : P_NONE); var printMode = (terminalSupportsUTF8 && hdrIsUTF8 ? P_UTF8 : P_NONE);
console.print(msgHdrStr, printMode); console.print(msgHdrStr, printMode);
console.cleartoeol("\x01n"); // To clear away any extra text that may have been entered by the user console.cleartoeol("\x01n"); // To clear away any extra text that may have been entered by the user
...@@ -10975,8 +11090,14 @@ function DigDistMsgReader_ReplyToMsg(pMsgHdr, pMsgText, pPrivate, pMsgIdx) ...@@ -10975,8 +11090,14 @@ function DigDistMsgReader_ReplyToMsg(pMsgHdr, pMsgText, pPrivate, pMsgIdx)
// Get the user's setting for whether or not to wrap quote lines (and how long) from // Get the user's setting for whether or not to wrap quote lines (and how long) from
// their external editor settings // their external editor settings
var editorQuoteCfg = getExternalEditorQuoteWrapCfgFromSCFG(user.editor); var editorQuoteCfg = getExternalEditorQuoteWrapCfgFromSCFG(user.editor);
// Check for the drop file casing
var quotesFilename = "";
if (xtrn_area.editor[user.editor].settings & XTRN_LWRCASE)
quotesFilename = "quotes.txt";
else
quotesFilename = "QUOTES.TXT";
// Write the message text to the quotes file // Write the message text to the quotes file
quoteFile = new File(system.node_dir + "QUOTES.TXT"); quoteFile = new File(system.node_dir + quotesFilename);
if (quoteFile.open("w")) if (quoteFile.open("w"))
{ {
var msgNum = (typeof(pMsgIdx) === "number" ? pMsgIdx+1 : null); var msgNum = (typeof(pMsgIdx) === "number" ? pMsgIdx+1 : null);
...@@ -11580,9 +11701,26 @@ function DigDistMsgReader_DisplayEnhancedMsgHdr(pMsgHdr, pDisplayMsgNum, pStartS ...@@ -11580,9 +11701,26 @@ function DigDistMsgReader_DisplayEnhancedMsgHdr(pMsgHdr, pDisplayMsgNum, pStartS
for (var hdrFileIdx = 0; hdrFileIdx < enhHdrLines.length; ++hdrFileIdx) for (var hdrFileIdx = 0; hdrFileIdx < enhHdrLines.length; ++hdrFileIdx)
{ {
console.gotoxy(screenX, screenY++); console.gotoxy(screenX, screenY++);
// For Synchronet 3.20:
/*
<git_rswindell> From: Rob Swindell (on Windows 11)
<git_rswindell>
https://gitlab.synchro.net/main/sbbs/-/commit/90b93e4a1eb53532faca437a
<git_rswindell> Modified src/sbbs3/js_bbs.cpp
<git_rswindell> Support optional msg_header argument to bbs.expand_atcodes()
<git_rswindell> For Nightfox's use in DDMsgReader.
*/
//if (typeof(bbs.expand_atcodes) === "function")
if (false)
{
console.putmsg(enhHdrLines[hdrFileIdx], pMsgHdr);
}
else
{
console.putmsg(this.ParseMsgAtCodes(enhHdrLines[hdrFileIdx], pMsgHdr, console.putmsg(this.ParseMsgAtCodes(enhHdrLines[hdrFileIdx], pMsgHdr,
pDisplayMsgNum, dateTimeStr, useBBSLocalTimeZone, false), printMode); pDisplayMsgNum, dateTimeStr, useBBSLocalTimeZone, false), printMode);
} }
}
// Older - Used to center the header lines, but I'm not sure this is necessary, // Older - Used to center the header lines, but I'm not sure this is necessary,
// and it might even make the header off by one, which could be bad. // and it might even make the header off by one, which could be bad.
// Display the message header information. Make sure the header lines are // Display the message header information. Make sure the header lines are
...@@ -24430,7 +24568,6 @@ function entryExistsInGlobalEmailFilter(pEmailAddr) ...@@ -24430,7 +24568,6 @@ function entryExistsInGlobalEmailFilter(pEmailAddr)
return entryExists; return entryExists;
} }
   
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
   
// For debugging: Writes some text on the screen at a given location with a given pause. // For debugging: Writes some text on the screen at a given location with a given pause.
......
Digital Distortion Message Reader Digital Distortion Message Reader
Version 1.95b Version 1.95c
Release date: 2024-02-04 Release date: 2024-02-15
by by
...@@ -1290,7 +1290,7 @@ This is an example of the sub-board menu that appears in indexed mode - And from ...@@ -1290,7 +1290,7 @@ This is an example of the sub-board menu that appears in indexed mode - And from
here, the user can choose a sub-board to read: here, the user can choose a sub-board to read:
Description Total New Last Post Description Total New Last Post
─────────────────────────────────────────────────────────────────────────────── ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
AGN GEN - General Chat 1004 0 2023-04-02 AGN GEN - General Chat 1004 0 2023-04-02
AGN BBS - BBS Discussion 1000 0 2023-01-17 AGN BBS - BBS Discussion 1000 0 2023-01-17
NEW AGN ART - Art/Demo Scene 603 1 2023-04-02 NEW AGN ART - Art/Demo Scene 603 1 2023-04-02
...@@ -1299,7 +1299,7 @@ NEW AGN ART - Art/Demo Scene 603 1 2023-04-02 ...@@ -1299,7 +1299,7 @@ NEW AGN ART - Art/Demo Scene 603 1 2023-04-02
AGN L46 - League Scores & Recons 1000 0 2016-09-10 AGN L46 - League Scores & Recons 1000 0 2016-09-10
NEW AGN TST - Testing Setups 2086 10 2023-04-03 NEW AGN TST - Testing Setups 2086 10 2023-04-03
AGN SYS - Sysops Only 1000 0 2023-01-19 AGN SYS - Sysops Only 1000 0 2023-01-19
───── FIDO - FidoNet ────────────────────────────────────────────────────────── ��������������� FIDO - FidoNet ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
NEW BBS CARNIVAL - BBS Software Chatter 660 5 2023-04-04 NEW BBS CARNIVAL - BBS Software Chatter 660 5 2023-04-04
BBS INTERNET - DOS/Win/OS2/Unix Internet BBS Applicatio 18 0 2023-03-04 BBS INTERNET - DOS/Win/OS2/Unix Internet BBS Applicatio 18 0 2023-03-04
CHWARE - Cheepware Support/Discussion 111 0 2023-03-16 CHWARE - Cheepware Support/Discussion 111 0 2023-03-16
...@@ -1332,20 +1332,20 @@ added for a user will be preserved (DDMsgReader does a bitwise 'or'). ...@@ -1332,20 +1332,20 @@ added for a user will be preserved (DDMsgReader does a bitwise 'or').
A quick-validation set in CFG is a set that includes a security level, flag A quick-validation set in CFG is a set that includes a security level, flag
sets, exemptions, restrictions, and additional credits. For example: sets, exemptions, restrictions, and additional credits. For example:
╔[■][?]═══════════════════╗ ���[���][?]������������������������������������������������������������
Quick-Validation Values ��� Quick-Validation Values ���
╠═════════════════════════╣ ���������������������������������������������������������������������������������
?0 SL: 5 F1: ��� ?0 SL: 5 F1: ���
?1 SL: 10 F1: ��� ?1 SL: 10 F1: ���
?2 SL: 20 F1: ��� ?2 SL: 20 F1: ���
?3 SL: 30 F1: ��� ?3 SL: 30 F1: ���
?4 SL: 40 F1: ��� ?4 SL: 40 F1: ���
?5 SL: 50 F1: ��� ?5 SL: 50 F1: ���
?6 SL: 60 F1: ��� ?6 SL: 60 F1: ���
?7 SL: 70 F1: ��� ?7 SL: 70 F1: ���
?8 SL: 80 F1: ��� ?8 SL: 80 F1: ���
?9 SL: 90 F1: ��� ?9 SL: 90 F1: ���
╚═════════════════════════╝ ���������������������������������������������������������������������������������
9. Drop file for replying to messages with Synchronet message editors 9. Drop file for replying to messages with Synchronet message editors
......
...@@ -5,6 +5,9 @@ Revision History (change log) ...@@ -5,6 +5,9 @@ Revision History (change log)
============================= =============================
Version Date Description Version Date Description
------- ---- ----------- ------- ---- -----------
1.95c 2024-02-15 The filename of quotes.txt is now in the correct case for
the user's editor.
"terminalSupportsUTF8 not defined" error eliminated.
1.95b 2024-02-04 Bug fix: Use the P_UTF8 mode bit when printing UTF-8 1.95b 2024-02-04 Bug fix: Use the P_UTF8 mode bit when printing UTF-8
message header info (such as 'from' and 'to'). message header info (such as 'from' and 'to').
A dd_lightbar_menu.js update goes along with this. A dd_lightbar_menu.js update goes along with this.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment