Added MQ (Message QuickScan) menu command

This commit is contained in:
mysticbbs 2012-06-29 02:54:50 -04:00
parent 5abdeb283d
commit cb15bac018
5 changed files with 101 additions and 23 deletions

View File

@ -4144,3 +4144,47 @@
+ Mystic Internet Server (MIS) can now be started in daemon mode by + Mystic Internet Server (MIS) can now be started in daemon mode by
executing MIS with the -d command line option for Unix platforms. executing MIS with the -d command line option for Unix platforms.
+ Added new Message Base "QuickScan" menu command (MQ). This command
does a scan of message bases and shows you the number of new messages,
new messages to you, total messages, etc. This is modeled after PCBoard
scans and only scans bases in the bases flagged for scanning by the
user. For example:
Starting QuickScan
Base: General Messages Total: 1,000 New: 24 Yours: 3
Base: Test Message Base Total: 1,000 New: 24 Yours: 3
Quick Scan Complete
By default the QuickScan will do a global scan of all message bases in
all groups. However there are many optional data options:
/CURRENT = scan only current message base
/GROUP = scan only current group's bases
/NOSCAN = do not show "scanning" prompt
/NOFOOT = do not show "end of scan" prompt
/NOHEAD = do not show "starting quickscan" prompt
This can be combined with the MN menu command to prompt the user what to
do next. You could even get creative with the & MCI codes and MPL to
make logical decisions for the user based on the results of the scan!
Four new prompts go along with this:
; MsgBase quickscan header prompt
486 |CR|12Starting Quick Scan|CR
; MsgBase quickscan Scanning prompt
; &1=basename &2=current base# &3=total bases#
487 Scanning |&1 [|&2 of |&3]...
; MsgBase quickscan base list prompt
; &4=msgs in base &5=new messages &6=your messages &7=global total msg
; &8=global new msgs &9=global your msgs
488 |03Base: |14|$R40|&1 |03Total: |09|$L04|&4|03 New: |11|$L04|&5 |03Yours: |12|$L03|&6
; MsgBase quickscan footer prompt
; &7=global total msg &8=global new msgs &9=global your msgs
489 |CRQuick Scan complete. |CR|CR|PA

View File

@ -244,7 +244,7 @@ Begin
'M' : Session.Msgs.SendMassEmail; 'M' : Session.Msgs.SendMassEmail;
'N' : Session.Msgs.MessageNewScan (strUpper(Data)); 'N' : Session.Msgs.MessageNewScan (strUpper(Data));
'P' : Session.Msgs.PostMessage (False, Data); 'P' : Session.Msgs.PostMessage (False, Data);
// 'Q' : Session.Msgs.Message_QuickScan(UpCase(Data[1])); 'Q' : Session.Msgs.MessageQuickScan(strUpper(Data));
'R' : Begin 'R' : Begin
If Data = '' Then Data := ' '; If Data = '' Then Data := ' ';

View File

