mysticbbs/mystic/bbs_cfg_vote.pas

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.