323 lines
11 KiB
HTML
323 lines
11 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
|||
|
|
|||
|
<head>
|
|||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|||
|
|
|||
|
<title>IW4MAdmin by RaidMax</title>
|
|||
|
<meta name="description" content="Administration tool for IW4M servers. IW4MAdmin Created by RaidMax">
|
|||
|
|
|||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/open-iconic/1.1.1/font/css/open-iconic-bootstrap.min.css" />
|
|||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
|
|||
|
<script src="http://code.jquery.com/jquery-3.3.1.min.js"
|
|||
|
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
|
|||
|
crossorigin="anonymous"></script>
|
|||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
|
|||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
|
|||
|
<style>
|
|||
|
#profile_avatar {
|
|||
|
height: 200px;
|
|||
|
width: 200px;
|
|||
|
}
|
|||
|
|
|||
|
.profile-shortcode {
|
|||
|
font-size: 150pt;
|
|||
|
line-height: 175px;
|
|||
|
color: white;
|
|||
|
}
|
|||
|
|
|||
|
.text-highlight {
|
|||
|
color: rgb(0, 122, 204) !important;
|
|||
|
}
|
|||
|
|
|||
|
#profile_info {
|
|||
|
color: white;
|
|||
|
}
|
|||
|
|
|||
|
#profile_name {
|
|||
|
font-size: 4em;
|
|||
|
line-height: 1em;
|
|||
|
}
|
|||
|
|
|||
|
#profile_info > .text-muted {
|
|||
|
font-size: 1.5em;
|
|||
|
line-height: 1.25em;
|
|||
|
}
|
|||
|
|
|||
|
#content,
|
|||
|
.container-fluid, #profile_aliases {
|
|||
|
background-color: rgb(34, 34, 34);
|
|||
|
}
|
|||
|
|
|||
|
#profile_level > span.level {
|
|||
|
color: rgba(236, 130, 222, 0.69);
|
|||
|
font-weight: bold;
|
|||
|
font-size: 1.5em;
|
|||
|
line-height: 1.4em;
|
|||
|
}
|
|||
|
|
|||
|
#profile_wrapper {
|
|||
|
border-bottom: 2px rgb(0, 122, 204) solid;
|
|||
|
}
|
|||
|
|
|||
|
.level-color-user, .level-color-guest {
|
|||
|
color: rgba(255, 255, 255, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.level-bgcolor-user, .level-bgcolor-guest {
|
|||
|
background-color: rgba(255, 255, 255, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.level-color-trusted, .level-color-user {
|
|||
|
color: rgba(116,147,99,1);
|
|||
|
}
|
|||
|
|
|||
|
.level-bgcolor-trusted, .level-bgcolor-user {
|
|||
|
background-color: rgba(116,147,99,1);
|
|||
|
}
|
|||
|
|
|||
|
.level-color-flagged {
|
|||
|
color: rgba(253, 139, 22, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.level-bgcolor-flagged {
|
|||
|
background-color: rgba(253, 139, 22, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.level-color-banned {
|
|||
|
color: rgba(255, 69, 69, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.level-bgcolor-banned {
|
|||
|
background-color: rgba(255, 69, 69, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.level-color-moderator {
|
|||
|
color: rgba(235, 211, 101, 0.75);
|
|||
|
}
|
|||
|
|
|||
|
.level-bgcolor-moderator {
|
|||
|
background-color: rgba(235, 211, 101, 0.75);
|
|||
|
}
|
|||
|
|
|||
|
.level-color-administrator {
|
|||
|
color: rgba(236, 130, 222, 0.69);
|
|||
|
}
|
|||
|
|
|||
|
.level-bgcolor-administrator {
|
|||
|
background-color: rgba(236, 130, 222, 0.69);
|
|||
|
}
|
|||
|
|
|||
|
.level-color-senioradmin {
|
|||
|
color: rgba(50, 177, 185, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.level-bgcolor-senioradmin {
|
|||
|
background-color: rgba(50, 177, 185, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.level-color-owner {
|
|||
|
color: rgb(0, 122, 204);
|
|||
|
}
|
|||
|
|
|||
|
.level-bgcolor-owner {
|
|||
|
background-color: rgb(0, 122, 204);
|
|||
|
}
|
|||
|
|
|||
|
.profile-meta-title {
|
|||
|
color: white;
|
|||
|
}
|
|||
|
|
|||
|
.profile-meta-entry {
|
|||
|
font-size: 1.5em;
|
|||
|
}
|
|||
|
|
|||
|
.penalties-color-kick {
|
|||
|
color: rgba(116, 147, 99, 1);
|
|||
|
}
|
|||
|
|
|||
|
.penalties-color-report {
|
|||
|
color: rgba(116, 147, 99, 1);
|
|||
|
}
|
|||
|
|
|||
|
.penalties-color-warning {
|
|||
|
color: rgba(235, 211, 101, 0.75);
|
|||
|
}
|
|||
|
|
|||
|
.penalties-color-tempban {
|
|||
|
color: rgba(253, 139, 22, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.penalties-color-flag {
|
|||
|
color: rgba(253, 139, 22, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
.penalties-color-ban {
|
|||
|
color: rgba(255, 69, 69, 0.85);
|
|||
|
}
|
|||
|
|
|||
|
#profile_aliases_btn {
|
|||
|
font-size: 0.5em;
|
|||
|
color: rgb(0, 122, 204);
|
|||
|
cursor: pointer;
|
|||
|
}
|
|||
|
|
|||
|
#profile_aliases_btn:hover {
|
|||
|
color: white;
|
|||
|
cursor: pointer;
|
|||
|
}
|
|||
|
|
|||
|
#profile_aliases {
|
|||
|
position: relative;
|
|||
|
display: none;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|||
|
<script>
|
|||
|
function parseGet(val) {
|
|||
|
var result = "undefined",
|
|||
|
tmp = [];
|
|||
|
location.search
|
|||
|
.substr(1)
|
|||
|
.split("&")
|
|||
|
.forEach(function (item) {
|
|||
|
tmp = item.split("=");
|
|||
|
if (tmp[0] === val) result = decodeURIComponent(tmp[1]);
|
|||
|
});
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
function penaltyToName(penaltyName) {
|
|||
|
switch (penaltyName) {
|
|||
|
case "Flag":
|
|||
|
return "Flagged"
|
|||
|
case "Warning":
|
|||
|
return "Warned";
|
|||
|
case "Report":
|
|||
|
return "Reported";
|
|||
|
case "Ban":
|
|||
|
return "Banned";
|
|||
|
case "Kick":
|
|||
|
return "Kicked";
|
|||
|
case "TempBan":
|
|||
|
return "Temp Banned";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
let playerInfo = undefined;
|
|||
|
|
|||
|
function loadMeta(meta) {
|
|||
|
let eventString = '';
|
|||
|
// it's a penalty
|
|||
|
if (meta.Class.includes("Penalty")) {
|
|||
|
if (meta.Value.PunisherId != playerInfo.playerID) {
|
|||
|
eventString = `<div><span class="penalties-color-${meta.Value.Type.toLowerCase()}">${penaltyToName(meta.Value.Type)}</span> by <span class="text-highlight"> <a href="/profile?id=${meta.Value.PunisherId}">${meta.Value.PunisherName}</a></span > for <span style="color: white; ">${meta.Value.Offense}</span> ${meta.WhenString} ago </div>`;
|
|||
|
}
|
|||
|
else {
|
|||
|
eventString = `<div><span class="penalties-color-${meta.Value.Type.toLowerCase()}">${penaltyToName(meta.Value.Type)} </span> <span class="text-highlight"><a href="/profile?id=${meta.Value.OffenderId}"> ${meta.Value.OffenderName}</a></span > for <span style="color: white; ">${meta.Value.Offense}</span> ${meta.WhenString} ago </div>`;
|
|||
|
}
|
|||
|
}
|
|||
|
// it's a message
|
|||
|
else if (meta.Key.includes("Event")) {
|
|||
|
eventString = `<div><span style="color:white;">></span><span class="text-muted"> ${meta.Value}</span></div>`;
|
|||
|
}
|
|||
|
$('#profile_events').append(eventString);
|
|||
|
}
|
|||
|
|
|||
|
let count = 1;
|
|||
|
$(window).scroll(function () {
|
|||
|
if ($(window).scrollTop() == $(document).height() - $(window).height() || $(document).height() == $(window).height()) {
|
|||
|
while (count % 40 != 0 && count < playerInfo.Meta.length) {
|
|||
|
loadMeta(playerInfo.Meta[count - 1]);
|
|||
|
count++;
|
|||
|
}
|
|||
|
count++;
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$(document).ready(function () {
|
|||
|
$("#profile_aliases_btn").click(function (e) {
|
|||
|
if ($("#profile_aliases").text() != '') {
|
|||
|
$("#profile_aliases").slideToggle(50);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
jQuery.getJSON("/getplayer?profile=1&id=" + parseGet("id"), function (result) {
|
|||
|
playerInfo = result[0];
|
|||
|
|
|||
|
let firstLetter = playerInfo.playerName.match(/[a-zA-Z]/);
|
|||
|
if (firstLetter == undefined)
|
|||
|
firstLetter = '?';
|
|||
|
else
|
|||
|
firstLetter = firstLetter.pop().toUpperCase();
|
|||
|
|
|||
|
$('#profile_avatar').addClass('level-bgcolor-' + playerInfo.playerLevel.toLowerCase());
|
|||
|
$('#profile_avatar > .profile-shortcode').text(firstLetter);
|
|||
|
$('#profile_name > .client-name').prepend(playerInfo.playerName);
|
|||
|
$.each(playerInfo.playerAliases, function (index, alias) {
|
|||
|
$("#profile_aliases").append(alias + "<br/>");
|
|||
|
});
|
|||
|
$('#profile_time_played > .text-highlight').text(playerInfo.TimePlayed);
|
|||
|
$('#profile_level > span').text(playerInfo.playerLevel).addClass('level-color-' + playerInfo.playerLevel.toLowerCase());
|
|||
|
$('#profile_first_seen > .text-highlight').text(playerInfo.FirstSeen);
|
|||
|
$('#profile_last_seen > .text-highlight').text(playerInfo.LastSeen);
|
|||
|
|
|||
|
$.each(playerInfo.Meta, function (index, meta) {
|
|||
|
if (!meta.Key.includes("Event")) {
|
|||
|
let metaString = `<div class="profile-meta-entry"><span class="profile-meta-value text-highlight">${meta.Value}</span><span class="profile-meta-title"> ${meta.Key}</span></div>`;
|
|||
|
$("#profile_meta").append(metaString);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$.each(playerInfo.Meta, function (index, meta) {
|
|||
|
loadMeta(meta);
|
|||
|
|
|||
|
if (count % 40 == 0) {
|
|||
|
count++;
|
|||
|
return false;
|
|||
|
}
|
|||
|
count++
|
|||
|
});
|
|||
|
});
|
|||
|
});
|
|||
|
</script>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<div class="container-fluid">
|
|||
|
<div id="content" class="p-4">
|
|||
|
<div id="profile_wrapper" class="row d-flex d-sm-inline-flex justify-content-center justify-content-left pb-4">
|
|||
|
<div class="mr-auto ml-auto ml-sm-0 mr-sm-0">
|
|||
|
<div id="profile_avatar" class="text-center">
|
|||
|
<span class="profile-shortcode">_</span>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div id="profile_info" class="text-center text-sm-left pr-4 pl-4">
|
|||
|
<div id="profile_name">
|
|||
|
<span class="client-name"><span id="profile_aliases_btn" class="oi oi-caret-bottom pl-2"></span></span>
|
|||
|
<div id="profile_aliases" class="pr-4 pb-2 pt-2 text-muted"></div>
|
|||
|
</div>
|
|||
|
<div id="profile_level" class="text-muted">
|
|||
|
<span>_</span>
|
|||
|
</div>
|
|||
|
<div id="profile_time_played" class="text-muted">
|
|||
|
Played <span class="text-highlight">_</span> hours
|
|||
|
</div>
|
|||
|
<div id="profile_first_seen" class="text-muted">
|
|||
|
First seen <span class="text-highlight">_</span> ago
|
|||
|
</div>
|
|||
|
<div id="profile_last_seen" class="text-muted">
|
|||
|
Last seen <span class="text-highlight">_</span> ago
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div id="profile_meta" class="text-center text-sm-right pt-2">
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="row d-md-flex pt-4">
|
|||
|
<div id="profile_events" class="text-muted text-left ml-sm-0">
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
</html>
|