Merge pull request #57 from Kuzirashi/master

Improved Admin Reports page.
This commit is contained in:
Stefan A. Brannfjell 2014-04-22 15:58:59 +02:00
commit d02af1f7f1

View File

@ -1,5 +1,7 @@
<?php require_once 'engine/init.php'; <?php
protect_page(); admin_only($user_data); require_once 'engine/init.php';
protect_page();
admin_only($user_data);
include 'layout/overall/header.php'; include 'layout/overall/header.php';
// Report status types. When a player make new report it will be default to 0. // Report status types. When a player make new report it will be default to 0.
@ -19,16 +21,15 @@ $statusChangeLog = array(0,5);
$hideStatus = array(3, 4, 5); $hideStatus = array(3, 4, 5);
// Fetch data from SQL // Fetch data from SQL
$reportsData = mysql_select_multi("SELECT id, name, posx, posy, posz, report_description, date, status FROM znote_player_reports ORDER BY id DESC;"); $reportsData = mysql_select_multi('SELECT id, name, posx, posy, posz, report_description, date, status FROM znote_player_reports ORDER BY id DESC;');
// If sql data is not empty // If sql data is not empty
if ($reportsData !== false) { if ($reportsData !== false) {
// Order reports array by ID for easy reference later on. // Order reports array by ID for easy reference later on.
$reports = array(); $reports = array();
for ($i = 0; $i < count($reportsData); $i++) { for ($i = 0; $i < count($reportsData); $i++)
foreach ($statusTypes as $key => $value) { foreach ($statusTypes as $key => $value)
if ($key == $reportsData[$i]['status']) $reports[$key][$reportsData[$i]['id']] = $reportsData[$i]; if ($key == $reportsData[$i]['status'])
} $reports[$key][$reportsData[$i]['id']] = $reportsData[$i];
}
} }
// POST logic (Update report and give player points) // POST logic (Update report and give player points)
@ -40,9 +41,9 @@ if (!empty($_POST)) {
$customPoints = getValue($_POST['customPoints']); $customPoints = getValue($_POST['customPoints']);
$reportId = getValue($_POST['id']); $reportId = getValue($_POST['id']);
$changelogReportId = getValue($_POST['changelogReportId']); $changelogReportId = &$_POST['changelogReportId'];
$changelogValue = getValue($_POST['changelogValue']); $changelogValue = &$_POST['changelogValue'];
$changelogText = getValue($_POST['changelogText']); $changelogText = &$_POST['changelogText'];
$changelogStatus = ($changelogReportId !== false && $changelogValue === '2' && $changelogText !== false) ? true : false; $changelogStatus = ($changelogReportId !== false && $changelogValue === '2' && $changelogText !== false) ? true : false;
if ($customPoints !== false) $price = (int)($price + $customPoints); if ($customPoints !== false) $price = (int)($price + $customPoints);
@ -101,11 +102,14 @@ if (!empty($_POST)) {
} elseif (!empty($_GET)) { } elseif (!empty($_GET)) {
// Fetch GET data // Fetch GET data
$action = getValue($_GET['action']); $action = getValue($_GET['action']);
$playerName = getValue($_GET['playerName']); $playerName = getValue($_GET['name']);
$reportId = getValue($_GET['id']); $reportId = getValue($_GET['id']);
// Fetch the report we intend to modify // Fetch the report we intend to modify
foreach ($reports as $sid => $sa) foreach ($sa as $rid => $ra) if ($rid == $reportId) $report = $reports[$sid][$reportId]; foreach ($reports as $sid => $sa)
foreach ($sa as $rid => $ra)
if ($rid == $reportId)
$report = $reports[$sid][$reportId];
// Create html form // Create html form
?> ?>
@ -117,19 +121,16 @@ if (!empty($_POST)) {
<br>Set status: <br>Set status:
<select name="status"> <select name="status">
<?php <?php
foreach ($statusTypes as $sid => $sname) { foreach ($statusTypes as $sid => $sname)
if ($sid != $report['status']) echo "<option value='$sid'>$sname</option>"; echo ($sid != $report['status']) ? "<option value='$sid'>$sname</option>" : "<option value='$sid' selected>$sname</option>";
else echo "<option value='$sid' selected>$sname</option>";
}
?> ?>
</select><br> </select><br>
Give user points: Give user points:
<select name="price"> <select name="price">
<option value='0'>0</option> <option value='0'>0</option>
<?php <?php
foreach ($config['paypal_prices'] as $price) { foreach ($config['paypal_prices'] as $price)
echo "<option value='$price'>$price</option>"; echo "<option value='$price'>$price</option>";
}
?> ?>
</select> + <input name="customPoints" type="text" style="width: 50px;" placeholder="0"><br> </select> + <input name="customPoints" type="text" style="width: 50px;" placeholder="0"><br>
<?php <?php
@ -154,20 +155,18 @@ if (!empty($_POST)) {
// If sql data is not empty // If sql data is not empty
if ($reportsData !== false) { if ($reportsData !== false) {
// Render HTML // Render HTML
//data_dump($reports);
?> ?>
<center> <center>
<?php <?php
foreach ($reports as $statusId => $statusArray) { foreach ($reports as $statusId => $statusArray) {
?> ?>
<h2><?php echo $statusTypes[$statusId]; ?> (<span id="status-<?php echo $statusId; ?>">Visible</span>)</h2> <h2 class="statusType"><?php echo $statusTypes[$statusId]; ?> (<span id="status-<?php echo $statusId; ?>">Visible</span>)</h2>
<table class="table tbl" border="0" cellspacing="1" cellpadding="4" width="100%"> <table class="table tbl" border="0" cellspacing="1" cellpadding="4" width="100%">
<thead> <thead>
<tr class="yellow" onclick="javascript:toggle('<?php echo $statusId; ?>')"> <tr class="yellow" onclick="javascript:toggle('<?php echo $statusId; ?>')">
<td width="38%"><b><font color=white><center>Info</center></font></b></td> <td width="38%">Info</td>
<td><b><font color=white><center>Description</center></font></b></td> <td>Description</td>
</tr> </tr>
</thead> </thead>
<?php <?php
@ -182,9 +181,7 @@ if ($reportsData !== false) {
<br><b>Reported:</b> <?php echo getClock($report['date'], true, true); ?> <br><b>Reported:</b> <?php echo getClock($report['date'], true, true); ?>
<br><b>Status:</b> <?php echo $statusTypes[$report['status']]; ?>. <a href="?action=edit&name=<?php echo $report['name'].'&id='.$report['id']; ?>">Edit</a> <br><b>Status:</b> <?php echo $statusTypes[$report['status']]; ?>. <a href="?action=edit&name=<?php echo $report['name'].'&id='.$report['id']; ?>">Edit</a>
</td> </td>
<td> <td><?php echo $report['report_description']; ?></td>
<center><?php echo $report['report_description']; ?></center>
</td>
</tr> </tr>
</tbody> </tbody>
<?php <?php
@ -196,38 +193,42 @@ if ($reportsData !== false) {
<?php <?php
} else echo "<h2>No reports submitted.</h2>"; } else echo "<h2>No reports submitted.</h2>";
?> ?>
<style>
tr.yellow[onclick] td {
font-weight: bold;
color: white;
text-align: center;
}
tbody[class^=row] td:last-of-type {
text-align: center;
}
</style>
<script type="text/javascript"> <script type="text/javascript">
// Hide and show tables // Hide and show tables
// Written in clean javascript to make it cross-layout compatible. // Written in clean javascript to make it cross-layout compatible.
function toggle(statusId) { function toggle(statusId) {
statusId = ''+statusId; var divStatus = 'row' + statusId,
var divStatus = 'row'+statusId; msgStatus = 'status-' + statusId;
var msgStatus = 'status-'+statusId;
// Change visibility status // Change visibility status
statusElement = document.getElementById(msgStatus); statusElement = document.getElementById(msgStatus);
console.log(statusElement, statusId, divStatus, msgStatus); statusElement.innerHTML = (statusElement.innerHTML == 'Visible') ? 'Hidden' : 'Visible';
if (statusElement !== null) {
if (statusElement.innerHTML == 'Visible') statusElement.innerHTML = 'Hidden';
else statusElement.innerHTML = 'Visible';
// Show/hide elements. // Show/hide elements.
var elements = document.getElementsByClassName(divStatus); var elements = document.getElementsByClassName(divStatus);
for (var i = 0; i < elements.length; i++) { for (var i = 0; i < elements.length; i++)
if (elements[i].style.display == 'none') { elements[i].style.display = (elements[i].style.display == 'none') ? 'table-header-group' : 'none';
elements[i].style.display = 'table-header-group';
} else {
elements[i].style.display = 'none';
}
}
}
} }
<?php // Hide configured tables by default <?php // Hide configured tables by default
foreach ($hideStatus as $statusId) { foreach ($hideStatus as $statusId)
echo "toggle($statusId);"; echo "toggle($statusId);";
}
?> ?>
var st = document.body.querySelectorAll('.statusType');
for(i = 0; i < st.length; i++)
st[i].addEventListener('click', function(e) {
toggle(e.currentTarget.querySelector('span').id.match(/(\d)+/)[0]);
});
</script> </script>
<?php include 'layout/overall/footer.php'; ?> <?php include 'layout/overall/footer.php'; ?>