Adding hidden admin tab for pertinent users
This commit is contained in:
@@ -6,6 +6,7 @@ import com.gempukku.lotro.game.Player;
|
||||
import io.netty.handler.codec.http.HttpMethod;
|
||||
import io.netty.handler.codec.http.HttpRequest;
|
||||
import io.netty.handler.codec.http.QueryStringDecoder;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
@@ -27,8 +28,7 @@ public class PlayerInfoRequestHandler extends LotroServerRequestHandler implemen
|
||||
String participantId = getQueryParameterSafely(queryDecoder, "participantId");
|
||||
Player resourceOwner = getResourceOwnerSafely(request, participantId);
|
||||
|
||||
String playerName = resourceOwner.getName();
|
||||
responseWriter.writeJsonResponse(JsonConvert.toJson(playerName));
|
||||
responseWriter.writeJsonResponse(JSON.toJSONString(resourceOwner.GetUserInfo()));
|
||||
|
||||
} else {
|
||||
throw new HttpProcessingException(404);
|
||||
|
||||
@@ -1,34 +1,2 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>Cache</h1>
|
||||
<a href="/gemp-lotr-server/admin/clearCache">Clear cache</a>
|
||||
|
||||
<h1>Message of the Day</h1>
|
||||
|
||||
<form method="POST" action="/gemp-lotr-server/admin/setMotd">
|
||||
MotD: <input type="text" name="motd"><br/>
|
||||
<input type="submit" value="Set MotD">
|
||||
</form>
|
||||
|
||||
<h1>Collections</h1>
|
||||
|
||||
<h2>Add items</h2>
|
||||
|
||||
<form method="POST" action="/gemp-lotr-server/admin/addItems">
|
||||
Type: <input type="text" name="collectionType"><br/>
|
||||
Product: <textarea rows="5" cols="20" name="product"></textarea><br/>
|
||||
Players: <textarea rows="5" cols="20" name="players"></textarea><br/>
|
||||
<input type="submit" value="Add items">
|
||||
</form>
|
||||
|
||||
<h2>Add items to collection</h2>
|
||||
|
||||
<form method="POST" action="/gemp-lotr-server/admin/addItemsToCollection">
|
||||
Type: <input type="text" name="collectionType"><br/>
|
||||
Reason: <input type="text" name="reason"><br/>
|
||||
Product: <textarea rows="5" cols="20" name="product"></textarea><br/>
|
||||
<input type="submit" value="Add items to collection">
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
You don't need this anymore :)<br><br>
|
||||
Go to the <a href="hall.html">main hall</a> and click on the Admin tab instead.
|
||||
@@ -1,198 +1,2 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Gemp-LotR Ban Manager</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-size: 12px;
|
||||
background-color: #000000;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="css/gemp-001/hall.css">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="css/dark-hive/jquery-ui-1.8.16.custom.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/jquery.contextMenu.css">
|
||||
<link rel="stylesheet" type="text/css" href="js/jquery/styles/jquery.spinnercontrol.css">
|
||||
|
||||
<script type="text/javascript" src="js/jquery/jquery-1.6.2.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.cookie.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.spinnercontrol.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.layout.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.touchSwipe.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/inheritance.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/common.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/logging.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/chat.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/communication.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/deliveryService.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/commonUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/cardFilter.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/jCardGroup.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/hobbit.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/set40.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/jCards.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/PC_Cards.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/hallUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/leagueResultsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/tournamentResultsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/statsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/playerStatsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameHistoryUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/deckBuildingUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameAnimations.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/merchantUi.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function submitFormToAddress(url, formElem, success, error) {
|
||||
var data = {};
|
||||
|
||||
var inputs = $("input[type='text'], input[type='checkbox']:checked, option:selected", formElem).each(
|
||||
function () {
|
||||
var input = $(this);
|
||||
var name = null;
|
||||
var value = null;
|
||||
if (input.prop("tagName") == "INPUT") {
|
||||
name = input.attr("name");
|
||||
value = input.val();
|
||||
} else if (input.prop("tagName") == "OPTION") {
|
||||
name = input.parents("select").attr("name");
|
||||
value = input.attr("value");
|
||||
}
|
||||
if (name != null && value != null) {
|
||||
if (data[name] == null)
|
||||
data[name] = new Array();
|
||||
data[name].push(value);
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
url:serverDomain+url,
|
||||
cache:false,
|
||||
data:data,
|
||||
traditional:true,
|
||||
success:success,
|
||||
error:error,
|
||||
dataType:"xml"
|
||||
});
|
||||
}
|
||||
|
||||
function banMultiple() {
|
||||
var actionSuccess = function () {
|
||||
alert("Operation was successful");
|
||||
};
|
||||
|
||||
var actionFailure = function (xhr) {
|
||||
var status = xhr.status;
|
||||
if (status == 404)
|
||||
alert("Specified resource (player, league) does not exist. Check the spelling and try again.");
|
||||
else
|
||||
alert("Unknown error. Status code - "+status);
|
||||
};
|
||||
|
||||
submitFormToAddress("/gemp-lotr-server/admin/banMultiple", $("#banMultipleForm").eq(0), actionSuccess, actionFailure);
|
||||
}
|
||||
|
||||
$(document).ready(
|
||||
function () {
|
||||
var actionSuccess = function () {
|
||||
alert("Operation was successful");
|
||||
};
|
||||
|
||||
var actionFailure = function (xhr) {
|
||||
var status = xhr.status;
|
||||
if (status == 404)
|
||||
alert("Specified resource (player, league) does not exist. Check the spelling and try again.");
|
||||
else
|
||||
alert("Unknown error. Status code - "+status);
|
||||
};
|
||||
|
||||
var displayUsers = function (xml) {
|
||||
var root = xml.documentElement;
|
||||
if (root.tagName == 'players') {
|
||||
var playersDiv = $("#displayUsers");
|
||||
playersDiv.html("");
|
||||
playersDiv.append("Similar accounts:");
|
||||
var form = $("<form id='banMultipleForm' method='POST' action='/gemp-lotr-server/admin/banMultiple'></form>");
|
||||
|
||||
var table = $("<table class='tables'></table>");
|
||||
table.append("<tr><th></th><th>Id</th><th>Name</th><th>Password (hash)</th><th>Create IP</th><th>Login IP</th><th>User status</th></tr>");
|
||||
|
||||
var players = root.getElementsByTagName("player");
|
||||
for (var j=0; j<players.length; j++) {
|
||||
var player = players[j];
|
||||
var id=player.getAttribute("id");
|
||||
var name=player.getAttribute("name");
|
||||
var password = player.getAttribute("password");
|
||||
var createIp = player.getAttribute("createIp");
|
||||
var loginIp = player.getAttribute("loginIp");
|
||||
var status = player.getAttribute("status");
|
||||
table.append("<tr><td><input type='checkbox' name='login' value='"+name+"'></td><td>"+id+"</td><td>"+name+"</td><td>"+password+"</td><td>"+createIp+"</td><td>"+loginIp+"</td><td>"+status+"</td></tr>");
|
||||
}
|
||||
form.append(table);
|
||||
form.append("<input type='button' value='Ban selected' onClick='banMultiple();'>");
|
||||
|
||||
playersDiv.append(form);
|
||||
}
|
||||
};
|
||||
|
||||
$("#banUser").click(
|
||||
function() {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/banUser", $("#banUserForm").eq(0), actionSuccess, actionFailure);
|
||||
});
|
||||
$("#banUserTemp").click(
|
||||
function() {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/banUserTemp", $("#banUserTempForm").eq(0), actionSuccess, actionFailure);
|
||||
});
|
||||
$("#unBanUser").click(
|
||||
function() {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/unBanUser", $("#unBanUserForm").eq(0), actionSuccess, actionFailure);
|
||||
});
|
||||
$("#findMultipleAccounts").click(
|
||||
function() {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/findMultipleAccounts", $("#findMultipleAccountsForm").eq(0), displayUsers, actionFailure);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Ban user</h1>
|
||||
<h2>Permanently</h2>
|
||||
<form id="banUserForm" method="POST" action="/gemp-lotr-server/admin/banUser">
|
||||
Name (case-sensitive): <input type="text" name="login"><br/>
|
||||
<input id="banUser" type="button" value="Ban user permanently">
|
||||
</form>
|
||||
<h2>Temporarily</h2>
|
||||
<form id="banUserTempForm" method="POST" action="/gemp-lotr-server/admin/banUserTemp">
|
||||
Name (case-sensitive): <input type="text" name="login"><br/>
|
||||
Duration:
|
||||
<select name="duration">
|
||||
<option value="1">1 day</option>
|
||||
<option value="3">3 days</option>
|
||||
<option value="7">7 days</option>
|
||||
<option value="14">14 days</option>
|
||||
<option value="30">30 days</option>
|
||||
</select><br/>
|
||||
<input id="banUserTemp" type="button" value="Ban user temporarily">
|
||||
</form>
|
||||
<h1>Unban user</h1>
|
||||
<form id="unBanUserForm" method="POST" action="/gemp-lotr-server/admin/unBanUser">
|
||||
Name (case-sensitive): <input type="text" name="login"><br/>
|
||||
<input id="unBanUser" type="button" value="Unban user">
|
||||
</form>
|
||||
<h1>Find suspicious behaviour</h1>
|
||||
<h2>Multiple user accounts</h2>
|
||||
<form id="findMultipleAccountsForm" method="POST" action="/gemp-lotr-server/admin/findMultipleAccounts">
|
||||
Name (case-sensitive): <input type="text" name="login"><br/>
|
||||
<input id="findMultipleAccounts" type="button" value="Find similar accounts">
|
||||
</form>
|
||||
<div id="displayUsers"></div>
|
||||
</body>
|
||||
</html>
|
||||
You don't need this anymore :)<br><br>
|
||||
Go to the <a href="hall.html">main hall</a> and click on the Admin tab instead.
|
||||
@@ -140,8 +140,7 @@ button > span {
|
||||
#serverInfo {
|
||||
align-items:stretch;
|
||||
overflow: visible;
|
||||
flex-grow: 1;
|
||||
|
||||
flex-shrink: 1;
|
||||
|
||||
padding: 7px;
|
||||
position: sticky;
|
||||
@@ -171,14 +170,26 @@ button > span {
|
||||
|
||||
#gameHall {
|
||||
overflow-y: scroll;
|
||||
width: calc(100% );
|
||||
}
|
||||
|
||||
#gameHallMain {
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#hall {
|
||||
flex-grow: 3;
|
||||
}
|
||||
|
||||
.hall-tab {
|
||||
background: linear-gradient(to top, #200902, #111111 80%) !important;
|
||||
width: calc(100% - 2.8em) ;
|
||||
width: calc(100% - 0.4em);
|
||||
height: 100%;
|
||||
overflow-x: hidden;
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 2px;
|
||||
flex-grow: 3;
|
||||
gap: 5px;
|
||||
}
|
||||
@@ -572,16 +583,8 @@ table.tables tr.privateForPlayer {
|
||||
|
||||
|
||||
|
||||
#helpMain,
|
||||
#eventsMain {
|
||||
width: calc(100% - 0.4em);
|
||||
}
|
||||
|
||||
#ui-tabs-1,
|
||||
#ui-tabs-2,
|
||||
#ui-tabs-3,
|
||||
#ui-tabs-4
|
||||
/*#ui-tabs-5*/ {
|
||||
#main > .ui-tabs-panel {
|
||||
overflow-x: hidden;
|
||||
overflow-y: hidden;
|
||||
height: 100%;
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
.custom-icon {
|
||||
background-color: transparent; /* make the button transparent */
|
||||
background-repeat: no-repeat; /* make the background image appear only once */
|
||||
background-position: 0px 0px; /* equivalent to 'top left' */
|
||||
background-size: 20px;
|
||||
border: none; /* assuming we don't want any borders */
|
||||
cursor: pointer; /* make the cursor like hovering over an <a> element */
|
||||
height: 20px; /* make this the size of your image */
|
||||
padding-left: 30px ; /* make text start to the right of the image */
|
||||
vertical-align: middle; /* align the text vertically centered */
|
||||
filter: brightness(0) invert(1);
|
||||
}
|
||||
|
||||
.ui-tabs .ui-tabs-nav li > a.custom-icon {
|
||||
padding: 0.5em 1em 0.5em 35px;
|
||||
/*background-origin: content-box;*/
|
||||
background-position: 10px center;
|
||||
}
|
||||
|
||||
.icon-discord {
|
||||
background-image: url("../../images/icons/discord-brands.svg");
|
||||
}
|
||||
@@ -16,6 +35,7 @@
|
||||
|
||||
.icon-hall {
|
||||
background-image: url("../../images/icons/swords.svg");
|
||||
background-size: 25px;
|
||||
}
|
||||
|
||||
.icon-help {
|
||||
@@ -46,21 +66,8 @@
|
||||
background-image: url("../../images/icons/store-slash-solid.svg");
|
||||
}
|
||||
|
||||
.custom-icon {
|
||||
background-color: transparent; /* make the button transparent */
|
||||
background-repeat: no-repeat; /* make the background image appear only once */
|
||||
background-position: 0px 0px; /* equivalent to 'top left' */
|
||||
background-size: 20px;
|
||||
border: none; /* assuming we don't want any borders */
|
||||
cursor: pointer; /* make the cursor like hovering over an <a> element */
|
||||
height: 20px; /* make this the size of your image */
|
||||
padding-left: 30px ; /* make text start to the right of the image */
|
||||
vertical-align: middle; /* align the text vertically centered */
|
||||
filter: brightness(0) invert(1);
|
||||
.icon-admin {
|
||||
background-image: url("../../images/icons/toolbox-solid.svg");
|
||||
}
|
||||
|
||||
.ui-tabs .ui-tabs-nav li > a.custom-icon {
|
||||
padding: 0.5em 1em 0.5em 35px;
|
||||
/*background-origin: content-box;*/
|
||||
background-position: 10px center;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,12 +10,15 @@
|
||||
<link rel="stylesheet" type="text/css" href="css/gemp-001/hall.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/gemp-001/icons.css">
|
||||
|
||||
<script type="text/javascript" src="js/jquery/jquery-1.6.2.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
|
||||
<!-- <script type="text/javascript" src="js/jquery/jquery-1.6.2.js"></script> -->
|
||||
<script type="text/javascript" src="js/jquery/jquery-3.6.0.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery-migrate-1.4.1.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery-ui-1.13.2.custom/jquery-ui.js"></script>
|
||||
<!-- <script type="text/javascript" src="js/jquery/jquery-ui-1.8.16.custom.min.js"></script> -->
|
||||
<script type="text/javascript" src="js/jquery/jquery.cookie.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.spinnercontrol.js"></script>
|
||||
<!-- <script type="text/javascript" src="js/jquery/jquery.spinnercontrol.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.layout.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.touchSwipe.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.touchSwipe.js"></script> -->
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/inheritance.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/common.js"></script>
|
||||
@@ -57,12 +60,16 @@
|
||||
var hall;
|
||||
|
||||
$(document).ready(function () {
|
||||
chat = new ChatBoxUI("Game Hall", $("#chat"), "/gemp-lotr-server", true, null, false, true, null, true);
|
||||
chat.showTimestamps = true;
|
||||
|
||||
hall = new GempLotrHallUI("/gemp-lotr-server", chat);
|
||||
|
||||
$("#main").tabs();
|
||||
//Hiding the Users tab until that feature is ready
|
||||
$("#tabs > ul :nth-child(5)").hide();
|
||||
|
||||
chat = new ChatBoxUI("Game Hall", $("#chat"), "/gemp-lotr-server", true, null, false, null, true);
|
||||
chat.showTimestamps = true;
|
||||
|
||||
hall = new GempLotrHallUI("/gemp-lotr-server", chat);
|
||||
|
||||
|
||||
var infoDialog = $("<div></div>")
|
||||
.dialog({
|
||||
@@ -118,7 +125,6 @@
|
||||
|
||||
return true;
|
||||
});
|
||||
$("#ui-tabs")
|
||||
|
||||
});
|
||||
|
||||
@@ -157,121 +163,126 @@
|
||||
<li>
|
||||
<a href="includes/info.html" class="custom-icon icon-stats">Server Info</a>
|
||||
</li>
|
||||
<!-- <li>
|
||||
<li>
|
||||
<a href="includes/user.html" class="custom-icon icon-users">Users</a>
|
||||
</li> -->
|
||||
</li>
|
||||
<li>
|
||||
<a href="includes/account.html" class="custom-icon icon-account">My Account</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="includes/admin.html" class="custom-icon icon-admin">Admin</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="gameHall" class="hall-tab">
|
||||
<div id="serverInfo" class="flex-vert">
|
||||
<div id="infoButtons" class="flex-horiz">
|
||||
<a href="deckBuild.html" target="_blank"><button id="deckbuilder-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-deckbuilder"></span><span>Deck Builder</span>
|
||||
</button></a>
|
||||
|
||||
<a href="https://lotrtcgwiki.com/forums/index.php?topic=7592.2610#new" target="_blank"><button id="bug-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-bug"></span><span>Report a Bug</span>
|
||||
</button></a>
|
||||
|
||||
<a href="https://lotrtcgwiki.com/forums/index.php?topic=8267.585#new" target="_blank"><button id="report-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-report"></span><span>Report a Player</span>
|
||||
</button></a>
|
||||
|
||||
<a href="https://lotrtcgpc.net/discord" target="_blank"><button id="discord-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-discord"></span><span>Join the PC Discord</span>
|
||||
</button></a>
|
||||
|
||||
<a href="https://wiki.lotrtcgpc.net" target="_blank"><button id="wiki-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-wiki"></span><span>Browse the LOTR-TCG Wiki</span>
|
||||
</button></a>
|
||||
|
||||
<a href="merchant.html" target="_blank"><button id="merchant-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-merchant"></span><span style="text-decoration: line-through;">Merchant</span>
|
||||
</button></a>
|
||||
<!-- If you find any problems with specific card or rules in general, please report it on <a target='_blank' href='http://lotrtcgwiki.com/forums/index.php/topic,7592.0.html'>TLHH forum thread here</a> or on the <a href='https://lotrtcgpc.net/discord'>PC Discord here</a>, in the #gemp-dev channel. Please include a game replay link. -->
|
||||
<div id="gameHall" >
|
||||
<div id="gameHallMain" class="hall-tab flex-vert">
|
||||
<div id="serverInfo" class="flex-vert">
|
||||
<div id="infoButtons" class="flex-horiz">
|
||||
<a href="deckBuild.html" target="_blank"><button id="deckbuilder-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-deckbuilder"></span><span>Deck Builder</span>
|
||||
</button></a>
|
||||
|
||||
<a href="https://lotrtcgwiki.com/forums/index.php?topic=7592.2610#new" target="_blank"><button id="bug-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-bug"></span><span>Report a Bug</span>
|
||||
</button></a>
|
||||
|
||||
<a href="https://lotrtcgwiki.com/forums/index.php?topic=8267.585#new" target="_blank"><button id="report-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-report"></span><span>Report a Player</span>
|
||||
</button></a>
|
||||
|
||||
<a href="https://lotrtcgpc.net/discord" target="_blank"><button id="discord-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-discord"></span><span>Join the PC Discord</span>
|
||||
</button></a>
|
||||
|
||||
<a href="https://wiki.lotrtcgpc.net" target="_blank"><button id="wiki-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-wiki"></span><span>Browse the LOTR-TCG Wiki</span>
|
||||
</button></a>
|
||||
|
||||
<a href="merchant.html" target="_blank"><button id="merchant-button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false" style="padding:4px;display:flex;">
|
||||
<span class="custom-icon icon-merchant"></span><span style="text-decoration: line-through;">Merchant</span>
|
||||
</button></a>
|
||||
<!-- If you find any problems with specific card or rules in general, please report it on <a target='_blank' href='http://lotrtcgwiki.com/forums/index.php/topic,7592.0.html'>TLHH forum thread here</a> or on the <a href='https://lotrtcgpc.net/discord'>PC Discord here</a>, in the #gemp-dev channel. Please include a game replay link. -->
|
||||
</div>
|
||||
<div class="flex-horiz" style="justify-content: space-between; align-items:flex-end">
|
||||
<div id="motd"></div>
|
||||
<div class="serverTime"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-horiz" style="justify-content: space-between; align-items:flex-end">
|
||||
<div id="motd"></div>
|
||||
<div class="serverTime"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="hall" class="">
|
||||
<div id="tablesDiv">
|
||||
<div id="waitingTablesHeader" class='eventHeader waitingTables'>Waiting Tables<span class='count'>(0)</span></div>
|
||||
<div id="waitingTablesContent" class='visibilityToggle'>
|
||||
<table class='tables waitingTables'>
|
||||
<tr>
|
||||
<th width='20%'>Format</th>
|
||||
<th width='40%'>Table Info</th>
|
||||
<th width='10%'>Status</th>
|
||||
<th width='20%'>Players</th>
|
||||
<th width='10%'>Actions</th>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="hall" class="">
|
||||
<div id="tablesDiv">
|
||||
<div id="waitingTablesHeader" class='eventHeader waitingTables'>Waiting Tables<span class='count'>(0)</span></div>
|
||||
<div id="waitingTablesContent" class='visibilityToggle'>
|
||||
<table class='tables waitingTables'>
|
||||
<tr>
|
||||
<th width='20%'>Format</th>
|
||||
<th width='40%'>Table Info</th>
|
||||
<th width='10%'>Status</th>
|
||||
<th width='20%'>Players</th>
|
||||
<th width='10%'>Actions</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="playingTablesHeader" class='eventHeader playingTables'>Playing Tables<span class='count'>(0)</span></div>
|
||||
<div id="playingTablesContent" class='visibilityToggle'>
|
||||
<table class='tables playingTables'>
|
||||
<tr>
|
||||
<th width='20%'>Format</th>
|
||||
<th width='40%'>Table Info</th>
|
||||
<th width='10%'>Status</th>
|
||||
<th width='20%'>Players</th>
|
||||
<th width='10%'>Actions</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="finishedTablesHeader" class='eventHeader finishedTables'>Finished Tables<span class='count'>(0)</span></div>
|
||||
<div id="finishedTablesContent" class='visibilityToggle'>
|
||||
<table class='tables finishedTables'>
|
||||
<tr>
|
||||
<th width='20%'>Format</th>
|
||||
<th width='40%'>Table Info</th>
|
||||
<th width='10%'>Status</th>
|
||||
<th width='20%'>Players</th>
|
||||
<th width='10%'>Winner</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="tournamentQueuesHeader" class='eventHeader queues'>Tournament Queues<span class='count'>(0)</span></div>
|
||||
<div id="tournamentQueuesContent" class='visibilityToggle'>
|
||||
<table class='tables queues'>
|
||||
<tr>
|
||||
<th width='10%'>Format</th>
|
||||
<th width='8%'>Collection</th>
|
||||
<th width='20%'>Queue name</th>
|
||||
<th width='16%'>Starts</th>
|
||||
<th width='10%'>System</th>
|
||||
<th width='6%'>Players</th>
|
||||
<th width='8%'>Cost</th>
|
||||
<th width='12%'>Prizes</th>
|
||||
<th width='10%'>Actions</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="activeTournamentsHeader" class='eventHeader tournaments'>Active Tournaments<span class='count'>(0)</span></div>
|
||||
<div id="activeTournamentsContent" class='visibilityToggle'>
|
||||
<table class='tables tournaments'>
|
||||
<tr>
|
||||
<th width='10%'>Format</th>
|
||||
<th width='10%'>Collection</th>
|
||||
<th width='25%'>Tournament name</th>
|
||||
<th width='15%'>System</th>
|
||||
<th width='10%'>Stage</th>
|
||||
<th width='10%'>Round</th>
|
||||
<th width='10%'>Players</th>
|
||||
<th width='10%'>Actions</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="playingTablesHeader" class='eventHeader playingTables'>Playing Tables<span class='count'>(0)</span></div>
|
||||
<div id="playingTablesContent" class='visibilityToggle'>
|
||||
<table class='tables playingTables'>
|
||||
<tr>
|
||||
<th width='20%'>Format</th>
|
||||
<th width='40%'>Table Info</th>
|
||||
<th width='10%'>Status</th>
|
||||
<th width='20%'>Players</th>
|
||||
<th width='10%'>Actions</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="finishedTablesHeader" class='eventHeader finishedTables'>Finished Tables<span class='count'>(0)</span></div>
|
||||
<div id="finishedTablesContent" class='visibilityToggle'>
|
||||
<table class='tables finishedTables'>
|
||||
<tr>
|
||||
<th width='20%'>Format</th>
|
||||
<th width='40%'>Table Info</th>
|
||||
<th width='10%'>Status</th>
|
||||
<th width='20%'>Players</th>
|
||||
<th width='10%'>Winner</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="tournamentQueuesHeader" class='eventHeader queues'>Tournament Queues<span class='count'>(0)</span></div>
|
||||
<div id="tournamentQueuesContent" class='visibilityToggle'>
|
||||
<table class='tables queues'>
|
||||
<tr>
|
||||
<th width='10%'>Format</th>
|
||||
<th width='8%'>Collection</th>
|
||||
<th width='20%'>Queue name</th>
|
||||
<th width='16%'>Starts</th>
|
||||
<th width='10%'>System</th>
|
||||
<th width='6%'>Players</th>
|
||||
<th width='8%'>Cost</th>
|
||||
<th width='12%'>Prizes</th>
|
||||
<th width='10%'>Actions</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="activeTournamentsHeader" class='eventHeader tournaments'>Active Tournaments<span class='count'>(0)</span></div>
|
||||
<div id="activeTournamentsContent" class='visibilityToggle'>
|
||||
<table class='tables tournaments'>
|
||||
<tr>
|
||||
<th width='10%'>Format</th>
|
||||
<th width='10%'>Collection</th>
|
||||
<th width='25%'>Tournament name</th>
|
||||
<th width='15%'>System</th>
|
||||
<th width='10%'>Stage</th>
|
||||
<th width='10%'>Round</th>
|
||||
<th width='10%'>Players</th>
|
||||
<th width='10%'>Actions</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div id="culture-icon"><img src="images/cultures/sauron.svg"/></div> -->
|
||||
|
||||
105
gemp-lotr/gemp-lotr-async/src/main/web/includes/admin.html
Normal file
105
gemp-lotr/gemp-lotr-async/src/main/web/includes/admin.html
Normal file
@@ -0,0 +1,105 @@
|
||||
<script type="text/javascript">
|
||||
$("adminMain").ready(
|
||||
function () {
|
||||
$("#adminMain").tabs().addClass("ui-tabs-vertical ui-helper-clearfix");
|
||||
$("#admin-tabs > ol > li").removeClass("ui-corner-top").addClass("ui-corner-left");
|
||||
|
||||
$("#landingTab").parent().hide();
|
||||
if(!hall.userInfo.type.includes("a"))
|
||||
{
|
||||
$("#generalTab").parent().hide();
|
||||
$("#banTab").parent().hide();
|
||||
}
|
||||
|
||||
if(!hall.userInfo.type.includes("l"))
|
||||
{
|
||||
$("#leagueTab").parent().hide();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div id="adminMain" class="hall-tab flex-horiz">
|
||||
<div id="admin-tabs" class="sub-tabs">
|
||||
<ol>
|
||||
<li><a id="landingTab" href="#Landing"></a></li>
|
||||
<li><a id="generalTab" href="#generalAdmin">General Admin</a></li>
|
||||
<li><a id="leagueTab" href="includes/admin/leagueAdmin.html">League Admin</a></li>
|
||||
<li><a id="banTab" href="#banAdmin">My Stats</a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<div id="landing" style="display:none">
|
||||
</div>
|
||||
<div id="generalAdmin">
|
||||
<div class="article">
|
||||
<h1>Cache</h1>
|
||||
<a href="/gemp-lotr-server/admin/clearCache">Clear cache</a>
|
||||
|
||||
<h1>Message of the Day</h1>
|
||||
|
||||
<form method="POST" action="/gemp-lotr-server/admin/setMotd">
|
||||
MotD: <input type="text" name="motd"><br/>
|
||||
<input type="submit" value="Set MotD">
|
||||
</form>
|
||||
|
||||
<h1>Collections</h1>
|
||||
|
||||
<h2>Add items</h2>
|
||||
|
||||
<form method="POST" action="/gemp-lotr-server/admin/addItems">
|
||||
Type: <input type="text" name="collectionType"><br/>
|
||||
Product: <textarea rows="5" cols="20" name="product"></textarea><br/>
|
||||
Players: <textarea rows="5" cols="20" name="players"></textarea><br/>
|
||||
<input type="submit" value="Add items">
|
||||
</form>
|
||||
|
||||
<h2>Add items to collection</h2>
|
||||
|
||||
<form method="POST" action="/gemp-lotr-server/admin/addItemsToCollection">
|
||||
Type: <input type="text" name="collectionType"><br/>
|
||||
Reason: <input type="text" name="reason"><br/>
|
||||
Product: <textarea rows="5" cols="20" name="product"></textarea><br/>
|
||||
<input type="submit" value="Add items to collection">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div id="banAdmin">
|
||||
<div class="article">
|
||||
<h1>Ban user</h1>
|
||||
<h2>Permanently</h2>
|
||||
<form id="banUserForm" method="POST" action="/gemp-lotr-server/admin/banUser">
|
||||
Name (case-sensitive): <input type="text" name="login"><br/>
|
||||
<input id="banUser" type="button" value="Ban user permanently">
|
||||
</form>
|
||||
<h2>Temporarily</h2>
|
||||
<form id="banUserTempForm" method="POST" action="/gemp-lotr-server/admin/banUserTemp">
|
||||
Name (case-sensitive): <input type="text" name="login"><br/>
|
||||
Duration:
|
||||
<select name="duration">
|
||||
<option value="1">1 day</option>
|
||||
<option value="3">3 days</option>
|
||||
<option value="7">7 days</option>
|
||||
<option value="14">14 days</option>
|
||||
<option value="30">30 days</option>
|
||||
</select><br/>
|
||||
<input id="banUserTemp" type="button" value="Ban user temporarily">
|
||||
</form>
|
||||
<h1>Unban user</h1>
|
||||
<form id="unBanUserForm" method="POST" action="/gemp-lotr-server/admin/unBanUser">
|
||||
Name (case-sensitive): <input type="text" name="login"><br/>
|
||||
<input id="unBanUser" type="button" value="Unban user">
|
||||
</form>
|
||||
<h1>Find suspicious behaviour</h1>
|
||||
<h2>Multiple user accounts</h2>
|
||||
<form id="findMultipleAccountsForm" method="POST" action="/gemp-lotr-server/admin/findMultipleAccounts">
|
||||
Name (case-sensitive): <input type="text" name="login"><br/>
|
||||
<input id="findMultipleAccounts" type="button" value="Find similar accounts">
|
||||
</form>
|
||||
<div id="displayUsers"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,288 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Gemp-LotR League Administration</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-size: 12px;
|
||||
background-color: #000000;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.leagueName {
|
||||
font-size: 150%;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.serieName {
|
||||
font-size: 120%;
|
||||
font-weight: bolder;
|
||||
}
|
||||
</style>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="css/dark-hive/jquery-ui-1.8.16.custom.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/jquery.contextMenu.css">
|
||||
<link rel="stylesheet" type="text/css" href="js/jquery/styles/jquery.spinnercontrol.css">
|
||||
|
||||
<script type="text/javascript" src="js/jquery/jquery-1.6.2.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.cookie.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.spinnercontrol.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.layout.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.touchSwipe.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/inheritance.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/common.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/logging.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/chat.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/communication.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/deliveryService.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/commonUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/cardFilter.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/jCardGroup.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/hobbit.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/set40.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/jCards.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/PC_Cards.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/hallUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/leagueResultsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/tournamentResultsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/statsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/playerStatsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameHistoryUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/deckBuildingUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameAnimations.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/merchantUi.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function submitFormToAddress(url, formElem, success, error) {
|
||||
var data = {};
|
||||
|
||||
var inputs = $("input[type='text'], option:selected", formElem).each(
|
||||
function () {
|
||||
var input = $(this);
|
||||
var name = null;
|
||||
var value = null;
|
||||
if (input.prop("tagName") == "INPUT") {
|
||||
name = input.attr("name");
|
||||
value = input.val();
|
||||
} else if (input.prop("tagName") == "OPTION") {
|
||||
name = input.parents("select").attr("name");
|
||||
value = input.attr("value");
|
||||
}
|
||||
if (name != null && value != null) {
|
||||
if (data[name] == null)
|
||||
data[name] = new Array();
|
||||
data[name].push(value);
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
url:serverDomain+url,
|
||||
cache:false,
|
||||
data:data,
|
||||
traditional:true,
|
||||
success:success,
|
||||
error:error,
|
||||
dataType:"xml"
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(
|
||||
function () {
|
||||
var previewDialog = $("<div></div>")
|
||||
.dialog({
|
||||
autoOpen:false,
|
||||
closeOnEscape:true,
|
||||
resizable:true,
|
||||
modal:true,
|
||||
title:"Preview window"
|
||||
});
|
||||
|
||||
var displayPreview = function (xml) {
|
||||
var root = xml.documentElement;
|
||||
if (root.tagName == 'league') {
|
||||
var league = root;
|
||||
|
||||
var leagueName = league.getAttribute("name");
|
||||
var cost = parseInt(league.getAttribute("cost"));
|
||||
|
||||
previewDialog.append("<div class='leagueName'>" + leagueName + "</div>");
|
||||
|
||||
var costStr = formatPrice(cost);
|
||||
previewDialog.append("<div class='leagueCost'><b>Cost:</b> " + costStr + "</div>");
|
||||
|
||||
var series = league.getElementsByTagName("serie");
|
||||
for (var j = 0; j < series.length; j++) {
|
||||
|
||||
var serie = series[j];
|
||||
var serieName = serie.getAttribute("type");
|
||||
var serieStart = serie.getAttribute("start");
|
||||
var serieEnd = serie.getAttribute("end");
|
||||
var maxMatches = serie.getAttribute("maxMatches");
|
||||
var format = serie.getAttribute("format");
|
||||
var collection = serie.getAttribute("collection");
|
||||
var limited = serie.getAttribute("limited");
|
||||
|
||||
var serieText = serieName + " - " + getDateString(serieStart) + " to " + getDateString(serieEnd);
|
||||
previewDialog.append("<div class='serieName'>" + serieText + "</div>");
|
||||
|
||||
previewDialog.append("<div><b>Format:</b> " + ((limited == "true") ? "Limited" : "Constructed") + " " + format + "</div>");
|
||||
previewDialog.append("<div><b>Collection:</b> " + collection + "</div>");
|
||||
|
||||
previewDialog.append("<div>Maximum ranked matches in serie: " + maxMatches + "</div>");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var previewError = function (xhr) {
|
||||
previewDialog.dialog("close");
|
||||
alert("Invalid parameters specified - error code: " + xhr.status);
|
||||
};
|
||||
|
||||
$("#previewSealed").click(
|
||||
function () {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/previewSealedLeague", $("#addSealedForm").eq(0), displayPreview, previewError);
|
||||
previewDialog.html("");
|
||||
previewDialog.dialog("open");
|
||||
});
|
||||
|
||||
$("#previewSoloDraft").click(
|
||||
function () {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/previewSoloDraftLeague", $("#addSoloDraftForm").eq(0), displayPreview, previewError);
|
||||
previewDialog.html("");
|
||||
previewDialog.dialog("open");
|
||||
});
|
||||
|
||||
$("#previewConstructed").click(
|
||||
function () {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/previewConstructedLeague", $("#addConstructedForm").eq(0), displayPreview, previewError);
|
||||
previewDialog.html("");
|
||||
previewDialog.dialog("open");
|
||||
});
|
||||
|
||||
$("#addConstructedSerie").click(
|
||||
function () {
|
||||
$(".serieData").last().clone().appendTo(".series");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>League</h1>
|
||||
|
||||
<h2>Add sealed league</h2>
|
||||
|
||||
<form id="addSealedForm" method="POST" action="/gemp-lotr-server/admin/addSealedLeague">
|
||||
Name: <input type="text" name="name"><br/>
|
||||
Cost (in silver): <input type="text" name="cost"><br/>
|
||||
Start (YYYYMMDD): <input type="text" name="start"><br/>
|
||||
Format:
|
||||
<select name="format">
|
||||
<option value="fotr_block">Fellowship block</option>
|
||||
<option value="ttt_block">Towers block</option>
|
||||
<option value="movie">King (Movie) block</option>
|
||||
<option value="war_block">War of the Ring block</option>
|
||||
<option value="hunters_block">Hunters block</option>
|
||||
<option value="movie_special">Movie Special block</option>
|
||||
<option value="ts_special">TS Special block</option>
|
||||
</select><br/>
|
||||
Series duration in days: <input type="text" name="serieDuration"><br/>
|
||||
Maximum matches in series: <input type="text" name="maxMatches"><br/>
|
||||
<input id="previewSealed" type="button" value="Preview sealed league">
|
||||
<input type="submit" value="Add sealed league">
|
||||
</form>
|
||||
|
||||
<h2>Add solo-draft league</h2>
|
||||
|
||||
<form id="addSoloDraftForm" method="POST" action="/gemp-lotr-server/admin/addSoloDraftLeague">
|
||||
Name: <input type="text" name="name"><br/>
|
||||
Cost (in silver): <input type="text" name="cost"><br/>
|
||||
Start (YYYYMMDD): <input type="text" name="start"><br/>
|
||||
Format:
|
||||
<select name="format">
|
||||
<option value="test_draft">Test Draft</option>
|
||||
<option value="fotr_draft">Fellowship Draft</option>
|
||||
<option value="ttt_draft">Two Towers Draft</option>
|
||||
<option value="hobbit_random_draft">Hobbit Random Draft</option>
|
||||
</select><br/>
|
||||
Series duration in days: <input type="text" name="serieDuration"><br/>
|
||||
Maximum matches in series: <input type="text" name="maxMatches"><br/>
|
||||
<input id="previewSoloDraft" type="button" value="Preview solo draft league">
|
||||
<input type="submit" value="Add solo draft league">
|
||||
</form>
|
||||
|
||||
<h2>Add constructed league</h2>
|
||||
|
||||
<form id="addConstructedForm" method="POST" action="/gemp-lotr-server/admin/addConstructedLeague">
|
||||
Name: <input type="text" name="name"><br/>
|
||||
Cost (in silver): <input type="text" name="cost"><br/>
|
||||
Start (YYYYMMDD): <input type="text" name="start"><br/>
|
||||
Prize multiplier (e.g. 0.7): <input type="text" name="prizeMultiplier"><br/>
|
||||
Collection:
|
||||
<select name="collectionType">
|
||||
<option value="default">All cards</option>
|
||||
<option value="permanent+trophy">My cards</option>
|
||||
</select><br/>
|
||||
|
||||
<div class="series">
|
||||
<div class="serieData">
|
||||
<b>Series definition:</b><br/>
|
||||
Format:
|
||||
<select name="format">
|
||||
<option value="fotr_block">Fellowship block</option>
|
||||
<option value="pc_fotr_block">Fellowship block (PC)</option>
|
||||
<option value="fotr1_block">Fellowship block - Set 1</option>
|
||||
<option value="fotr2_block">Fellowship block - Sets 1&2</option>
|
||||
<option value="fotr_poorman">Fellowship block - Poorman</option>
|
||||
<option value="fotr_highlander">Fellowship block - Highlander</option>
|
||||
<option value="ttt_block">Towers block</option>
|
||||
<option value="ttt1_block">Towers block - Set 4</option>
|
||||
<option value="ttt2_block">Towers block - Sets 4&5</option>
|
||||
<option value="towers_standard">Towers standard</option>
|
||||
<option value="ttt_standard">Towers standard - Sets 1-4</option>
|
||||
<option value="bohd_standard">Towers standard - Sets 1-5</option>
|
||||
<option value="ts_no_fotr">Towers standard - Sets 2-6</option>
|
||||
<option value="ts_reflections">Towers standard - Sets 1-6,9,14&16</option>
|
||||
<option value="king_block">King block</option>
|
||||
<option value="king1_block">King block - Set 7</option>
|
||||
<option value="king2_block">King block - Sets 7-8</option>
|
||||
<option value="movie">Movie block</option>
|
||||
<option value="pc_movie">Movie block (PC)</option>
|
||||
<option value="movie_exp">Movie block, no GLR (10R11)</option>
|
||||
<option value="movie7">Movie block - Sets 1-7</option>
|
||||
<option value="movie8">Movie block - Sets 1-8</option>
|
||||
<option value="movie9">Movie block - Sets 1-9</option>
|
||||
<option value="movie_sans9">Movie block - Sets 1-8,10</option>
|
||||
<option value="movie_highlander">Movie block - Highlander</option>
|
||||
<option value="war_block">War of the Ring block</option>
|
||||
<option value="war_block11">War of the Ring block - Set 11</option>
|
||||
<option value="war_block12">War of the Ring block - Sets 11-12</option>
|
||||
<option value="war_block14">War of the Ring block - Sets 10-14</option>
|
||||
<option value="hunter_block">Hunters block</option>
|
||||
<option value="war_standard">War of the Ring standard</option>
|
||||
<option value="standard">Standard</option>
|
||||
<option value="open">Open</option>
|
||||
<option value="open_legacy">Open - Sets 1-4</option>
|
||||
<option value="expanded">Expanded</option>
|
||||
<option value="pc_expanded">Expanded (PC)</option>
|
||||
<option value="test_pc_fotr_block">PLAYTEST FOTR (PC)</option>
|
||||
<option value="test_pc_movie">PLAYTEST Movie (PC)</option>
|
||||
<option value="test_pc_expanded">PLAYTEST Expanded (PC)</option>
|
||||
<option value="french">French</option>
|
||||
</select><br/>
|
||||
Series duration in days: <input type="text" name="serieDuration"><br/>
|
||||
Maximum matches in series: <input type="text" name="maxMatches"><br/>
|
||||
</div>
|
||||
</div>
|
||||
<input id="addConstructedSerie" type="button" value="Add another series">
|
||||
<input id="previewConstructed" type="button" value="Preview constructed league">
|
||||
<input type="submit" value="Add constructed league">
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,5 +1,6 @@
|
||||
var ChatBoxUI = Class.extend({
|
||||
name:null,
|
||||
userInfo:null,
|
||||
userName:null,
|
||||
pingRegex:null,
|
||||
mentionRegex:null,
|
||||
@@ -35,7 +36,8 @@ var ChatBoxUI = Class.extend({
|
||||
|
||||
toggleChatButton:null,
|
||||
|
||||
init:function (name, div, url, showList, playerListener, showHideSystemButton, showLockButton, displayChatListener, allowDiscord=false) {
|
||||
|
||||
init:function (name, div, url, showList, playerListener, showHideSystemButton, displayChatListener, allowDiscord=false) {
|
||||
var that = this;
|
||||
|
||||
this.hiddenClasses = new Array();
|
||||
@@ -61,16 +63,12 @@ var ChatBoxUI = Class.extend({
|
||||
that.appendMessage("Unknown chat problem occured (error=" + xhr.status + ")", "warningMessage");
|
||||
});
|
||||
this.enableDiscord = allowDiscord;
|
||||
|
||||
|
||||
this.comm.getPlayerInfo(function(json)
|
||||
{
|
||||
that.userName = json;
|
||||
that.pingRegex = new RegExp("@" + json + "\\b");
|
||||
that.mentionRegex = new RegExp("(?<!<b>)\\b" + json + "\\b");
|
||||
that.initPlayerInfo(json);
|
||||
}, this.chatErrorMap());
|
||||
|
||||
|
||||
|
||||
if (this.name != null) {
|
||||
|
||||
if(this.name == "Game Hall")
|
||||
@@ -158,31 +156,13 @@ var ChatBoxUI = Class.extend({
|
||||
this.hideMessageClass("systemMessage");
|
||||
}
|
||||
|
||||
// if (showLockButton) {
|
||||
// this.lockButton = $("<button id='lockChatButton'>Toggle lock chat</button>").button(
|
||||
// {icons:{
|
||||
// primary:"ui-icon-locked"
|
||||
// }, text:false});
|
||||
// this.lockButton.click(
|
||||
// function () {
|
||||
// if (that.lockChat) {
|
||||
// $('#lockChatButton').button("option", "icons", {primary:'ui-icon-locked'});
|
||||
// that.lockChat = false;
|
||||
// } else {
|
||||
// $('#lockChatButton').button("option", "icons", {primary:'ui-icon-unlocked'});
|
||||
// that.lockChat = true;
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
if (showList) {
|
||||
this.chatListDiv = $("<div class='userList'></div>");
|
||||
this.div.append(this.chatListDiv);
|
||||
}
|
||||
if (this.hideSystemButton != null)
|
||||
this.div.append(this.hideSystemButton);
|
||||
// if (this.lockButton != null)
|
||||
// this.div.append(this.lockButton);
|
||||
|
||||
this.div.append(this.chatTalkDiv);
|
||||
|
||||
this.comm.startChat(this.name,
|
||||
@@ -205,6 +185,13 @@ var ChatBoxUI = Class.extend({
|
||||
this.talkBoxHeight = 0;
|
||||
}
|
||||
},
|
||||
|
||||
initPlayerInfo:function (playerInfo) {
|
||||
this.userInfo = playerInfo;
|
||||
this.userName = this.userInfo.name;
|
||||
this.pingRegex = new RegExp("@" + this.userName + "\\b");
|
||||
this.mentionRegex = new RegExp("(?<!<b>)\\b" + this.userName + "\\b");
|
||||
},
|
||||
|
||||
|
||||
hideMessageClass:function (msgClass) {
|
||||
|
||||
@@ -723,6 +723,12 @@ var GempLotrCommunication = Class.extend({
|
||||
});
|
||||
},
|
||||
|
||||
//NEVER EVER EVER use this for actual authentication
|
||||
// This is strictly to simplify things like auto-hiding
|
||||
// of the admin panel. If you actually need functionality
|
||||
// gated behind authorization, it goes on the server
|
||||
// and not in here.
|
||||
|
||||
getPlayerInfo:function (callback, errorMap) {
|
||||
$.ajax({
|
||||
type:"GET",
|
||||
|
||||
@@ -535,7 +535,7 @@ var GempLotrGameUI = Class.extend({
|
||||
}
|
||||
|
||||
var chatRoomName = (this.replayMode ? null : ("Game" + getUrlParam("gameId")));
|
||||
this.chatBox = new ChatBoxUI(chatRoomName, $("#chatBox"), this.communication.url, false, playerListener, false, true, displayChatListener);
|
||||
this.chatBox = new ChatBoxUI(chatRoomName, $("#chatBox"), this.communication.url, false, playerListener, false, displayChatListener);
|
||||
this.chatBox.chatUpdateInterval = 3000;
|
||||
|
||||
if (!this.spectatorMode && !this.replayMode) {
|
||||
|
||||
@@ -11,6 +11,8 @@ var GempLotrHallUI = Class.extend({
|
||||
|
||||
tablesDiv:null,
|
||||
buttonsDiv:null,
|
||||
adminTab:null,
|
||||
userInfo:null,
|
||||
|
||||
pocketDiv:null,
|
||||
pocketValue:null,
|
||||
@@ -19,24 +21,25 @@ var GempLotrHallUI = Class.extend({
|
||||
init:function (url, chat) {
|
||||
var that = this;
|
||||
|
||||
this.chat = chat;
|
||||
|
||||
this.comm = new GempLotrCommunication(url, function (xhr, ajaxOptions, thrownError) {
|
||||
if (thrownError != "abort") {
|
||||
if (xhr != null) {
|
||||
if (xhr.status == 401) {
|
||||
chat.appendMessage("Game hall problem - You're not logged in, go to the <a href='index.html'>main page</a> to log in", "warningMessage");
|
||||
that.chat.appendMessage("Game hall problem - You're not logged in, go to the <a href='index.html'>main page</a> to log in", "warningMessage");
|
||||
return;
|
||||
} else {
|
||||
chat.appendMessage("The game hall had a problem communicating with the server (" + xhr.status + "), no new updates will be displayed.", "warningMessage");
|
||||
chat.appendMessage("Reload the browser page (press F5) to resume the game hall functionality.", "warningMessage");
|
||||
that.chat.appendMessage("The game hall had a problem communicating with the server (" + xhr.status + "), no new updates will be displayed.", "warningMessage");
|
||||
that.chat.appendMessage("Reload the browser page (press F5) to resume the game hall functionality.", "warningMessage");
|
||||
return;
|
||||
}
|
||||
}
|
||||
chat.appendMessage("The game hall had a problem communicating with the server, no new updates will be displayed.", "warningMessage");
|
||||
chat.appendMessage("Reload the browser page (press F5) to resume the game hall functionality.", "warningMessage");
|
||||
that.chat.appendMessage("The game hall had a problem communicating with the server, no new updates will be displayed.", "warningMessage");
|
||||
that.chat.appendMessage("Reload the browser page (press F5) to resume the game hall functionality.", "warningMessage");
|
||||
}
|
||||
});
|
||||
|
||||
this.chat = chat;
|
||||
|
||||
this.tablesDiv = $("#tablesDiv");
|
||||
this.tableDescInput = $("#tableDescInput");
|
||||
this.isPrivateCheckbox = $("#isPrivateCheckbox");
|
||||
@@ -46,6 +49,23 @@ var GempLotrHallUI = Class.extend({
|
||||
this.decksSelect = $("#decksSelect");
|
||||
this.timerSelect = $("#timerSelect");
|
||||
this.buttonsDiv = $("#buttonsDiv");
|
||||
|
||||
this.adminTab = $("#tabs > ul :nth-child(7)");
|
||||
this.adminTab.hide();
|
||||
|
||||
this.comm.getPlayerInfo(function(json)
|
||||
{
|
||||
that.userInfo = json;
|
||||
if(that.userInfo.type.includes("a") || that.userInfo.type.includes("l"))
|
||||
{
|
||||
that.adminTab.show();
|
||||
}
|
||||
else
|
||||
{
|
||||
that.adminTab.hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var hallSettingsStr = $.cookie("hallSettings");
|
||||
if (hallSettingsStr == null)
|
||||
|
||||
@@ -1,288 +1,2 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Gemp-LotR League Administration</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-size: 12px;
|
||||
background-color: #000000;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.leagueName {
|
||||
font-size: 150%;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.serieName {
|
||||
font-size: 120%;
|
||||
font-weight: bolder;
|
||||
}
|
||||
</style>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="css/dark-hive/jquery-ui-1.8.16.custom.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/jquery.contextMenu.css">
|
||||
<link rel="stylesheet" type="text/css" href="js/jquery/styles/jquery.spinnercontrol.css">
|
||||
|
||||
<script type="text/javascript" src="js/jquery/jquery-1.6.2.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.cookie.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.spinnercontrol.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.layout.js"></script>
|
||||
<script type="text/javascript" src="js/jquery/jquery.touchSwipe.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/inheritance.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/common.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/logging.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/chat.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/communication.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/deliveryService.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/commonUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/cardFilter.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/jCardGroup.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/hobbit.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/set40.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/jCards.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/PC_Cards.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/gemp-022/hallUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/leagueResultsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/tournamentResultsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/statsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/playerStatsUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameHistoryUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/deckBuildingUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameUi.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/gameAnimations.js"></script>
|
||||
<script type="text/javascript" src="js/gemp-022/merchantUi.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function submitFormToAddress(url, formElem, success, error) {
|
||||
var data = {};
|
||||
|
||||
var inputs = $("input[type='text'], option:selected", formElem).each(
|
||||
function () {
|
||||
var input = $(this);
|
||||
var name = null;
|
||||
var value = null;
|
||||
if (input.prop("tagName") == "INPUT") {
|
||||
name = input.attr("name");
|
||||
value = input.val();
|
||||
} else if (input.prop("tagName") == "OPTION") {
|
||||
name = input.parents("select").attr("name");
|
||||
value = input.attr("value");
|
||||
}
|
||||
if (name != null && value != null) {
|
||||
if (data[name] == null)
|
||||
data[name] = new Array();
|
||||
data[name].push(value);
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
url:serverDomain+url,
|
||||
cache:false,
|
||||
data:data,
|
||||
traditional:true,
|
||||
success:success,
|
||||
error:error,
|
||||
dataType:"xml"
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(
|
||||
function () {
|
||||
var previewDialog = $("<div></div>")
|
||||
.dialog({
|
||||
autoOpen:false,
|
||||
closeOnEscape:true,
|
||||
resizable:true,
|
||||
modal:true,
|
||||
title:"Preview window"
|
||||
});
|
||||
|
||||
var displayPreview = function (xml) {
|
||||
var root = xml.documentElement;
|
||||
if (root.tagName == 'league') {
|
||||
var league = root;
|
||||
|
||||
var leagueName = league.getAttribute("name");
|
||||
var cost = parseInt(league.getAttribute("cost"));
|
||||
|
||||
previewDialog.append("<div class='leagueName'>" + leagueName + "</div>");
|
||||
|
||||
var costStr = formatPrice(cost);
|
||||
previewDialog.append("<div class='leagueCost'><b>Cost:</b> " + costStr + "</div>");
|
||||
|
||||
var series = league.getElementsByTagName("serie");
|
||||
for (var j = 0; j < series.length; j++) {
|
||||
|
||||
var serie = series[j];
|
||||
var serieName = serie.getAttribute("type");
|
||||
var serieStart = serie.getAttribute("start");
|
||||
var serieEnd = serie.getAttribute("end");
|
||||
var maxMatches = serie.getAttribute("maxMatches");
|
||||
var format = serie.getAttribute("format");
|
||||
var collection = serie.getAttribute("collection");
|
||||
var limited = serie.getAttribute("limited");
|
||||
|
||||
var serieText = serieName + " - " + getDateString(serieStart) + " to " + getDateString(serieEnd);
|
||||
previewDialog.append("<div class='serieName'>" + serieText + "</div>");
|
||||
|
||||
previewDialog.append("<div><b>Format:</b> " + ((limited == "true") ? "Limited" : "Constructed") + " " + format + "</div>");
|
||||
previewDialog.append("<div><b>Collection:</b> " + collection + "</div>");
|
||||
|
||||
previewDialog.append("<div>Maximum ranked matches in serie: " + maxMatches + "</div>");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var previewError = function (xhr) {
|
||||
previewDialog.dialog("close");
|
||||
alert("Invalid parameters specified - error code: " + xhr.status);
|
||||
};
|
||||
|
||||
$("#previewSealed").click(
|
||||
function () {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/previewSealedLeague", $("#addSealedForm").eq(0), displayPreview, previewError);
|
||||
previewDialog.html("");
|
||||
previewDialog.dialog("open");
|
||||
});
|
||||
|
||||
$("#previewSoloDraft").click(
|
||||
function () {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/previewSoloDraftLeague", $("#addSoloDraftForm").eq(0), displayPreview, previewError);
|
||||
previewDialog.html("");
|
||||
previewDialog.dialog("open");
|
||||
});
|
||||
|
||||
$("#previewConstructed").click(
|
||||
function () {
|
||||
submitFormToAddress("/gemp-lotr-server/admin/previewConstructedLeague", $("#addConstructedForm").eq(0), displayPreview, previewError);
|
||||
previewDialog.html("");
|
||||
previewDialog.dialog("open");
|
||||
});
|
||||
|
||||
$("#addConstructedSerie").click(
|
||||
function () {
|
||||
$(".serieData").last().clone().appendTo(".series");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>League</h1>
|
||||
|
||||
<h2>Add sealed league</h2>
|
||||
|
||||
<form id="addSealedForm" method="POST" action="/gemp-lotr-server/admin/addSealedLeague">
|
||||
Name: <input type="text" name="name"><br/>
|
||||
Cost (in silver): <input type="text" name="cost"><br/>
|
||||
Start (YYYYMMDD): <input type="text" name="start"><br/>
|
||||
Format:
|
||||
<select name="format">
|
||||
<option value="fotr_block">Fellowship block</option>
|
||||
<option value="ttt_block">Towers block</option>
|
||||
<option value="movie">King (Movie) block</option>
|
||||
<option value="war_block">War of the Ring block</option>
|
||||
<option value="hunters_block">Hunters block</option>
|
||||
<option value="movie_special">Movie Special block</option>
|
||||
<option value="ts_special">TS Special block</option>
|
||||
</select><br/>
|
||||
Series duration in days: <input type="text" name="serieDuration"><br/>
|
||||
Maximum matches in series: <input type="text" name="maxMatches"><br/>
|
||||
<input id="previewSealed" type="button" value="Preview sealed league">
|
||||
<input type="submit" value="Add sealed league">
|
||||
</form>
|
||||
|
||||
<h2>Add solo-draft league</h2>
|
||||
|
||||
<form id="addSoloDraftForm" method="POST" action="/gemp-lotr-server/admin/addSoloDraftLeague">
|
||||
Name: <input type="text" name="name"><br/>
|
||||
Cost (in silver): <input type="text" name="cost"><br/>
|
||||
Start (YYYYMMDD): <input type="text" name="start"><br/>
|
||||
Format:
|
||||
<select name="format">
|
||||
<option value="test_draft">Test Draft</option>
|
||||
<option value="fotr_draft">Fellowship Draft</option>
|
||||
<option value="ttt_draft">Two Towers Draft</option>
|
||||
<option value="hobbit_random_draft">Hobbit Random Draft</option>
|
||||
</select><br/>
|
||||
Series duration in days: <input type="text" name="serieDuration"><br/>
|
||||
Maximum matches in series: <input type="text" name="maxMatches"><br/>
|
||||
<input id="previewSoloDraft" type="button" value="Preview solo draft league">
|
||||
<input type="submit" value="Add solo draft league">
|
||||
</form>
|
||||
|
||||
<h2>Add constructed league</h2>
|
||||
|
||||
<form id="addConstructedForm" method="POST" action="/gemp-lotr-server/admin/addConstructedLeague">
|
||||
Name: <input type="text" name="name"><br/>
|
||||
Cost (in silver): <input type="text" name="cost"><br/>
|
||||
Start (YYYYMMDD): <input type="text" name="start"><br/>
|
||||
Prize multiplier (e.g. 0.7): <input type="text" name="prizeMultiplier"><br/>
|
||||
Collection:
|
||||
<select name="collectionType">
|
||||
<option value="default">All cards</option>
|
||||
<option value="permanent+trophy">My cards</option>
|
||||
</select><br/>
|
||||
|
||||
<div class="series">
|
||||
<div class="serieData">
|
||||
<b>Series definition:</b><br/>
|
||||
Format:
|
||||
<select name="format">
|
||||
<option value="fotr_block">Fellowship block</option>
|
||||
<option value="pc_fotr_block">Fellowship block (PC)</option>
|
||||
<option value="fotr1_block">Fellowship block - Set 1</option>
|
||||
<option value="fotr2_block">Fellowship block - Sets 1&2</option>
|
||||
<option value="fotr_poorman">Fellowship block - Poorman</option>
|
||||
<option value="fotr_highlander">Fellowship block - Highlander</option>
|
||||
<option value="ttt_block">Towers block</option>
|
||||
<option value="ttt1_block">Towers block - Set 4</option>
|
||||
<option value="ttt2_block">Towers block - Sets 4&5</option>
|
||||
<option value="towers_standard">Towers standard</option>
|
||||
<option value="ttt_standard">Towers standard - Sets 1-4</option>
|
||||
<option value="bohd_standard">Towers standard - Sets 1-5</option>
|
||||
<option value="ts_no_fotr">Towers standard - Sets 2-6</option>
|
||||
<option value="ts_reflections">Towers standard - Sets 1-6,9,14&16</option>
|
||||
<option value="king_block">King block</option>
|
||||
<option value="king1_block">King block - Set 7</option>
|
||||
<option value="king2_block">King block - Sets 7-8</option>
|
||||
<option value="movie">Movie block</option>
|
||||
<option value="pc_movie">Movie block (PC)</option>
|
||||
<option value="movie_exp">Movie block, no GLR (10R11)</option>
|
||||
<option value="movie7">Movie block - Sets 1-7</option>
|
||||
<option value="movie8">Movie block - Sets 1-8</option>
|
||||
<option value="movie9">Movie block - Sets 1-9</option>
|
||||
<option value="movie_sans9">Movie block - Sets 1-8,10</option>
|
||||
<option value="movie_highlander">Movie block - Highlander</option>
|
||||
<option value="war_block">War of the Ring block</option>
|
||||
<option value="war_block11">War of the Ring block - Set 11</option>
|
||||
<option value="war_block12">War of the Ring block - Sets 11-12</option>
|
||||
<option value="war_block14">War of the Ring block - Sets 10-14</option>
|
||||
<option value="hunter_block">Hunters block</option>
|
||||
<option value="war_standard">War of the Ring standard</option>
|
||||
<option value="standard">Standard</option>
|
||||
<option value="open">Open</option>
|
||||
<option value="open_legacy">Open - Sets 1-4</option>
|
||||
<option value="expanded">Expanded</option>
|
||||
<option value="pc_expanded">Expanded (PC)</option>
|
||||
<option value="test_pc_fotr_block">PLAYTEST FOTR (PC)</option>
|
||||
<option value="test_pc_movie">PLAYTEST Movie (PC)</option>
|
||||
<option value="test_pc_expanded">PLAYTEST Expanded (PC)</option>
|
||||
<option value="french">French</option>
|
||||
</select><br/>
|
||||
Series duration in days: <input type="text" name="serieDuration"><br/>
|
||||
Maximum matches in series: <input type="text" name="maxMatches"><br/>
|
||||
</div>
|
||||
</div>
|
||||
<input id="addConstructedSerie" type="button" value="Add another series">
|
||||
<input id="previewConstructed" type="button" value="Preview constructed league">
|
||||
<input type="submit" value="Add constructed league">
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
You don't need this anymore :)<br><br>
|
||||
Go to the <a href="hall.html">main hall</a> and click on the Admin tab instead.
|
||||
@@ -75,4 +75,18 @@ public class Player {
|
||||
public int hashCode() {
|
||||
return _name != null ? _name.hashCode() : 0;
|
||||
}
|
||||
|
||||
public PlayerDefinition GetUserInfo() {
|
||||
return new PlayerDefinition(_name, _type);
|
||||
}
|
||||
|
||||
public class PlayerDefinition {
|
||||
public String name;
|
||||
public String type;
|
||||
|
||||
public PlayerDefinition(String name, String info) {
|
||||
this.name = name;
|
||||
type = info;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user