2012-03-17 11:11:50 -07:00
Unit bbs_Cfg_UserEdit;
2012-02-13 16:50:48 -08:00
2013-11-10 12:08:54 -08:00
// ====================================================================
// Mystic BBS Software Copyright 1997-2013 By James Coyle
// ====================================================================
//
// This file is part of Mystic BBS.
//
// Mystic BBS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Mystic BBS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Mystic BBS. If not, see <http://www.gnu.org/licenses/>.
//
// ====================================================================
2012-02-13 16:50:48 -08:00
Interface
Uses
2013-08-29 03:04:20 -07:00
BBS_Records;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
Procedure Configuration_EditUser ( Var U: RecUser) ;
Procedure Configuration_UserEditor;
Procedure Configuration_LocalUserEdit;
2012-02-13 16:50:48 -08:00
Implementation
Uses
2012-03-17 11:11:50 -07:00
m_Types,
m_Strings,
m_DateTime,
m_FileIO,
bbs_Ansi_MenuBox,
bbs_Ansi_MenuForm,
bbs_io,
bbs_Core,
bbs_General,
2013-08-29 03:04:20 -07:00
BBS_Common,
BBS_DataBase,
2013-09-04 12:02:58 -07:00
BBS_Cfg_SecLevel,
BBS_Cfg_QwkNet;
2012-03-17 11:11:50 -07:00
Procedure Configuration_EditUser ( Var U: RecUser) ;
Var
Box : TAnsiMenuBox;
Form : TAnsiMenuForm;
BoxImage : TConsoleImageRec;
PagePos : Byte = 1 ;
Topic : String ;
Changed : Boolean = False ;
NeedForm : Boolean = False ;
Procedure UpdatePage ( Restore: Boolean ) ;
Begin
If Restore Then Session. io. RemoteRestore( BoxImage) ;
VerticalLine ( 2 1 , 6 , 2 0 ) ;
WriteXY ( 6 2 , 6 , 1 1 2 , 'Information' ) ;
WriteXY ( 6 3 , 7 , 1 1 2 , 'Settings 1' ) ;
WriteXY ( 6 3 , 8 , 1 1 2 , 'Settings 2' ) ;
WriteXY ( 6 3 , 9 , 1 1 2 , 'Statistics' ) ;
WriteXY ( 6 0 , 1 0 , 1 1 2 , 'Optional Data' ) ;
WriteXY ( 6 8 , 1 1 , 1 1 2 , 'Flags' ) ;
WriteXY ( 5 9 , 1 3 , 1 2 0 , 'CTRL-U/Upgrade' ) ;
WriteXY ( 6 5 , 2 0 , 1 1 2 , 'Page ' + strI2S( PagePos) + '/6' ) ;
Case PagePos of
1 : WriteXY ( 6 2 , 6 , 1 2 7 , 'INFORMATION' ) ;
2 : WriteXY ( 6 3 , 7 , 1 2 7 , 'SETTINGS 1' ) ;
3 : WriteXY ( 6 3 , 8 , 1 2 7 , 'SETTINGS 2' ) ;
4 : WriteXY ( 6 3 , 9 , 1 2 7 , 'STATISTICS' ) ;
5 : WriteXY ( 6 0 , 1 0 , 1 2 7 , 'OPTIONAL DATA' ) ;
6 : WriteXY ( 6 8 , 1 1 , 1 2 7 , 'FLAGS' ) ;
End ;
NeedForm : = True ;
End ;
2012-02-13 16:50:48 -08:00
Var
2012-03-17 11:11:50 -07:00
Birthdate : String [ 8 ] ;
FirstCall : String [ 8 ] ;
LastCall : String [ 8 ] ;
Temp : Integer ;
SavedUser : RecUser;
2013-09-04 12:02:58 -07:00
QwkNet : RecQwkNetwork;
2012-02-13 16:50:48 -08:00
Begin
2012-03-17 11:11:50 -07:00
Topic : = '|03(|09User Editor|03) |01-|09> |15' ;
SavedUser : = U;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
Box : = TAnsiMenuBox. Create;
Form : = TAnsiMenuForm. Create;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
Box. Header : = ' ' + U. Handle + ' (ID ' + strI2S( U. PermIdx) + ') ' ;
Form. LoExitChars : = #21 ;
Form. HiExitChars : = #71 #73 #79 #81 ;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
Box. Open ( 6 , 5 , 7 4 , 2 1 ) ;
2012-02-13 16:50:48 -08:00
2013-09-16 13:31:39 -07:00
Console. GetScreenImage ( 6 , 5 , 7 4 , 2 1 , BoxImage) ;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
Birthdate : = DateJulian2Str( U. Birthday, 1 ) ;
FirstCall : = DateDos2Str( U. FirstOn, 1 ) ;
LastCall : = DateDos2Str( U. LastOn, 1 ) ;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
UpdatePage( False ) ;
2012-02-13 16:50:48 -08:00
Repeat
2012-03-17 11:11:50 -07:00
Form. ExitOnFirst : = True ;
Form. ExitOnLast : = True ;
Case PagePos of
1 : Form. ExitOnFirst : = False ;
6 : Form. ExitOnLast : = False ;
End ;
If NeedForm Then
Case PagePos of
1 : Begin
WriteXY ( 8 , 1 9 , 1 1 2 , 'Caller ID' ) ;
2012-03-17 14:16:00 -07:00
WriteXY ( 2 3 , 1 9 , 1 1 3 , U. PeerHost) ;
WriteXY ( 2 3 , 2 0 , 1 1 3 , U. PeerIP) ;
2012-03-17 11:11:50 -07:00
Form. Clear;
Form. AddStr ( 'H' , ' Handle' , 7 , 6 , 2 3 , 6 , 1 4 , 3 0 , 3 0 , @ U. Handle, Topic + 'User' 's account handle' ) ;
Form. AddStr ( 'R' , ' Real Name' , 7 , 7 , 2 3 , 7 , 1 4 , 3 0 , 3 0 , @ U. RealName, Topic + 'User' 's real name' ) ;
Form. AddPass ( 'W' , ' Password' , 7 , 8 , 2 3 , 8 , 1 4 , 2 0 , 2 0 , @ U. Password, Topic + 'User' 's password' ) ;
Form. AddStr ( 'A' , ' Address' , 7 , 9 , 2 3 , 9 , 1 4 , 3 0 , 3 0 , @ U. Address, Topic + 'User' 's street address' ) ;
Form. AddStr ( 'C' , ' City' , 7 , 1 0 , 2 3 , 1 0 , 1 4 , 2 5 , 2 5 , @ U. City, Topic + 'User' 's city and state' ) ;
Form. AddStr ( 'Z' , ' Zip Code' , 7 , 1 1 , 2 3 , 1 1 , 1 4 , 1 0 , 1 0 , @ U. ZipCode, Topic + 'User' 's postal code' ) ;
Form. AddStr ( 'P' , ' Home Phone' , 7 , 1 2 , 2 3 , 1 2 , 1 4 , 1 5 , 1 5 , @ U. HomePhone, Topic + 'User' 's home phone number' ) ;
Form. AddStr ( 'O' , ' Data Phone' , 7 , 1 3 , 2 3 , 1 3 , 1 4 , 1 5 , 1 5 , @ U. DataPhone, Topic + 'User' 's data phone number' ) ;
Form. AddStr ( 'E' , ' E-Mail' , 7 , 1 4 , 2 3 , 1 4 , 1 4 , 4 0 , 4 0 , @ U. Email, Topic + 'User' 's email address' ) ;
Form. AddStr ( 'U' , ' User Note' , 7 , 1 5 , 2 3 , 1 5 , 1 4 , 4 0 , 4 0 , @ U. UserInfo, Topic + 'User' 's user note' ) ;
Form. AddChar ( 'G' , ' Gender' , 7 , 1 6 , 2 3 , 1 6 , 1 4 , 3 2 , 2 5 4 , @ U. Gender, Topic + 'User' 's gender. M/Male, F/Female' ) ;
Form. AddDate ( 'B' , ' Birthdate' , 7 , 1 7 , 2 3 , 1 7 , 1 4 , @ Birthdate, Topic + 'User' 's birthdate (MM/DD/YY)' ) ;
End ;
2 : Begin
Form. Clear;
Form. AddByte ( 'S' , ' Security' , 7 , 6 , 2 3 , 6 , 1 4 , 3 , 0 , 2 5 5 , @ U. Security, Topic + 'User' 's security level' ) ;
Form. AddFlag ( '1' , ' Flags #1' , 7 , 7 , 2 3 , 7 , 1 4 , @ U. AF1, Topic + 'User' 's access flags: Set 1' ) ;
Form. AddFlag ( '2' , ' Flags #2' , 7 , 8 , 2 3 , 8 , 1 4 , @ U. AF2, Topic + 'User' 's access flags: Set 2' ) ;
2013-05-20 02:35:04 -07:00
Form. AddWord ( 'T' , ' Time Left' , 7 , 9 , 2 3 , 9 , 1 4 , 4 , 0 , 1 4 4 0 , @ U. TimeLeft, Topic + 'Total number of minutes left for today' ) ;
2012-03-17 11:11:50 -07:00
Form. AddWord ( 'I' , ' Time Bank' , 7 , 1 0 , 2 3 , 1 0 , 1 4 , 5 , 0 , 6 5 0 0 0 , @ U. TimeBank, Topic + 'Total minutes in time bank' ) ;
Form. AddDate ( 'X' , ' Expires' , 7 , 1 1 , 2 3 , 1 1 , 1 4 , @ U. Expires, Topic + 'User' 's account expiration date (00/00/00: Disabled)' ) ;
Form. AddByte ( 'O' , ' To' , 7 , 1 2 , 2 3 , 1 2 , 1 4 , 3 , 0 , 2 5 5 , @ U. ExpiresTo, Topic + 'Security profile to give user after expiration' ) ;
Form. AddStr ( 'T' , ' Theme' , 7 , 1 3 , 2 3 , 1 3 , 1 4 , 2 0 , 2 0 , @ U. Theme, Topic + 'Filename of user' 's theme' ) ;
Form. AddStr ( 'A' , ' Start Menu' , 7 , 1 4 , 2 3 , 1 4 , 1 4 , 2 0 , 2 0 , @ U. StartMenu, Topic + 'User is sent to this menu after logging in' ) ;
Form. AddStr ( 'V' , ' Archive' , 7 , 1 5 , 2 3 , 1 5 , 1 4 , 4 , 4 , @ U. Archive, Topic + 'User' 's archive type extension' ) ;
2012-08-07 23:32:47 -07:00
Form. AddChar ( 'P' , ' Protocol' , 7 , 1 6 , 2 3 , 1 6 , 1 4 , 3 2 , 9 6 , @ U. Protocol, Topic + 'Default protocol hotkey' ) ;
2012-03-17 11:11:50 -07:00
Form. AddByte ( 'C' , ' Screensize' , 7 , 1 7 , 2 3 , 1 7 , 1 4 , 2 , 0 , 5 0 , @ U. ScreenSize, Topic + 'User' 's terminal size in lines' ) ;
Form. AddBol ( 'K' , ' Hot Keys' , 7 , 1 8 , 2 3 , 1 8 , 1 4 , 3 , @ U. HotKeys, Topic + 'User' 's hotkey input status' ) ;
Form. AddBol ( 'U' , ' Auto-Sig' , 7 , 1 9 , 2 3 , 1 9 , 1 4 , 3 , @ U. SigUse, Topic + 'Use auto signature?' ) ;
Form. AddBol ( 'Q' , ' QWK Files' , 7 , 2 0 , 2 3 , 2 0 , 1 4 , 3 , @ U. QwkFiles, Topic + 'New files in QWK?' ) ;
End ;
3 : Begin
Form. Clear;
Form. AddTog ( 'D' , ' Date Format' , 7 , 6 , 2 3 , 6 , 1 4 , 8 , 1 , 3 , 'MM/DD/YY DD/MM/YY YY/MM/DD' , @ U. DateType, Topic + 'User' 's date format' ) ;
2012-06-30 14:48:37 -07:00
Form. AddTog ( 'E' , ' FS Editor' , 7 , 7 , 2 3 , 7 , 1 4 , 4 , 0 , 1 , 'Line Full' , @ U. EditType, Topic + 'User' 's full screen editor setting' ) ;
2012-03-17 11:11:50 -07:00
Form. AddBol ( 'Q' , ' Quote Window' , 7 , 8 , 2 3 , 8 , 1 4 , 3 , @ U. UseLBQuote, Topic + 'User' 's FS editor quote window status' ) ;
Form. AddTog ( 'F' , ' File Listing' , 7 , 9 , 2 3 , 9 , 1 4 , 8 , 0 , 1 , 'Standard Full' , @ U. FileList, Topic + 'User' 's file listing type' ) ;
Form. AddTog ( 'M' , ' Msg Reader' , 7 , 1 0 , 2 3 , 1 0 , 1 4 , 8 , 0 , 1 , 'Standard Full' , @ U. MReadType, Topic + 'Full screen message reader status' ) ;
Form. AddBol ( 'X' , ' Msg Index' , 7 , 1 1 , 2 3 , 1 1 , 1 4 , 3 , @ U. UseLBIndex, Topic + 'Start reading at message index' ) ;
Form. AddBol ( 'I' , ' Mail Index' , 7 , 1 2 , 2 3 , 1 2 , 1 4 , 3 , @ U. UseLBMIdx, Topic + 'Start reading email at message index' ) ;
Form. AddTog ( 'N' , ' Node Chat' , 7 , 1 3 , 2 3 , 1 3 , 1 4 , 8 , 0 , 1 , 'Standard Full' , @ U. UseFullChat, Topic + 'User' 's node chat type' ) ;
2013-02-26 04:45:01 -08:00
Form. AddTog ( 'C' , ' Code Page' , 7 , 1 4 , 2 3 , 1 4 , 1 4 , 5 , 0 , 1 , 'CP437 UTF-8' , @ U. CodePage, Topic + 'User' 's character translation' ) ;
2013-08-28 20:28:53 -07:00
Form. AddBol ( 'Q' , ' QWKE Packet' , 7 , 1 5 , 2 3 , 1 5 , 1 4 , 3 , @ U. QwkExtended, Topic + 'Use QWKE (instead of QWK)' ) ;
2012-03-17 11:11:50 -07:00
End ;
4 : Begin
Form. Clear;
Form. AddDate ( 'F' , ' First Call' , 7 , 6 , 2 3 , 6 , 1 4 , @ FirstCall, Topic + 'Date of first call (MM/DD/YY)' ) ;
Form. AddDate ( 'A' , ' Last Call' , 7 , 7 , 2 3 , 7 , 1 4 , @ LastCall, Topic + 'Date of last call (MM/DD/YY)' ) ;
Form. AddLong ( 'C' , ' Calls' , 7 , 8 , 2 3 , 8 , 1 4 , 7 , 0 , 9 9 9 9 9 9 9 , @ U. Calls, Topic + 'Total number of calls to the BBS' ) ;
Form. AddWord ( 'L' , ' Calls Today' , 7 , 9 , 2 3 , 9 , 1 4 , 5 , 0 , 6 5 0 0 0 , @ U. CallsToday, Topic + 'Total number of calls today' ) ;
2012-08-12 02:26:29 -07:00
Form. AddWord ( 'D' , ' Downloads' , 7 , 1 0 , 2 3 , 1 0 , 1 4 , 7 , 0 , 6 5 0 0 0 , @ U. DLs, Topic + 'Total number of downloads' ) ;
2012-03-17 11:11:50 -07:00
Form. AddWord ( 'T' , ' DLs Today' , 7 , 1 1 , 2 3 , 1 1 , 1 4 , 5 , 0 , 6 5 0 0 0 , @ U. DLsToday, Topic + 'Total downloads today' ) ;
Form. AddLong ( 'W' , ' DL KB' , 7 , 1 2 , 2 3 , 1 2 , 1 4 , 1 0 , 0 , 2 0 0 0 0 0 0 0 0 0 , @ U. DLk, Topic + 'Total downloads in kilobytes' ) ;
Form. AddLong ( 'K' , ' DL KB Today' , 7 , 1 3 , 2 3 , 1 3 , 1 4 , 1 0 , 0 , 2 0 0 0 0 0 0 0 0 0 , @ U. DLkToday, Topic + 'Downloads in kilobytes today' ) ;
Form. AddLong ( 'U' , ' Uploads' , 7 , 1 4 , 2 3 , 1 4 , 1 4 , 1 0 , 0 , 2 0 0 0 0 0 0 0 0 0 , @ U. ULs, Topic + 'Total number of uploads' ) ;
Form. AddLong ( 'B' , ' Upload KB' , 7 , 1 5 , 2 3 , 1 5 , 1 4 , 1 0 , 0 , 2 0 0 0 0 0 0 0 0 0 , @ U. ULk, Topic + 'Total uploads in kilobytes' ) ;
Form. AddLong ( 'M' , ' Msg Posts' , 7 , 1 6 , 2 3 , 1 6 , 1 4 , 1 0 , 0 , 2 0 0 0 0 0 0 0 0 0 , @ U. Posts, Topic + 'Total number of message posts' ) ;
2012-08-12 02:26:29 -07:00
Form. AddLong ( 'E' , ' E-Mails' , 7 , 1 7 , 2 3 , 1 7 , 1 4 , 5 , 0 , 6 5 0 0 0 , @ U. Emails, Topic + 'Number of e-mails sent' ) ;
2012-03-17 11:11:50 -07:00
Form. AddLong ( 'I' , ' File Ratings' , 7 , 1 8 , 2 3 , 1 8 , 1 4 , 1 0 , 0 , 2 0 0 0 0 0 0 0 0 0 , @ U. FileRatings, Topic + 'Total file ratings' ) ;
Form. AddLong ( 'N' , ' File Comments' , 7 , 1 9 , 2 3 , 1 9 , 1 4 , 1 0 , 0 , 2 0 0 0 0 0 0 0 0 0 , @ U. FileComment, Topic + 'Total file comments' ) ;
Form. AddDate ( 'P' , ' Last PW Date' , 7 , 2 0 , 2 3 , 2 0 , 1 4 , @ U. LastPWChange, Topic + 'Date of last password change' ) ;
End ;
5 : Begin
Form. Clear;
For Temp : = 1 to 9 Do
2013-08-28 15:31:33 -07:00
Form. AddStr ( strI2S( Temp) [ 1 ] , ' ' + bbsCfg. OptionalField[ Temp] . Desc, 7 , 5 + Temp, 2 3 , 5 + Temp, 1 4 , 3 3 , 6 0 , @ U. OptionData[ Temp] , Topic + 'User optional field #' + strI2S( Temp) ) ;
2012-03-17 11:11:50 -07:00
2013-08-28 15:31:33 -07:00
Form. AddStr ( '0' , ' ' + bbsCfg. OptionalField[ 1 0 ] . Desc, 7 , 1 5 , 2 3 , 1 5 , 1 4 , 3 3 , 6 0 , @ U. OptionData[ 1 0 ] , Topic + 'User optional field #10' ) ;
2012-03-17 11:11:50 -07:00
End ;
6 : Begin
Form. Clear;
2012-07-19 18:11:52 -07:00
Form. AddBits ( 'D' , ' Deleted' , 7 , 6 , 2 3 , 6 , 1 4 , UserDeleted, @ U. Flags, Topic + 'Is this account marked as deleted?' ) ;
Form. AddBits ( 'L' , ' Locked Out' , 7 , 7 , 2 3 , 7 , 1 4 , UserLockedOut, @ U. Flags, Topic + 'Is this account locked out of the system?' ) ;
Form. AddBits ( 'N' , ' No Ratios' , 7 , 8 , 2 3 , 8 , 1 4 , UserNoRatio, @ U. Flags, Topic + 'Ignore file ratios?' ) ;
Form. AddBits ( 'C' , ' No CallStats' , 7 , 9 , 2 3 , 9 , 1 4 , UserNoLastCall, @ U. Flags, Topic + 'Exclude from caller stats?' ) ;
Form. AddBits ( 'P' , ' No PW Change' , 7 , 1 0 , 2 3 , 1 0 , 1 4 , UserNoPWChange, @ U. Flags, Topic + 'Exclude from forced password change' ) ;
2012-07-30 15:21:06 -07:00
Form. AddBits ( 'H' , ' No History' , 7 , 1 1 , 2 3 , 1 1 , 1 4 , UserNoHistory, @ U. Flags, Topic + 'Exclude from BBS history stats' ) ;
Form. AddBits ( 'T' , ' No Timeout' , 7 , 1 2 , 2 3 , 1 2 , 1 4 , UserNoTimeout, @ U. Flags, Topic + 'Exclude from inactivity timeout' ) ;
2013-09-04 12:02:58 -07:00
Form. AddBits ( 'Q' , ' Qwk Account' , 7 , 1 3 , 2 3 , 1 3 , 1 4 , UserQWKNetwork, @ U. Flags, Topic + 'User is a QWK network account' ) ;
Form. AddNone ( 'N' , ' Qwk Network' , 7 , 1 4 , 2 3 , 1 4 , 1 4 , Topic + 'Member of which QWK network' ) ;
2012-03-17 11:11:50 -07:00
End ;
End ;
NeedForm : = False ;
If Form. WasFirstExit Then Form. ItemPos : = Form. Items;
If Form. WasLastExit Then Form. ItemPos : = 1 ;
2013-09-04 12:02:58 -07:00
If PagePos = 6 Then Begin
QwkNet. Description : = 'None' ;
If ( U. QwkNetwork < > 0 ) And ( Not GetQwkNetByIndex( U. QwkNetwork, QwkNet) ) Then
QwkNet. Description : = 'None' ;
WriteXY ( 2 3 , 1 4 , 1 1 3 , strPadR( QwkNet. Description, 3 0 , ' ' ) ) ;
End ;
2012-03-17 11:11:50 -07:00
Case Form. Execute of
2013-09-04 12:02:58 -07:00
'N' : U. QwkNetwork : = Configuration_QwkNetworks( False ) ;
2012-03-17 11:11:50 -07:00
#21 : Begin
Temp : = Configuration_SecurityEditor( False ) ;
If Temp < > - 1 Then Begin
2012-07-30 15:21:06 -07:00
NeedForm : = True ;
Changed : = True ;
2012-03-17 11:11:50 -07:00
2012-07-30 15:21:06 -07:00
Upgrade_User_Level( Session. User. IsThisUser( U. Handle) , U, Temp) ;
2012-02-13 16:50:48 -08:00
End ;
2012-03-17 11:11:50 -07:00
End ;
#27 : Begin
Changed : = Changed or Form. Changed;
Break;
End ;
#71 : If PagePos < > 1 Then Begin
PagePos : = 1 ;
UpdatePage( True ) ;
End ;
#72 ,
#73 : If PagePos > 1 Then Begin
Dec( PagePos) ;
UpdatePage( True ) ;
End ;
#79 : If PagePos < > 6 Then Begin
PagePos : = 6 ;
UpdatePage( True ) ;
End ;
#80 ,
#81 : If PagePos < 6 Then Begin
Inc ( PagePos) ;
UpdatePage( True ) ;
2012-03-17 14:16:00 -07:00
End Else
Form. ItemPos : = Form. Items;
2012-03-17 11:11:50 -07:00
End ;
Changed : = Changed or Form. Changed;
Until False ;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
U. Birthday : = DateStr2Julian( Birthdate) ;
U. FirstOn : = DateStr2Dos( FirstCall) ;
U. LastOn : = DateStr2Dos( LastCall) ;
Box. Close;
Box. Free;
Form. Free;
If Changed Then
If Not ShowMsgBox( 1 , 'Save changes?' ) Then
U : = SavedUser;
End ;
Procedure Configuration_UserEditor;
Var
Box : TAnsiMenuBox;
List : TAnsiMenuList;
2013-05-08 23:12:55 -07:00
UserFile : File of RecUser;
2012-03-17 11:11:50 -07:00
User : RecUser;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
Procedure MakeList;
Begin
List. Clear;
2012-02-13 16:50:48 -08:00
2013-05-08 23:12:55 -07:00
ioReset ( UserFile, SizeOf( RecUser) , fmRWDN) ;
2012-02-13 16:50:48 -08:00
2013-05-08 23:12:55 -07:00
While Not EOF( UserFile) Do Begin
Read ( UserFile, User) ;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
If User. Flags AND UserDeleted < > 0 Then
List. Add ( strPadR( User. Handle, 3 7 , ' ' ) + 'DELETED' , 0 )
Else
List. Add ( strPadR( User. Handle, 3 2 , ' ' ) +
strPadL( strI2S( User. Security) , 5 , ' ' ) +
strPadL( strI2S( User. PermIdx) , 1 0 , ' ' ) , 0 ) ;
End ;
End ;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
Begin
2013-08-28 15:31:33 -07:00
Assign ( UserFile, bbsCfg. DataPath + 'users.dat' ) ;
2012-03-17 11:11:50 -07:00
2013-05-08 23:12:55 -07:00
If Not ioReset( UserFile, SizeOf( RecUser) , fmRWDN) Then
2013-08-28 15:31:33 -07:00
If ( FileExist( bbsCfg. DataPath + 'users.dat' ) ) OR NOT
2013-05-08 23:12:55 -07:00
( ioReWrite( UserFile, SizeOf( RecUser) , fmRWDN) ) Then
Exit;
2012-03-17 11:11:50 -07:00
Box : = TAnsiMenuBox. Create;
List : = TAnsiMenuList. Create;
List. NoWindow : = True ;
List. LoChars : = #13 #27 ;
Box. Header : = ' User Editor ' ;
Box. Open ( 1 5 , 5 , 6 5 , 2 1 ) ;
WriteXY ( 1 7 , 7 , 1 1 2 , 'User Name Level UserID' ) ;
WriteXY ( 1 6 , 8 , 1 1 2 , strRep( #196 , 4 9 ) ) ;
Repeat
MakeList;
List. Open ( 1 5 , 8 , 6 5 , 2 1 ) ;
List. Close;
Case List. ExitCode of
2013-03-24 02:47:36 -07:00
#13 : If List. ListMax < > 0 Then Begin
2013-05-08 23:12:55 -07:00
Seek ( UserFile, List. Picked - 1 ) ;
Read ( UserFile, User) ;
2012-03-17 11:11:50 -07:00
Configuration_EditUser( User) ;
2013-05-08 23:12:55 -07:00
Seek ( UserFile, List. Picked - 1 ) ;
Write ( UserFile, User) ;
2012-02-13 16:50:48 -08:00
End ;
2012-03-17 11:11:50 -07:00
#27 : Break;
End ;
Until False ;
2013-05-08 23:12:55 -07:00
Close ( UserFile) ;
2012-03-17 11:11:50 -07:00
2013-05-08 23:12:55 -07:00
Box. Close;
2012-03-17 11:11:50 -07:00
List. Free;
Box. Free;
End ;
Procedure Configuration_LocalUserEdit;
Var
SavedLocal : Boolean ;
Begin
2012-08-11 11:58:58 -07:00
Session. io. BufFlush;
2012-03-17 11:11:50 -07:00
SavedLocal : = Session. LocalMode;
Session. InUserEdit : = True ;
Session. LocalMode : = True ;
2012-02-13 16:50:48 -08:00
2012-03-17 11:11:50 -07:00
Configuration_EditUser ( Session. User. ThisUser) ;
2012-02-13 16:50:48 -08:00
2013-09-16 13:31:39 -07:00
Console. WriteXY ( 1 , 2 4 , 7 , strRep( ' ' , 8 0 ) ) ;
2013-03-13 20:56:42 -07:00
2012-02-13 16:50:48 -08:00
Session. InUserEdit : = False ;
2012-03-17 11:11:50 -07:00
Session. LocalMode : = SavedLocal;
2012-07-19 18:11:52 -07:00
2012-07-30 15:21:06 -07:00
Session. SetTimeLeft( Session. User. ThisUser. TimeLeft) ;
2012-07-19 18:11:52 -07:00
{$IFNDEF UNIX}
2013-09-16 13:31:39 -07:00
UpdateStatusLine( Session. StatusPtr, '' ) ;
2012-07-19 18:11:52 -07:00
{$ENDIF}
2012-02-13 16:50:48 -08:00
End ;
End .