A33 final
This commit is contained in:
parent
4ef405c6d6
commit
3d5bef88b1
|
@ -471,8 +471,8 @@ Begin
|
||||||
Form.AddBol ('B', ' Bases in Group List', 6, 10, 29, 10, 21, 3, @Config.MShowBases, Topic + 'Calculate bases in group list?');
|
Form.AddBol ('B', ' Bases in Group List', 6, 10, 29, 10, 21, 3, @Config.MShowBases, Topic + 'Calculate bases in group list?');
|
||||||
Form.AddByte ('X', ' Max AutoSig Lines', 8, 11, 29, 11, 19, 3, 1, 99, @Config.MaxAutoSig, Topic + 'Max autosig lines');
|
Form.AddByte ('X', ' Max AutoSig Lines', 8, 11, 29, 11, 19, 3, 1, 99, @Config.MaxAutoSig, Topic + 'Max autosig lines');
|
||||||
Form.AddBol ('S', ' Force NL Match', 11, 12, 29, 12, 16, 3, @Config.ForceNodeList, Topic + 'Force nodelist lookup match when sending netmail?');
|
Form.AddBol ('S', ' Force NL Match', 11, 12, 29, 12, 16, 3, @Config.ForceNodeList, Topic + 'Force nodelist lookup match when sending netmail?');
|
||||||
Form.AddStr ('R', ' Crosspost ACS', 12, 13, 29, 13, 15, 20, 30, @Config.AcsCrossPost, Topic + 'ACS to allow crosspost messages');
|
Form.AddStr ('R', ' Ext Reply ACS', 12, 13, 29, 13, 15, 20, 30, @Config.AcsExtReply, Topic + 'ACS: Allow users to select reply base');
|
||||||
Form.AddStr ('A', ' Attachment ACS', 11, 14, 29, 14, 16, 20, 30, @Config.AcsFileAttach, Topic + 'ACS to allow file attachments');
|
Form.AddStr ('A', ' Attachment ACS', 11, 14, 29, 14, 16, 20, 30, @Config.AcsFileAttach, Topic + 'ACS: Allow file attachments');
|
||||||
Form.AddBol ('T', ' External FSE', 13, 15, 29, 15, 14, 3, @Config.FSEditor, Topic + 'Use external editor');
|
Form.AddBol ('T', ' External FSE', 13, 15, 29, 15, 14, 3, @Config.FSEditor, Topic + 'Use external editor');
|
||||||
Form.AddStr ('F', ' FSE Command Line', 9, 16, 29, 16, 18, 40, 60, @Config.FSCommand, Topic + 'FSE command line');
|
Form.AddStr ('F', ' FSE Command Line', 9, 16, 29, 16, 18, 40, 60, @Config.FSCommand, Topic + 'FSE command line');
|
||||||
Form.AddStr ('D', ' Default Origin', 11, 17, 29, 17, 16, 40, 50, @Config.Origin, Topic + 'Origin line for new bases');
|
Form.AddStr ('D', ' Default Origin', 11, 17, 29, 17, 16, 40, 50, @Config.Origin, Topic + 'Origin line for new bases');
|
||||||
|
|
|
@ -44,6 +44,8 @@ Type
|
||||||
Done : Boolean;
|
Done : Boolean;
|
||||||
Subject : String;
|
Subject : String;
|
||||||
Template : String;
|
Template : String;
|
||||||
|
MaxMsgLines : Word;
|
||||||
|
MaxMsgCols : Byte;
|
||||||
|
|
||||||
Constructor Create (Var O: Pointer; TemplateFile: String);
|
Constructor Create (Var O: Pointer; TemplateFile: String);
|
||||||
Destructor Destroy; Override;
|
Destructor Destroy; Override;
|
||||||
|
@ -118,6 +120,8 @@ Begin
|
||||||
CutPasted := False;
|
CutPasted := False;
|
||||||
CutTextPos := 0;
|
CutTextPos := 0;
|
||||||
Template := TemplateFile;
|
Template := TemplateFile;
|
||||||
|
MaxMsgLines := mysMaxMsgLines;
|
||||||
|
MaxMsgCols := 79;
|
||||||
|
|
||||||
FillChar (CutText, SizeOf(CutText), 0);
|
FillChar (CutText, SizeOf(CutText), 0);
|
||||||
End;
|
End;
|
||||||
|
@ -156,7 +160,7 @@ End;
|
||||||
|
|
||||||
Procedure TEditorANSI.FindLastLine;
|
Procedure TEditorANSI.FindLastLine;
|
||||||
Begin
|
Begin
|
||||||
LastLine := mysMaxMsgLines;
|
LastLine := MaxMsgLines;
|
||||||
|
|
||||||
While (LastLine > 1) And IsBlankLine(ANSI.Data[LastLine], 80) Do
|
While (LastLine > 1) And IsBlankLine(ANSI.Data[LastLine], 80) Do
|
||||||
Dec(LastLine);
|
Dec(LastLine);
|
||||||
|
@ -226,10 +230,10 @@ Procedure TEditorANSI.DeleteLine (Line: LongInt);
|
||||||
Var
|
Var
|
||||||
Count : LongInt;
|
Count : LongInt;
|
||||||
Begin
|
Begin
|
||||||
For Count := Line to mysMaxMsgLines - 1 Do
|
For Count := Line to MaxMsgLines - 1 Do
|
||||||
ANSI.Data[Count] := ANSI.Data[Count + 1];
|
ANSI.Data[Count] := ANSI.Data[Count + 1];
|
||||||
|
|
||||||
FillChar (ANSI.Data[mysMaxMsgLines], SizeOf(RecAnsiBufferLine), #0);
|
FillChar (ANSI.Data[MaxMsgLines], SizeOf(RecAnsiBufferLine), #0);
|
||||||
|
|
||||||
If LastLine > 1 Then Dec(LastLine);
|
If LastLine > 1 Then Dec(LastLine);
|
||||||
End;
|
End;
|
||||||
|
@ -238,12 +242,12 @@ Procedure TEditorANSI.InsertLine (Line: LongInt);
|
||||||
Var
|
Var
|
||||||
Count : LongInt;
|
Count : LongInt;
|
||||||
Begin
|
Begin
|
||||||
For Count := mysMaxMsgLines DownTo Line + 1 Do
|
For Count := MaxMsgLines DownTo Line + 1 Do
|
||||||
ANSI.Data[Count] := ANSI.Data[Count - 1];
|
ANSI.Data[Count] := ANSI.Data[Count - 1];
|
||||||
|
|
||||||
FillChar(ANSI.Data[Line], SizeOf(RecAnsiBufferLine), #0);
|
FillChar(ANSI.Data[Line], SizeOf(RecAnsiBufferLine), #0);
|
||||||
|
|
||||||
If LastLine < mysMaxMsgLines Then Inc(LastLine);
|
If LastLine < MaxMsgLines Then Inc(LastLine);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TEditorANSI.GetWrapPos (Var Line; LineSize: Byte; WrapPos: Byte) : Byte;
|
Function TEditorANSI.GetWrapPos (Var Line; LineSize: Byte; WrapPos: Byte) : Byte;
|
||||||
|
@ -305,7 +309,7 @@ Begin
|
||||||
StartY := CurY;
|
StartY := CurY;
|
||||||
StartLine := Count;
|
StartLine := Count;
|
||||||
|
|
||||||
While Count <= mysMaxMsgLines Do Begin
|
While Count <= MaxMsgLines Do Begin
|
||||||
If Count > LastLine Then LastLine := Count;
|
If Count > LastLine Then LastLine := Count;
|
||||||
|
|
||||||
FillChar (TempStr, SizeOf(TempStr), #0);
|
FillChar (TempStr, SizeOf(TempStr), #0);
|
||||||
|
@ -315,7 +319,7 @@ Begin
|
||||||
If IsBlankLine(TempStr, 255) Then Begin
|
If IsBlankLine(TempStr, 255) Then Begin
|
||||||
If Count < LastLine Then Begin
|
If Count < LastLine Then Begin
|
||||||
InsertLine(Count);
|
InsertLine(Count);
|
||||||
EndLine := mysMaxMsgLines;
|
EndLine := MaxMsgLines;
|
||||||
End Else
|
End Else
|
||||||
EndLine := Count;
|
EndLine := Count;
|
||||||
|
|
||||||
|
@ -397,7 +401,7 @@ Begin
|
||||||
Session.io.OutFile (Template, True, 0);
|
Session.io.OutFile (Template, True, 0);
|
||||||
|
|
||||||
WinX1 := 1;
|
WinX1 := 1;
|
||||||
WinX2 := 79;
|
WinX2 := MaxMsgCols; //79
|
||||||
// WinX1 := Session.io.ScreenInfo[1].X;
|
// WinX1 := Session.io.ScreenInfo[1].X;
|
||||||
// WinX2 := Session.io.ScreenInfo[2].X;
|
// WinX2 := Session.io.ScreenInfo[2].X;
|
||||||
WinY1 := Session.io.ScreenInfo[1].Y;
|
WinY1 := Session.io.ScreenInfo[1].Y;
|
||||||
|
@ -405,6 +409,7 @@ Begin
|
||||||
|
|
||||||
WinSize := WinY2 - WinY1 + 1;
|
WinSize := WinY2 - WinY1 + 1;
|
||||||
RowSize := WinX2 - WinX1 + 1;
|
RowSize := WinX2 - WinX1 + 1;
|
||||||
|
// if rowsize > msgmaxcols then rowsize := maxmsgcols;
|
||||||
ClearEOL := RowSize >= 79;
|
ClearEOL := RowSize >= 79;
|
||||||
|
|
||||||
If Reset Then Begin
|
If Reset Then Begin
|
||||||
|
@ -508,7 +513,7 @@ Var
|
||||||
Begin
|
Begin
|
||||||
NewTop := TopLine + (WinSize DIV 2) + 1;
|
NewTop := TopLine + (WinSize DIV 2) + 1;
|
||||||
|
|
||||||
While NewTop >= mysMaxMsgLines Do
|
While NewTop >= MaxMsgLines Do
|
||||||
Dec (NewTop, 2);
|
Dec (NewTop, 2);
|
||||||
|
|
||||||
CurY := CurLine - NewTop + 1;
|
CurY := CurLine - NewTop + 1;
|
||||||
|
@ -543,7 +548,7 @@ Begin
|
||||||
Result := False;
|
Result := False;
|
||||||
|
|
||||||
If CurLine >= LastLine Then Exit;
|
If CurLine >= LastLine Then Exit;
|
||||||
// If CurLine >= mysMaxMsgLines Then Exit;
|
// If CurLine >= MaxMsgLines Then Exit;
|
||||||
|
|
||||||
Inc (CurLine);
|
Inc (CurLine);
|
||||||
Inc (CurY);
|
Inc (CurY);
|
||||||
|
@ -585,7 +590,8 @@ Begin
|
||||||
TBBSCore(Owner).io.AnsiClrEOL;
|
TBBSCore(Owner).io.AnsiClrEOL;
|
||||||
End Else Begin
|
End Else Begin
|
||||||
TBBSCore(Owner).io.AnsiColor (7);
|
TBBSCore(Owner).io.AnsiColor (7);
|
||||||
TBBSCore(Owner).io.BufAddStr (strRep(' ', LineLen - RowSize));
|
TBBSCore(Owner).io.BufAddStr (strRep(' ', RowSize - LineLen));
|
||||||
|
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -776,7 +782,7 @@ Procedure TEditorANSI.DoEnter;
|
||||||
Var
|
Var
|
||||||
TempLine : RecAnsiBufferLine;
|
TempLine : RecAnsiBufferLine;
|
||||||
Begin
|
Begin
|
||||||
If InsertMode and IsBlankLine(ANSI.Data[mysMaxMsgLines], 80) Then Begin
|
If InsertMode and IsBlankLine(ANSI.Data[MaxMsgLines], 80) Then Begin
|
||||||
If CurX > CurLength Then Begin
|
If CurX > CurLength Then Begin
|
||||||
InsertLine (CurLine + 1);
|
InsertLine (CurLine + 1);
|
||||||
|
|
||||||
|
@ -855,7 +861,7 @@ Begin
|
||||||
If Finish = 0 Then Finish := Start;
|
If Finish = 0 Then Finish := Start;
|
||||||
|
|
||||||
For NumLines := Start to Finish Do Begin
|
For NumLines := Start to Finish Do Begin
|
||||||
If LastLine = mysMaxMsgLines Then Break;
|
If LastLine = MaxMsgLines Then Break;
|
||||||
|
|
||||||
If Not IsBlankLine(Ansi.Data[CurLine], 80) Then Begin
|
If Not IsBlankLine(Ansi.Data[CurLine], 80) Then Begin
|
||||||
Inc (CurLine);
|
Inc (CurLine);
|
||||||
|
@ -872,7 +878,7 @@ Begin
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
If CurLine < mysMaxMsgLines Then Begin
|
If CurLine < MaxMsgLines Then Begin
|
||||||
Inc (CurLine);
|
Inc (CurLine);
|
||||||
Inc (CurY);
|
Inc (CurY);
|
||||||
|
|
||||||
|
@ -1071,7 +1077,7 @@ Begin
|
||||||
End Else
|
End Else
|
||||||
Case Ch of
|
Case Ch of
|
||||||
#27 : Break;
|
#27 : Break;
|
||||||
#13 : If (LastLine < mysMaxMsgLines) and (Not NoMore) Then Begin
|
#13 : If (LastLine < MaxMsgLines) and (Not NoMore) Then Begin
|
||||||
|
|
||||||
If QuoteTopPage + QuoteCurLine = QuoteLines Then NoMore := True;
|
If QuoteTopPage + QuoteCurLine = QuoteLines Then NoMore := True;
|
||||||
|
|
||||||
|
@ -1107,7 +1113,7 @@ Begin
|
||||||
|
|
||||||
Session.io.OutFull('|16');
|
Session.io.OutFull('|16');
|
||||||
|
|
||||||
If CurLine < mysMaxMsgLines Then Begin
|
If CurLine < MaxMsgLines Then Begin
|
||||||
Inc (CurLine);
|
Inc (CurLine);
|
||||||
Inc (CurY);
|
Inc (CurY);
|
||||||
|
|
||||||
|
@ -1367,7 +1373,7 @@ Begin
|
||||||
CutPasted := True;
|
CutPasted := True;
|
||||||
|
|
||||||
For Count := CutTextPos DownTo 1 Do
|
For Count := CutTextPos DownTo 1 Do
|
||||||
If LastLine < mysMaxMsgLines Then Begin
|
If LastLine < MaxMsgLines Then Begin
|
||||||
InsertLine(CurLine);
|
InsertLine(CurLine);
|
||||||
|
|
||||||
ANSI.Data[CurLine] := CutText[Count];
|
ANSI.Data[CurLine] := CutText[Count];
|
||||||
|
|
|
@ -60,7 +60,10 @@ Var
|
||||||
Begin
|
Begin
|
||||||
Editor := TEditorANSI.Create(Pointer(Session), Template);
|
Editor := TEditorANSI.Create(Pointer(Session), Template);
|
||||||
|
|
||||||
|
Editor.Forced := Forced;
|
||||||
Editor.Subject := Subj;
|
Editor.Subject := Subj;
|
||||||
|
Editor.MaxMsgLines := MaxLines;
|
||||||
|
Editor.MaxMsgCols := WrapPos;
|
||||||
|
|
||||||
For Count := 1 to Lines Do
|
For Count := 1 to Lines Do
|
||||||
Editor.SetLineText (Count, Session.Msgs.MsgText[Count]);
|
Editor.SetLineText (Count, Session.Msgs.MsgText[Count]);
|
||||||
|
|
|
@ -2144,7 +2144,7 @@ Var
|
||||||
FillSize : Byte;
|
FillSize : Byte;
|
||||||
Attr : Byte;
|
Attr : Byte;
|
||||||
Begin
|
Begin
|
||||||
// Attr := Screen.TextAttr;
|
Attr := Screen.TextAttr;
|
||||||
|
|
||||||
Screen.TextAttr := 0; // kludge to force it to return full ansi codes
|
Screen.TextAttr := 0; // kludge to force it to return full ansi codes
|
||||||
|
|
||||||
|
|
|
@ -1183,7 +1183,7 @@ Var
|
||||||
Begin
|
Begin
|
||||||
ReplyBase := MBase;
|
ReplyBase := MBase;
|
||||||
|
|
||||||
If Not Email Then Begin
|
If Not Email And Session.User.Access(Config.AcsExtReply) Then Begin
|
||||||
Session.io.PromptInfo[1] := MBase.Name;
|
Session.io.PromptInfo[1] := MBase.Name;
|
||||||
Session.io.PromptInfo[2] := MsgBase^.GetFrom;
|
Session.io.PromptInfo[2] := MsgBase^.GetFrom;
|
||||||
Session.io.PromptInfo[3] := MsgBase^.GetSubj;
|
Session.io.PromptInfo[3] := MsgBase^.GetSubj;
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
; For rootpath, you need to include the directory where the MYSTIC binary
|
; For rootpath, you need to include the directory where the MYSTIC binary
|
||||||
; exists.
|
; exists.
|
||||||
|
|
||||||
rootpath = \dev\code\mystic\
|
rootpath = c:\mystic\
|
||||||
username = g00r00
|
username = guest
|
||||||
password = asdf
|
password = guest
|
||||||
|
|
||||||
|
|
|
@ -240,7 +240,7 @@ Type
|
||||||
ColorTear : Byte;
|
ColorTear : Byte;
|
||||||
ColorOrigin : Byte;
|
ColorOrigin : Byte;
|
||||||
ColorKludge : Byte;
|
ColorKludge : Byte;
|
||||||
AcsCrossPost : String[mysMaxAcsSize];
|
AcsExtReply : String[mysMaxAcsSize];
|
||||||
AcsFileAttach : String[mysMaxAcsSize];
|
AcsFileAttach : String[mysMaxAcsSize];
|
||||||
AcsNodeLookup : String[mysMaxAcsSize];
|
AcsNodeLookup : String[mysMaxAcsSize];
|
||||||
FSEditor : Boolean;
|
FSEditor : Boolean;
|
||||||
|
|
|
@ -8,6 +8,7 @@ design elements/issues.
|
||||||
BUGS AND POSSIBLE ISSUES
|
BUGS AND POSSIBLE ISSUES
|
||||||
========================
|
========================
|
||||||
|
|
||||||
|
! check forced messages in new fs editor might not be enforced.
|
||||||
! Weird console slowdown with test.txt in Win7 use MVIEW to test
|
! Weird console slowdown with test.txt in Win7 use MVIEW to test
|
||||||
! GE option 32 (change def protocol) might be broken
|
! GE option 32 (change def protocol) might be broken
|
||||||
! Node chat goes haywire at 1000 lines scrollback
|
! Node chat goes haywire at 1000 lines scrollback
|
||||||
|
@ -26,6 +27,9 @@ BUGS AND POSSIBLE ISSUES
|
||||||
FUTURE / IDEAS / WORK IN PROGRESS / NOTES
|
FUTURE / IDEAS / WORK IN PROGRESS / NOTES
|
||||||
=========================================
|
=========================================
|
||||||
|
|
||||||
|
- redo voting booth externalize user storage and allow unlimited questions
|
||||||
|
plus maybe categories. or at least up it to like 50 questions or
|
||||||
|
something and also add in the "created" date to the voting question itself
|
||||||
- Fix up new FS editor to use passed template and editor contraints.
|
- Fix up new FS editor to use passed template and editor contraints.
|
||||||
- Test with file description editor.
|
- Test with file description editor.
|
||||||
- ACS to allow "selecable reply base"
|
- ACS to allow "selecable reply base"
|
||||||
|
|
|
@ -3275,8 +3275,10 @@
|
||||||
|
|
||||||
+ FTP server now has the option to allow passive data transfers or not, and
|
+ FTP server now has the option to allow passive data transfers or not, and
|
||||||
this has replaced the "Allow Anonymous" which does not exist at this time.
|
this has replaced the "Allow Anonymous" which does not exist at this time.
|
||||||
Please review your configuration. If you or users have issues with passive
|
PLEASE REVIEW YOUR CONFIGURATION. If you or users have issues with passive
|
||||||
turn it off. The default should set it to off now.
|
turn it off or review the network interface setting (see below).
|
||||||
|
|
||||||
|
The default should set it to off now.
|
||||||
|
|
||||||
+ When editing a posted message, Mystic now allows the option to set the
|
+ When editing a posted message, Mystic now allows the option to set the
|
||||||
echomail "sent" flag. Prompt #296 has been updated for this new option. A
|
echomail "sent" flag. Prompt #296 has been updated for this new option. A
|
||||||
|
@ -3336,4 +3338,28 @@
|
||||||
! Fixed a rare bug that could ocassionally cause some strange behavior
|
! Fixed a rare bug that could ocassionally cause some strange behavior
|
||||||
during global new scans IF a message was moved.
|
during global new scans IF a message was moved.
|
||||||
|
|
||||||
|
! The new FS editor wasn't correctly handling the parameters passed to it
|
||||||
|
via MPL and some other areas (like editing file descriptions). This has
|
||||||
|
been fixed. It can do SO much more than it does now, but its going to
|
||||||
|
require a revamp to the editor template files. More on that later.
|
||||||
|
|
||||||
|
+ The "Crosspost ACS" value in the configuration has been renamed as the
|
||||||
|
"Extended Reply ACS". If this value is met for a user, Mystic will allow
|
||||||
|
the user to select the message base which the reply will go to. ALPHAS:
|
||||||
|
YOU MUST REVIEW THIS SETTING BECAUSE IT WILL BE S255 BY DEFAULT NOW.
|
||||||
|
|
||||||
|
Crossposting is already allowed because once you post a message you can
|
||||||
|
forward it to other message bases if you are the "owner" of that message,
|
||||||
|
which is basically the same outcome. This ACS was unused and useless so
|
||||||
|
its now changed to a more appropriate "Extended Reply ACS".
|
||||||
|
|
||||||
|
+ Mystic has been ported to ARM Linux (aka Raspberry Pi). There is still
|
||||||
|
one issue with MIS and FIDOPOLL so I am not releasing a complete install
|
||||||
|
for A33, but once that is sorted out I will do an installable release.
|
||||||
|
|
||||||
|
In the meantime, you can certainly compile the code now and run it. It
|
||||||
|
runs suprisingly well once you get the console setup correctly. However,
|
||||||
|
until the issue with MIS is solved you will have to use inetxd or similar
|
||||||
|
for your telnet server.
|
||||||
|
|
||||||
<ALPHA 33 RELEASED>
|
<ALPHA 33 RELEASED>
|
||||||
|
|
Loading…
Reference in New Issue