New file base editor, restructure of File Base records, ANSI template for file lists are now configurable per file base. ACS max length increased. Base flags are now bitmapped and not booleans
This commit is contained in:
parent
26d2da196e
commit
de10a9193d
|
@ -13,6 +13,25 @@ Uses
|
||||||
{$I RECORDS.PAS}
|
{$I RECORDS.PAS}
|
||||||
|
|
||||||
Type
|
Type
|
||||||
|
OldFBaseRec = Record { FBASES.DAT }
|
||||||
|
Name : String[40]; { File base name }
|
||||||
|
FtpName : String[60]; { FTP directory name }
|
||||||
|
Filename : String[40]; { File name }
|
||||||
|
DispFile : String[20]; { Pre-list display file name }
|
||||||
|
Template : String[20]; { ansi file list template }
|
||||||
|
ListACS, { ACS required to see this base }
|
||||||
|
FtpACS, { ACS to see in FTP directory }
|
||||||
|
SysopACS, { ACS required for SysOp functions}
|
||||||
|
ULACS, { ACS required to upload files }
|
||||||
|
DLACS : String[mysMaxAcsSize]; { ACS required to download files }
|
||||||
|
Path : String[120]; { Path where files are stored }
|
||||||
|
Password : String[20]; { Password to access this base }
|
||||||
|
DefScan : Byte; { Default New Scan Setting }
|
||||||
|
ShowUL : Boolean;
|
||||||
|
IsCDROM : Boolean;
|
||||||
|
IsFREE : Boolean;
|
||||||
|
End;
|
||||||
|
|
||||||
OldFDirRec = Record { *.DIR }
|
OldFDirRec = Record { *.DIR }
|
||||||
FileName : String[70]; { File name }
|
FileName : String[70]; { File name }
|
||||||
Size : LongInt; { File size (in bytes) }
|
Size : LongInt; { File size (in bytes) }
|
||||||
|
@ -1021,21 +1040,74 @@ Begin
|
||||||
FindClose(DirInfo);
|
FindClose(DirInfo);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Procedure ConvertFileBases;
|
||||||
|
Var
|
||||||
|
FBase : RecFileBase;
|
||||||
|
FBaseFile : File of RecFileBase;
|
||||||
|
OldFBase : OldFBaseRec;
|
||||||
|
OldFBaseFile : File of OldFBaseRec;
|
||||||
|
Begin
|
||||||
|
WriteLn ('[-] Updating file bases...');
|
||||||
|
|
||||||
|
If Not ReNameFile(Config.DataPath + 'fbases.dat', Config.DataPath + 'fbases.old') Then Begin
|
||||||
|
WriteLn('[!] UNABLE TO FIND: ' + Config.DataPath + 'fbases.dat');
|
||||||
|
Exit;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Assign (OldFBaseFile, Config.DataPath + 'fbases.old');
|
||||||
|
Reset (OldFBaseFile);
|
||||||
|
|
||||||
|
Assign (FBaseFile, Config.DataPath + 'fbases.dat');
|
||||||
|
ReWrite (FBaseFile);
|
||||||
|
|
||||||
|
While Not Eof(OldFBaseFile) Do Begin
|
||||||
|
Read (OldFBaseFile, OldFBase);
|
||||||
|
|
||||||
|
FBase.Name := OldFBase.Name;
|
||||||
|
FBase.FtpName := OldFBase.FtpName;
|
||||||
|
FBase.FileName := OldFBase.FileName;
|
||||||
|
FBase.DispFile := OldFBase.DispFile;
|
||||||
|
FBase.Template := 'ansiflst';
|
||||||
|
FBase.ListACS := OldFBase.ListACS;
|
||||||
|
FBase.FtpACS := OldFBase.FtpACS;
|
||||||
|
FBase.DLACS := OldFBase.DLACS;
|
||||||
|
FBase.ULACS := OldFBase.ULACS;
|
||||||
|
FBase.SysopACS := OldFBase.SysopACS;
|
||||||
|
FBase.Path := OldFBase.Path;
|
||||||
|
FBase.Password := OldFBase.Password;
|
||||||
|
FBase.DefScan := OldFBase.DefScan;
|
||||||
|
FBase.CommentACS := 's20';
|
||||||
|
FBase.Flags := 0;
|
||||||
|
|
||||||
|
If OldFBase.ShowUL Then FBase.Flags := FBase.Flags OR FBShowUpload;
|
||||||
|
If OldFBase.IsCDROM Then FBase.Flags := FBase.Flags OR FBSlowMedia;
|
||||||
|
If OldFBase.IsFREE Then FBase.Flags := FBase.Flags OR FBFreeFiles;
|
||||||
|
|
||||||
|
Write (FBaseFile, FBase);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Close (FBaseFile);
|
||||||
|
Close (OldFBaseFile);
|
||||||
|
|
||||||
|
DeleteFile (Config.DataPath + 'fbases.old');
|
||||||
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
ConfigFile : File of RecConfig;
|
ConfigFile : File of RecConfig;
|
||||||
Begin
|
Begin
|
||||||
WarningDisplay;
|
WarningDisplay;
|
||||||
|
|
||||||
// COMMENT this out if mystic.dat is being converted:
|
//COMMENT this out if mystic.dat is being converted:
|
||||||
// Assign (ConfigFile, 'mystic.dat');
|
Assign (ConfigFile, 'mystic.dat');
|
||||||
// Reset (ConfigFile);
|
Reset (ConfigFile);
|
||||||
// Read (ConfigFile, Config);
|
Read (ConfigFile, Config);
|
||||||
// Close (ConfigFile);
|
Close (ConfigFile);
|
||||||
|
|
||||||
ConvertConfig; //1.10a11
|
// ConvertConfig; //1.10a11
|
||||||
// ConvertUsers; //1.10a11
|
// ConvertUsers; //1.10a11
|
||||||
//ConvertSecurity; //1.10a11
|
//ConvertSecurity; //1.10a11
|
||||||
//ConvertFileLists; //1.10a11
|
//ConvertFileLists; //1.10a11
|
||||||
|
ConvertFileBases; //1.10a11
|
||||||
|
|
||||||
// ConvertArchives; //1.10a1
|
// ConvertArchives; //1.10a1
|
||||||
// ConvertGroups; //1.10a1
|
// ConvertGroups; //1.10a1
|
||||||
|
|
|
@ -3857,3 +3857,19 @@
|
||||||
+ The END key now functions in the lightbar file listing. It is kind of a
|
+ The END key now functions in the lightbar file listing. It is kind of a
|
||||||
half-assed implementation though, since doing it "the right way" will
|
half-assed implementation though, since doing it "the right way" will
|
||||||
involve some extra coding in the future.
|
involve some extra coding in the future.
|
||||||
|
|
||||||
|
+ File Base settings for all ACS strings has been increased from 20 to 30
|
||||||
|
characters.
|
||||||
|
|
||||||
|
+ File base "lightbar" list templates are now defined per file base in
|
||||||
|
the file base editor. The upgrade utility will set existing bases to
|
||||||
|
'ansiflst' but any newly created bases will need to have this value set
|
||||||
|
per base now.
|
||||||
|
|
||||||
|
+ Updated file base record structures and added options for the possible
|
||||||
|
future "Comment and Rating" system for file bases. In addition, some
|
||||||
|
boolean data has been changed into a bitmapped flag variable.
|
||||||
|
|
||||||
|
+ Added new ANSI file base editor into the System Configuration.
|
||||||
|
|
||||||
|
+ Added Copy/Paste functions into all new ANSI internal editors.
|
||||||
|
|
|
@ -418,6 +418,8 @@ Begin
|
||||||
If (A < 0) or (Picked = 1) Then A := 0;
|
If (A < 0) or (Picked = 1) Then A := 0;
|
||||||
WriteXY (X1 + Width + 1, Y1 + 1 + A, Box.BoxAttr2, #178);
|
WriteXY (X1 + Width + 1, Y1 + 1 + A, Box.BoxAttr2, #178);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Session.io.BufFlush;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TAnsiMenuList.Open (BX1, BY1, BX2, BY2 : Byte);
|
Procedure TAnsiMenuList.Open (BX1, BY1, BX2, BY2 : Byte);
|
||||||
|
@ -515,6 +517,7 @@ Begin
|
||||||
End;
|
End;
|
||||||
If Picked < ListMax Then Inc (Picked);
|
If Picked < ListMax Then Inc (Picked);
|
||||||
If Picked > TopPage + WinSize - 1 Then Inc (TopPage);
|
If Picked > TopPage + WinSize - 1 Then Inc (TopPage);
|
||||||
|
Update;
|
||||||
End Else
|
End Else
|
||||||
If Pos(Ch, LoChars) > 0 Then Begin
|
If Pos(Ch, LoChars) > 0 Then Begin
|
||||||
ExitCode := Ch;
|
ExitCode := Ch;
|
||||||
|
|
|
@ -4,164 +4,191 @@ Unit bbs_cfg_FileBase;
|
||||||
|
|
||||||
Interface
|
Interface
|
||||||
|
|
||||||
Procedure File_Base_Editor;
|
Procedure Configuration_FileBaseEditor;
|
||||||
|
|
||||||
Implementation
|
Implementation
|
||||||
|
|
||||||
Uses
|
Uses
|
||||||
m_FileIO,
|
|
||||||
m_Strings,
|
m_Strings,
|
||||||
|
m_FileIO,
|
||||||
|
bbs_Ansi_MenuBox,
|
||||||
|
bbs_Ansi_MenuForm,
|
||||||
bbs_Common,
|
bbs_Common,
|
||||||
bbs_Core,
|
bbs_cfg_Common;
|
||||||
bbs_User;
|
|
||||||
|
|
||||||
Procedure File_Base_Editor;
|
|
||||||
Const
|
|
||||||
ST : Array[0..2] of String[6] = ('No', 'Yes', 'Always');
|
|
||||||
Var
|
Var
|
||||||
A,
|
FBaseFile : TBufFile;
|
||||||
B : LongInt;
|
FBase : RecFileBase;
|
||||||
|
|
||||||
|
Procedure EditFileBase;
|
||||||
|
Var
|
||||||
|
Box : TAnsiMenuBox;
|
||||||
|
Form : TAnsiMenuForm;
|
||||||
|
Topic : String;
|
||||||
|
Count : Byte;
|
||||||
Begin
|
Begin
|
||||||
Session.SystemLog ('*FBASE EDITOR*');
|
Topic := '|03(|09File Base Edit|03) |01-|09> |15';
|
||||||
Reset(Session.FileBase.FBaseFile);
|
Box := TAnsiMenuBox.Create;
|
||||||
|
Form := TAnsiMenuForm.Create;
|
||||||
|
|
||||||
|
Box.Open (6, 5, 75, 21);
|
||||||
|
|
||||||
|
VerticalLine (22, 7, 19);
|
||||||
|
VerticalLine (69, 7, 9);
|
||||||
|
|
||||||
|
Form.AddStr ('N', ' Base Name' , 11, 7, 24, 7, 11, 30, 40, @FBase.Name, Topic + 'File base name');
|
||||||
|
Form.AddStr ('F', ' FTP Name' , 12, 8, 24, 8, 10, 30, 60, @FBase.FTPName, Topic + 'Base name in FTP directory list');
|
||||||
|
Form.AddStr ('D', ' Display File' , 8, 9, 24, 9, 14, 20, 20, @FBase.DispFile, Topic + 'Display file shown before listing');
|
||||||
|
Form.AddStr ('T', ' Template' , 12, 10, 24, 10, 10, 20, 20, @FBase.Template, Topic + 'Lightbar list template');
|
||||||
|
Form.AddStr ('L', ' List ACS ' , 12, 11, 24, 11, 10, 30, 30, @FBase.ListACS, Topic + 'ACS to list files');
|
||||||
|
Form.AddStr ('U', ' Upload ACS ' , 10, 12, 24, 12, 12, 30, 30, @FBase.ULACS, Topic + 'ACS to upload files');
|
||||||
|
Form.AddStr ('D', ' Download ACS ', 8, 13, 24, 13, 14, 30, 30, @FBase.DLACS, Topic + 'ACS to download files');
|
||||||
|
Form.AddStr ('C', ' Comment ACS ' , 9, 14, 24, 14, 13, 30, 30, @FBase.CommentACS, Topic + 'ACS to comment and rate files');
|
||||||
|
Form.AddStr ('P', ' FTP ACS' , 13, 15, 24, 15, 9, 30, 30, @FBase.FTPACS, Topic + 'ACS to access via FTP');
|
||||||
|
Form.AddStr ('S', ' Sysop ACS ' , 11, 16, 24, 16, 11, 30, 30, @FBase.SysopACS, Topic + 'ACS for Sysop access');
|
||||||
|
Form.AddTog ('E', ' Default Scan' , 8, 17, 24, 17, 14, 6, 0, 2, 'No Yes Forced', @FBase.DefScan, Topic + 'Default scan setting');
|
||||||
|
Form.AddPass ('A', ' Password' , 12, 18, 24, 18, 10, 20, 20, @FBase.Password, Topic + 'Base password (Blank/Disable)');
|
||||||
|
Form.AddPath ('I', ' File Path' , 11, 19, 24, 19, 11, 30, 120, @FBase.Path, Topic + 'Directory where files are stored');
|
||||||
|
|
||||||
|
Form.AddBits ('R', ' Free Files' , 57, 7, 71, 7, 12, FBFreeFiles, @FBase.Flags, Topic + 'Files in base are free?');
|
||||||
|
Form.AddBits ('M', ' Slow Media' , 57, 8, 71, 8, 12, FBSlowMedia, @FBase.Flags, Topic + 'Files stored on slow media device?');
|
||||||
|
Form.AddBits (#01, ' Uploader' , 59, 9, 71, 9, 10, FBShowUpload, @FBase.Flags, Topic + 'Show upload in listing');
|
||||||
|
|
||||||
Repeat
|
Repeat
|
||||||
Session.io.AllowPause := True;
|
Case Form.Execute of
|
||||||
|
#27 : Break;
|
||||||
Session.io.OutFullLn ('|CL|14File Base Editor|CR|CR|09### Name|CR--- |$D40-');
|
|
||||||
|
|
||||||
Reset (Session.FileBase.FBaseFile);
|
|
||||||
While Not Eof(Session.FileBase.FBaseFile) Do Begin
|
|
||||||
Read (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
|
||||||
Session.io.OutFullLn ('|15' + strPadR(strI2S(FilePos(Session.FileBase.FBaseFile)), 3, ' ') + ' |14|FB');
|
|
||||||
|
|
||||||
If (Session.io.PausePtr = Session.User.ThisUser.ScreenSize) and (Session.io.AllowPause) Then
|
|
||||||
Case Session.io.MorePrompt of
|
|
||||||
'N' : Break;
|
|
||||||
'C' : Session.io.AllowPause := False;
|
|
||||||
End;
|
|
||||||
End;
|
|
||||||
|
|
||||||
Session.io.OutFull ('|CR|09(I)nsert, (D)elete, (E)dit, (M)ove, (Q)uit? ');
|
|
||||||
Case Session.io.OneKey (#13'DEIMQ', True) of
|
|
||||||
'D' : begin
|
|
||||||
Session.io.OutRaw ('Delete which base? ');
|
|
||||||
a := strS2I(Session.io.GetInput(3, 3, 11, ''));
|
|
||||||
If (A > 0) and (A <= FileSize(Session.FileBase.FBaseFile)) Then Begin
|
|
||||||
Seek (Session.FileBase.FBaseFile, A - 1);
|
|
||||||
Read (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
|
||||||
FileErase (config.datapath + Session.FileBase.FBase.filename + '.dir');
|
|
||||||
FileErase (config.datapath + Session.FileBase.FBase.filename + '.des');
|
|
||||||
FileErase (config.datapath + Session.FileBase.FBase.filename + '.scn');
|
|
||||||
KillRecord (Session.FileBase.FBaseFile, A, SizeOf(FBaseRec));
|
|
||||||
End;
|
|
||||||
End;
|
|
||||||
'I' : begin
|
|
||||||
Session.io.OutRaw ('Insert before which? (1-' + strI2S(filesize(Session.FileBase.FBaseFile)+1) + '): ');
|
|
||||||
a := strS2I(Session.io.GetInput(3, 3, 11, ''));
|
|
||||||
if (a > 0) and (a <= filesize(Session.FileBase.FBaseFile)+1) then begin
|
|
||||||
AddRecord (Session.FileBase.FBaseFile, A, SizeOf(Session.FileBase.FBaseFile));
|
|
||||||
|
|
||||||
Session.FileBase.FBase.Name := 'New File Base';
|
|
||||||
Session.FileBase.FBase.FtpName := 'New_File_Base';
|
|
||||||
Session.FileBase.FBase.Filename := 'NEW';
|
|
||||||
Session.FileBase.FBase.Dispfile := '';
|
|
||||||
Session.FileBase.FBase.ListACS := 's255';
|
|
||||||
Session.FileBase.FBase.FtpACS := 's255';
|
|
||||||
Session.FileBase.FBase.SysopACS := 's255';
|
|
||||||
Session.FileBase.FBase.UlACS := 's255';
|
|
||||||
Session.FileBase.FBase.DlACS := 's255';
|
|
||||||
Session.FileBase.FBase.Path := '';
|
|
||||||
Session.FileBase.FBase.Password := '';
|
|
||||||
Session.FileBase.FBase.ShowUL := True;
|
|
||||||
Session.FileBase.FBase.IsCDROM := False;
|
|
||||||
Session.FileBase.FBase.DefScan := 1;
|
|
||||||
|
|
||||||
Write (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
'E' : begin
|
|
||||||
Session.io.OutRaw ('Edit which? ');
|
|
||||||
a := strS2I(Session.io.GetInput(3, 3, 11, ''));
|
|
||||||
if (a > 0) and (a <= filesize(Session.FileBase.FBaseFile)) then begin
|
|
||||||
seek (Session.FileBase.FBaseFile, a-1);
|
|
||||||
read (Session.FileBase.FBaseFile, Session.FileBase.fbase);
|
|
||||||
repeat
|
|
||||||
Session.io.OutFullLn ('|CL|14File Base ' + strI2S(FilePos(Session.FileBase.FBaseFile)) + ' of ' + strI2S(FileSize(Session.FileBase.FBaseFile)) + '|CR|03');
|
|
||||||
Session.io.OutRawln ('A. Name : ' + Session.FileBase.FBase.name);
|
|
||||||
Session.io.OutRawln ('B. Filename : ' + Session.FileBase.FBase.filename);
|
|
||||||
Session.io.OutRawln ('C. Display File : ' + Session.FileBase.FBase.dispfile);
|
|
||||||
Session.io.OutRawln ('D. List ACS : ' + Session.FileBase.FBase.Listacs);
|
|
||||||
Session.io.OutRawln ('E. Sysop ACS : ' + Session.FileBase.FBase.SysopACS);
|
|
||||||
Session.io.OutRawln ('F. Upload ACS : ' + Session.FileBase.FBase.ulacs);
|
|
||||||
Session.io.OutRawln ('G. Download ACS : ' + Session.FileBase.FBase.dlacs);
|
|
||||||
Session.io.OutRawln ('H. Storage Path : ' + Session.FileBase.FBase.path);
|
|
||||||
Session.io.OutRawln ('I. Password : ' + Session.FileBase.FBase.password);
|
|
||||||
Session.io.OutRawln ('J. Show Uploader : ' + Session.io.OutYN(Session.FileBase.FBase.ShowUL));
|
|
||||||
Session.io.OutRawLn ('K. Default New Scan : ' + ST[Session.FileBase.FBase.DefScan]);
|
|
||||||
Session.io.OutRawLn ('L. CD-ROM Area : ' + Session.io.OutYN(Session.FileBase.FBase.IsCDROM));
|
|
||||||
Session.io.OutRawLn ('M. All Files Free : ' + Session.io.OutYN(Session.FileBase.FBase.IsFREE));
|
|
||||||
Session.io.OutRawLn ('N. FTP Base Name : ' + Session.FileBase.FBase.FTPName);
|
|
||||||
Session.io.OutRawLn ('O. FTP List ACS : ' + Session.FileBase.FBase.FTPACS);
|
|
||||||
Session.io.OutFull ('|CR|09([) Prev, (]) Next, (Q)uit: ');
|
|
||||||
case Session.io.OneKey('[]ABCDEFGHIJKLMNOQ', True) of
|
|
||||||
'[' : If FilePos(Session.FileBase.FBaseFile) > 1 Then Begin
|
|
||||||
Seek (Session.FileBase.FBaseFile, FilePos(Session.FileBase.FBaseFile)-1);
|
|
||||||
Write (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
|
||||||
Seek (Session.FileBase.FBaseFile, FilePos(Session.FileBase.FBaseFile)-2);
|
|
||||||
Read (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
|
||||||
End;
|
|
||||||
']' : If FilePos(Session.FileBase.FBaseFile) < FileSize(Session.FileBase.FBaseFile) Then Begin
|
|
||||||
Seek (Session.FileBase.FBaseFile, FilePos(Session.FileBase.FBaseFile)-1);
|
|
||||||
Write (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
|
||||||
Read (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
|
||||||
End;
|
|
||||||
'A' : Session.FileBase.FBase.Name := Session.io.InXY(23, 3, 40, 40, 11, Session.FileBase.FBase.Name);
|
|
||||||
'B' : Session.FileBase.FBase.FileName := Session.io.InXY(23, 4, 40, 40, 11, Session.FileBase.FBase.FileName);
|
|
||||||
'C' : Session.FileBase.FBase.DispFile := Session.io.InXY(23, 5, 8, 8, 11, Session.FileBase.FBase.DispFile);
|
|
||||||
'D' : Session.FileBase.FBase.ListACS := Session.io.InXY(23, 6, 20, 20, 11, Session.FileBase.FBase.ListACS);
|
|
||||||
'E' : Session.FileBase.FBase.SysopACS := Session.io.InXY(23, 7, 20, 20, 11, Session.FileBase.FBase.SysopACS);
|
|
||||||
'F' : Session.FileBase.FBase.ULacs := Session.io.InXY(23, 8, 20, 20, 11, Session.FileBase.FBase.ULacs);
|
|
||||||
'G' : Session.FileBase.FBase.DLacs := Session.io.InXY(23, 9, 20, 20, 11, Session.FileBase.FBase.DLacs);
|
|
||||||
'H' : Session.FileBase.FBase.Path := CheckPath(Session.io.InXY(23, 10, 39, 39, 11, Session.FileBase.FBase.Path));
|
|
||||||
'I' : Session.FileBase.FBase.Password := Session.io.InXY(23, 11, 15, 15, 12, Session.FileBase.FBase.Password);
|
|
||||||
'J' : Session.FileBase.FBase.ShowUL := Not Session.FileBase.FBase.ShowUL;
|
|
||||||
'K' : If Session.FileBase.FBase.DefScan > 1 Then Session.FileBase.FBase.DefScan := 0 Else Inc(Session.FileBase.FBase.DefScan);
|
|
||||||
'L' : Session.FileBase.FBase.IsCDROM := Not Session.FileBase.FBase.IsCDROM;
|
|
||||||
'M' : Session.FileBase.FBase.IsFREE := Not Session.FileBase.FBase.IsFREE;
|
|
||||||
'N' : Session.FileBase.FBase.FtpName := Session.io.InXY(23, 16, 40, 60, 11, Session.FileBase.FBase.FtpName);
|
|
||||||
'O' : Session.FileBase.FBase.FtpACS := Session.io.InXY(23, 17, 30, 30, 11, Session.FileBase.FBase.FtpACS);
|
|
||||||
'Q' : Break;
|
|
||||||
End;
|
End;
|
||||||
Until False;
|
Until False;
|
||||||
Seek (Session.FileBase.FBaseFile, FilePos(Session.FileBase.FBaseFile) - 1);
|
|
||||||
Write (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
Box.Close;
|
||||||
End;
|
|
||||||
|
Form.Free;
|
||||||
|
Box.Free;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Procedure Configuration_FileBaseEditor;
|
||||||
|
Var
|
||||||
|
Box : TAnsiMenuBox;
|
||||||
|
List : TAnsiMenuList;
|
||||||
|
Copied : RecFileBase;
|
||||||
|
HasCopy : Boolean = False;
|
||||||
|
|
||||||
|
Procedure MakeList;
|
||||||
|
Begin
|
||||||
|
List.Clear;
|
||||||
|
|
||||||
|
FBaseFile.Reset;
|
||||||
|
|
||||||
|
While Not FBaseFile.EOF Do Begin
|
||||||
|
FBaseFile.Read (FBase);
|
||||||
|
|
||||||
|
List.Add(strPadR(strI2S(FBaseFile.FilePos), 5, ' ') + ' ' + strStripPipe(FBase.Name), 0);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
'M' : Begin
|
List.Add('', 2);
|
||||||
Session.io.OutRaw ('Move which? ');
|
End;
|
||||||
A := strS2I(Session.io.GetInput(3, 3, 12, ''));
|
|
||||||
|
|
||||||
Session.io.OutRaw ('Move before? (1-' + strI2S(FileSize(Session.FileBase.FBaseFile) + 1) + '): ');
|
Procedure InsertRecord;
|
||||||
B := strS2I(Session.io.GetInput(3, 3, 12, ''));
|
Begin
|
||||||
|
FBaseFile.RecordInsert (List.Picked);
|
||||||
|
|
||||||
If (A > 0) and (A <= FileSize(Session.FileBase.FBaseFile)) and (B > 0) and (B <= FileSize(Session.FileBase.FBaseFile) + 1) Then Begin
|
FillChar (FBase, SizeOf(RecFileBase), 0);
|
||||||
Seek (Session.FileBase.FBaseFile, A - 1);
|
|
||||||
Read (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
|
||||||
|
|
||||||
AddRecord (Session.FileBase.FBaseFile, B, SizeOf(FBaseRec));
|
With FBase Do Begin
|
||||||
Write (Session.FileBase.FBaseFile, Session.FileBase.FBase);
|
FileName := 'new';
|
||||||
|
Path := Config.SystemPath + 'xfers' + PathChar + 'new' + PathChar;
|
||||||
|
Name := 'New File Base';
|
||||||
|
FtpName := Name;
|
||||||
|
DefScan := 1;
|
||||||
|
SysopACS := 's255';
|
||||||
|
Flags := FBShowUpload;
|
||||||
|
End;
|
||||||
|
|
||||||
If A > B Then Inc(A);
|
FBaseFile.Write(FBase);
|
||||||
|
End;
|
||||||
|
|
||||||
KillRecord (Session.FileBase.FBaseFile, A, SizeOf(FBaseRec));
|
Begin
|
||||||
|
FBaseFile := TBufFile.Create(4096);
|
||||||
|
|
||||||
|
If Not FBaseFile.Open(Config.DataPath + 'fbases.dat', fmOpenCreate, fmReadWrite + fmDenyNone, SizeOf(RecFileBase)) Then Begin
|
||||||
|
FBaseFile.Free;
|
||||||
|
Exit;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Box := TAnsiMenuBox.Create;
|
||||||
|
List := TAnsiMenuList.Create;
|
||||||
|
|
||||||
|
List.NoWindow := True;
|
||||||
|
List.LoChars := #13#27#47;
|
||||||
|
List.AllowTag := True;
|
||||||
|
|
||||||
|
// If FBaseFile.FileSize = 0 Then InsertRecord;
|
||||||
|
|
||||||
|
Box.Open (15, 5, 65, 21);
|
||||||
|
|
||||||
|
WriteXY (17, 6, 112, '##### File Base Description');
|
||||||
|
WriteXY (16, 7, 112, strRep(#196, 49));
|
||||||
|
WriteXY (16, 19, 112, strRep(#196, 49));
|
||||||
|
WriteXY (29, 20, 112, 'Press / for command list');
|
||||||
|
|
||||||
|
Repeat
|
||||||
|
MakeList;
|
||||||
|
|
||||||
|
List.Open (15, 7, 65, 19);
|
||||||
|
List.Close;
|
||||||
|
|
||||||
|
Case List.ExitCode of
|
||||||
|
'/' : Case GetCommandOption(10, 'I-Insert|D-Delete|C-Copy|P-Paste|') of
|
||||||
|
'I' : If List.Picked > 1 Then Begin
|
||||||
|
InsertRecord;
|
||||||
|
MakeList;
|
||||||
|
End;
|
||||||
|
'D' : If (List.Picked < List.ListMax) Then
|
||||||
|
If ShowMsgBox(1, 'Delete this entry?') Then Begin
|
||||||
|
FBaseFile.Seek (List.Picked - 1);
|
||||||
|
FBaseFile.Read (FBase);
|
||||||
|
|
||||||
|
FBaseFile.RecordDelete (List.Picked);
|
||||||
|
|
||||||
|
If ShowMsgBox(1, 'Delete data files?') Then Begin
|
||||||
|
FileErase (Config.DataPath + FBase.FileName + '.dir');
|
||||||
|
FileErase (Config.DataPath + FBase.FileName + '.dat');
|
||||||
|
FileErase (Config.DataPath + FBase.FileName + '.scn');
|
||||||
|
End;
|
||||||
|
|
||||||
|
MakeList;
|
||||||
|
End;
|
||||||
|
'C' : If List.Picked <> List.ListMax Then Begin
|
||||||
|
FBaseFile.Seek (List.Picked - 1);
|
||||||
|
FBaseFile.Read (Copied);
|
||||||
|
|
||||||
|
HasCopy := True;
|
||||||
|
End;
|
||||||
|
'P' : If HasCopy Then Begin
|
||||||
|
FBaseFile.RecordInsert (List.Picked);
|
||||||
|
FBaseFile.Write (Copied);
|
||||||
|
|
||||||
|
MakeList;
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
'Q' : Break;
|
#13 : If List.Picked < List.ListMax Then Begin
|
||||||
|
FBaseFile.Seek (List.Picked - 1);
|
||||||
|
FBaseFile.Read (FBase);
|
||||||
|
|
||||||
|
EditFileBase;
|
||||||
|
|
||||||
|
FBaseFile.Seek (List.Picked - 1);
|
||||||
|
FBaseFile.Write (FBase);
|
||||||
|
End;
|
||||||
|
#27 : Break;
|
||||||
End;
|
End;
|
||||||
Until False;
|
Until False;
|
||||||
Close (Session.FileBase.FBaseFile);
|
|
||||||
|
Box.Close;
|
||||||
|
|
||||||
|
FBaseFile.Free;
|
||||||
|
List.Free;
|
||||||
|
Box.Free;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
End.
|
End.
|
||||||
|
|
|
@ -40,6 +40,7 @@ Begin
|
||||||
|
|
||||||
Case Mode of
|
Case Mode of
|
||||||
'A' : Configuration_ArchiveEditor;
|
'A' : Configuration_ArchiveEditor;
|
||||||
|
'F' : Configuration_FileBaseEditor;
|
||||||
'P' : Configuration_ProtocolEditor;
|
'P' : Configuration_ProtocolEditor;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -122,7 +123,6 @@ Var
|
||||||
'B' : Message_Base_Editor;
|
'B' : Message_Base_Editor;
|
||||||
'G',
|
'G',
|
||||||
'R' : Group_Editor;
|
'R' : Group_Editor;
|
||||||
'F' : File_Base_Editor;
|
|
||||||
'S' : Levels_Editor;
|
'S' : Levels_Editor;
|
||||||
'E' : Event_Editor;
|
'E' : Event_Editor;
|
||||||
'V' : Vote_Editor;
|
'V' : Vote_Editor;
|
||||||
|
@ -278,6 +278,7 @@ Begin
|
||||||
End Else
|
End Else
|
||||||
Case Res of
|
Case Res of
|
||||||
'A' : Configuration_ArchiveEditor;
|
'A' : Configuration_ArchiveEditor;
|
||||||
|
'F' : Configuration_FileBaseEditor;
|
||||||
'P' : Configuration_ProtocolEditor;
|
'P' : Configuration_ProtocolEditor;
|
||||||
'U',
|
'U',
|
||||||
'M',
|
'M',
|
||||||
|
@ -285,7 +286,6 @@ Begin
|
||||||
'B',
|
'B',
|
||||||
'G',
|
'G',
|
||||||
'R',
|
'R',
|
||||||
'F',
|
|
||||||
'S',
|
'S',
|
||||||
'E',
|
'E',
|
||||||
'V' : ExecuteOldConfiguration(Res);
|
'V' : ExecuteOldConfiguration(Res);
|
||||||
|
|
|
@ -23,13 +23,13 @@ Type
|
||||||
End;
|
End;
|
||||||
|
|
||||||
TFileBase = Class
|
TFileBase = Class
|
||||||
FBaseFile : File of FBaseRec;
|
FBaseFile : File of RecFileBase;
|
||||||
FDirFile : File of RecFileList;
|
FDirFile : File of RecFileList;
|
||||||
FScanFile : File of FScanRec;
|
FScanFile : File of FScanRec;
|
||||||
ProtocolFile : File of RecProtocol;
|
ProtocolFile : File of RecProtocol;
|
||||||
FGroupFile : File of RecGroup;
|
FGroupFile : File of RecGroup;
|
||||||
ArcFile : File of RecArchive;
|
ArcFile : File of RecArchive;
|
||||||
FBase : FBaseRec;
|
FBase : RecFileBase;
|
||||||
FGroup : RecGroup;
|
FGroup : RecGroup;
|
||||||
FScan : FScanRec;
|
FScan : FScanRec;
|
||||||
FDir : RecFileList;
|
FDir : RecFileList;
|
||||||
|
@ -355,7 +355,7 @@ End;
|
||||||
Procedure TFileBase.SetFileScanDate;
|
Procedure TFileBase.SetFileScanDate;
|
||||||
Var
|
Var
|
||||||
L : LongInt;
|
L : LongInt;
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
Str : String;
|
Str : String;
|
||||||
Begin
|
Begin
|
||||||
Session.io.OutFull (Session.GetPrompt(255));
|
Session.io.OutFull (Session.GetPrompt(255));
|
||||||
|
@ -662,7 +662,7 @@ Begin
|
||||||
If (FDir.Flags And FDirInvalid <> 0) And Not Session.User.Access(Config.AcsDLUnvalid) Then Exit;
|
If (FDir.Flags And FDirInvalid <> 0) And Not Session.User.Access(Config.AcsDLUnvalid) Then Exit;
|
||||||
If (FDir.Flags And FDirFailed <> 0) And Not Session.User.Access(Config.AcsDLFailed) Then Exit;
|
If (FDir.Flags And FDirFailed <> 0) And Not Session.User.Access(Config.AcsDLFailed) Then Exit;
|
||||||
|
|
||||||
If (FDir.Flags And FDirFree <> 0) or (Session.User.ThisUser.Flags and UserNoRatio <> 0) or (FBase.IsFREE) Then Begin
|
If (FDir.Flags And FDirFree <> 0) or (Session.User.ThisUser.Flags and UserNoRatio <> 0) or (FBase.Flags and FBFreeFiles <> 0) Then Begin
|
||||||
Result := 0;
|
Result := 0;
|
||||||
Exit;
|
Exit;
|
||||||
End;
|
End;
|
||||||
|
@ -836,7 +836,7 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
Temp : String[11];
|
Temp : String[11];
|
||||||
A : Word;
|
A : Word;
|
||||||
N1 : Word;
|
N1 : Word;
|
||||||
|
@ -1042,7 +1042,7 @@ End;
|
||||||
Procedure TFileBase.ViewFile;
|
Procedure TFileBase.ViewFile;
|
||||||
Var
|
Var
|
||||||
FName : String[70];
|
FName : String[70];
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
Begin
|
Begin
|
||||||
Session.io.OutFull (Session.GetPrompt(353));
|
Session.io.OutFull (Session.GetPrompt(353));
|
||||||
|
|
||||||
|
@ -1121,7 +1121,7 @@ Procedure TFileBase.BatchAdd;
|
||||||
Var
|
Var
|
||||||
FName : String[70];
|
FName : String[70];
|
||||||
A : Byte;
|
A : Byte;
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
OkSave : Boolean;
|
OkSave : Boolean;
|
||||||
Begin
|
Begin
|
||||||
If BatchNum = mysMaxBatchQueue Then Begin
|
If BatchNum = mysMaxBatchQueue Then Begin
|
||||||
|
@ -1223,7 +1223,7 @@ Var
|
||||||
A : Word;
|
A : Word;
|
||||||
Total : Word;
|
Total : Word;
|
||||||
tGroup : recGroup;
|
tGroup : recGroup;
|
||||||
tFBase : FBaseRec;
|
tFBase : RecFileBase;
|
||||||
tLast : Word;
|
tLast : Word;
|
||||||
Areas : Word;
|
Areas : Word;
|
||||||
Data : Word;
|
Data : Word;
|
||||||
|
@ -1431,7 +1431,7 @@ Procedure TFileBase.ChangeFileArea (Data: String);
|
||||||
Var
|
Var
|
||||||
A : Word;
|
A : Word;
|
||||||
Total : Word;
|
Total : Word;
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
Str : String[5];
|
Str : String[5];
|
||||||
Compress : Boolean;
|
Compress : Boolean;
|
||||||
|
|
||||||
|
@ -1730,7 +1730,7 @@ Var
|
||||||
TopDesc := 0;
|
TopDesc := 0;
|
||||||
End Else Begin
|
End Else Begin
|
||||||
Inc (Count, FDir.DescLines + 1);
|
Inc (Count, FDir.DescLines + 1);
|
||||||
If FBase.ShowUL Then Inc(Count);
|
If FBase.Flags And FBShowUpload <> 0 Then Inc(Count);
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -1772,7 +1772,7 @@ Var
|
||||||
Session.io.ScreenInfo[5].Y := 0;
|
Session.io.ScreenInfo[5].Y := 0;
|
||||||
Session.io.ScreenInfo[6].Y := 0;
|
Session.io.ScreenInfo[6].Y := 0;
|
||||||
|
|
||||||
Session.io.OutFile ('ansiflst', True, 0);
|
Session.io.OutFile (FBase.Template, True, 0);
|
||||||
|
|
||||||
PageSize := Session.io.ScreenInfo[2].Y - Session.io.ScreenInfo[1].Y + 1;
|
PageSize := Session.io.ScreenInfo[2].Y - Session.io.ScreenInfo[1].Y + 1;
|
||||||
|
|
||||||
|
@ -1925,7 +1925,7 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
If BotDesc > FDir.DescLines Then Begin
|
If BotDesc > FDir.DescLines Then Begin
|
||||||
If FBase.ShowUL Then Begin
|
If FBase.Flags and FBShowUpload <> 0 Then Begin
|
||||||
OK := ShowText(strUploader);
|
OK := ShowText(strUploader);
|
||||||
If OK Then
|
If OK Then
|
||||||
BotDesc := 0
|
BotDesc := 0
|
||||||
|
@ -2383,7 +2383,7 @@ End;
|
||||||
Function TFileBase.IsDupeFile (FileName : String; Global : Boolean) : Boolean;
|
Function TFileBase.IsDupeFile (FileName : String; Global : Boolean) : Boolean;
|
||||||
Var
|
Var
|
||||||
Res : Boolean;
|
Res : Boolean;
|
||||||
OLD : FBaseRec;
|
OLD : RecFileBase;
|
||||||
|
|
||||||
Procedure Check_Area;
|
Procedure Check_Area;
|
||||||
Var
|
Var
|
||||||
|
@ -2462,7 +2462,7 @@ Var
|
||||||
D : DirStr;
|
D : DirStr;
|
||||||
N : NameStr;
|
N : NameStr;
|
||||||
E : ExtStr;
|
E : ExtStr;
|
||||||
OLD : FBaseRec;
|
OLD : RecFileBase;
|
||||||
Blind : Boolean;
|
Blind : Boolean;
|
||||||
Temp : String;
|
Temp : String;
|
||||||
FullName : String;
|
FullName : String;
|
||||||
|
@ -2502,7 +2502,7 @@ Begin
|
||||||
Exit;
|
Exit;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
If FBase.IsCDROM Then Begin
|
If FBase.Flags And FBSlowMedia <> 0 Then Begin
|
||||||
Session.io.OutFullLn (Session.GetPrompt(80));
|
Session.io.OutFullLn (Session.GetPrompt(80));
|
||||||
FBase := OLD;
|
FBase := OLD;
|
||||||
Exit;
|
Exit;
|
||||||
|
@ -2715,7 +2715,7 @@ Var
|
||||||
Begin
|
Begin
|
||||||
Copied := False;
|
Copied := False;
|
||||||
|
|
||||||
If FBase.IsCDROM Then Begin
|
If FBase.Flags And FBSlowMedia <> 0 Then Begin
|
||||||
|
|
||||||
Copied := True;
|
Copied := True;
|
||||||
|
|
||||||
|
@ -2829,7 +2829,7 @@ Var
|
||||||
K : LongInt;
|
K : LongInt;
|
||||||
M : Integer;
|
M : Integer;
|
||||||
Dir : String[40];
|
Dir : String[40];
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
FL : Text;
|
FL : Text;
|
||||||
Begin
|
Begin
|
||||||
K := 0;
|
K := 0;
|
||||||
|
@ -2943,7 +2943,7 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
Begin
|
Begin
|
||||||
Old := FBase;
|
Old := FBase;
|
||||||
Found := False;
|
Found := False;
|
||||||
|
@ -2992,7 +2992,7 @@ End;
|
||||||
|
|
||||||
Procedure TFileBase.NewFileScan (Mode: Char);
|
Procedure TFileBase.NewFileScan (Mode: Char);
|
||||||
Var
|
Var
|
||||||
TempFBase : FBaseRec;
|
TempFBase : RecFileBase;
|
||||||
Found : Boolean;
|
Found : Boolean;
|
||||||
Done : Boolean;
|
Done : Boolean;
|
||||||
NewFiles : Boolean;
|
NewFiles : Boolean;
|
||||||
|
@ -3113,7 +3113,7 @@ Var
|
||||||
A : Integer;
|
A : Integer;
|
||||||
B : Integer;
|
B : Integer;
|
||||||
Temp : String;
|
Temp : String;
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
TF : Text;
|
TF : Text;
|
||||||
Begin
|
Begin
|
||||||
If FBase.FileName = '' Then Begin
|
If FBase.FileName = '' Then Begin
|
||||||
|
@ -3206,7 +3206,8 @@ Begin
|
||||||
Case Session.io.OneKey('123456[]DEIMQUV!', True) of
|
Case Session.io.OneKey('123456[]DEIMQUV!', True) of
|
||||||
'1' : Begin
|
'1' : Begin
|
||||||
Temp := Session.io.InXY (4, 3, 70, 70, 11, FDir.FileName);
|
Temp := Session.io.InXY (4, 3, 70, 70, 11, FDir.FileName);
|
||||||
If Not FBase.IsCDROM Then
|
|
||||||
|
If FBase.Flags And FBSlowMedia = 0 Then
|
||||||
If (Temp <> FDir.FileName) and (Temp <> '') Then Begin
|
If (Temp <> FDir.FileName) and (Temp <> '') Then Begin
|
||||||
If Not FileExist(FBase.Path + Temp) or (strUpper(Temp) = strUpper(FDir.FileName)) Then Begin
|
If Not FileExist(FBase.Path + Temp) or (strUpper(Temp) = strUpper(FDir.FileName)) Then Begin
|
||||||
Assign(TF, FBase.Path + FDir.FileName);
|
Assign(TF, FBase.Path + FDir.FileName);
|
||||||
|
@ -3518,7 +3519,7 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Old : FBaseRec;
|
Old : RecFileBase;
|
||||||
Pos : LongInt;
|
Pos : LongInt;
|
||||||
Begin
|
Begin
|
||||||
Session.SystemLog ('Mass upload');
|
Session.SystemLog ('Mass upload');
|
||||||
|
|
|
@ -317,7 +317,7 @@ Begin
|
||||||
End;
|
End;
|
||||||
'A' : Configuration_ExecuteEditor('A');
|
'A' : Configuration_ExecuteEditor('A');
|
||||||
'E' : Event_Editor;
|
'E' : Event_Editor;
|
||||||
'F' : File_Base_Editor;
|
'F' : Configuration_ExecuteEditor('F');
|
||||||
'G' : Group_Editor;
|
'G' : Group_Editor;
|
||||||
'L' : Levels_Editor;
|
'L' : Levels_Editor;
|
||||||
'M' : Message_Base_Editor;
|
'M' : Message_Base_Editor;
|
||||||
|
|
|
@ -769,13 +769,13 @@ End;
|
||||||
|
|
||||||
Procedure TMsgBase.ReplyMessage (Email: Boolean; ListMode : Byte; ReplyID : String);
|
Procedure TMsgBase.ReplyMessage (Email: Boolean; ListMode : Byte; ReplyID : String);
|
||||||
Var
|
Var
|
||||||
ToWho : String[30]; {to field}
|
ToWho : String[30];
|
||||||
Subj : String[60]; {subject field}
|
Subj : String[60];
|
||||||
Addr : RecEchomailAddr; {netmail to addr}
|
Addr : RecEchomailAddr;
|
||||||
MsgNew : PMsgBaseABS;
|
MsgNew : PMsgBaseABS;
|
||||||
Temp1 : String; {quote text}
|
Temp1 : String;
|
||||||
Temp2 : String[2]; {Initials}
|
Temp2 : String[2];
|
||||||
Temp3 : String[80]; {Text}
|
Temp3 : String[80];
|
||||||
tFile : Text;
|
tFile : Text;
|
||||||
Lines : SmallInt;
|
Lines : SmallInt;
|
||||||
Begin
|
Begin
|
||||||
|
@ -1019,10 +1019,10 @@ End;
|
||||||
|
|
||||||
Procedure TMsgBase.MessageUpload (Var CurLine: SmallInt);
|
Procedure TMsgBase.MessageUpload (Var CurLine: SmallInt);
|
||||||
Var
|
Var
|
||||||
FN : String[100]; {was string}
|
FN : String[100];
|
||||||
TF : Text;
|
TF : Text;
|
||||||
T1 : String[30]; { Saved TO: }
|
T1 : String[30];
|
||||||
T2 : String[60]; { Saved SUBJ: }
|
T2 : String[60];
|
||||||
OK : Boolean;
|
OK : Boolean;
|
||||||
Begin
|
Begin
|
||||||
OK := False;
|
OK := False;
|
||||||
|
@ -1500,6 +1500,7 @@ Var
|
||||||
'D' : Begin
|
'D' : Begin
|
||||||
If Session.io.GetYN(Session.GetPrompt(402), True) Then Begin
|
If Session.io.GetYN(Session.GetPrompt(402), True) Then Begin
|
||||||
MsgBase^.DeleteMsg;
|
MsgBase^.DeleteMsg;
|
||||||
|
|
||||||
If Not SeekNextMsg(False, False) Then Begin
|
If Not SeekNextMsg(False, False) Then Begin
|
||||||
Ansi_View_Message := True;
|
Ansi_View_Message := True;
|
||||||
Exit;
|
Exit;
|
||||||
|
@ -1529,7 +1530,9 @@ Var
|
||||||
Session.io.PromptInfo[2] := strI2S(MsgBase^.GetHighMsgNum);
|
Session.io.PromptInfo[2] := strI2S(MsgBase^.GetHighMsgNum);
|
||||||
|
|
||||||
Session.io.OutFull (Session.GetPrompt(403));
|
Session.io.OutFull (Session.GetPrompt(403));
|
||||||
|
|
||||||
A := strS2I(Session.io.GetInput(9, 9, 12, ''));
|
A := strS2I(Session.io.GetInput(9, 9, 12, ''));
|
||||||
|
|
||||||
If (A > 0) and (A <= MsgBase^.GetHighMsgNum) Then Begin
|
If (A > 0) and (A <= MsgBase^.GetHighMsgNum) Then Begin
|
||||||
MsgBase^.SeekFirst(A);
|
MsgBase^.SeekFirst(A);
|
||||||
If Not SeekNextMsg(True, False) Then Begin
|
If Not SeekNextMsg(True, False) Then Begin
|
||||||
|
@ -1546,6 +1549,7 @@ Var
|
||||||
Ansi_View_Message := True;
|
Ansi_View_Message := True;
|
||||||
Exit;
|
Exit;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
#13 : If (Lines > PageSize) and (PageEnd <= Lines) Then Begin
|
#13 : If (Lines > PageSize) and (PageEnd <= Lines) Then Begin
|
||||||
|
@ -1578,21 +1582,26 @@ Var
|
||||||
#27,
|
#27,
|
||||||
'Q' : Begin
|
'Q' : Begin
|
||||||
GetMessageScan;
|
GetMessageScan;
|
||||||
|
|
||||||
If MScan.NewScan = 2 Then
|
If MScan.NewScan = 2 Then
|
||||||
Session.io.OutFullLn(Session.GetPrompt(406))
|
Session.io.OutFullLn(Session.GetPrompt(406))
|
||||||
Else Begin
|
Else Begin
|
||||||
ReadRes := False;
|
ReadRes := False;
|
||||||
Ansi_View_Message := True;
|
Ansi_View_Message := True;
|
||||||
|
|
||||||
Exit;
|
Exit;
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
'R' : Begin
|
'R' : Begin
|
||||||
ReplyMessage (Mode = 'E', ListMode, ReplyID);
|
ReplyMessage (Mode = 'E', ListMode, ReplyID);
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
'T' : Begin
|
'T' : Begin
|
||||||
Session.io.PromptInfo[1] := MBase.Name;
|
Session.io.PromptInfo[1] := MBase.Name;
|
||||||
|
|
||||||
GetMessageScan;
|
GetMessageScan;
|
||||||
|
|
||||||
Case MScan.NewScan of
|
Case MScan.NewScan of
|
||||||
0 : Begin
|
0 : Begin
|
||||||
MScan.NewScan := 1;
|
MScan.NewScan := 1;
|
||||||
|
@ -1606,20 +1615,24 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
SetMessageScan;
|
SetMessageScan;
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
'X' : Begin
|
'X' : Begin
|
||||||
Export_Message;
|
Export_Message;
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
'[' : If MsgBase^.GetRefer > 0 Then Begin
|
'[' : If MsgBase^.GetRefer > 0 Then Begin
|
||||||
MsgBase^.SeekFirst(MsgBase^.GetRefer);
|
MsgBase^.SeekFirst(MsgBase^.GetRefer);
|
||||||
MsgBase^.MsgStartUp;
|
MsgBase^.MsgStartUp;
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
']' : If MsgBase^.GetSeeAlso > 0 Then Begin
|
']' : If MsgBase^.GetSeeAlso > 0 Then Begin
|
||||||
MsgBase^.SeekFirst(MsgBase^.GetSeeAlso);
|
MsgBase^.SeekFirst(MsgBase^.GetSeeAlso);
|
||||||
MsgBase^.MsgStartUp;
|
MsgBase^.MsgStartUp;
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
'?' : Begin
|
'?' : Begin
|
||||||
|
@ -1671,6 +1684,7 @@ Var
|
||||||
Session.io.PromptInfo[2] := Subj;
|
Session.io.PromptInfo[2] := Subj;
|
||||||
Session.io.PromptInfo[3] := MsgFrom;
|
Session.io.PromptInfo[3] := MsgFrom;
|
||||||
Session.io.PromptInfo[4] := MsgTo;
|
Session.io.PromptInfo[4] := MsgTo;
|
||||||
|
|
||||||
If NewMsgs Then
|
If NewMsgs Then
|
||||||
Session.io.PromptInfo[5] := Session.Lang.NewMsgChar
|
Session.io.PromptInfo[5] := Session.Lang.NewMsgChar
|
||||||
Else
|
Else
|
||||||
|
@ -1711,17 +1725,16 @@ Var
|
||||||
CurPage := 0;
|
CurPage := 0;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
{ add scanning prompt here }
|
// add scanning prompt here
|
||||||
(*
|
//if (scanmode=3) then begin
|
||||||
if (scanmode=3) then begin
|
// Session.io.AnsiGotoXY(32, 11);
|
||||||
Session.io.AnsiGotoXY(32, 11);
|
// Session.io.OutFull ('|08.---------------.');
|
||||||
Session.io.OutFull ('|08.---------------.');
|
// Session.io.AnsiGotoXY(32, 12);
|
||||||
Session.io.AnsiGotoXY(32, 12);
|
// Session.io.OutFull ('| |07searching ... |08|');
|
||||||
Session.io.OutFull ('| |07searching ... |08|');
|
// Session.io.AnsiGotoXY(32, 13);
|
||||||
Session.io.AnsiGotoXY(32, 13);
|
// Session.io.OutFull ('`---------------''');
|
||||||
Session.io.OutFull ('`---------------''');
|
//end;
|
||||||
end;
|
|
||||||
*)
|
|
||||||
PageTotal := 0;
|
PageTotal := 0;
|
||||||
Read_Page := True;
|
Read_Page := True;
|
||||||
|
|
||||||
|
|
|
@ -69,17 +69,19 @@ Begin
|
||||||
If Session.io.ScreenInfo[9].X <> 0 Then Begin
|
If Session.io.ScreenInfo[9].X <> 0 Then Begin
|
||||||
Session.io.AnsiGotoXY (Session.io.ScreenInfo[9].X, Session.io.ScreenInfo[9].Y);
|
Session.io.AnsiGotoXY (Session.io.ScreenInfo[9].X, Session.io.ScreenInfo[9].Y);
|
||||||
Session.io.AnsiColor (Session.io.ScreenInfo[9].A);
|
Session.io.AnsiColor (Session.io.ScreenInfo[9].A);
|
||||||
|
|
||||||
Session.io.OutFull ('|$L04|TL');
|
Session.io.OutFull ('|$L04|TL');
|
||||||
End;
|
End;
|
||||||
|
|
||||||
If Session.io.ScreenInfo[0].X <> 0 Then Begin
|
If Session.io.ScreenInfo[0].X <> 0 Then Begin
|
||||||
Session.io.AnsiGotoXY (Session.io.ScreenInfo[0].X, Session.io.ScreenInfo[0].Y);
|
Session.io.AnsiGotoXY (Session.io.ScreenInfo[0].X, Session.io.ScreenInfo[0].Y);
|
||||||
Session.io.AnsiColor (Session.io.ScreenInfo[0].A);
|
Session.io.AnsiColor (Session.io.ScreenInfo[0].A);
|
||||||
|
|
||||||
Session.io.OutFull ('|TI');
|
Session.io.OutFull ('|TI');
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Session.io.AnsiGotoXY (X, Y);
|
Session.io.AnsiGotoXY (X, Y);
|
||||||
Session.io.AnsiColor(A);
|
Session.io.AnsiColor (A);
|
||||||
|
|
||||||
Update := TimerMinutes;
|
Update := TimerMinutes;
|
||||||
End;
|
End;
|
||||||
|
@ -89,11 +91,13 @@ Begin
|
||||||
If Not Session.io.LocalInput and Not LastUser Then Begin
|
If Not Session.io.LocalInput and Not LastUser Then Begin
|
||||||
Session.io.AnsiGotoXY (UserX, UserY);
|
Session.io.AnsiGotoXY (UserX, UserY);
|
||||||
Session.io.AnsiColor (Session.io.ScreenInfo[1].A);
|
Session.io.AnsiColor (Session.io.ScreenInfo[1].A);
|
||||||
|
|
||||||
LastUser := True;
|
LastUser := True;
|
||||||
End Else
|
End Else
|
||||||
If Session.io.LocalInput and LastUser Then Begin
|
If Session.io.LocalInput and LastUser Then Begin
|
||||||
Session.io.AnsiGotoXY (SysopX, SysopY);
|
Session.io.AnsiGotoXY (SysopX, SysopY);
|
||||||
Session.io.AnsiColor (Session.io.ScreenInfo[5].A);
|
Session.io.AnsiColor (Session.io.ScreenInfo[5].A);
|
||||||
|
|
||||||
LastUser := False;
|
LastUser := False;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -103,12 +107,14 @@ Begin
|
||||||
#08 : If Session.io.LocalInput Then Begin
|
#08 : If Session.io.LocalInput Then Begin
|
||||||
If SysopX > Session.io.ScreenInfo[7].X Then Begin
|
If SysopX > Session.io.ScreenInfo[7].X Then Begin
|
||||||
Session.io.OutBS (1, True);
|
Session.io.OutBS (1, True);
|
||||||
|
|
||||||
Dec (SysopX);
|
Dec (SysopX);
|
||||||
Dec (SysopStr[0]);
|
Dec (SysopStr[0]);
|
||||||
End;
|
End;
|
||||||
End Else Begin
|
End Else Begin
|
||||||
If UserX > Session.io.ScreenInfo[3].X Then Begin
|
If UserX > Session.io.ScreenInfo[3].X Then Begin
|
||||||
Session.io.OutBS (1, True);
|
Session.io.OutBS (1, True);
|
||||||
|
|
||||||
Dec (UserX);
|
Dec (UserX);
|
||||||
Dec (UserStr[0]);
|
Dec (UserStr[0]);
|
||||||
End;
|
End;
|
||||||
|
@ -259,6 +265,7 @@ Begin
|
||||||
If Config.ChatLogging Then Begin
|
If Config.ChatLogging Then Begin
|
||||||
Assign (tFile, Config.LogsPath + 'chat.log');
|
Assign (tFile, Config.LogsPath + 'chat.log');
|
||||||
{$I-} Append (tFile); {$I+}
|
{$I-} Append (tFile); {$I+}
|
||||||
|
|
||||||
If IoResult <> 0 Then ReWrite (tFile);
|
If IoResult <> 0 Then ReWrite (tFile);
|
||||||
|
|
||||||
WriteLn (tFile, '');
|
WriteLn (tFile, '');
|
||||||
|
|
|
@ -109,6 +109,7 @@ Var
|
||||||
Str : String;
|
Str : String;
|
||||||
Begin
|
Begin
|
||||||
ResetSession;
|
ResetSession;
|
||||||
|
|
||||||
Client.WriteLine(re_Greeting);
|
Client.WriteLine(re_Greeting);
|
||||||
|
|
||||||
Repeat
|
Repeat
|
||||||
|
|
|
@ -90,7 +90,7 @@ Type
|
||||||
Function GetMBaseRecord (Num: LongInt) : Boolean;
|
Function GetMBaseRecord (Num: LongInt) : Boolean;
|
||||||
Procedure GetMGroupVars (Var G: RecGroup);
|
Procedure GetMGroupVars (Var G: RecGroup);
|
||||||
Function GetMGroupRecord (Num: LongInt) : Boolean;
|
Function GetMGroupRecord (Num: LongInt) : Boolean;
|
||||||
Procedure GetFBaseVars (Var F: FBaseRec);
|
Procedure GetFBaseVars (Var F: RecFileBase);
|
||||||
Function GetFBaseRecord (Num: LongInt) : Boolean;
|
Function GetFBaseRecord (Num: LongInt) : Boolean;
|
||||||
Procedure GetFGroupVars (Var G: RecGroup);
|
Procedure GetFGroupVars (Var G: RecGroup);
|
||||||
Function GetFGroupRecord (Num: LongInt) : Boolean;
|
Function GetFGroupRecord (Num: LongInt) : Boolean;
|
||||||
|
@ -203,7 +203,7 @@ Begin
|
||||||
Close (F);
|
Close (F);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TInterpEngine.GetFBaseVars (Var F: FBaseRec);
|
Procedure TInterpEngine.GetFBaseVars (Var F: RecFileBase);
|
||||||
Begin
|
Begin
|
||||||
Move (F.Name, VarData[IdxVarFBase ]^.Data^, SizeOf(F.Name));
|
Move (F.Name, VarData[IdxVarFBase ]^.Data^, SizeOf(F.Name));
|
||||||
Move (F.ListACS, VarData[IdxVarFBase + 1 ]^.Data^, SizeOf(F.ListACS));
|
Move (F.ListACS, VarData[IdxVarFBase + 1 ]^.Data^, SizeOf(F.ListACS));
|
||||||
|
@ -212,12 +212,12 @@ End;
|
||||||
Function TInterpEngine.GetFBaseRecord (Num: LongInt) : Boolean;
|
Function TInterpEngine.GetFBaseRecord (Num: LongInt) : Boolean;
|
||||||
Var
|
Var
|
||||||
F : File;
|
F : File;
|
||||||
FB : FBaseRec;
|
FB : RecFileBase;
|
||||||
Begin
|
Begin
|
||||||
Result := False;
|
Result := False;
|
||||||
|
|
||||||
Assign (F, Config.DataPath + 'fbases.dat');
|
Assign (F, Config.DataPath + 'fbases.dat');
|
||||||
If Not ioReset(F, SizeOf(FBaseRec), fmRWDN) Then Exit;
|
If Not ioReset(F, SizeOf(RecFileBase), fmRWDN) Then Exit;
|
||||||
|
|
||||||
If ioSeek(F, Pred(Num)) And (ioRead(F, FB)) Then Begin
|
If ioSeek(F, Pred(Num)) And (ioRead(F, FB)) Then Begin
|
||||||
GetFBaseVars(FB);
|
GetFBaseVars(FB);
|
||||||
|
|
|
@ -344,6 +344,7 @@ Begin
|
||||||
{$I-} Reset (Session.User.SecurityFile); {$I+}
|
{$I-} Reset (Session.User.SecurityFile); {$I+}
|
||||||
If IoResult <> 0 Then Begin
|
If IoResult <> 0 Then Begin
|
||||||
ReWrite(Session.User.SecurityFile);
|
ReWrite(Session.User.SecurityFile);
|
||||||
|
|
||||||
For Count := 1 to 255 Do
|
For Count := 1 to 255 Do
|
||||||
Write (Session.User.SecurityFile, Session.User.Security);
|
Write (Session.User.SecurityFile, Session.User.Security);
|
||||||
End;
|
End;
|
||||||
|
|
|
@ -244,17 +244,15 @@ Type
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Const
|
Const
|
||||||
UserLockedOut = $01;
|
UserLockedOut = $00000001;
|
||||||
UserNoRatio = $02;
|
UserNoRatio = $00000002;
|
||||||
UserDeleted = $04;
|
UserDeleted = $00000004;
|
||||||
UserNoKill = $08;
|
UserNoKill = $00000008;
|
||||||
UserNoCaller = $10;
|
UserNoCaller = $00000010;
|
||||||
UserNoPWChange = $20;
|
UserNoPWChange = $00000020;
|
||||||
|
|
||||||
//FUTURE DATA FILE UPDATES NEEDED
|
//FUTURE DATA FILE UPDATES NEEDED
|
||||||
//LASTON needs optional1-10 compare to Mystic2
|
//LASTON needs optional1-10 compare to Mystic2
|
||||||
//FBASE
|
|
||||||
// ACS to comment on file
|
|
||||||
//MBASES
|
//MBASES
|
||||||
// expand header filename[20]
|
// expand header filename[20]
|
||||||
// add template[20]
|
// add template[20]
|
||||||
|
@ -282,13 +280,11 @@ Const
|
||||||
// compare to mystic 2 for fallback stuff?
|
// compare to mystic 2 for fallback stuff?
|
||||||
// rename to THEME
|
// rename to THEME
|
||||||
// horizontal/vertical percent bars
|
// horizontal/vertical percent bars
|
||||||
// default prot into users
|
|
||||||
// default prot into new user options
|
|
||||||
|
|
||||||
Type
|
Type
|
||||||
RecUser = Record { USERS.DAT }
|
RecUser = Record { USERS.DAT }
|
||||||
PermIdx : LongInt; // permanent user number
|
PermIdx : LongInt; // permanent user number
|
||||||
Flags : Byte; { User Flags }
|
Flags : LongInt; { User Flags }
|
||||||
Handle : String[30]; { Handle }
|
Handle : String[30]; { Handle }
|
||||||
RealName : String[30]; { Real Name }
|
RealName : String[30]; { Real Name }
|
||||||
Password : String[15]; { Password }
|
Password : String[15]; { Password }
|
||||||
|
@ -351,7 +347,7 @@ Type
|
||||||
UseFullChat : Boolean; { use full screen teleconference }
|
UseFullChat : Boolean; { use full screen teleconference }
|
||||||
Credits : LongInt;
|
Credits : LongInt;
|
||||||
Protocol : Char;
|
Protocol : Char;
|
||||||
Reserved : Array[1..392] of Byte;
|
Reserved : Array[1..389] of Byte;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
EventRec = Record { EVENTS.DAT }
|
EventRec = Record { EVENTS.DAT }
|
||||||
|
@ -445,25 +441,29 @@ Type
|
||||||
LastNew : LongInt; { Last file scan (packed datetime)}
|
LastNew : LongInt; { Last file scan (packed datetime)}
|
||||||
End;
|
End;
|
||||||
|
|
||||||
FBaseRec = Record { FBASES.DAT }
|
Const
|
||||||
Name : String[40]; { File base name }
|
FBShowUpload = $00000001;
|
||||||
FtpName : String[60]; { FTP directory name }
|
FBSlowMedia = $00000002;
|
||||||
Filename : String[40]; { File name }
|
FBFreeFiles = $00000004;
|
||||||
DispFile : String[20]; { Pre-list display file name }
|
|
||||||
Template : String[20]; { ansi file list template }
|
Type
|
||||||
ListACS, { ACS required to see this base }
|
RecFileBase = Record
|
||||||
FtpACS, { ACS to see in FTP directory }
|
Name : String[40];
|
||||||
SysopACS, { ACS required for SysOp functions}
|
FtpName : String[60];
|
||||||
ULACS, { ACS required to upload files }
|
FileName : String[40];
|
||||||
DLACS : String[mysMaxAcsSize]; { ACS required to download files }
|
DispFile : String[20];
|
||||||
Path : String[120]; { Path where files are stored }
|
Template : String[20];
|
||||||
Password : String[20]; { Password to access this base }
|
ListACS : String[30];
|
||||||
DefScan : Byte; { Default New Scan Setting }
|
FtpACS : String[30];
|
||||||
ShowUL : Boolean;
|
DLACS : String[30];
|
||||||
IsCDROM : Boolean;
|
ULACS : String[30];
|
||||||
IsFREE : Boolean;
|
CommentACS : String[30];
|
||||||
|
SysOpACS : String[30];
|
||||||
|
Path : String[120];
|
||||||
|
Password : String[20];
|
||||||
|
DefScan : Byte;
|
||||||
|
Flags : LongInt;
|
||||||
End;
|
End;
|
||||||
// make flags and merge in shouul, iscdrom,isfree, etc
|
|
||||||
|
|
||||||
(* The file directory listing are stored as <FBaseRec.FileName>.DIR in *)
|
(* The file directory listing are stored as <FBaseRec.FileName>.DIR in *)
|
||||||
(* the data directory. Each record stores the info on one file. File *)
|
(* the data directory. Each record stores the info on one file. File *)
|
||||||
|
|
Loading…
Reference in New Issue