209 lines
9.2 KiB
Ucode
209 lines
9.2 KiB
Ucode
Class xVoteWebApp extends Object implements(IQueryHandler);
|
|
|
|
var WebAdmin webadmin;
|
|
var string MapVoterURL;
|
|
var int EditSettingLine;
|
|
|
|
function cleanup()
|
|
{
|
|
webadmin = None;
|
|
}
|
|
|
|
function init(WebAdmin webapp)
|
|
{
|
|
webadmin = webapp;
|
|
}
|
|
|
|
function registerMenuItems(WebAdminMenu menu)
|
|
{
|
|
menu.addMenu(MapVoterURL, "X - Mapvote", self, "Modify settings of mapvote.", -88);
|
|
}
|
|
|
|
function bool handleQuery(WebAdminQuery q)
|
|
{
|
|
switch (q.request.URI)
|
|
{
|
|
case MapVoterURL:
|
|
handleMapVotes(q);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
final function IncludeFile(WebAdminQuery q, string file)
|
|
{
|
|
local string S;
|
|
|
|
if (webadmin.HTMLSubDirectory!="")
|
|
{
|
|
S = webadmin.Path $ "/" $ webadmin.HTMLSubDirectory $ "/" $ file;
|
|
if (q.response.FileExists(S))
|
|
{
|
|
q.response.IncludeUHTM(S);
|
|
return;
|
|
}
|
|
}
|
|
q.response.IncludeUHTM(webadmin.Path $ "/" $ file);
|
|
}
|
|
|
|
final function SendHeader(WebAdminQuery q, string Title)
|
|
{
|
|
local IQueryHandler handler;
|
|
|
|
q.response.Subst("page.title", Title);
|
|
q.response.Subst("page.description", "");
|
|
foreach webadmin.handlers(handler)
|
|
{
|
|
handler.decoratePage(q);
|
|
}
|
|
q.response.Subst("messages", webadmin.renderMessages(q));
|
|
if (q.session.getString("privilege.log") != "")
|
|
{
|
|
q.response.Subst("privilege.log", webadmin.renderPrivilegeLog(q));
|
|
}
|
|
IncludeFile(q,"header.inc");
|
|
q.response.SendText("<div id=\"content\"><h2>"$Title$"</h2></div><div class=\"section\">");
|
|
}
|
|
|
|
final function SendFooter(WebAdminQuery q)
|
|
{
|
|
IncludeFile(q,"navigation.inc");
|
|
IncludeFile(q,"footer.inc");
|
|
q.response.ClearSubst();
|
|
}
|
|
|
|
final function AddConfigEditbox(WebAdminQuery q, string InfoStr, string CurVal, int MaxLen, string ResponseVar, string Tooltip, optional bool bNoTR)
|
|
{
|
|
local string S;
|
|
|
|
S = "<abbr title=\""$Tooltip$"\"><TD>"$InfoStr$":</TD><TD><input class=\"textbox\" class=\"text\" name=\""$ResponseVar$"\" size=\""$Min(100,MaxLen)$"\" value=\""$CurVal$"\" maxlength=\""$MaxLen$"\"></TD></abbr>";
|
|
if (!bNoTR)
|
|
S = "<TR>"$S$"</TR>";
|
|
q.response.SendText(S);
|
|
}
|
|
|
|
final function AddInLineEditbox(WebAdminQuery q, string CurVal, int MaxLen, string ResponseVar, string Tooltip)
|
|
{
|
|
q.response.SendText("<abbr title=\""$Tooltip$"\"><TD><input class=\"textbox\" class=\"text\" name=\""$ResponseVar$"\" size=\""$Min(100,MaxLen)$"\" value=\""$CurVal$"\" maxlength=\""$MaxLen$"\"></TD></abbr>");
|
|
}
|
|
|
|
function handleMapVotes(WebAdminQuery q)
|
|
{
|
|
local int i;
|
|
local string S;
|
|
|
|
S = q.request.getVariable("edit");
|
|
if (S=="Submit")
|
|
{
|
|
class'xVotingHandler'.Default.VoteTime = int(q.request.getVariable("VT",string(class'xVotingHandler'.Default.VoteTime)));
|
|
class'xVotingHandler'.Default.MidGameVotePct = float(q.request.getVariable("MV",string(class'xVotingHandler'.Default.MidGameVotePct)));
|
|
class'xVotingHandler'.Default.MapWinPct = float(q.request.getVariable("VP",string(class'xVotingHandler'.Default.MapWinPct)));
|
|
class'xVotingHandler'.Default.MapChangeDelay = float(q.request.getVariable("SD",string(class'xVotingHandler'.Default.MapChangeDelay)));
|
|
class'xVotingHandler'.Default.MaxMapsOnList = int(q.request.getVariable("MXP",string(class'xVotingHandler'.Default.MaxMapsOnList)));
|
|
class'xVotingHandler'.Static.StaticSaveConfig();
|
|
EditSettingLine = -1;
|
|
}
|
|
else if (S=="New")
|
|
{
|
|
i = class'xVotingHandler'.Default.GameModes.Length;
|
|
class'xVotingHandler'.Default.GameModes.Length = i+1;
|
|
class'xVotingHandler'.Default.GameModes[i].GameName = "Killing Floor";
|
|
class'xVotingHandler'.Default.GameModes[i].GameShortName = "KF";
|
|
class'xVotingHandler'.Default.GameModes[i].GameClass = "KFGameContent.KFGameInfo_Survival";
|
|
EditSettingLine = i;
|
|
class'xVotingHandler'.Static.StaticSaveConfig();
|
|
}
|
|
else if (S=="Save")
|
|
{
|
|
if (EditSettingLine>=0 && EditSettingLine<class'xVotingHandler'.Default.GameModes.Length)
|
|
{
|
|
i = EditSettingLine;
|
|
class'xVotingHandler'.Default.GameModes[i].GameName = q.request.getVariable("GN",class'xVotingHandler'.Default.GameModes[i].GameName);
|
|
class'xVotingHandler'.Default.GameModes[i].GameShortName = q.request.getVariable("GS",class'xVotingHandler'.Default.GameModes[i].GameName);
|
|
class'xVotingHandler'.Default.GameModes[i].GameClass = q.request.getVariable("GC",class'xVotingHandler'.Default.GameModes[i].GameName);
|
|
class'xVotingHandler'.Default.GameModes[i].Mutators = q.request.getVariable("MM",class'xVotingHandler'.Default.GameModes[i].GameName);
|
|
class'xVotingHandler'.Default.GameModes[i].Options = q.request.getVariable("OP",class'xVotingHandler'.Default.GameModes[i].GameName);
|
|
class'xVotingHandler'.Default.GameModes[i].Prefix = q.request.getVariable("PF",class'xVotingHandler'.Default.GameModes[i].GameName);
|
|
class'xVotingHandler'.Default.GameModes[i].ServerName = q.request.getVariable("SN",class'xVotingHandler'.Default.GameModes[i].GameName);
|
|
class'xVotingHandler'.Static.StaticSaveConfig();
|
|
}
|
|
EditSettingLine = -1;
|
|
}
|
|
else
|
|
{
|
|
for (i=0; i<class'xVotingHandler'.Default.GameModes.Length; ++i)
|
|
{
|
|
S = q.request.getVariable("edit"$i);
|
|
if (S=="Delete")
|
|
{
|
|
class'xVotingHandler'.Default.GameModes.Remove(i,1);
|
|
class'xVotingHandler'.Static.StaticSaveConfig();
|
|
EditSettingLine = -1;
|
|
break;
|
|
}
|
|
else if (S=="Edit")
|
|
{
|
|
EditSettingLine = i;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
SendHeader(q,"X - Mapvote");
|
|
q.response.SendText("<form method=\"post\" action=\""$webadmin.Path$MapVoterURL$"\"><table id=\"settings\" class=\"grid\">");
|
|
q.response.SendText("<thead><tr><th colspan=2>Mapvote settings</th></tr></thead><tbody>");
|
|
AddConfigEditbox(q,"Mapvote time",string(class'xVotingHandler'.Default.VoteTime),8,"VT","Time in seconds people have to cast mapvote");
|
|
AddConfigEditbox(q,"Mid-Game vote pct",string(class'xVotingHandler'.Default.MidGameVotePct),12,"MV","Number of people in percent needs to vote to make game initiate mid-game mapvote");
|
|
AddConfigEditbox(q,"Map win vote pct",string(class'xVotingHandler'.Default.MapWinPct),12,"VP","Number of people in percent needs to vote for same map for mapvote instantly switch to it");
|
|
AddConfigEditbox(q,"Map switch delay",string(class'xVotingHandler'.Default.MapChangeDelay),12,"SD","Time in seconds delay after a mapvote has passed, when server actually switches map");
|
|
AddConfigEditbox(q,"Max Maps On List",string(class'xVotingHandler'.Default.MaxMapsOnList),8,"MXP","Maximum maps that should show on mapvote GUI before starting to remove random ones (0 = no limit)");
|
|
q.response.SendText("<tr><td></td><td><input class=\"button\" type=\"submit\" name=\"edit\" value=\"Submit\"></td></tr>");
|
|
q.response.SendText("</tbody></table></form>");
|
|
q.response.SendText("<form method=\"post\" action=\""$webadmin.Path$MapVoterURL$"\"><table id=\"settings\" class=\"grid\">");
|
|
q.response.SendText("<thead><tr><th colspan=7>Mapvote game modes</th></tr></thead><tbody>");
|
|
q.response.SendText("<tr><th>Game Name</th><th>Game Short Name</th><th>Game Class</th><th>Mutators</th><th>Options</th><th>Map Prefix</th><th>Server Name</th><th></th></tr>");
|
|
for (i=0; i<class'xVotingHandler'.Default.GameModes.Length; ++i)
|
|
{
|
|
if (EditSettingLine==i)
|
|
{
|
|
q.response.SendText("<tr>",false);
|
|
AddInLineEditbox(q,class'xVotingHandler'.Default.GameModes[i].GameName,48,"GN","Game type long display name");
|
|
AddInLineEditbox(q,class'xVotingHandler'.Default.GameModes[i].GameShortName,12,"GS","Game type short display name");
|
|
AddInLineEditbox(q,class'xVotingHandler'.Default.GameModes[i].GameClass,38,"GC","Game type class name to run");
|
|
AddInLineEditbox(q,class'xVotingHandler'.Default.GameModes[i].Mutators,120,"MM","List of mutators to run along with this game option (separated with commas)");
|
|
AddInLineEditbox(q,class'xVotingHandler'.Default.GameModes[i].Options,100,"OP","List of options to run along with this game option (separated with question mark)");
|
|
AddInLineEditbox(q,class'xVotingHandler'.Default.GameModes[i].Prefix,16,"PF","Maps prefix to filter out maps not wanted for this game mode");
|
|
AddInLineEditbox(q,class'xVotingHandler'.Default.GameModes[i].ServerName,16,"SN","Server name that will be set when this mode is selected ");
|
|
q.response.SendText("</td><td><input class=\"button\" type=\"submit\" name=\"edit\" value=\"Save\"><input class=\"button\" type=\"submit\" name=\"edit"$i$"\" value=\"Delete\"></td></tr>");
|
|
}
|
|
else
|
|
{
|
|
q.response.SendText("<tr><td>"$class'xVotingHandler'.Default.GameModes[i].GameName$
|
|
"</td><td>"$class'xVotingHandler'.Default.GameModes[i].GameShortName$
|
|
"</td><td>"$class'xVotingHandler'.Default.GameModes[i].GameClass$
|
|
"</td><td>"$class'xVotingHandler'.Default.GameModes[i].Mutators$
|
|
"</td><td>"$class'xVotingHandler'.Default.GameModes[i].Options$
|
|
"</td><td>"$class'xVotingHandler'.Default.GameModes[i].Prefix$
|
|
"</td><td>"$class'xVotingHandler'.Default.GameModes[i].ServerName$
|
|
"</td><td><input class=\"button\" type=\"submit\" name=\"edit"$i$"\" value=\"Edit\"><input class=\"button\" type=\"submit\" name=\"edit"$i$"\" value=\"Delete\"></td></tr>");
|
|
}
|
|
}
|
|
q.response.SendText("<tr><td><input class=\"button\" type=\"submit\" name=\"edit\" value=\"New\"></td></tr>");
|
|
q.response.SendText("</tbody></table></form>");
|
|
q.response.SendText("</div></body></html>");
|
|
SendFooter(q);
|
|
}
|
|
|
|
function bool producesXhtml()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
function bool unhandledQuery(WebAdminQuery q);
|
|
function decoratePage(WebAdminQuery q);
|
|
|
|
defaultproperties
|
|
{
|
|
MapVoterURL="/settings/xMapVoter"
|
|
EditSettingLine=-1
|
|
} |