This commit is contained in:
mysticbbs 2013-03-14 14:14:46 -04:00
parent 8848692e9e
commit bce753be2b
8 changed files with 176 additions and 21 deletions

View File

@ -735,12 +735,10 @@ Var
Procedure DrawItem;
Begin
If ItemY >= Session.User.ThisUser.ScreenSize {24} Then Begin
If ItemY >= Session.User.ThisUser.ScreenSize Then Begin
Session.io.OutRawLn('');
//ItemY := Session.User.ThisUser.ScreenSize - 1;
Dec (ItemY);
ItemY := Session.User.ThisUser.ScreenSize - 1;
End;
If Data.Item[CurItem]^.TextLo <> '' Then Begin

View File

@ -1613,6 +1613,8 @@ Var
Var
NetAddr : RecEchoMailAddr;
Begin
FillChar (Session.io.PromptInfo, SizeOf(Session.io.PromptInfo), 0);
Session.io.PromptInfo[1] := MsgBase^.GetFrom;
If MBase.NetType = 3 Then Begin
@ -1644,6 +1646,8 @@ Var
If MsgBase^.IsSent Then Session.io.PromptInfo[9] := Session.io.PromptInfo[9] + ' ' + strWordGet(4, TempStr, ',');
If MsgBase^.IsRcvd Then Session.io.PromptInfo[9] := Session.io.PromptInfo[9] + ' ' + strWordGet(6, TempStr, ',');
If MsgBase^.IsDeleted Then Session.io.PromptInfo[9] := Session.io.PromptInfo[9] + ' ' + strWordGet(5, TempStr, ',');
Session.io.PromptInfo[9] := strStripB(Session.io.PromptInfo[9], ' ');
End;
Procedure Send_Msg_Text (Str : String);
@ -1869,7 +1873,11 @@ Var
'H' : Begin
LastRead := CurMsg - 1;
Session.io.PromptInfo[1] := strI2S(LastRead);
Session.io.OutFullLn(Session.GetPrompt(504));
Break;
End;
'I' : Begin
LastRead := MsgBase^.GetHighMsgNum;
@ -2235,6 +2243,7 @@ Var
Inc (PagePos)
Else Begin
MsgBase^.SeekFirst(MsgInfo[PageTotal].Num);
If Read_Page(False, False, False) Then PagePos := 1;
End;
End;
@ -2338,9 +2347,15 @@ Var
If Session.io.NoFile Then Begin
Session.io.OutFullLn ('|CL|03From : |14|$R40|&1 |03Msg # : |14|&5 |03of |14|&6');
Session.io.OutFullLn ('|03To : |10|$R40|&2 |03Date : |11|&4 |&0');
Session.io.OutFullLn ('|03Subj : |12|$R40|&3 |03Refer to : |10|&7');
Session.io.OutFullLn ('|03Stat : |13|$R40|&9 |03See Also : |12|&8');
(*
Session.io.OutFullLn ('|03To : |10|$R40|&2 |03Refer to : |10|&7');
Session.io.OutFullLn ('|03Subj : |12|$R40|&3 |03See Also : |12|&8');
Session.io.OutFullLn ('|03Date : |11|&4 |$R31|&0 |03Status : |13|&9');
Session.io.OutFullLn ('|03Stat : |13|$R40|&9 |03Date : |11|&4 |&0');
*)
Session.io.OutFullLn ('|03Base : |14|MB|CR');
End;
@ -2438,6 +2453,8 @@ Var
'H' : Begin
LastRead := MsgBase^.GetMsgNum - 1;
Session.io.PromptInfo[1] := strI2S(LastRead);
Session.io.OutFullLn(Session.GetPrompt(505));
Break;

View File

@ -317,6 +317,7 @@ Begin
End;
End;
(*
Procedure TMsgBaseAnsi.ProcessChar (Ch: Char);
Begin
If GotPipe Then Begin
@ -353,9 +354,9 @@ Begin
#13 : CurX := 1;
#27 : Escape := 1;
Else
// If Ch = '|' Then
// GotPipe := True
// Else
If Ch = '|' Then
GotPipe := True
Else
AddChar (Ch);
ResetControlCode;
@ -375,6 +376,72 @@ Begin
LastChar := Ch;
End;
*)
Procedure TMsgBaseAnsi.ProcessChar (Ch: Char);
Procedure OneChar (C: Char);
Begin
Case Escape of
0 : Begin
Case C of
#0 : ;
#9 : MoveXY (CurX + 8, CurY);
#12 : GotClear := True;
#13 : CurX := 1;
#27 : Escape := 1;
Else
If C = '|' Then
GotPipe := True
Else
AddChar (C);
ResetControlCode;
End;
End;
1 : If C = '[' Then Begin
Escape := 2;
Code := '';
GotAnsi := True;
End Else
Escape := 0;
2 : CheckCode(C);
Else
ResetControlCode;
End;
LastChar := C;
End;
Begin
If GotPipe Then Begin
PipeCode := PipeCode + Ch;
If Length(PipeCode) = 2 Then Begin
If PipeCode = '00' Then
SetFore(0)
Else
Case strS2I(PipeCode) of
01..
15 : SetFore(strS2I(PipeCode));
16..
23 : SetBack(strS2I(PipeCode) - 16);
Else
AddChar('|');
OneChar(PipeCode[1]);
OneChar(PipeCode[2]);
End;
GotPipe := False;
PipeCode := '';
End;
Exit;
End;
OneChar (Ch);
End;
Function TMsgBaseAnsi.ProcessBuf (Var Buf; BufLen: Word) : Boolean;
Var

