175 lines
7.9 KiB
ObjectPascal
175 lines
7.9 KiB
ObjectPascal
Unit bbs_cfg_Vote;
|
|
|
|
// ====================================================================
|
|
// 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/>.
|
|
//
|
|
// ====================================================================
|
|
|
|
{$I M_OPS.PAS}
|
|
|
|
Interface
|
|
|
|
Procedure Vote_Editor;
|
|
|
|
Implementation
|
|
|
|
Uses
|
|
m_Strings,
|
|
bbs_Common,
|
|
bbs_Core,
|
|
bbs_User;
|
|
|
|
Procedure Vote_Editor;
|
|
var
|
|
A,
|
|
B : Integer;
|
|
C : Byte;
|
|
Temp : String[2];
|
|
Begin
|
|
Session.SystemLog ('*VOTE EDITOR*');
|
|
|
|
Repeat
|
|
Session.io.OutFullLn ('|CL|14Voting Booth Editor|CR|CR|15## Question|CR|09-- ---------------------------------------');
|
|
|
|
Reset (Session.VoteFile);
|
|
|
|
While Not Eof(Session.VoteFile) Do Begin
|
|
Read (Session.VoteFile, Session.Vote);
|
|
|
|
Session.io.OutFullLn ('|15' + strPadR(strI2S(FilePos(Session.VoteFile)), 4, ' ') + '|14' + Session.Vote.Question);
|
|
End;
|
|
|
|
Session.io.OutFull ('|CR|09(A)dd, (D)elete, (E)dit, (Q)uit? ');
|
|
|
|
Case Session.io.OneKey ('ADEQ', True) of
|
|
'A' : If FileSize(Session.VoteFile) = mysMaxVoteQuestion Then
|
|
Session.io.OutFullLn ('|CR|14Max # of questions is ' + strI2S(mysMaxVoteQuestion))
|
|
Else Begin
|
|
Session.Vote.Votes := 0;
|
|
Session.Vote.AnsNum := 1;
|
|
Session.Vote.ACS := 's999';
|
|
Session.Vote.AddACS := 's999';
|
|
Session.Vote.ForceACS := 's999';
|
|
Session.Vote.Question := 'New Question';
|
|
Session.Vote.Answer[1].Text := 'New voting answer';
|
|
Session.Vote.Answer[1].Votes := 0;
|
|
|
|
Seek (Session.VoteFile, FileSize(Session.VoteFile));
|
|
Write (Session.VoteFile, Session.Vote);
|
|
End;
|
|
'D' : begin
|
|
Session.io.OutRaw ('Delete which? ');
|
|
a := strS2I(Session.io.GetInput(3, 3, 11, ''));
|
|
If (A > 0) And (A <= FileSize(Session.VoteFile)) Then Begin
|
|
Session.io.OutFullLn ('|CRDeleting...');
|
|
KillRecord (Session.VoteFile, A, SizeOf(VoteRec));
|
|
|
|
Reset (Session.User.UserFile);
|
|
While Not Eof(Session.User.UserFile) Do Begin
|
|
Read (Session.User.UserFile, Session.User.TempUser);
|
|
For C := A To 19 Do
|
|
Session.User.TempUser.Vote[C] := Session.User.TempUser.Vote[C+1];
|
|
Session.User.TempUser.Vote[20] := 0;
|
|
Seek (Session.User.UserFile, FilePos(Session.User.UserFile) - 1);
|
|
Write (Session.User.UserFile, Session.User.TempUser);
|
|
End;
|
|
Close (Session.User.UserFile);
|
|
For C := A to 19 Do
|
|
Session.User.ThisUser.Vote[C] := Session.User.ThisUser.Vote[C+1];
|
|
Session.User.ThisUser.Vote[20] := 0;
|
|
End;
|
|
end;
|
|
'E' : begin
|
|
Session.io.OutRaw ('Edit which? ');
|
|
A := strS2I(Session.io.GetInput(3, 3, 11, ''));
|
|
If (A > 0) And (A <= FileSize(Session.VoteFile)) then begin
|
|
Seek (Session.VoteFile, A - 1);
|
|
Read (Session.VoteFile, Session.Vote);
|
|
repeat
|
|
Session.io.OutFullLn ('|CL|14Question ' + strI2S(FilePos(Session.VoteFile)) + ' of ' + strI2S(FileSize(Session.VoteFile)) + '|CR|03');
|
|
Session.io.OutRawln ('A. Question : ' + strPadR(Session.Vote.Question, 60, ' '));
|
|
Session.io.OutRawLn ('B. Votes : ' + strI2S(Session.Vote.Votes));
|
|
Session.io.OutRawLn ('C. Vote ACS : ' + Session.Vote.ACS);
|
|
Session.io.OutRawLn ('E. Add ACS : ' + Session.Vote.AddACS);
|
|
Session.io.OutRawLn ('F. Forced ACS : ' + Session.Vote.ForceACS);
|
|
Session.io.OutFullLn ('|CR|15## Answer ## Answer');
|
|
Session.io.OutFullLn ('|09-- ----------------------------------- -- ------------------------------------');
|
|
|
|
For B := 1 to Session.Vote.AnsNum Do Begin
|
|
Session.io.OutFull ('|11' + strZero(B) + ' |14' + strPadR(Session.Vote.Answer[B].Text, 35, ' ') + ' ');
|
|
If (B Mod 2 = 0) or (B = Session.Vote.AnsNum) Then Session.io.OutRawLn ('');
|
|
End;
|
|
Session.io.OutFull ('|CR|09(D)elete, (I)nsert, (Q)uit: ');
|
|
Temp := Session.io.GetInput(2, 2, 12, '');
|
|
If Temp = 'A' Then Session.Vote.Question := Session.io.InXY(17, 3, 60, 70, 11, Session.Vote.Question) Else
|
|
If Temp = 'B' Then Session.Vote.Votes := strS2I(Session.io.InXY(17, 4, 5, 5, 12, strI2S(Session.Vote.Votes))) Else
|
|
If Temp = 'C' Then Session.Vote.ACS := Session.io.InXY(17, 5, 20, 20, 11, Session.Vote.ACS) Else
|
|
If Temp = 'D' Then Begin
|
|
Session.io.OutFull ('Delete which answer? ');
|
|
A := strS2I(Session.io.GetInput(2, 2, 12, ''));
|
|
If (A > 0) and (A <= Session.Vote.AnsNum) Then Begin
|
|
For C := A to Session.Vote.AnsNum-1 Do
|
|
Session.Vote.Answer[C] := Session.Vote.Answer[C+1];
|
|
Dec (Session.Vote.AnsNum);
|
|
|
|
Reset (Session.User.UserFile);
|
|
While Not Eof(Session.User.UserFile) Do Begin
|
|
Read (Session.User.UserFile, Session.User.TempUser);
|
|
If Session.User.TempUser.Vote[FilePos(Session.VoteFile)] = A Then Begin
|
|
Session.User.TempUser.Vote[FilePos(Session.VoteFile)] := 0;
|
|
Seek (Session.User.UserFile, FilePos(Session.User.UserFile) - 1);
|
|
Write (Session.User.UserFile, Session.User.TempUser);
|
|
End;
|
|
End;
|
|
Close (Session.User.UserFile);
|
|
If Session.User.ThisUser.Vote[FilePos(Session.VoteFile)] = A Then
|
|
Session.User.ThisUser.Vote[FilePos(Session.VoteFile)] := 0;
|
|
End;
|
|
End Else
|
|
If Temp = 'E' Then Session.Vote.AddACS := Session.io.InXY(17, 6, 20, 20, 11, Session.Vote.AddACS) Else
|
|
If Temp = 'F' Then Session.Vote.ForceACS := Session.io.InXY(17, 7, 20, 20, 11, Session.Vote.ForceACS) Else
|
|
If (Temp = 'I') and (Session.Vote.AnsNum < 15) Then Begin
|
|
Inc (Session.Vote.AnsNum);
|
|
Session.Vote.Answer[Session.Vote.AnsNum].Text := '';
|
|
Session.Vote.Answer[Session.Vote.AnsNum].Votes := 0;
|
|
End Else
|
|
If Temp = 'Q' Then Break Else Begin
|
|
A := strS2I(Temp);
|
|
If (A > 0) and (A < 21) Then Begin
|
|
Session.io.OutRaw ('Answer: ');
|
|
Session.Vote.Answer[A].Text := Session.io.GetInput (40, 40, 11, Session.Vote.Answer[A].Text);
|
|
Session.io.OutRaw ('Votes : ');
|
|
Session.Vote.Answer[A].Votes := strS2I(Session.io.GetInput(5, 5, 12, strI2S(Session.Vote.Answer[A].Votes)));
|
|
End;
|
|
End;
|
|
until false;
|
|
seek (Session.VoteFile, filepos(Session.VoteFile)-1);
|
|
write (Session.VoteFile, Session.Vote);
|
|
end;
|
|
end;
|
|
'Q' : break;
|
|
end;
|
|
|
|
Until False;
|
|
|
|
Close (Session.VoteFile);
|
|
End;
|
|
|
|
End.
|