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
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;
'N' : Session.Msgs.MessageNewScan (strUpper(Data));
'P' : Session.Msgs.PostMessage (False, Data);
// 'Q' : Session.Msgs.Message_QuickScan(UpCase(Data[1]));
'Q' : Session.Msgs.MessageQuickScan(strUpper(Data));
'R' : Begin
If Data = '' Then Data := ' ';

View File

@ -51,6 +51,7 @@ Type
Procedure PostMessage (Email: Boolean; Data: String);
Procedure CheckEMail;
Procedure MessageNewScan (Data: String);
Procedure MessageQuickScan (Data: String);
Procedure GlobalMessageSearch (Mode: Char);
Procedure SetMessagePointers;
Procedure ViewSentEmail;
@ -3414,19 +3415,28 @@ Begin
DirClean (Session.TempPath, '');
End;
(*
// not completed or documented. is this worth bothering with? pcboard style
Procedure TMsgBase.Message_QuickScan (Mode: Char);
{ C = Current G = Group A = All Areas/Groups }
{ ADD: /NEW show only if new }
{ ADD: /YOU show only if new to you }
{ ADD for prompts: /NOSCAN }{ ADD: /NOFOOT }{ ADD: /NOHEAD }
Procedure TMsgBase.MessageQuickScan (Data: String);
// defaults to ALL mode
// /CURRENT = scan only current message base
// /GROUP = scan only current group bases
// /ALL = scan all bases in all groups
// options:
// /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
Global_CurBase : LongInt = 1;
Global_TotalBases : LongInt = 1;
Global_TotalMsgs : LongInt = 0;
Global_NewMsgs : 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;
Var
@ -3444,7 +3454,8 @@ Const
YourMsgs := 0;
TotalMsgs := 0;
Session.io.OutFull('Scanning |&1 [|&2 of |&3]...');
If ShowScanPrompt Then
Session.io.OutFull(Session.GetPrompt(487));
Case MBase.BaseType of
0 : MsgBase := New(PMsgBaseJAM, Init);
@ -3485,21 +3496,32 @@ Const
Session.io.PromptInfo[8] := strI2S(Global_NewMsgs);
Session.io.PromptInfo[9] := strI2S(Global_YourMsgs);
If ShowScanPrompt Then
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);
End;
Var
Old : MBaseRec;
Old : RecMessageBase;
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;
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
ScanBase
@ -3523,12 +3545,12 @@ Begin
Close (MBaseFile);
End;
Session.io.OutFullLn('|CRQuick Scan complete. |PA');
If ShowFootPrompt Then
Session.io.OutFullLn(Session.GetPrompt(489));
Session.User.IgnoreGroup := False;
MBase := Old;
End;
*)
Function TMsgBase.SaveMessage (mArea: RecMessageBase; mFrom, mTo, mSubj: String; mAddr: RecEchoMailAddr; mLines: Integer) : Boolean;
Var

View File

@ -942,3 +942,15 @@
484 |CL|09|17 ° |15Chat mode end.|$X79 |16|DE|DE
; User2User accept chat page request? &1=user &2=Node
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
mysMaxMenuNameLen = 20; // menu name size
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_SemFileNews = 'newsmail.now';