Skip to content
Snippets Groups Projects
Commit e753615c 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 dff11247 f0836c6f
No related branches found
No related tags found
1 merge request!455Update branch with changes from master
......@@ -148,6 +148,9 @@
* 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').
* 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";
......@@ -252,8 +255,8 @@ var ansiterm = require("ansiterm_lib.js", 'expand_ctrl_a');
var hexdump = load('hexdump_lib.js');
 
// Reader version information
var READER_VERSION = "1.95b";
var READER_DATE = "2024-02-04";
var READER_VERSION = "1.95c";
var READER_DATE = "2024-02-15";
 
// Keyboard key codes for displaying on the screen
var UP_ARROW = ascii(24);
......@@ -4760,7 +4763,50 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet
var msgIsUTF8 = pMsgHeader.hasOwnProperty("is_utf8") && pMsgHeader.is_utf8;
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);
toName = utf8_cp437(toName);
......@@ -4801,6 +4847,35 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet
else if (msgHdrHasAttachmentFlag(pMsgHeader))
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)
{
msgHdrStr += format(this.sMsgInfoFormatHighlightStr, msgNum, msgIndicatorChar,
......@@ -4847,6 +4922,45 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet
else
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)
{
msgHdrStr += format(formatStr, msgNum, msgIndicatorChar, fromName.substr(0, this.FROM_LEN),
......@@ -4864,6 +4978,7 @@ function DigDistMsgReader_PrintMessageInfo(pMsgHeader, pHighlight, pMsgNum, pRet
var returnStrInstead = (typeof(pReturnStrInstead) == "boolean" ? pReturnStrInstead : false);
if (!returnStrInstead)
{
var terminalSupportsUTF8 = (typeof(USER_UTF8) != "undefined" ? console.term_supports(USER_UTF8) : false);
var printMode = (terminalSupportsUTF8 && hdrIsUTF8 ? P_UTF8 : P_NONE);
console.print(msgHdrStr, printMode);
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)
// Get the user's setting for whether or not to wrap quote lines (and how long) from
// their external editor settings
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
quoteFile = new File(system.node_dir + "QUOTES.TXT");
quoteFile = new File(system.node_dir + quotesFilename);
if (quoteFile.open("w"))
{
var msgNum = (typeof(pMsgIdx) === "number" ? pMsgIdx+1 : null);
......@@ -11580,8 +11701,25 @@ function DigDistMsgReader_DisplayEnhancedMsgHdr(pMsgHdr, pDisplayMsgNum, pStartS
for (var hdrFileIdx = 0; hdrFileIdx < enhHdrLines.length; ++hdrFileIdx)
{
console.gotoxy(screenX, screenY++);
console.putmsg(this.ParseMsgAtCodes(enhHdrLines[hdrFileIdx], pMsgHdr,
pDisplayMsgNum, dateTimeStr, useBBSLocalTimeZone, false), printMode);
// 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,
pDisplayMsgNum, dateTimeStr, useBBSLocalTimeZone, false), printMode);
}
}
// 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.
......@@ -24430,7 +24568,6 @@ function entryExistsInGlobalEmailFilter(pEmailAddr)
return entryExists;
}
 
///////////////////////////////////////////////////////////////////////////////////
 
// For debugging: Writes some text on the screen at a given location with a given pause.
......
Digital Distortion Message Reader
Version 1.95b
Release date: 2024-02-04
Version 1.95c
Release date: 2024-02-15
by
......@@ -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:
Description Total New Last Post
───────────────────────────────────────────────────────────────────────────────
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
AGN GEN - General Chat 1004 0 2023-04-02
AGN BBS - BBS Discussion 1000 0 2023-01-17
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
NEW AGN TST - Testing Setups 2086 10 2023-04-03
AGN SYS - Sysops Only 1000 0 2023-01-19
───── FIDO - FidoNet ──────────────────────────────────────────────────────────
��������������� FIDO - FidoNet ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
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
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').
A quick-validation set in CFG is a set that includes a security level, flag
sets, exemptions, restrictions, and additional credits. For example:
╔[■][?]═══════════════════╗
Quick-Validation Values
╠═════════════════════════╣
?0 SL: 5 F1:
?1 SL: 10 F1:
?2 SL: 20 F1:
?3 SL: 30 F1:
?4 SL: 40 F1:
?5 SL: 50 F1:
?6 SL: 60 F1:
?7 SL: 70 F1:
?8 SL: 80 F1:
?9 SL: 90 F1:
╚═════════════════════════╝
���[���][?]������������������������������������������������������������
��� Quick-Validation Values ���
���������������������������������������������������������������������������������
��� ?0 SL: 5 F1: ���
��� ?1 SL: 10 F1: ���
��� ?2 SL: 20 F1: ���
��� ?3 SL: 30 F1: ���
��� ?4 SL: 40 F1: ���
��� ?5 SL: 50 F1: ���
��� ?6 SL: 60 F1: ���
��� ?7 SL: 70 F1: ���
��� ?8 SL: 80 F1: ���
��� ?9 SL: 90 F1: ���
���������������������������������������������������������������������������������
9. Drop file for replying to messages with Synchronet message editors
......
......@@ -5,6 +5,9 @@ Revision History (change log)
=============================
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
message header info (such as 'from' and 'to').
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.
Finish editing this message first!
Please register or to comment