mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-26 01:09:21 +02:00
Updates (#65)
* Updates +Added missing images +Added report viewer as requested by icekis -Code cleanup if strict db, need to set spell to null run ALTER TABLE `myaac_spells` CHANGE `spell` `spell` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
This commit is contained in:
parent
876b1b988a
commit
1b539f82ac
@ -56,7 +56,7 @@
|
||||
'book', 'list',
|
||||
'plug', 'user',
|
||||
'edit', 'gavel',
|
||||
'book', 'edit', 'book',
|
||||
'wrench', 'edit', 'book', 'book',
|
||||
);
|
||||
|
||||
$menus = array(
|
||||
@ -72,10 +72,17 @@
|
||||
),
|
||||
'Items' => 'items',
|
||||
'Tools' => array(
|
||||
'Notepad' => 'notepad',
|
||||
'phpinfo' => 'phpinfo',
|
||||
),
|
||||
'Notepad' => 'notepad',
|
||||
'Logs' => 'logs'
|
||||
'Editor' => array(
|
||||
'Accounts' => 'accounts',
|
||||
'Players' => 'players',
|
||||
),
|
||||
'Logs' => array(
|
||||
'Logs' => 'logs',
|
||||
'Reports' => 'reports',
|
||||
),
|
||||
);
|
||||
|
||||
$i = 0;
|
||||
|
@ -14,7 +14,23 @@ class Spells {
|
||||
private static $spellsList = null;
|
||||
private static $lastError = '';
|
||||
|
||||
public static function loadFromXML($show = false) {
|
||||
// 1 - attack, 2 - healing, 3 - summon, 4 - supply, 5 - support
|
||||
public static function loadGroup($tGroup) {
|
||||
switch ($tGroup) {
|
||||
case "attack":
|
||||
return 1;
|
||||
case "healing":
|
||||
return 2;
|
||||
case "summon":
|
||||
return 3;
|
||||
case "supply":
|
||||
return 4;
|
||||
case "support":
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
public static function loadFromXML($show = false) {
|
||||
global $config, $db;
|
||||
|
||||
try { $db->query('DELETE FROM `' . TABLE_PREFIX . 'spells`;'); } catch(PDOException $error) {}
|
||||
@ -58,6 +74,8 @@ class Spells {
|
||||
'premium' => $spell->isPremium() ? 1 : 0,
|
||||
'vocations' => json_encode($spell->getVocations()),
|
||||
'conjure_count' => $spell->getConjureCount(),
|
||||
'conjure_id' => $spell->getConjureId(),
|
||||
'reagent' => $spell->getReagentId(),
|
||||
'hidden' => $spell->isEnabled() ? 0 : 1
|
||||
));
|
||||
|
||||
@ -121,7 +139,7 @@ class Spells {
|
||||
foreach($runeslist as $spellname) {
|
||||
$spell = self::$spellsList->getRune($spellname);
|
||||
|
||||
$name = $spell->getName() . ' (rune)';
|
||||
$name = $spell->getName() . ' Rune';
|
||||
|
||||
try {
|
||||
$db->insert(TABLE_PREFIX . 'spells', array(
|
||||
|
@ -16,77 +16,68 @@ $title = 'Logs viewer';
|
||||
<h3 class="box-title">Logs:</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div id="logs_wrapper" class="dataTables_wrapper form-inline dt-bootstrap">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<table id="logs" class="table table-bordered table-striped dataTable" role="grid"
|
||||
aria-describedby="logs_info">
|
||||
<thead>
|
||||
<tr role="row">
|
||||
<th class="sorting_asc" tabindex="0" aria-controls="logs" rowspan="1" colspan="1"
|
||||
aria-sort="ascending" aria-label="Log name: activate to sort column descending"
|
||||
style="width: 297px;">Log name
|
||||
</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="logs" rowspan="1" colspan="1"
|
||||
aria-label="Last updated: activate to sort column ascending" style="width: 361px;">Last
|
||||
updated
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$files = array();
|
||||
$aac_path_logs = BASE . 'system/logs/';
|
||||
foreach (scandir($aac_path_logs) as $f) {
|
||||
if ($f[0] == '.' || $f == '..' || is_dir($aac_path_logs . $f))
|
||||
continue;
|
||||
|
||||
$files[] = array($f, $aac_path_logs);
|
||||
}
|
||||
|
||||
$server_path_logs = $config['server_path'] . 'logs/';
|
||||
if (!file_exists($server_path_logs)) {
|
||||
$server_path_logs = $config['data_path'] . 'logs/';
|
||||
}
|
||||
|
||||
if (file_exists($server_path_logs)) {
|
||||
foreach (scandir($server_path_logs) as $f) {
|
||||
if ($f[0] == '.' || $f == '..')
|
||||
continue;
|
||||
|
||||
if (is_dir($server_path_logs . $f)) {
|
||||
foreach (scandir($server_path_logs . $f) as $f2) {
|
||||
if ($f2[0] == '.' || $f2 == '..')
|
||||
continue;
|
||||
$files[] = array($f . '/' . $f2, $server_path_logs);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$files[] = array($f, $server_path_logs);
|
||||
}
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
foreach ($files as $f) {
|
||||
?>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="<?php echo ADMIN_URL . '?p=logs&file=' . $f[0]; ?>"><?php echo $f[0]; ?></a>
|
||||
</td>
|
||||
<td><?php echo date("Y-m-d H:i:s", filemtime($f[1] . $f[0])); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<table id="tb_logs">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Log name</th>
|
||||
<th>Last updated</th>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$files = array();
|
||||
$aac_path_logs = BASE . 'system/logs/';
|
||||
foreach (scandir($aac_path_logs) as $f) {
|
||||
if ($f[0] == '.' || $f == '..' || is_dir($aac_path_logs . $f))
|
||||
continue;
|
||||
|
||||
$files[] = array($f, $aac_path_logs);
|
||||
}
|
||||
|
||||
$server_path_logs = $config['server_path'] . 'logs/';
|
||||
if (!file_exists($server_path_logs)) {
|
||||
$server_path_logs = $config['data_path'] . 'logs/';
|
||||
}
|
||||
|
||||
if (file_exists($server_path_logs)) {
|
||||
foreach (scandir($server_path_logs) as $f) {
|
||||
if ($f[0] == '.' || $f == '..')
|
||||
continue;
|
||||
|
||||
if (is_dir($server_path_logs . $f)) {
|
||||
foreach (scandir($server_path_logs . $f) as $f2) {
|
||||
if ($f2[0] == '.' || $f2 == '..')
|
||||
continue;
|
||||
$files[] = array($f . '/' . $f2, $server_path_logs);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$files[] = array($f, $server_path_logs);
|
||||
}
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
foreach ($files as $f) {
|
||||
?>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="<?php echo ADMIN_URL . '?p=logs&file=' . $f[0]; ?>"><?php echo $f[0]; ?></a>
|
||||
</td>
|
||||
<td><?php echo date("Y-m-d H:i:s", filemtime($f[1] . $f[0])); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<th>Log name</th>
|
||||
<th>Last updated</th>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -119,6 +110,6 @@ if (!empty($file)) {
|
||||
?>
|
||||
<script>
|
||||
$(function () {
|
||||
$('#logs').DataTable()
|
||||
$('#tb_logs').DataTable()
|
||||
})
|
||||
</script>
|
91
system/pages/admin/reports.php
Normal file
91
system/pages/admin/reports.php
Normal file
@ -0,0 +1,91 @@
|
||||
<?php
|
||||
/**
|
||||
* Reports
|
||||
*
|
||||
* @package MyAAC
|
||||
* @author Lee
|
||||
* @copyright 2018 MyAAC
|
||||
* @link http://my-aac.org
|
||||
*/
|
||||
defined('MYAAC') or die('Direct access not allowed!');
|
||||
$title = 'Report viewer';
|
||||
?>
|
||||
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title">Reports:</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<table id="tb_reports">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Report name</th>
|
||||
<th>Last updated</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$files = array();
|
||||
$server_path_reports = $config['data_path'] . 'reports/';
|
||||
|
||||
if (file_exists($server_path_reports)) {
|
||||
foreach (scandir($server_path_reports) as $f) {
|
||||
if ($f[0] == '.' || $f == '..')
|
||||
continue;
|
||||
|
||||
if (is_dir($server_path_reports . $f)) {
|
||||
foreach (scandir($server_path_reports . $f) as $f2) {
|
||||
if ($f2[0] == '.' || $f2 == '..')
|
||||
continue;
|
||||
$files[] = array($f . '/' . $f2, $server_path_reports);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$files[] = array($f, $server_path_reports);
|
||||
}
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
foreach ($files as $f) {
|
||||
?>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="<?php echo ADMIN_URL . '?p=reports&file=' . $f[0]; ?>"><?php echo $f[0]; ?></a>
|
||||
</td>
|
||||
<td><?php echo date("Y-m-d H:i:s", filemtime($f[1] . $f[0])); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
$file = isset($_GET['file']) ? $_GET['file'] : NULL;
|
||||
if (!empty($file)) {
|
||||
if (!preg_match('/[^A-z0-9\' _\/\-\.]/', $file)) {
|
||||
if (file_exists($server_path_reports . $file)) {
|
||||
echo '<div class="box"><div class="box-header"><h3 class="box-title"><b>' . $file . '</b></h3></div><div class="box-body">';
|
||||
echo nl2br(file_get_contents($server_path_reports . $file));
|
||||
echo '</div></div>';
|
||||
} else
|
||||
echo 'Specified file does not exist.';
|
||||
} else
|
||||
echo 'Invalid file name specified.';
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('#tb_reports').DataTable();
|
||||
|
||||
});
|
||||
</script>
|
@ -41,8 +41,9 @@ else {
|
||||
}
|
||||
}
|
||||
|
||||
$order = 'name';
|
||||
$spells = array();
|
||||
$spells_db = $db->query('SELECT * FROM `' . TABLE_PREFIX . 'spells` WHERE `hidden` != 1 AND `type` < 3 ORDER BY name, level');
|
||||
$spells_db = $db->query('SELECT * FROM `' . TABLE_PREFIX . 'spells` WHERE `hidden` != 1 AND `type` < 4 AND `level` > 0 ORDER BY ' . $order . '');
|
||||
|
||||
if((string)$vocation_id != 'all') {
|
||||
foreach($spells_db->fetchAll() as $spell) {
|
||||
@ -77,12 +78,16 @@ $twig->display('spells.html.twig', array(
|
||||
'post_vocation_id' => $vocation_id,
|
||||
'post_vocation' => $vocation,
|
||||
'spells' => $spells,
|
||||
'item_path' => $config['item_images_url'],
|
||||
));
|
||||
?>
|
||||
|
||||
<script>
|
||||
$(document).ready( function () {
|
||||
$('#spellstb').DataTable();
|
||||
|
||||
$("#tb_instantSpells").DataTable();
|
||||
$("#tb_conjureSpells").DataTable();
|
||||
$("#tb_runeSpells").DataTable();
|
||||
} );
|
||||
|
||||
</script>
|
||||
|
@ -6,58 +6,44 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div id="tb_pages_wrapper" class="dataTables_wrapper form-inline dt-bootstrap">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<table id="tb_pages" class="table table-bordered table-striped dataTable" role="grid"
|
||||
aria-describedby="tb_pages_info">
|
||||
<thead>
|
||||
<tr role="row">
|
||||
<th class="sorting_asc" tabindex="0" aria-controls="tb_pages" rowspan="1" colspan="1"
|
||||
aria-sort="ascending" aria-label="Name: activate to sort column descending">Name
|
||||
</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="tb_pages" rowspan="1" colspan="1"
|
||||
aria-sort="ascending" aria-label="Title: activate to sort column descending">Title
|
||||
</th>
|
||||
<th class="" tabindex="0" aria-controls="tb_pages" rowspan="1" colspan="1"
|
||||
style="width: 150px;">Options
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for page in pages %}
|
||||
<tr>
|
||||
<td>{{ page.link|raw }}</td>
|
||||
<td><i>{{ page.title }}</i></td>
|
||||
<td>
|
||||
<a href="?p=pages&action=edit&id={{ page.id }}" class="ico" title="Edit"><span
|
||||
class="btn btn-success btn-sm edit btn-flat"><i class="fa fa-edit"></i></span></a>
|
||||
<a href="?p=pages&action=delete&id={{ page.id }}" class="ico"
|
||||
onclick="return confirm('Are you sure?');" title="Delete"><span
|
||||
class="btn btn-danger btn-sm delete btn-flat"><i
|
||||
class="fa fa-trash"></i></span></a>
|
||||
<a href="?p=pages&action=hide&id={{ page.id }}" class="ico"
|
||||
title="{% if page.hidden != 1 %}Hide{% else %}Show{% endif %}">
|
||||
{% if page.hidden != 1 %}
|
||||
<span class="btn btn-primary btn-sm btn-flat"><i
|
||||
class="fa fa-eye"></i></span>
|
||||
{% else %}
|
||||
<span class="btn btn-default btn-sm btn-flat"><i
|
||||
class="fa fa-eye-slash"></i></span>
|
||||
{% endif %}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<table id="tb_pages">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Title</th>
|
||||
<th style="width: 150px;">Options</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for page in pages %}
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Title</th>
|
||||
<th>Options</th>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
<td>{{ page.link|raw }}</td>
|
||||
<td><i>{{ page.title }}</i></td>
|
||||
<td>
|
||||
<a href="?p=pages&action=edit&id={{ page.id }}" class="ico" title="Edit"><span
|
||||
class="btn btn-success btn-sm edit btn-flat"><i
|
||||
class="fa fa-edit"></i></span></a>
|
||||
<a href="?p=pages&action=delete&id={{ page.id }}" class="ico"
|
||||
onclick="return confirm('Are you sure?');" title="Delete"><span
|
||||
class="btn btn-danger btn-sm delete btn-flat"><i
|
||||
class="fa fa-trash"></i></span></a>
|
||||
<a href="?p=pages&action=hide&id={{ page.id }}" class="ico"
|
||||
title="{% if page.hidden != 1 %}Hide{% else %}Show{% endif %}">
|
||||
{% if page.hidden != 1 %}
|
||||
<span class="btn btn-primary btn-sm btn-flat"><i
|
||||
class="fa fa-eye"></i></span>
|
||||
{% else %}
|
||||
<span class="btn btn-default btn-sm btn-flat"><i
|
||||
class="fa fa-eye-slash"></i></span>
|
||||
{% endif %}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -5,55 +5,40 @@
|
||||
<h3 class="box-title">Installed plugins:</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div id="plugins_wrapper" class="dataTables_wrapper form-inline dt-bootstrap">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<table id="plugins" class="table table-bordered table-striped dataTable" role="grid"
|
||||
aria-describedby="plugins_info">
|
||||
<thead>
|
||||
<tr role="row">
|
||||
<th class="sorting_asc" tabindex="0" aria-controls="plugins" rowspan="1"
|
||||
colspan="1" aria-sort="ascending"
|
||||
aria-label="Name: activate to sort column descending">Name
|
||||
</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="plugins" rowspan="1" colspan="1"
|
||||
aria-label="Description: activate to sort column ascending">Description
|
||||
</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="plugins" rowspan="1" colspan="1"
|
||||
aria-label="Author: activate to sort column ascending">Author
|
||||
</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="plugins" rowspan="1" colspan="1"
|
||||
aria-label="Filename: activate to sort column ascending">Filename
|
||||
</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="plugins" rowspan="1" colspan="1"
|
||||
aria-label="Options: activate to sort column ascending"
|
||||
style="width: 55px;">Options
|
||||
</th>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<table id="tb_plugins">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
<th>Author</th>
|
||||
<th>Filename</th>
|
||||
<th style="width: 55px;">Options</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for plugin in plugins %}
|
||||
<tr>
|
||||
<td><b>{{ plugin.name }}</b><br>
|
||||
<small>{{ plugin.description }}</small>
|
||||
</td>
|
||||
<td>{{ plugin.version }}</td>
|
||||
<td><b>{{ plugin.author }}</b><br>
|
||||
<small>{{ plugin.contact }}</small>
|
||||
</td>
|
||||
<td>{{ plugin.file }}.json</td>
|
||||
<td>
|
||||
{% if plugin.uninstall %}
|
||||
<a href="?p=plugins&uninstall={{ plugin.file }}" title="Uninstall"
|
||||
onclick="return confirm('Are you sure?');"><span
|
||||
class="btn btn-danger btn-sm delete btn-flat"><i
|
||||
class="fa fa-trash"></i></span></a>
|
||||
{% endif %}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for plugin in plugins %}
|
||||
<tr>
|
||||
<td><b>{{ plugin.name }}</b><br>
|
||||
<small>{{ plugin.description }}</small>
|
||||
</td>
|
||||
<td>{{ plugin.version }}</td>
|
||||
<td><b>{{ plugin.author }}</b><br>
|
||||
<small>{{ plugin.contact }}</small>
|
||||
</td>
|
||||
<td>{{ plugin.file }}.json</td>
|
||||
<td>
|
||||
{% if plugin.uninstall %}
|
||||
<a href="?p=plugins&uninstall={{ plugin.file }}" title="Uninstall"
|
||||
onclick="return confirm('Are you sure?');"><span
|
||||
class="btn btn-danger btn-sm delete btn-flat"><i
|
||||
class="fa fa-trash"></i></span></a>
|
||||
{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -62,6 +47,6 @@
|
||||
</div>
|
||||
<script>
|
||||
$(function () {
|
||||
$('#plugins').DataTable()
|
||||
$('#tb_plugins').DataTable()
|
||||
})
|
||||
</script>
|
@ -3,54 +3,36 @@
|
||||
<h3 class="box-title">Users active within last {{ config_visitors_counter_ttl }} minutes.</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div id="visitors_wrapper" class="dataTables_wrapper form-inline dt-bootstrap">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<table id="visitors" class="table table-bordered table-striped dataTable" role="grid"
|
||||
aria-describedby="visitors_info">
|
||||
<thead>
|
||||
<tr role="row">
|
||||
<th class="sorting_asc" tabindex="0" aria-controls="visitors" rowspan="1" colspan="1"
|
||||
aria-sort="ascending" aria-label="IP: activate to sort column descending"
|
||||
style="width: 297px;">IP
|
||||
</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="visitors" rowspan="1" colspan="1"
|
||||
aria-label="Last visit: activate to sort column ascending" style="width: 361px;">Last
|
||||
visit
|
||||
</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="visitors" rowspan="1" colspan="1"
|
||||
aria-label="Page: activate to sort column ascending" style="width: 322px;">Page
|
||||
</th>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<table id="tb_visitors">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>IP</th>
|
||||
<th>Last visit</th>
|
||||
<th>Page</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set i = 0 %}
|
||||
{% for visitor in visitors %}
|
||||
{% set i = i + 1 %}
|
||||
<tr role="row" class="odd">
|
||||
<td>{{ visitor.ip }}</td>
|
||||
<td>{{ visitor.lastvisit|date("H:i:s") }}</td>
|
||||
<td>
|
||||
<a href="{{ visitor.page }}">{{ visitor.page|slice(0, 50) }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set i = 0 %}
|
||||
{% for visitor in visitors %}
|
||||
{% set i = i + 1 %}
|
||||
<tr role="row" class="odd">
|
||||
<td>{{ visitor.ip }}</td>
|
||||
<td>{{ visitor.lastvisit|date("H:i:s") }}</td>
|
||||
<td>
|
||||
<a href="{{ visitor.page }}">{{ visitor.page|slice(0, 50) }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th>IP</th>
|
||||
<th>Last visit</th>
|
||||
<th>Page</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(function () {
|
||||
$('#visitors').DataTable()
|
||||
$('#tb_visitors').DataTable()
|
||||
})
|
||||
</script>
|
@ -1,9 +1,42 @@
|
||||
<style type="text/css">
|
||||
|
||||
.ts_Spells > input[type="radio"] {
|
||||
position: absolute;
|
||||
left: -200vw;
|
||||
}
|
||||
|
||||
.ts_Spells .tab-panel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ts_Spells > input:first-child:checked ~ .tab-panels > .tab-panel:first-child,
|
||||
.ts_Spells > input:nth-child(3):checked ~ .tab-panels > .tab-panel:nth-child(2),
|
||||
.ts_Spells > input:nth-child(5):checked ~ .tab-panels > .tab-panel:nth-child(3),
|
||||
.ts_Spells > input:nth-child(7):checked ~ .tab-panels > .tab-panel:nth-child(4),
|
||||
.ts_Spells > input:nth-child(9):checked ~ .tab-panels > .tab-panel:nth-child(5),
|
||||
.ts_Spells > input:nth-child(11):checked ~ .tab-panels > .tab-panel:nth-child(6) {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.ts_Spells > label {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
padding: 10px 10px 10px;
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid transparent;
|
||||
border-bottom: 0;
|
||||
cursor: pointer;
|
||||
font-weight: 600;
|
||||
background-color: {{ config.vdarkborder }};
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
{% if canEdit %}
|
||||
<form method="post" action="{{ getLink('spells') }}">
|
||||
<input type="hidden" name="reload_spells" value="yes"/>
|
||||
<input type="submit" value="(admin) Reload spells"/>
|
||||
</form>
|
||||
<form method="post" action="{{ getLink('spells') }}">
|
||||
<input type="hidden" name="reload_spells" value="yes"/>
|
||||
<input type="submit" value="(admin) Reload spells"/>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
<form action="{{ getLink('spells') }}" method="post">
|
||||
@ -18,7 +51,7 @@
|
||||
<td>Only for vocation: <select name="vocation_id">
|
||||
<option value="all" {% if post_vocation_id == 'all' %} selected{% endif %}>All</option>
|
||||
{% for id, vocation in config.vocations %}
|
||||
<option value="{{ id }}"{% if id == post_vocation_id and post_vocation_id != "all" and post_vocation_id != '' %} selected{% endif %}>{{ vocation }}</option>
|
||||
<option value="{{ id }}"{% if id == post_vocation_id and post_vocation_id != "all" and post_vocation_id != '' %} selected{% endif %}>{{ vocation }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
@ -32,39 +65,137 @@
|
||||
</table>
|
||||
</form>
|
||||
<br/>
|
||||
<table id="spellstb" class=""><thead>
|
||||
<tr role="row"><th>Name</th><th>Words</th><th>Type<br/>(count)</th>
|
||||
<th>Mana</th><th>Level</th><th>Magic Level</th><th>Soul</th><th>Premium</th><th>Vocations</th></tr>
|
||||
</thead><tbody>
|
||||
{% set i = 0 %}
|
||||
{% for spell in spells %}
|
||||
{% set i = i + 1 %}
|
||||
<tr>
|
||||
<td>{{ spell.name }}</td>
|
||||
<td>{{ spell.words }}</td>
|
||||
<td>
|
||||
{% if spell.type == 1 %}
|
||||
Instant
|
||||
{% elseif spell.type == 2 %}
|
||||
Conjure ({{ spell.conjure_count }})
|
||||
{% else %}
|
||||
Rune
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ spell.mana }}</td>
|
||||
<td>{{ spell.level }}</td>
|
||||
<td>{{ spell.maglevel }}</td>
|
||||
<td>{{ spell.soul }}</td>
|
||||
<td>{% if spell.premium == 1 %}yes{% else %}no{% endif %}</td>
|
||||
<td>
|
||||
{% if spell.vocations|length > 0 %}
|
||||
<span style="font-size: 10px">
|
||||
{{ spell.vocations|raw }}
|
||||
</span>
|
||||
{% else %}
|
||||
{{ config.vocations[post_vocation_id] }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody></table>
|
||||
|
||||
<div class="ts_Spells">
|
||||
<input type="radio" name="ts_Spells" id="tab_instant" aria-controls="instant" checked>
|
||||
<label for="tab_instant">Instant</label>
|
||||
|
||||
<input type="radio" name="ts_Spells" id="tab_conjure" aria-controls="conjure">
|
||||
<label for="tab_conjure">Conjure</label>
|
||||
|
||||
<input type="radio" name="ts_Spells" id="tab_rune" aria-controls="rune">
|
||||
<label for="tab_rune">Rune</label>
|
||||
|
||||
<div class="tab-panels">
|
||||
<section id="instant" class="tab-panel">
|
||||
<table id="tb_instantSpells">
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Words</th>
|
||||
<th>Level</th>
|
||||
<th>Mana</th>
|
||||
<th>Vocations</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set i = 0 %}
|
||||
{% set y = 0 %}
|
||||
{% for spell in spells %}
|
||||
{% set i = i + 1 %}
|
||||
{% if spell.type == 1 %}
|
||||
{% set y = y + 1 %}
|
||||
<tr>
|
||||
<td>{{ spell.name }}</td>
|
||||
<td>{{ spell.words }}</td>
|
||||
<td>{{ spell.level }}</td>
|
||||
<td>{{ spell.mana }}</td>
|
||||
<td>
|
||||
{% if spell.vocations|length > 0 %}
|
||||
<span style="font-size: 10px">{{ spell.vocations|raw }}</span>
|
||||
{% else %}
|
||||
{{ config.vocations[post_vocation_id] }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section id="conjure" class="tab-panel">
|
||||
<table id="tb_conjureSpells">
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Words</th>
|
||||
<th>Level</th>
|
||||
<th>Mana</th>
|
||||
<th>Soul</th>
|
||||
<th>Item</th>
|
||||
<th>Reagent</th>
|
||||
<th>Vocations</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set i = 0 %}
|
||||
{% set y = 0 %}
|
||||
{% for spell in spells %}
|
||||
{% set i = i + 1 %}
|
||||
{% if spell.type == 2 %}
|
||||
{% set y = y + 1 %}
|
||||
<tr>
|
||||
<td>{{ spell.name }}</td>
|
||||
<td>{{ spell.words }}</td>
|
||||
<td>{{ spell.level }}</td>
|
||||
<td>{{ spell.mana }}</td>
|
||||
<td>{{ spell.soul }}</td>
|
||||
<td>
|
||||
<small>
|
||||
{% if (spell.conjure_count < 150) and ( spell.conjure_count > 0) %} {{ spell.conjure_count }}x
|
||||
<br/>{% endif %}</small>
|
||||
<img src="{{ item_path }}/{{ spell.conjure_id }}.gif"
|
||||
width="32" height="32" border="0"
|
||||
alt="{{ spell.conjure_id }}"></td>
|
||||
<td>{% if (spell.reagent > 0) %}
|
||||
<img src="{{ item_path }}/{{ spell.reagent }}.gif"
|
||||
width="32" height="32" border="0"
|
||||
alt="{{ spell.reagent }}">{% else %}---{% endif %}</td>
|
||||
<td>
|
||||
{% if spell.vocations|length > 0 %}
|
||||
<span style="font-size: 10px">{{ spell.vocations|raw }}</span>
|
||||
{% else %}
|
||||
{{ config.vocations[post_vocation_id] }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section id="rune" class="tab-panel">
|
||||
<table id="tb_runeSpells">
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Level</th>
|
||||
<th>Magic Level</th>
|
||||
<th>Item</th>
|
||||
<th>Vocations</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set i = 0 %}
|
||||
{% set y = 0 %}
|
||||
{% for spell in spells %}
|
||||
{% set i = i + 1 %}
|
||||
{% if spell.type == 3 %}
|
||||
{% set y = y + 1 %}
|
||||
<tr>
|
||||
<td>{{ spell.name }}</td>
|
||||
<td>{{ spell.level }}</td>
|
||||
<td>{{ spell.maglevel }}</td>
|
||||
<td><img src="{{ item_path }}/{{ spell.item_id }}.gif"
|
||||
width="32" height="32" border="0"
|
||||
alt="{{ spell.item_id }}"></td>
|
||||
<td>
|
||||
{% if spell.vocations|length > 0 %}
|
||||
<span style="font-size: 10px">{{ spell.vocations|raw }}</span>
|
||||
{% else %}
|
||||
{{ config.vocations[post_vocation_id] }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
BIN
tools/images/sort_asc.png
Normal file
BIN
tools/images/sort_asc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 160 B |
BIN
tools/images/sort_asc_disabled.png
Normal file
BIN
tools/images/sort_asc_disabled.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 148 B |
BIN
tools/images/sort_both.png
Normal file
BIN
tools/images/sort_both.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 201 B |
BIN
tools/images/sort_desc.png
Normal file
BIN
tools/images/sort_desc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 158 B |
BIN
tools/images/sort_desc_disabled.png
Normal file
BIN
tools/images/sort_desc_disabled.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 146 B |
Loading…
x
Reference in New Issue
Block a user