View File

@ -351,6 +351,7 @@ End;
Function TBBSUser.GetMatrixUser : Boolean;
Var
SavedNum : LongInt;
Str : String;
Begin
Result := False;
@ -361,9 +362,9 @@ Begin
Session.io.OutFull (Session.GetPrompt(273));
ThisUser.Handle := Session.io.GetInput(30, 30, 18, '');
Str := Session.io.GetInput(30, 30, 18, '');
If Not FindUser(ThisUser.Handle, True) Then Exit;
If Not FindUser(Str, True) Then Exit;
SavedNum := UserNum;
UserNum := -1;
@ -1177,6 +1178,7 @@ Procedure TBBSUser.UserLogon1 (Var MPE: String);
Var
A : Integer;
Count : Byte;
Str : String;
Begin
{$IFDEF LOGGING} Session.SystemLog('Logon1'); {$ENDIF}
@ -1254,13 +1256,13 @@ Begin
Session.io.OutFull (Session.GetPrompt(0));
ThisUser.Handle := strStripB(Session.io.GetInput(30, 30, 18, ''), ' ');
Str := strStripB(Session.io.GetInput(30, 30, 18, ''), ' ');
If Not FindUser(ThisUser.Handle, True) Then Begin
If Not FindUser(Str, True) Then Begin
Session.io.OutFile ('newuser', True, 0);
If Session.io.GetYN(Session.GetPrompt(1), False) Then Begin
CreateNewUser(ThisUser.Handle);
CreateNewUser(Str);
UserLogon2;
UserLogon3;
Exit;

View File

@ -297,6 +297,7 @@ Begin
AddProc ({$IFDEF MPLPARSER} 'msgeditor', {$ENDIF} 'iIiiosS', iBool); // 544
AddProc ({$IFDEF MPLPARSER} 'msgeditget', {$ENDIF} 'i', iString); // 545
AddProc ({$IFDEF MPLPARSER} 'msgeditset', {$ENDIF} 'is', iNone); // 546
AddProc ({$IFDEF MPLPARSER} 'onekeyrange', {$ENDIF} 'sll', iChar); // 547
{ END OF PROCEDURE DEFINITIONS }
@ -314,6 +315,7 @@ Begin
AddPointer ({$IFDEF MPLPARSER} 'allowmci', {$ENDIF} iBool, 1, {$IFNDEF MPLPARSER} @Session.io.PausePtr {$ELSE} NIL {$ENDIF});
AddPointer ({$IFDEF MPLPARSER} 'userloginname',{$ENDIF} iString, 31, {$IFNDEF MPLPARSER} @Session.UserLoginName {$ELSE} NIL {$ENDIF});
AddPointer ({$IFDEF MPLPARSER} 'userloginpw', {$ENDIF} iString, 16, {$IFNDEF MPLPARSER} @Session.UserLoginPW {$ELSE} NIL {$ENDIF});
AddPointer ({$IFDEF MPLPARSER} 'rangevalue', {$ENDIF} iLongInt, 4, {$IFNDEF MPLPARSER} @Session.io.RangeValue {$ELSE} NIL {$ENDIF});
{$IFNDEF MPLPARSER} TInterpEngine(S).IdxVarDir := X + 1; {$ENDIF}

View File

@ -1928,6 +1928,11 @@ Begin
End;
546 : If (Param[1].I > 0) and (Param[1].I <= mysMaxMsgLines) Then
Session.Msgs.MsgText[Param[1].I] := Param[2].S;
547 : Begin
TempStr[1] := Session.io.OneKeyRange(Param[1].S, Param[2].L, Param[3].L);
Store (TempStr[1], 1);
End;
End;
End;
@ -2074,6 +2079,7 @@ Begin
Repeat
MoveToPos (StartPos);
If ExecuteBlock (CurVarNum) = 1 Then Begin
EvaluateBoolean;
Break;
@ -2136,6 +2142,7 @@ Begin
Else
Repeat
Inc (NumberPos);
Numbers[NumberPos].Num := EvaluateNumber;
NextChar;
@ -2417,12 +2424,17 @@ End;
Function ExecuteMPL (Owner: Pointer; Str: String) : Byte;
Var
Script : TInterpEngine;
ErrStr : String;
Begin
Script := TInterpEngine.Create(Owner);
Result := Script.Execute(Str);
If Script.ErrNum > 0 Then
Session.io.OutFullLn ('|CR|12MPX ERROR: ' + Script.GetErrorMsg);
If Script.ErrNum > 0 Then Begin
ErrStr := 'MPX ERROR: ' + Script.GetErrorMsg;
Session.SystemLog(ErrStr + '(' + Str + ')');
Session.io.OutFullLn ('|CR|12' + ErrStr);
End;
Script.Free;
End;