@ -51,6 +51,7 @@ Type
Procedure PostMessage (Email: Boolean; Data: String); Procedure PostMessage (Email: Boolean; Data: String);
Procedure CheckEMail; Procedure CheckEMail;
Procedure MessageNewScan (Data: String); Procedure MessageNewScan (Data: String);
Procedure MessageQuickScan (Data: String);
Procedure GlobalMessageSearch (Mode: Char); Procedure GlobalMessageSearch (Mode: Char);
Procedure SetMessagePointers; Procedure SetMessagePointers;
Procedure ViewSentEmail; Procedure ViewSentEmail;
@ -3414,19 +3415,28 @@ Begin
DirClean (Session.TempPath, ''); DirClean (Session.TempPath, '');
End; End;
(* Procedure TMsgBase.MessageQuickScan (Data: String);
// not completed or documented. is this worth bothering with? pcboard style // defaults to ALL mode
Procedure TMsgBase.Message_QuickScan (Mode: Char); // /CURRENT = scan only current message base
{ C = Current G = Group A = All Areas/Groups } // /GROUP = scan only current group bases
{ ADD: /NEW show only if new } // /ALL = scan all bases in all groups
{ ADD: /YOU show only if new to you } // options:
{ ADD for prompts: /NOSCAN }{ ADD: /NOFOOT }{ ADD: /NOHEAD } // /NOSCAN = do not show "scanning" prompt
// /NOFOOT = do not show "end of scan" prompt
// /NOHEAD = do not show "starting quickscan" prompt
// Only scans bases that they have selected in Newscan, of course
Const Const
Global_CurBase : LongInt = 1; Global_CurBase : LongInt = 1;
Global_TotalBases : LongInt = 1; Global_TotalBases : LongInt = 1;
Global_TotalMsgs : LongInt = 0; Global_TotalMsgs : LongInt = 0;
Global_NewMsgs : LongInt = 0; Global_NewMsgs : LongInt = 0;
Global_YourMsgs : LongInt = 0; Global_YourMsgs : LongInt = 0;
ShowIfNew : Boolean = False;
ShowIfYou : Boolean = False;
ShowScanPrompt : Boolean = True;
ShowHeadPrompt : Boolean = True;
ShowFootPrompt : Boolean = True;
Mode : Char = 'A';
Procedure ScanBase; Procedure ScanBase;
Var Var
@ -3444,7 +3454,8 @@ Const
YourMsgs := 0; YourMsgs := 0;
TotalMsgs := 0; TotalMsgs := 0;
Session.io.OutFull('Scanning |&1 [|&2 of |&3]...'); If ShowScanPrompt Then
Session.io.OutFull(Session.GetPrompt(487));
Case MBase.BaseType of Case MBase.BaseType of
0 : MsgBase := New(PMsgBaseJAM, Init); 0 : MsgBase := New(PMsgBaseJAM, Init);
@ -3485,21 +3496,32 @@ Const
Session.io.PromptInfo[8] := strI2S(Global_NewMsgs); Session.io.PromptInfo[8] := strI2S(Global_NewMsgs);
Session.io.PromptInfo[9] := strI2S(Global_YourMsgs); Session.io.PromptInfo[9] := strI2S(Global_YourMsgs);
If ShowScanPrompt Then
Session.io.OutBS(Screen.CursorX, True); Session.io.OutBS(Screen.CursorX, True);
Session.io.OutFullLn('|03Base: |14|$R40|&1 |03Total: |09|$L04|&4|03 New: |11|$L04|&5 |03Yours: |12|$L03|&6');
If (ShowIfNew And (NewMsgs > 0)) or (ShowIfYou And (YourMsgs > 0)) or (Not ShowIfNew And Not ShowIfYou) Then
Session.io.OutFullLn(Session.GetPrompt(488));
Dispose (MsgBase, Done); Dispose (MsgBase, Done);
End; End;
Var Var
Old : MBaseRec; Old : RecMessageBase;
Begin Begin
If Not (Mode in ['A', 'C', 'G']) Then Mode := 'G'; FillChar(Session.io.PromptInfo, SizeOf(Session.io.PromptInfo), 0);
If Pos('/GROUP', Data) > 0 Then Mode := 'G';
If Pos('/CURRENT', Data) > 0 Then Mode := 'C';
ShowScanPrompt := Pos('/NOSCAN', Data) = 0;
ShowHeadPrompt := Pos('/NOHEAD', Data) = 0;
ShowFootPrompt := Pos('/NOFOOT', Data) = 0;
Old := MBase; Old := MBase;
Session.User.IgnoreGroup := Mode = 'A'; Session.User.IgnoreGroup := Mode = 'A';
Session.io.OutFullLn ('|CRStarting Quick Scan|CR'); If ShowHeadPrompt Then
Session.io.OutFullLn (Session.GetPrompt(486));
If Mode = 'C' Then If Mode = 'C' Then
ScanBase ScanBase
@ -3523,12 +3545,12 @@ Begin
Close (MBaseFile); Close (MBaseFile);
End; End;
Session.io.OutFullLn('|CRQuick Scan complete. |PA'); If ShowFootPrompt Then
Session.io.OutFullLn(Session.GetPrompt(489));
Session.User.IgnoreGroup := False; Session.User.IgnoreGroup := False;
MBase := Old; MBase := Old;
End; End;
*)
Function TMsgBase.SaveMessage (mArea: RecMessageBase; mFrom, mTo, mSubj: String; mAddr: RecEchoMailAddr; mLines: Integer) : Boolean; Function TMsgBase.SaveMessage (mArea: RecMessageBase; mFrom, mTo, mSubj: String; mAddr: RecEchoMailAddr; mLines: Integer) : Boolean;
Var Var

View File

@ -942,3 +942,15 @@
484 |CL|09|17 ° |15Chat mode end.|$X79 |16|DE|DE 484 |CL|09|17 ° |15Chat mode end.|$X79 |16|DE|DE
; User2User accept chat page request? &1=user &2=Node ; User2User accept chat page request? &1=user &2=Node
485 |CL|15|&1 is requesting private user chat. Accept? |11 485 |CL|15|&1 is requesting private user chat. Accept? |11
; MsgBase quickscan header prompt
486 |CR|12Starting Quick Scan|CR
; MsgBase quickscan Scanning prompt
; &1=basename &2=current base# &3=total bases#
487 Scanning |&1 [|&2 of |&3]...
; MsgBase quickscan base list prompt
; &4=msgs in base &5=new messages &6=your messages &7=global total msg
; &8=global new msgs &9=global your msgs
488 |03Base: |14|$R40|&1 |03Total: |09|$L04|&4|03 New: |11|$L04|&5 |03Yours: |12|$L03|&6
; MsgBase quickscan footer prompt
; &7=global total msg &8=global new msgs &9=global your msgs
489 |CRQuick Scan complete. |CR|CR|PA

View File

@ -47,7 +47,7 @@ Const
mysMaxVoteQuestion = 20; // Max number of voting questions mysMaxVoteQuestion = 20; // Max number of voting questions
mysMaxMenuNameLen = 20; // menu name size mysMaxMenuNameLen = 20; // menu name size
mysMaxMenuCmds = 75; // Maximum menu commands per menu mysMaxMenuCmds = 75; // Maximum menu commands per menu
mysMaxThemeText = 485; // Total prompts in theme file mysMaxThemeText = 489; // Total prompts in theme file
fn_SemFileEcho = 'echomail.now'; fn_SemFileEcho = 'echomail.now';
fn_SemFileNews = 'newsmail.now'; fn_SemFileNews = 'newsmail.now';