From 287f96b784bd9e0f363607b9f7404493001a4127 Mon Sep 17 00:00:00 2001 From: mysticbbs Date: Wed, 22 Feb 2012 02:49:20 -0500 Subject: [PATCH] Fixes for SysOp Chat Page --- mystic/HISTORY.txt | 6 +++ mystic/bbs_general.pas | 106 ++++++++++++++++++++++------------------- mystic/bbs_menus.pas | 4 +- 3 files changed, 65 insertions(+), 51 deletions(-) diff --git a/mystic/HISTORY.txt b/mystic/HISTORY.txt index 973e59c..86af83f 100644 --- a/mystic/HISTORY.txt +++ b/mystic/HISTORY.txt @@ -3833,3 +3833,9 @@ + CTRL-W now deletes the word to the left of the cursor in the full screen editor. + + ! SysOp Chat Page in Windows now properly updates the user's terminal + during the page. + + + Sysop Chat Page in Windows now plays the "default beep" sound as + configured in Windows. diff --git a/mystic/bbs_general.pas b/mystic/bbs_general.pas index de90d30..d76ff07 100644 --- a/mystic/bbs_general.pas +++ b/mystic/bbs_general.pas @@ -12,6 +12,7 @@ Uses m_Strings, m_DateTime, {$IFNDEF UNIX} + Windows, bbs_SysopChat, {$ENDIF} bbs_Common, @@ -27,9 +28,6 @@ Procedure AutoSig_Edit; Procedure AutoSig_View; Procedure List_Users (Data: String); -{$IFNDEF UNIX} - Procedure Page_For_Chat (Forced: Boolean); -{$ENDIF} Procedure Last_Callers; Procedure Add_TimeBank; Procedure Get_TimeBank; @@ -42,6 +40,10 @@ Procedure Voting_Booth_New; Procedure View_History (LastDays: Word); Procedure View_Directory (Data: String; ViewType: Byte); +{$IFNDEF UNIX} + Procedure PageForSysopChat (Forced: Boolean); +{$ENDIF} + Implementation Uses @@ -434,56 +436,14 @@ Begin End; End; End; - Close (Session.User.UserFile); + + Close (Session.User.UserFile); + Session.io.PromptInfo[1] := strI2S(Total); + Session.io.OutFull (Session.GetPrompt(31)); End; -{$IFNDEF UNIX} -Procedure Page_For_Chat (Forced: Boolean); -Var - Temp : String; - A, B : Integer; -Begin - If Forced or ((TimerMinutes >= Config.ChatStart) and (TimerMinutes <= Config.ChatEnd)) Then Begin - Session.io.OutFull (Session.GetPrompt(23)); - Temp := Session.io.GetInput(50, 50, 11, ''); - If Temp = '' Then Exit; - - Session.SystemLog('Chat Page: ' + Temp); - - Update_Status_Line (0, ' ' + strPadR(Session.User.ThisUser.Handle, 17, ' ') + ' ' + strPadR(Temp, 40, ' ') + ' ALT+(S)plit (C)Line'); - - Session.io.OutFull(Session.GetPrompt(24)); - - For A := 1 to 10 Do Begin - Session.io.OutFull(Session.GetPrompt(25)); - - For B := 0 to 6 Do Begin - //SysBeepEx(523, 50); - //SysBeepEx(659, 50); - End; - If Input.KeyPressed Then If Input.ReadKey = #0 Then Begin - Case Input.ReadKey of - #31 : OpenChat(True); - #46 : OpenChat(False); - End; - Exit; - End; - WaitMS(1000); - End; - End; - - Update_Status_line (StatusPtr, ''); - - Session.io.OutFull (Session.GetPrompt(28)); - - If Config.ChatFeedback Then - If Session.io.GetYN(Session.GetPrompt(178), False) Then - Session.Msgs.PostMessage (True, '/TO:' + strReplace(Config.SysopName, ' ', '_') + ' /SUBJ:Chat_Feedback'); -End; -{$ENDIF} - Procedure Last_Callers; Begin Session.io.OutFullLn (Session.GetPrompt(141)); @@ -1386,6 +1346,54 @@ Begin Dispose (DirList[Count]); End; +{$IFNDEF UNIX} +Procedure PageForSysopChat (Forced: Boolean); +Var + Temp : String; + Count : Integer; +Begin + If Forced or ((TimerMinutes >= Config.ChatStart) and (TimerMinutes <= Config.ChatEnd)) Then Begin + Session.io.OutFull (Session.GetPrompt(23)); + + Temp := Session.io.GetInput(50, 50, 11, ''); + + If Temp = '' Then Exit; + + Session.SystemLog('Chat Page: ' + Temp); + + Update_Status_Line (0, ' ' + strPadR(Session.User.ThisUser.Handle, 17, ' ') + ' ' + strPadR(Temp, 40, ' ') + ' ALT+(S)plit (C)Line'); + + Session.io.OutFull(Session.GetPrompt(24)); + + For Count := 1 to 10 Do Begin + Session.io.OutFull(Session.GetPrompt(25)); + Session.io.BufFlush; + + MessageBeep(0); + + If Input.KeyPressed Then If Input.ReadKey = #0 Then Begin + Case Input.ReadKey of + #31 : OpenChat(True); + #46 : OpenChat(False); + End; + + Exit; + End; + + WaitMS(1000); + End; + End; + + Update_Status_line (StatusPtr, ''); + + Session.io.OutFull (Session.GetPrompt(28)); + + If Config.ChatFeedback Then + If Session.io.GetYN(Session.GetPrompt(178), False) Then + Session.Msgs.PostMessage (True, '/TO:' + strReplace(Config.SysopName, ' ', '_') + ' /SUBJ:Chat_Feedback'); +End; +{$ENDIF} + (* MYSTIC 2's ANSIVIEWER - needs to be intergrated with the msgbases. there should NOT be a msgtext AND this class. there should only be one place where the massive message buffer exists. diff --git a/mystic/bbs_menus.pas b/mystic/bbs_menus.pas index 3d0a4b9..4d6157c 100644 --- a/mystic/bbs_menus.pas +++ b/mystic/bbs_menus.pas @@ -199,7 +199,7 @@ Begin Result := True; End; 'N' : One_Liners (Data); - 'P' : {$IFNDEF UNIX} Page_For_Chat (Pos('/F', strUpper(Data)) > 0) {$ENDIF}; + 'P' : {$IFNDEF UNIX} PageForSysopChat (Pos('/F', strUpper(Data)) > 0) {$ENDIF}; 'R' : Begin If StackNum > 0 Then Begin MenuOld := MenuName; @@ -305,7 +305,7 @@ Begin Result := True; End; 'P' : {$IFNDEF UNIX} If Session.User.GetMatrixUser Then - Page_For_Chat (Pos('/F', strUpper(Data)) > 0) {$ENDIF}; + PageForSysopChat (Pos('/F', strUpper(Data)) > 0) {$ENDIF}; End; '*' : Begin If Not Session.io.GetPW ('|CR|09Sysop Password: ', Session.GetPrompt(417), Config.SysopPW) Then Exit; {++lang}