View File

@ -8,7 +8,6 @@ design elements/issues.
BUGS AND POSSIBLE ISSUES
========================
! Posting echomail via NNTP is not setting ECHO flag
! LBP menus arent scrolling correctly in Linux
! MUTIL FILESBBS import is not skipping FILES.BBS?
! Make sure MIS in Linux works with DOSEMU
@ -242,3 +241,30 @@ InsertChar (XPOS, Ch, Attr)
ReplaceChar (XPOS, Ch, Attr
ReplaceLine
1.11
====
- Rewrite user login functions and MATRIX
- Change temp directories. Add MIS/MUTIL/FTN/NODE
- User directories (research disk performance with a zillion dirs)
1. Ability to save file batch queues between sessions
2. Ability to save "draft" message posts between sessions
3. Accessible via /home in FTP (virtual dir) allows QWK/REP
- New FS editor with DRAW MODE w/ inline ANSI/pipe editing
- Option to send QWK packet by e-mail OR download it
- Option to "upload" REP packet by sending email to BBS (qwk@yourbbs.com)?
- Needs additional research
! POSSIBLE removal of local console in Windows and STDIO usage in Linux
^ Massive performance increase possible here as well as:
! POSSIBLE FTN tosser.
! POSSIBLE FTN mailer (transx, FTP, binkP)
! MIS event system (possible 1.10)
! Password reset via email (possible 1.10)
! Email verification system (for access upgrades) (possible 1.10)
- New message reader functions allows inline ANSI
- Msg editor can "post process" ANSIs to be 79 columns max in stored line
length (bbs friendly)
- Rewrite of MBBSWEB or integrated HTML server? still need a good designer
that actually will put a lot of time into it
- Rewrite of ANSI template system (.ini files or mystic2 format?)
! Revamp logging system and add additional logging to MIS

View File

@ -2823,13 +2823,16 @@
; Msg header flags text one word each separated by a comma
; 1=Local 2=Echo 3=Private 4=Sent 5=Delete, 6=Received
490 Local,Echo,Priv,Sent,Del,Read
490 Local,Echo,Private,Sent,Deleted,Read
! Echo flag was not displaying correctly in the message headers.
! Fixed a bug in the ANSI file viewer which was causing garbled ANSIs
in the gallery and the viewer.
! Fixed a bug in the ANSI file viewer that could be caused by falsely
recognizing pipe codes when they were not.
+ Pressing the SPACE bar in the ANSI viewer now displays the file
"normally" with a screenpause at the end.
@ -2848,8 +2851,8 @@
+ Added a different type of line check into the ANSI parsers. If a line
ends with a linefeed but didn't have carrage return before it (as is
standard), Mystic will now add the carrage return. If this blows up
any existing ANSIs it will be changed back.
standard), Mystic will now add the carrage return. This is an attempt to
auto-correct ANSI files that are incorrectly saved in Unix.
! Fixed a bug with pipe color code parsing in the ANSI viewer (GV)
@ -2862,7 +2865,35 @@
+ Mystic will now perform text wrapping in the message editors based on
the select theme's column size.
+ Abbreviated Mystic's copyright notice upon connect to be friendly to
40 column connections.
+ Abbreviated Mystic's copyright notice upon connect to display within a
40 column terminal.
+ Rearranged the built in message header a little bit to allow more space
for message flags. Moved the date to the right side and the status
flags to the left side.
! Fixed a random weird bug in the Matrix login that I don't feel like
explaining. :)
+ Added a new MPL function called OneKeyRange. This function works similar
to OneKey, except that it will also allow for a number input within a
certain range. The number value is stored in a variable called
RangeValue and the function returns a #0 if a number was entered. For
example:
Var
Ch : Char;
Begin
Write ('Enter letters A-G or a number between 1-50: ');
Ch := OneKeyRange('ABCDEFG', 1, 50);
If Ch = #0 Then
WriteLn ('You entered a number: ' + Int2Str(RangeValue))
Else
WriteLn ('You entered character: ' + Ch);
End.
+ MPL errors when executing a MPX module are now logged in the SYSOP logs
<ALPHA 29 RELEASED>