Merge branch 'develop' into feature/recaptcha-v3-plus-login

This commit is contained in:
slawkens
2022-08-28 18:28:10 +02:00
653 changed files with 3843 additions and 39508 deletions

View File

@@ -30,15 +30,20 @@
{{ hook('HOOK_ACCOUNT_CREATE_BEFORE_ACCOUNT') }}
{% if not config.account_login_by_email %}
<tr>
<td class="LabelV" style="width: 150px">
<span{% if errors.account is defined %} class="red"{% endif %}>Account {% if constant('USE_ACCOUNT_NAME') %}Name{% else %}Number{% endif %}:</span>
{% if not constant('USE_ACCOUNT_NAME') %}
<div id="SuggestAccountNumber">[<a href="#">suggest number</a>]</div>
{% endif %}
</td>
<td>
<input type="text" name="account" id="account_input" size="30" maxlength="{% if constant('USE_ACCOUNT_NAME') %}30{% else %}10{% endif %}" value="{{ account }}" autofocus/>
<img id="account_indicator" src="images/global/general/{% if not save or errors.account is defined %}n{% endif %}ok.gif" style="display: none;" />
</td>
</tr>
{% endif %}
<tr><td></td><td><span id="account_error" class="FormFieldError">{% if errors.account is defined %}{{ errors.account }}{% endif %}</span></td></tr>
{{ hook('HOOK_ACCOUNT_CREATE_AFTER_ACCOUNT') }}
<tr>
@@ -86,7 +91,7 @@
<span{% if errors.password is defined %} class="red"{% endif %}>Password:</span>
</td>
<td>
<input type="password" name="password" id="password" value="" size="30" maxlength="50" />
<input type="password" name="password" id="password" value="" size="30" maxlength="29" />
<img id="password_indicator" src="images/global/general/{% if not save or errors.password is defined %}n{% endif %}ok.gif" style="display: none;" />
</td>
</tr>
@@ -96,7 +101,7 @@
<span{% if errors.password is defined %} class="red"{% endif %}>Repeat password:</span>
</td>
<td>
<input type="password" name="password2" id="password2" value="" size="30" maxlength="50" />
<input type="password" name="password2" id="password2" value="" size="30" maxlength="29" />
<img id="password2_indicator" src="images/global/general/{% if not save or errors.password is defined %}n{% endif %}ok.gif" style="display: none;" />
</td>
</tr>
@@ -328,3 +333,8 @@
{% set action = 'register' %}
{{ include('google_recaptcha.html.twig') }}
{% endif %}
<style>
#SuggestAccountNumber {
font-size: 7pt;
}
</style>

View File

@@ -20,6 +20,9 @@
$('#password2').blur(function() {
checkPassword();
});
$('#SuggestAccountNumber a').click(function (event) {
generateAccountNumber(event);
});
});
function updateFlag()
@@ -192,4 +195,18 @@
lastSend = timeNow;
}
function generateAccountNumber(event)
{
event.preventDefault();
$.getJSON("tools/generate_account_number.php", { uid: Math.random() },
function(data){
if(data.hasOwnProperty('success')) {
$('#account_input').val(data.success);
}
}
);
setTimeout(checkAccount, 1000);
}
</script>

View File

@@ -2,7 +2,7 @@ Please choose a name{% if config.character_samples|length > 1 %}, vocation{% end
{% if config.character_towns|length > 1 %}, town{% endif %}
and sex for your character. <br/>
In any case the name must not violate the naming conventions stated in the <a href="?subtopic=rules" target="_blank" >{{ config.lua.serverName }} Rules</a>, or your character might get deleted or name locked.
{% if account_logged.getPlayersList()|length >= config.characters_per_account %}
{% if account_logged.getPlayersList(false)|length >= config.characters_per_account %}
<b><span style="color: red"> You have maximum number of characters per account on your account. Delete one before you make new.</span></b>
{% endif %}
<br/><br/>

View File

@@ -24,7 +24,7 @@ Please enter your account {{ account|lower }} and your password.<br/><a href="?s
<table style="width:100%;" >
<tr>
<td class="LabelV" >
<span{% if error is not null %} class="red"{% endif %}>Account {{ account }}:</span>
<span{% if error is not null %} class="red"{% endif %}>{{ account_login_by }}:</span>
</td>
<td style="width:100%;" ><input type="text" name="account_login" size="30" maxlength="30" autofocus/></td>
</tr>

View File

@@ -0,0 +1,123 @@
<style>
html { margin-top: 32px !important; }
* html body { margin-top: 32px !important; }
#ma-admin-bar {
direction: ltr;
color: #ccc;
font-size: 13px;
font-weight: 400;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
line-height: 2.46153846;
height: 32px;
position: fixed;
top: 0;
left: 0;
width: 100%;
min-width: 600px;
z-index: 99999;
background: #23282d;
}
#ma-admin-bar a.ab-item {
color: #eee;
font-weight: normal;
}
#ma-admin-bar ul, #ma-admin-bar ul li {
background: 0 0;
clear: none;
list-style: none;
margin: 0;
padding: 0 15px 0 0;
position: relative;
text-indent: 0;
z-index: 99999;
}
#ma-admin-bar li {
float: left;
}
#ma-admin-bar li:hover {
color: lightskyblue;
}
#ma-admin-bar .ab-top-secondary>li {
float: right;
margin-right: 15px;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #343a40;
box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown-content a {
color: #eee;
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdown-content a:hover {color: lightskyblue;}
.dropdown:hover .dropdown-content {display: block;}
</style>
<div id="ma-admin-bar">
<ul>
<li class="dropdown">
<a href="{{ constant('ADMIN_URL') }}" class="ab-item">
<img alt="MyAAC" src="{{ constant('ADMIN_URL') }}images/logo.png" class="brand-image img-circle elevation-3" style="opacity: .8; height: 26px; width: 26px">
<span class="brand-text">
<b>My</b>AAC
</span>
</a>
</li>
<li class="dropdown">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-door" viewBox="0 0 16 16">
<path d="M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4H2.5z"></path>
</svg>
<a class="ab-item" href="#"><i class="bi bi-house"></i>{{ config.lua.serverName }}</a>
<div class="dropdown-content">
<a href="{{ getLink('') }}">Visit Site</a>
</div>
</li>
<li class="dropdown">
<a class="ab-item" href="#"><i class="bi bi-house"></i>New</a>
<div class="dropdown-content">
<a href="{{ constant('ADMIN_URL') }}?p=news&action=new">News</a>
<a href="{{ constant('ADMIN_URL') }}?p=pages&action=new">Page</a>
</div>
</li>
<li>
<a class="ab-item" href="{{ constant('ADMIN_URL') }}?p=plugins">
Plugins
</a>
</li>
<li>
<a class="ab-item" href="{{ constant('ADMIN_URL') }}?p=dashboard&clear_cache">
Clear Cache
</a>
</li>
</ul>
<ul class="ab-top-secondary">
<li class="dropdown">
<a class="ab-item" href="#">Hello, {{ username }}</a>
<div class="dropdown-content">
<a href="{{ getLink('account/manage') }}">Manage Account</a>
<a href="{{ constant('ADMIN_URL') }}?action=logout">Logout</a>
</div>
</li>
</ul>
</div>

View File

@@ -0,0 +1,59 @@
{% if action %}
<div class="card card-info card-outline">
<div class="card-header">
<h5 class="m-0">{{ (action == 'edit') ? 'Edit' : 'Add' }}</h5>
</div>
<form role="form" method="post" action="{{ cl_link_form }}" id="cl-edit-form">
<div class="card-body">
{% if action == 'edit' %}
<input type="hidden" name="id" value="{{ cl_id }}"/>
{% endif %}
<div class="form-group row">
<label for="body">Content</label>
<textarea class="form-control" id="body" name="body" maxlength="600" cols="50" rows="5">{{ body|raw }}</textarea>
</div>
<div class="form-group row">
<div class="col-12 col-sm-12 col-lg-6">
<label for="createdate" class="control-label">Date:</label>
<input type="text" class="form-control" id="createdate" name="createdate" autocomplete="off" maxlength="20" value="{{ create_date|date("M d Y, H:i:s") }}"/>
</div>
<div class="col-sm-6 pl-0">
<label for="player_id">Author</label>
<select class="form-control" name="player_id" id="player_id">
{% for player in account_players %}
<option value="{{ player.getId() }}"{% if player_id is defined and player.getId() == player_id %} selected="selected"{% endif %}>{{ player.getName() }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group row">
<div class="col-sm-6 pl-0">
<label for="select-where">Where</label>
<select class="form-control" name="where" id="select-where">
{% for id, cat in log_where %}
<option value="{{ cat.id }}"
{% if (where == 0 and id == 1) or (where == cat.id) %}selected="selected"{% endif %}>{{ cat.icon|capitalize }}</option>
{% endfor %}
</select>
</div>
<div class="col-sm-6 pl-0">
<label for="select-type">Type</label>
<select class="form-control" name="type" id="select-type">
{% for id, cat in log_type %}
<option value="{{ cat.id }}"
{% if (type == 0 and id == 1) or (type == cat.id) %}selected="selected"{% endif %}>{{ cat.icon|capitalize }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-info"><i class="fas fa-update"></i> {{ (action == 'edit') ? 'Update' : 'Add' }}</button>
<button type="button" onclick="window.location = '{{ constant('ADMIN_URL') }}?p=changelog';"
class="btn btn-danger float-right"><i class="fas fa-cancel"></i> Cancel
</button>
</div>
</form>
</div>
{% endif %}

View File

@@ -0,0 +1,55 @@
<div class="card card-info card-outline">
<div class="card-header">
<h5 class="m-0">News:
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=new" class="float-right"><span
class="btn btn-sm btn-success">New</span></a>
</h5>
</div>
<div class="card-body">
<table class="tb_datatable table table-striped table-bordered table-responsive d-md-table">
<thead>
<tr>
<th width="5%">ID</th>
<th>Date</th>
<th>Description</th>
<th>Type</th>
<th>Where</th>
<th></th>
</tr>
</thead>
<tbody>
{% if changelogs|length > 0 %}
{% set i = 0 %}
{% for log in changelogs %}
<tr>
<td>{{ log.id }}</td>
<td>{{ log.date|date("j.m.Y") }}</td>
<td>{{ truncate(log.body|raw,20) }}</td>
<td><img src="{{ constant('BASE_URL') }}images/changelog/{{ log.type }}.png" alt="icon" title="{{ log.type|capitalize }}"/> {{ log.type|capitalize }}</td>
<td><img src="{{ constant('BASE_URL') }}images/changelog/{{ log.where }}.png" alt="icon" title="{{ log.where|capitalize }}"/> {{ log.where|capitalize }}</td>
<td>
<div class="btn-group">
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=edit&id={{ log.id }}" class="btn btn-success btn-sm" title="Edit">
<i class="fas fa-pencil-alt"></i>
</a>
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=delete&id={{ log.id }}" class="btn btn-danger btn-sm" onclick="return confirm('Are you sure?');" title="Delete">
<i class="fas fa-trash"></i>
</a>
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=hide&id={{ log.id }}" class="btn btn-{{ (log.hidden != 1) ? 'info' : 'default' }} btn-sm" title="{% if log.hidden != 1 %}Hide{% else %}Show{% endif %}">
<i class="fas fa-eye{{ (log.hidden != 1) ? '' : '-slash' }}"></i>
</a>
</div>
</td>
</tr>
{% set i = i + 1 %}
{% endfor %}
{% else %}
<tr>
<td colspan="6">There are no changelogs for the moment.</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>

View File

@@ -1,27 +0,0 @@
<div class="col-12 col-md-6">
<div class="card card-warning card-outline">
<form action="?p=dashboard&maintenance" method="post" class="form-horizontal">
<div class="card-header">
<h5 class="m-0">Website Status<span class="float-right">
<div class="custom-control custom-switch custom-switch-off-danger custom-switch-on-success">
<input type="checkbox" class="custom-control-input" name="status" id="status" value="true" {% if not is_closed %} checked{% endif %}>
<label class="custom-control-label" for="status"> {% if is_closed %}Closed{% else %}Open{% endif %}</label>
</div></span>
</h5>
</div>
<div class="card-body p-2">
<div class="col-sm-12">
<label for="message" class="col-form-label">Maintenance Message</label>
<textarea name="message" class="form-control" cols="40" rows="3" maxlength="255" placeholder="Enter ...">{{ closed_message }}</textarea>
<small>(only visible if closed)</small>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-info"><i class="far fa-update"></i> Update</button>
<a href="?p=dashboard&clear_cache" onclick="return confirm('Are you sure?');" class="float-right">
<span class="btn btn-danger"><i class="fas fa-clear"></i>Clear cache</span>
</a>
</div>
</form>
</div>
</div>

View File

@@ -1,11 +1,11 @@
<p>Clicking the button will reload server data (items, monsters, spells, towns, weapons).</p>
<p>Clicking the button will reload server data (items, monsters, npcs, spells, towns, weapons).</p>
<p>It may take up to few minutes.</p>
<button id="reload_button" class="btn btn-info"><i class="fas fa-update"></i>Reload</button>
<div id="spinner" class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
<button id="spinner" class="btn btn-info" type="button" disabled>
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
Loading...
</button>
<div style="height: 20px"></div>
<div id="messages"></div>
@@ -19,6 +19,7 @@
$(function () {
$('#reload_button').on('click', function (e) {
$('#spinner').show();
$('#reload_button').hide();
$('[id^=success]').remove();
$('#messages').append('<div id="success-1"></div>');

View File

@@ -23,8 +23,7 @@
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-lock"></i></span>
</div>
<input type="text" class="form-control" id="account-name-input" name="account_login"
placeholder="Account {{ account }}" required autofocus>
<input type="text" class="form-control" id="account-name-input" name="account_login" placeholder="{{ account_login_by }}" required autofocus>
</div>
<div class="input-group mb-3">

View File

@@ -18,21 +18,22 @@
</div>
<form method="post">
<div class="card-body">
<div class="form-group row">
<label for="mail_to">To: (enter email, or leave empty to all)</label>
<input class="form-control" type="text" id="mail_to" name="mail_to" value="{{ mail_to }}"/>
</div>
<div class="form-group row">
<label for="mail_subject">Subject:</label>
<input class="form-control" type="text" id="mail_subject" name="mail_subject"
value="{{ mail_subject }}" size="30" maxlength="30"/>
<input class="form-control" type="text" id="mail_subject" name="mail_subject" value="{{ mail_subject }}" maxlength="30"/>
</div>
<div class="form-group row">
<label for="mail_content" class="control-label">Content:</label>
<textarea id="mail_content" name="mail_content" style="width: 100%" class="tinymce">{{ mail_content }}</textarea>
</div>
<div class="form-group row">
<input type="checkbox" name="preview" id="preview" value="1"/><label for="category">Just send test email to me (preview)</label>{% if preview_done %} - <b>Done.</b>{% endif %}
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-info"><i class="fas fa-share"></i> Send</button>
<button type="submit" name="submit" class="btn btn-info"><i class="fas fa-share"></i> Send</button>
<a href="{{ constant('ADMIN_URL') }}?p=mailer" class="btn btn-danger float-right">Cancel</a>
</div>
</form>
</div>

View File

@@ -18,7 +18,7 @@
var cat = $(this).attr("id").replace('add-button-', '');
var id = last_id[cat];
last_id[cat]++;
$('#sortable-' + cat).append('<li class="ui-state-default" id="list-' + cat + '-' + id + '"><label>Name:</label> <input type="text" name="menu[' + cat + '][]" value=""/> <label>Link:</label> <input type="text" name="menu_link[' + cat + '][]" value=""/><input type="hidden" name="menu_blank[' + cat + '][]" value="0" /> <label><input class="blank-checkbox" type="checkbox"/><span title="Open in New Window">New Window</span></label> <input class="color-picker" type="text" name="menu_color[' + cat + '][]" value="#ffffff" /><a class="remove-button" id="remove-button-' + cat + '-' + id + '"><img src="{{ constant('BASE_URL') }}images/del.png"/></a></li>'); //add input bo
$('#sortable-' + cat).append('<li class="ui-state-default" id="list-' + cat + '-' + id + '"><label>Name:</label> <input type="text" name="menu[' + cat + '][]" value=""/> <label>Link:</label> <input type="text" name="menu_link[' + cat + '][]" value=""/><input type="hidden" name="menu_blank[' + cat + '][]" value="0" /> <label><input class="blank-checkbox" type="checkbox"/><span title="Open in New Window">New Window</span></label> <input class="color-picker" type="text" name="menu_color[' + cat + '][]" value="#ffffff" /><a class="remove-button" id="remove-button-' + cat + '-' + id + '"><i class="fas fa-trash"></i></a></li>'); //add input bo
$('#remove-button-' + cat + '-' + id).click(function () {
$('#list-' + $(this).attr("id").replace('remove-button-', '')).remove();
});

View File

@@ -79,7 +79,7 @@
<div class="col-sm-12">
{% for id, cat in categories %}
<input type="radio" name="category" value="{{ id }}" {% if (category == 0 and id == 1) or (category == id) %}checked="yes"{% endif %}/>
<img src="{{ constant('BASE_URL') }}/images/news/icon_{{ cat.icon_id }}_small.gif"/>
<img src="{{ constant('BASE_URL') }}images/news/icon_{{ cat.icon_id }}_small.gif"/>
{% endfor %}
</div>
</div>
@@ -104,7 +104,7 @@
$('#select-type').change(function () {
var value = $('#select-type').val();
if (value == {{ constant('ARTICLE') }}) {
if (value === {{ constant('ARTICLE') }}) {
$('#article-text').show();
$('#article-image').show();
} else {
@@ -118,8 +118,8 @@
<script type="text/javascript" src="{{ constant('BASE_URL') }}tools/tinymce/tinymce.min.js"></script>
<script type="text/javascript">
var unsaved = false;
var lastContent = '';
let unsaved = false;
let lastContent = '';
tinymce.init({
selector: "#body",
@@ -129,7 +129,7 @@
image_advtab: true,
setup: function (ed) {
ed.on('NodeChange', function (e) {
if (ed.getContent() != lastContent) {
if (ed.getContent() !== lastContent) {
unsaved = true;
}
});

View File

@@ -6,7 +6,7 @@
</div>
<div class="card-body">
<table class="tb_datatable table table-striped table-bordered">
<table class="tb_datatable table table-striped table-bordered table-responsive d-md-table">
<thead>
<tr>
<th width="5%">ID</th>
@@ -51,7 +51,7 @@
</div>
<div class="card-body">
<table class="tb_datatable table table-striped table-bordered">
<table class="tb_datatable table table-striped table-bordered table-responsive d-md-table">
<thead>
<tr>
<th width="5%">ID</th>
@@ -95,7 +95,7 @@
</div>
<div class="card-body">
<table class="tb_datatable table table-striped table-bordered">
<table class="tb_datatable table table-striped table-bordered table-responsive d-md-table">
<thead>
<tr>
<th width="5%">ID</th>

View File

@@ -4,7 +4,7 @@
<a href="?p=pages&action=new" class="float-right"><span class="btn btn-sm btn-success">New</span></a></h5>
</div>
<div class="card-body">
<table class="table table-striped table-bordered" id="tb_pages">
<table class="table table-striped table-bordered table-responsive d-md-table" id="tb_pages">
<thead>
<tr>
<th>Name</th>

View File

@@ -9,7 +9,7 @@
<div class="form-group">
<label>File input</label>
<input type="file" name="plugin">
<input type="file" name="plugin" accept=".zip">
</div>
</div>
<div class="card-footer">

View File

@@ -3,7 +3,7 @@
<h5 class="m-0">Installed plugins<span class="float-right"><a class="" data-toggle="collapse" href="#install_plugin">Install Plugin</a></span></h5>
</div>
<div class="card-body">
<table class="table table-striped table-bordered" id="tb_plugins">
<table class="table table-striped table-bordered table-responsive d-md-table" id="tb_plugins">
<thead>
<tr>
<th>Name</th>

View File

@@ -3,7 +3,7 @@
<h5 class="m-0">Users active within last {{ config_visitors_counter_ttl }} minutes.</h5>
</div>
<div class="card-body">
<table id="tb_visitors" class="table table-striped table-bordered">
<table id="tb_visitors" class="table table-striped table-bordered table-responsive d-md-table">
<thead>
<tr>
<th>IP</th>

View File

@@ -0,0 +1,39 @@
<table border="0" cellspacing="1" cellpadding="4" width="100%">
<tr align="center" bgcolor="{{ config.vdarkborder }}" class="white">
<td><span style="color: white"><b>Nick</b></span></td>
{% if configBans.hasType %}
<td><span style="color: white"><b>Type</b></span></td>
{% endif %}
<td><span style="color: white"><b>Expires</b></span></td>
{% if configBans.hasReason %}
<td><span style="color: white"><b>Reason</b></span></td>
{% endif %}
<td><span style="color: white"><b>Comment</b></span></td>
<td><span style="color: white"><b>Added by:</b></span></td>
</tr>
{% for ban in bans %}
<tr align="center" bgcolor="{{ getStyle(ban.i) }}">
<td height="50" width="140">{{ ban.player|raw }}</td>
{% if configBans.hasType %}
<td>{{ ban.type }}</td>
{% endif %}
<td>{{ ban.expires|raw }}</td>
{% if configBans.hasReason %}
<td>{{ ban.reason }}</td>
{% endif %}
<td>{{ ban.comment }}</td>
<td>
{{ ban.addedBy|raw }}<br/>
{{ ban.addedTime|raw }}
</td>
</tr>
{% endfor %}
</table>
<table border="0" cellpadding="4" cellspacing="1" width="100%">
{% if page > 1 %}
<tr><td width="100%" align="right" valign="bottom"><a href="{{ getLink('bans') }}/{{ (page - 1) }}" class="size_xxs">Previous Page</a></td></tr>
{% endif %}
{% if nextPage %}
<tr><td width="100%" align="right" valign="bottom"><a href="{{ getLink('bans') }}/{{ (page + 1) }}" class="size_xxs">Next Page</a></td></tr>
{% endif %}
</table>

View File

@@ -0,0 +1,3 @@
<!--[if lt IE 7]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->

View File

@@ -1,23 +1,41 @@
<br/>
{% if canEdit %}
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=new" class="btn btn-success btn-sm" title="Add New" target="_blank">Add New</a>
{% endif %}
<table border="0" cellspacing="1" cellpadding="4" width="100%">
<tr bgcolor="{{ config.vdarkborder }}">
<td width="22"><span class="white"><b>Type</b></span></td>
<td width="22"><span class="white"><b>Where</b></span></td>
<td width="50"><span class="white"><b>Date</b></span></td>
<td><span class="white"><b>Description</b></span></td>
{% if canEdit %}
<td></td>
{% endif %}
</tr>
{% if changelogs|length > 0%}
{% set i = 0 %}
{% for log in changelogs %}
<tr bgcolor="{{ getStyle(i) }}">
<td align="center">
<img src="images/changelog/{{ log.type }}.png" title="{{ log.type|capitalize }}"/>
<img src="{{ constant('BASE_URL') }}images/changelog/{{ log.type }}.png" title="{{ log.type|capitalize }}"/>
</td>
<td align="center">
<img src="images/changelog/{{ log.where }}.png" title="{{ log.where|capitalize }}"/>
<img src="{{ constant('BASE_URL') }}images/changelog/{{ log.where }}.png" title="{{ log.where|capitalize }}"/>
</td>
<td>{{ log.date|date("j.m.Y") }}</td>
<td>{{ log.body|raw }}</td>
<td>{{ log.body|nl2br}}</td>
{% if canEdit %}
<td>
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=edit&id={{ log.id }}" title="Edit in Admin Panel" target="_blank">
<img src="images/edit.png"/>Edit
</a>
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=delete&id={{ log.id }}" onclick="return confirm('Are you sure?');" title="Delete in Admin Panel" target="_blank">
<img src="images/del.png"/>Delete
</a>
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=hide&id={{ log.id }}" title="{% if log.hidden != 1 %}Hide{% else %}Show{% endif %} in Admin Panel" target="_blank">
<img src="images/{{ (log.hidden != 1 ? 'success' : 'error') }}.png"/>{{ (log.hidden != 1) ? 'Hide' : 'Show' }}
</a>
</td>
{% endif %}
</tr>
{% set i = i + 1 %}
{% endfor %}
@@ -35,4 +53,4 @@
<tr><td width="100%" align="right" valign="bottom"><a href="{{ getLink('changelog/' ~ (page + 1)) }}" class="size_xxs">Next Page</a></td></tr>
{% endif %}
</table>
</table>
</table>

View File

@@ -17,7 +17,7 @@
{% endif %}
<table border="0" cellspacing="1" cellpadding="4" width="100%">
{% if config.characters.outfit %}
<div style="width:64px;height:64px;border:2px solid #F1E0C6; border-radius:50px; padding:13px; margin-top:38px;margin-left:376px;position:absolute;"><img style="margin-left:{% if player.getLookType() in [75, 266, 302] %}-0px;margin-top:-0px;width:64px;height:64px;{% else %}-60px;margin-top:-60px;width:128px;height:128px;{% endif %}" src="{{ outfit }}" alt="player outfit"/></div>
<div style="width:64px;height:64px;border:2px solid #F1E0C6; border-radius:50px; padding:13px; margin-top:38px;margin-left:376px;position:absolute;"><img style="margin-left:{% if player.getLookType() in config.outfit_images_wrong_looktypes %}-0px;margin-top:-0px;width:64px;height:64px;{% else %}-60px;margin-top:-60px;width:128px;height:128px;{% endif %}" src="{{ outfit }}" alt="player outfit"/></div>
{% endif %}
<tr bgcolor="{{ config.vdarkborder }}">
@@ -400,7 +400,7 @@
<td>{% if player.isOnline() %}<b><span style="color: green">Online</span></b>{% endif %}</td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<form action="{{ characters_link }}" method=post>
<form action="{{ getLink('characters') }}" method=post>
<tr>
<td>
<input type="hidden" name="name" value="{{ player.getName() }}"/>

View File

@@ -0,0 +1,164 @@
<script type="text/javascript" src="tools/js/tipped.js"></script>
<link rel="stylesheet" type="text/css" href="tools/css/tipped.css"/>
<style>
.creature_img {
background-position: center center;
background-repeat: no-repeat;
width: 64px;
height: 64px;
padding: 5px;
}
.creature_name {
font-size: 18px;
font-weight: bold;
width: 100%;
text-align: center;
float: left;
box-sizing: border-box;
padding-top: 10px;
padding-bottom: 15px;
}
.creature_voice {
font-weight: bold;
font-size: 8pt;
color: #FE6500;
text-shadow: rgb(0, 0, 0) 1px 0px 0px, rgb(0, 0, 0) 0.540302px 0.841471px 0px, rgb(0, 0, 0) -0.416147px 0.909297px 0px, rgb(0, 0, 0) -0.989992px 0.14112px 0px, rgb(0, 0, 0) -0.653644px -0.756802px 0px, rgb(0, 0, 0) 0.283662px -0.958924px 0px, rgb(0, 0, 0) 0.96017px -0.279415px 0px;
}
.loot_image {
width: 32px;
height: 32px;
border: 0px;
}
.loot_amount {
position: absolute;
bottom: 0;
right: 2px;
color: white;
font-size: 8pt;
font-weight: bold;
text-shadow: 0.1em 0.1em black;
}
.loot_bg {
margin: 2px;
position: relative;
display: inline-block;
float: left;
background-image: url('{{ constant('BASE_URL') }}images/items/empty.gif');
opacity: 0.7;
}
.loot_bg:hover {
opacity: 1.0;
}
</style>
<script>
$(document).ready(function () {
Tipped.create('.loot_image');
});
</script>
<div class="creature_name">{{ creature.name }}</div>
<table class="CreatureInfo" border="0" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
<th align="center" colspan="4"><b>General information</b></th>
</tr>
</thead>
<tbody>
<tr>
<td width="10%">
<div class="creature_img" style="background-image: url({{ creature.img_link }}"></div>
</td>
<td align="center" width="30%">
<strong>Health:</strong> {{ creature.health }}<br>
<strong>Experience:</strong> {{ creature.exp }}<br>
<strong>Speed:</strong> {{ creature.speed_lvl }} {{ (creature.use_haste) ? ' (+haste)' : '' }}
</td>
<td align="center" width="30%">
<b>Summonable:</b> {{ (creature.summonable) ? creature.mana ~ ' mana' : 'Impossible' }}<br>
<b>Convinceable:</b> {{ (creature.convinceable) ? creature.mana ~ ' mana' : 'Impossible' }}
</td>
<td width="30%" align="center">
<strong>Armor:</strong> {{ creature.armor }}<br>
<strong>Defense:</strong> {{ creature.defense }}
</td>
</tr>
</tbody>
</table><br>
{% if ( creature.voices is not empty or creature.summons is not empty) %}
<table class="CreatureVoice" border="0" cellspacing="0" cellpadding="4" width="100%">
<thead>
<tr>
{% if ( creature.summons is not empty) %}
<th width="50%"><b>Summons</b></th>
{% endif %}
{% if ( creature.voices is not empty) %}
<th width="50%"><b>Voices</b></th>
{% endif %}
</tr>
</thead>
<tbody>
<tr>
{% if ( creature.summons is not empty) %}
<td>
{% for summon in creature.summons %}
<span>{{ summon.chance }}% chance to summon a <b>{{ getMonsterLink(summon.name, true)|raw }}</b><br/></span>
{% endfor %}
</td>
{% endif %}
{% if ( creature.voices is not empty) %}
<td align="center">
<span class="creature_voice">
{% for voice in creature.voices %}
"{{ voice }}"<br/>
{% endfor %}
</span>
</td>
{% endif %}
</tr>
</tbody>
</table><br/>
{% endif %}
{% if (creature.elements|length > 0 or creature.immunities|length > 0 ) %}
<table class="CreatureElements" border="0" cellspacing="0" cellpadding="4" width="100%">
<tr>
<th colspan="{{ creature.elements|length }}">Elements and Immunities</th>
</tr>
{% if (creature.elements|length > 0) %}
<tr>{% for element in creature.elements %}
<td align="center"><b> {{ element.name }}</b><br/>{{ element.percent }}%</td>
{% endfor %}</tr>
{% endif %}
{% if (creature.immunities|length > 0 ) %}
<tr>
<td colspan="{{ creature.elements|length }}"><b>Immunities:</b> {{ creature.immunities|join(' | ') }}</td>
</tr>
{% endif %}
</table><br/>
{% endif %}
{% if (not creature.loot is empty) %}
<table class="CreatureLoot" border="0" cellspacing="0" cellpadding="4" width="100%">
<tr><th>Loot</th></tr>
<tr>
<td>
{% for item in creature.loot %}
<span class="loot_bg">
{% if (item.count > 1) %}
<span class="loot_amount">{{ item.count }}</span>
{% endif %}
<a href="{{ config.creatures_items_url }}{{ item.name|title }}"><img title="{{ item.tooltip }}" src="{{ config.item_images_url }}{{ item.id }}{{ config.item_images_extension }}" class="loot_image"/></a>
</span>
{% endfor %}
</td>
</tr>
</table>
{% endif %}

View File

@@ -0,0 +1,97 @@
{% if creatures is not empty %}
{% if preview %}
<style>
.creatureImages {
width: 100px;
height: 100px;
margin: 0px;
float: left;
}
.creatureBoss {
box-sizing: border-box;
border-radius: 10px;
border: 1px rgba(179, 179, 179, 0.50) solid;
background-color: rgba(235, 235, 235, 0.50);
}
</style>
<script type="text/javascript">
$(document).ready(function () {
$("#ciSearch").on("keyup", function () {
var value = $(this).val().toLowerCase();
$("#creatureiTable div").filter(function () {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});
</script>
<div style="float: right;"><input id="ciSearch" type="text" placeholder="Search.."></div>
<div style="display: table; width: 100%; ">
<div style="text-align: center; " id="creatureiTable">
{% for creature in creatures %}
{% set i = i + 1 %}
<div class="creatureImages">
<a href="{{ getMonsterLink(creature.name, false)|raw }}">
<div class="creature_img " style="background-image: url({{ creature.img_link }}"></div>
<img class=" {{ (creature.rewardboss ? 'creatureBoss' : '') }}" src="{{ creature.img_link }}" border="0"/>
</a>
<div>{{ creature.name }}</div>
</div>
{% endfor %}
</div>
</div>
{% else %}
<script type="text/javascript">
$(document).ready(function () {
$("#cSearch").on("keyup", function () {
var value = $(this).val().toLowerCase();
$("#creatureTable tr").filter(function () {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});
</script>
{{ generateLink('?creatures', 'All', false)|raw }} - <a href="?subtopic=creatures&boss=view">Bosses</a>
<div style="float: right;"><input id="cSearch" type="text" placeholder="Search.."></div>
<table width="100%">
<thead>
<tr>
<th>Name</th>
<th>Boss</th>
<th>Health</th>
<th>Experience</th>
<th>Summonable Mana</th>
<th>Convinceable Mana</th>
<th>Race</th>
</tr>
</thead>
<tbody id="creatureTable">
{% set i = 0 %}
{% for creature in creatures %}
{% set i = i + 1 %}
<tr>
<td>{{ getMonsterLink(creature.name, true)|raw }}</td>
<td>{{ (creature.rewardboss) ? 'Yes' : '---' }}</td>
<td>{{ creature.health|number_format(0, '.', ',') }}</td>
<td>{{ creature.exp|number_format(0, '.', ',') }}</td>
<td>{{ (creature.convinceable) ? creature.mana : '---' }} </td>
<td>{{ (creature.summonable) ? creature.mana : '---' }} </td>
<td>{{ creature.race|title }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
<script src="tools/js/jquery.min.js"></script>
{% else %}
<table width="100%">
<tr>
<th>Creatures</th>
</tr>
<tr>
<td>No Creatures on the server.</td>
</tr>
</table>
{% endif %}

View File

@@ -64,6 +64,8 @@
<div class="center wide">
<h2 class="wide">Whoops something went wrong...</h2>
<div class="error wide">
Exception class: {{ exceptionClass }}()
<br/><br/>
{{ message }}
<br/><br/><br/>
<b>Backtrace:</b><br/><br/>
@@ -74,4 +76,4 @@
<p>{{ powered_by }}</p>
</div>
</body>
</html>
</html>

View File

@@ -0,0 +1,4 @@
<form method="get" action="{{ constant('BASE_URL') }}">
<hidden name="subtopic" value="{{ constant('PAGE') }}"/>
<select name="template" onchange="this.form.submit()">{{ options|raw }}</select>
</form>

View File

@@ -1,21 +1,21 @@
<b>Boards</b>
<table width="100%">
<tr bgcolor="{{ config.vdarkborder }}">
<tr bgcolor="{{ config.vdarkborder }}" class="white">
<td>
<span style="color: white; font-size: 10px"><b>Board</b></span>
<span style="font-size: 10px"><b>Board</b></span>
</td>
<td>
<span style="color: white; font-size: 10px"><b>Posts</b></span>
<span style="font-size: 10px"><b>Posts</b></span>
</td>
<td>
<span style="color: white; font-size: 10px"><b>Threads</b></span>
<span style="font-size: 10px"><b>Threads</b></span>
</td>
<td align="center">
<span style="color: white; font-size: 10px"><b>Last Post</b></span>
<span style="font-size: 10px"><b>Last Post</b></span>
</td>
{% if canEdit %}
<td>
<span style="color: white; font-size: 10px"><b>Options</b></span>
<span style="font-size: 10px"><b>Options</b></span>
</td>
{% endif %}
</tr>

View File

@@ -12,8 +12,8 @@ Page: {{ links_to_pages|raw }}<br/>
</td>
</tr>
<tr bgcolor="{{ config.vdarkborder }}">
<td width="200">
<span style="color: white; font-size: 10px"><b>Author</b></span>
<td width="200" class="white">
<span style="font-size: 10px"><b>Author</b></span>
</td>
<td>&nbsp;</td>
</tr>
@@ -24,7 +24,7 @@ Page: {{ links_to_pages|raw }}<br/>
{% set i = i + 1 %}
<td valign="top">{{ post.player_link|raw }}<br/>
{% if post.outfit is defined %}
<img style="margin-left:{% if post.player.getLookType() in [75, 266, 302] %}-0px;margin-top:-0px;width:64px;height:64px;{% else %}-60px;margin-top:-60px;width:128px;height:128px;{% endif %}" src="{{ post.outfit }}" alt="player outfit"/>
<img style="margin-left:{% if post.player.getLookType() in config.outfit_images_wrong_looktypes %}-0px;margin-top:-0px;width:64px;height:64px;{% else %}-60px;margin-top:-60px;width:128px;height:128px;{% endif %}" src="{{ post.outfit }}" alt="player outfit"/>
<br />
{% endif %}
<span style="font-size: 10px">
@@ -72,4 +72,4 @@ Page: {{ links_to_pages|raw }}<br/>
{% endfor %}
</table>
<br/>
<a href="?subtopic=forum&action=new_post&thread_id={{ thread_id }}"><img src="images/forum/post.gif" border="0" /></a>
<a href="?subtopic=forum&action=new_post&thread_id={{ thread_id }}"><img src="images/forum/post.gif" border="0" /></a>

View File

@@ -2,11 +2,11 @@
Here you can change description of your guild.<br/>
<form enctype="multipart/form-data" action="?subtopic=guilds&guild={{ guild.getName() }}&action=change_description" method="post">
<input type="hidden" name="todo" value="save"/>
<textarea name="description" cols="60" rows="{{ rows }}">{{ guild.getCustomField('description')|raw }}</textarea><br>
<textarea name="description" cols="60" rows="{{ config.guild_description_lines_limit - 1 }}">{{ guild.getCustomField('description')|raw }}</textarea><br>
(max. {{ config.guild_description_lines_limit }} lines, max. {{ config.guild_description_chars_limit }} chars) <input type="submit" value="Save description"/></form><br/>
<br/>
<div style="text-align:center">
<form action="?subtopic=guilds&guild={{ guild.getName() }}&action=manager" method="post">
{{ include('buttons.back.html.twig') }}
</form>
</div>
</div>

View File

@@ -8,15 +8,11 @@ Here you can change logo of your guild.<br/>Actuall logo: <img src="images/guild
</form>
Only <b>jpg, gif, png, bmp</b> pictures. Max. size: <b>{{ config.guild_image_size_kb }} KB</b><br>
<br/>
{% spaceless %}
<div style="text-align:center">
<form action="?subtopic=guilds&guild={{ guild.getName() }}&action=manager" method="post">
<div class="BigButton" style="background-image:url({{ template_path }}/images/global/buttons/sbutton.gif)">
{{ include('buttons.back.html.twig') }}
</div>
{{ include('buttons.back.html.twig') }}
</form>
</div>
{% endspaceless %}
<script type="text/javascript">
$(function() {
$('#upload_form').submit(function (event) {
@@ -34,4 +30,4 @@ Only <b>jpg, gif, png, bmp</b> pictures. Max. size: <b>{{ config.guild_image_siz
return true;
});
});
</script>
</script>

View File

@@ -5,12 +5,8 @@ Here you can change MOTD (Message of the Day, showed in game!) of your guild.<br
<textarea name="motd" cols="60" rows="3">{{ guild.getCustomField('motd')|raw }}</textarea><br/>
(max. {{ config.guild_motd_chars_limit }} chars) <input type="submit" value="Save MOTD" /></form><br/>
<br/>
{% spaceless %}
<div style="text-align:center">
<form action="?subtopic=guilds&guild={{ guild.getName() }}&action=manager" method="post">
<div class="BigButton" style="background-image:url({{ template_path }}/images/global/buttons/sbutton.gif)">
{{ include('buttons.back.html.twig') }}
</div>
{{ include('buttons.back.html.twig') }}
</form>
</div>
{% endspaceless %}

View File

@@ -133,7 +133,7 @@
{% include('buttons.base.html.twig') %}
</form>
{% else %}
<b>Before you can create guild you must login.</b>
<b>Before you can create a guild you must login.</b>
<br/>
<form action="?subtopic=accountmanagement&redirect={{ getLink('guilds') }}" method="post">
{% include('buttons.login.html.twig') %}

View File

@@ -0,0 +1,132 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="width: 17px"></td>
<td>
<div style="text-align:center"><h2>Ranking for {{ skillName }}{% if vocation is not null %} ({{ vocation }}){% endif %} on {{ config.lua.serverName }}</h2></div><br/>
<table border="0" cellpadding="4" cellspacing="1" width="100%">
<tr>
<td>Filters</td>
<td>
<label for="vocationFilter">Choose a Skill</label>
<select onchange="location = this.value;" aria-label="skillFilter" id="skillFilter">
{% set i = 0 %}
{% for link, name in types %}
<option value="{{ getLink('highscores') }}/{{ link }}{% if vocation is defined %}/{{ vocation }}{% endif %}" class="size_xs">{{ name }}</option>
{% endfor %}
</select>
</td>
<td>
<label for="vocationFilter">Choose a vocation</label>
<select onchange="location = this.value;" aria-label="vocationFilter" id="vocationFilter">
<option value="{{ getLink('highscores') }}/{{ list }}" class="size_xs">[ALL]</option>
{% set i = 0 %}
{% for i in 1..config.vocations_amount %}
<option value="{{ getLink('highscores') }}/{{ list }}/{{ config.vocations[i]|lower }}" class="size_xs">{{ config.vocations[i]}}</option>
{% endfor %}
</select>
</td>
</tr>
</table>
<table border="0" cellpadding="4" cellspacing="1" width="100%">
<tr bgcolor="{{ config.vdarkborder }}">
{% if config.account_country %}
<td style="width: 11px" class="white">#</td>
{% endif %}
<td style="width: 10%" class="white"><b>Rank</b></td>
{% if config.highscores_outfit %}
<td class="white"><b>Outfit</b></td>
{% endif %}
<td width="75%" class="white"><b>Name</b></td>
<td width="15%" class="white"><b>{{ levelName }}</b></td>
{% if skill == constant('POT::SKILL__LEVEL') %}
<td class="white"><b>Points</b></td>
{% endif %}
</tr>
{% if totalRows < 1 %}
<tr bgcolor="{{ config('darkborder') }}"><td colspan="100%">No records yet.</td></tr>
{% else %}
{% set row = 0 %}
{% for player in highscores %}
<tr bgcolor="{{ getStyle(row) }}">
{% set row = row + 1 %}
{% if config.account_country %}
<td>{{ player.flag|raw }}</td>
{% endif %}
<td>{{ player.rank }}.</td>
{% if config.highscores_outfit %}
<td>{{ player.outfit|raw }}</td>
{% endif %}
<td>
<a href="{{ player.link }}">
<span style="color: {% if player.online > 0 %}green{% else %}red{% endif %}">{{ player.name }}</span>
</a>
{% if config.highscores_vocation %}
<br/><small>{{ player.vocation }}</small>
{% endif %}
</td>
<td>
<div style="text-align:center">{{ player.value }}</div>
</td>
{% if skill == constant('POT::SKILL__LEVEL') %}
<td><div style="text-align:center">{{ player.experience }}</div></td>
{% endif %}
</tr>
{% endfor %}
{% endif %}
</table>
<table border="0" cellpadding="4" cellspacing="1" width="100%">
{% if linkPreviousPage|length > 0 %}
<tr><td style="width: 100%" align="right" valign="bottom"><a href="{{ linkPreviousPage }}" class="size_xxs">Previous Page</a></td></tr>
{% endif %}
{% if linkNextPage|length > 0 %}
<tr><td style="width: 100%" align="right" valign="bottom"><a href="{{ linkNextPage }}" class="size_xxs">Next Page</a></td></tr>
{% endif %}
</table>
</td>
<td width="5%"></td>
<td width="15%" valign="top" align="right">
<table style="border: 0; width: 100%" cellpadding="4" cellspacing="1">
<tr bgcolor="{{ config.vdarkborder }}">
<td class="white"><B>Choose a skill</B></TD>
</tr>
<tr bgcolor="{{ config.lightborder }}">
<td>
{% for link, name in types %}
<a href="{{ getLink('highscores') }}/{{ link }}{% if vocation is defined %}/{{ vocation }}{% endif %}" class="size_xs">{{ name }}</a><br/>
{% endfor %}
</td>
</tr>
</table>
<br/>
{% if config.highscores_vocation_box %}
<table border="0" width="100%" cellpadding="4" cellspacing="1">
<tr bgcolor="{{ config.vdarkborder }}">
<td class="white"><b>Choose a vocation</b></td>
</tr>
<tr bgcolor="{{ config.lightborder }}">
<td>
<a href="{{ getLink('highscores') }}/{{ list }}" class="size_xs">[ALL]</a><br/>
{% for i in 1..config.vocations_amount %}
<a href="{{ getLink('highscores') }}/{{ list }}/{{ config.vocations[i]|lower }}" class="size_xs">{{ config.vocations[i]}}</a><br/>
{% endfor %}
</td>
</tr>
</table>
{% endif %}
</td>
<td style="width: 18px"></td>
</tr>
</table>

View File

@@ -1,32 +1,26 @@
<style>
tr, td {
border-bottom: 1px solid #ddd;
padding: 15px;
}
</style>
{% if errors is not empty %}
<div class="alert alert-danger">
{% for error in errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% endif %}
<form action="{{ constant('BASE_URL') }}install/" method="post" autocomplete="off">
<input type="hidden" name="step" id="step" value="finish" />
<table>
{% for value in ['email', account, 'password', 'player_name'] %}
<tr>
<td>
<label for="vars_{{ value }}">
<span>{{ locale['step_admin_' ~ value] }}</span>
</label>
<br/>
<input type="text" name="vars[{{ value }}]" id="vars_{{ value }}"{% if session['var_' ~ value] is not null %} value="{{ session['var_' ~ value] }}"{% endif %}/>
</td>
<td>
<em>{{ locale['step_admin_' ~ value ~ '_desc']|raw }}</em>
</td>
</tr>
{% endfor %}
</table>
{% for value in ['email', account, 'password', 'player_name'] %}
<div class="form-group mb-2">
<label for="vars_{{ value }}">{{ locale['step_admin_' ~ value] }}</label>
<input class="form-control" type="text" name="vars[{{ value }}]" id="vars_{{ value }}"{% if session['var_' ~ value] is not null %} value="{{ session['var_' ~ value] }}"{% endif %}/>
<small class="form-text text-muted">{{ locale['step_admin_' ~ value ~ '_desc']|raw }}</small>
</div>
{% if errors is defined %}
{% for error in errors %}
<p class="error">{{ error }}</p>
{% endfor %}
{% endif %}
{% endfor %}
<div class="text-center m-3">
{{ buttons|raw }}
</div>
</form>

View File

@@ -1,71 +1,51 @@
{% if errors is not empty %}
<div class="alert alert-danger">
{% for error in errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% endif %}
<form action="{{ constant('BASE_URL') }}install/" method="post" autocomplete="off">
<input type="hidden" name="step" id="step" value="database" />
<table>
{% for value in ['server_path', 'mail_admin'] %}
<tr>
<td>
<label for="vars_{{ value }}">
<span>{{ locale['step_config_' ~ value] }}</span>
</label>
<br>
<input type="text" name="vars[{{ value }}]" id="vars_{{ value }}"{% if session['var_' ~ value] is not null %} value="{{ session['var_' ~ value] }}"{% endif %}/>
</td>
<td>
<em>{{ locale['step_config_' ~ value ~ '_desc'] }}</em>
</td>
</tr>
{% endfor %}
<tr>
<td>
<label for="vars_date_timezone">
<span>{{ locale.step_config_timezone }}</span>
</label>
<br/>
<select name="vars[date_timezone]" id="vars_date_timezone">
{% for timezone in timezones %}
<option value="{{ timezone }}"{% if (session['var_date_timezone'] is not null and session['var_date_timezone'] == timezone) or (session['var_date_timezone'] is null and timezone == 'Europe/Berlin') %} selected{% endif %}>{{ timezone }}</option>
{% endfor %}
</select>
</td>
<td>
<em>{{ locale.step_config_timezone_desc }}</em>
</td>
</tr>
<tr>
<td>
<label for="vars_client">
<span>{{ locale.step_config_client }}</span>
</label>
<br/>
<select name="vars[client]" id="vars_client">
{% for id, version in clients %}
<option value="{{ id }}"{% if session['var_client'] is not null and session['var_client'] == id %} selected{% endif %}>{{ version }}</option>
{% endfor %}
</select>
</td>
<td>
<em>{{ locale.step_config_client_desc }}</em>
</td>
</tr>
<tr>
<td>
<label for="vars_usage">
<span>{{ locale.step_config_usage }}</span>
</label>
<br/>
<input type="hidden" value="0" name="vars[usage]">
<input type="checkbox" name="vars[usage]" id="vars_usage" value="1"{% if session['var_usage'] is null or session['var_usage'] == 1 %} checked{% endif %}/>
</td>
<td>
<em>{{ locale.step_config_usage_desc }}</em>
</td>
</tr>
</table>
{% if errors is defined %}
{% for error in errors %}
<p class="error">{{ error }}</p>
{% endfor %}
{% endif %}
{% for value in ['server_path', 'mail_admin'] %}
<div class="form-group mb-2">
<label for="vars_{{ value }}">{{ locale['step_config_' ~ value] }}</label>
<input class="form-control" type="text" name="vars[{{ value }}]" id="vars_{{ value }}"{% if session['var_' ~ value] is not null %} value="{{ session['var_' ~ value] }}"{% endif %}/>
<small class="form-text text-muted">{{ locale['step_config_' ~ value ~ '_desc'] }}</small>
</div>
{% endfor %}
<div class="form-group mb-2">
<label for="vars_date_timezone">{{ locale.step_config_timezone }}</label>
<select class="form-control" name="vars[date_timezone]" id="vars_date_timezone">
{% for timezone in timezones %}
<option value="{{ timezone }}"{% if (session['var_date_timezone'] is not null and session['var_date_timezone'] == timezone) or (session['var_date_timezone'] is null and timezone == 'Europe/Berlin') %} selected{% endif %}>{{ timezone }}</option>
{% endfor %}
</select>
<small class="form-text text-muted">{{ locale.step_config_timezone_desc }}</small>
</div>
<div class="form-group mb-2">
<label for="vars_client">{{ locale.step_config_client }}</label>
<select class="form-control" name="vars[client]" id="vars_client">
{% for id, version in clients %}
<option value="{{ id }}"{% if session['var_client'] is not null and session['var_client'] == id %} selected{% endif %}>{{ version }}</option>
{% endfor %}
</select>
<small class="form-text text-muted">{{ locale.step_config_client_desc }}</small>
</div>
<div class="form-group mb-2">
<label for="vars_usage">{{ locale.step_config_usage }}</label>
<input type="hidden" value="0" name="vars[usage]">
<input type="checkbox" name="vars[usage]" id="vars_usage" value="1"{% if session['var_usage'] is null or session['var_usage'] == 1 %} checked{% endif %}/>
<small class="form-text text-muted d-block">{{ locale.step_config_usage_desc }}</small>
</div>
<div class="text-center m-3">
{{ buttons|raw }}
</div>
</form>

View File

@@ -1,6 +1,8 @@
<form action="{{ constant('BASE_URL') }}install/" method="post">
<input type="hidden" name="step" id="step" value="requirements" />
<textarea rows="10" cols="80" readonly="1">{{ license }}</textarea>
<textarea rows="11" cols="80" readonly="1" class="form-control">{{ license }}</textarea>
<div class="text-center m-3">
{{ buttons|raw }}
</div>
</form>

View File

@@ -1,12 +1,17 @@
<p class="lead">{{ locale.step_welcome_desc }}:</p>
<form action="{{ constant('BASE_URL') }}install/" method="post">
<input type="hidden" name="step" id="step" value="license" />
<div class="input"><p>{{ locale.step_welcome_desc }}</p>
<select name="lang">
<div class="input">
<select name="lang" class="form-control">
{% for locale_ in locales %}
<option value="{{ locale_.id }}"{% if (detected_locale is not null and locale_.id == detected_locale) or cookie_locale == locale_.id %} selected{% endif %}>{{ locale_.name }}</option>
{% endfor %}
</select>
</div>
<div class="text-center m-3">
{{ buttons|raw }}
</div>
</form>

View File

@@ -9,7 +9,7 @@
<tr bgcolor="{{ getStyle(i) }}">
<td width=4%>
<div style="text-align:center">
<img src="{{ template_path }}/images/news/icon_{{ news.icon_id }}_small.gif"/>
<img src="{{ constant('BASE_URL') }}images/news/icon_{{ news.icon_id }}_small.gif"/>
</div>
</td>
<td>{{ news.date|date('j.n.Y') }}</td>
@@ -18,4 +18,4 @@
</td>
</tr>
{% endfor %}
</table>
</table>

View File

@@ -1,9 +1,9 @@
<div class="NewsHeadline">
<div class="NewsHeadlineBackground" style="background-image:url({{ template_path }}/images/news/newsheadline_background.gif)">
<img src="{{ template_path }}/images/news/icon_{{ icon }}.gif" class="NewsHeadlineIcon" />
<img src="{{ constant('BASE_URL') }}images/news/icon_{{ icon }}.gif" class="NewsHeadlineIcon" />
<div class="NewsHeadlineDate">{{ date|date(config.news_date_format) }} - </div>
<div class="NewsHeadlineText">{{ title }}</div>
{% if author is not empty %}
{% if config.news_author and author is not empty %}
<div class="NewsHeadlineAuthor"><b>Author: </b><i>{{ author }}</i></div>
{% endif %}
</div>
@@ -20,4 +20,4 @@
</tr>
{% endif %}
</table>
<br/>
<br/>

View File

@@ -5,11 +5,11 @@
{% set i = 0 %}
{% for ticker in tickers %}
<tr bgcolor="{{ getStyle(i) }}">
<td style="width: 16px;"><img src="{{ template_path }}/images/news/icon_{{ ticker.icon }}_small.gif"/></td>
<td style="width: 16px;"><img src="{{ constant('BASE_URL') }}images/news/icon_{{ ticker.icon }}_small.gif"/></td>
<td style="width: 80px;">{{ ticker.date|date("j M Y") }}</td>
<td>{{ ticker.body|raw }}</td>
</tr>
{% set i = i + 1 %}
{% endfor %}
</table>
<br/>
<br/>

View File

@@ -102,7 +102,7 @@
<td>{{ player.country_image|raw }}</td>
{% endif %}
{% if config.online_outfit %}
<td width="5%"><img style="position:absolute;margin-top:{% if player.player.looktype in [75, 266, 302] %}-20px;margin-left:-0px;{% else %}-45px;margin-left:-25px;{% endif %}" src="{{ player.outfit }}" alt="player outfit"/></td>
<td width="5%"><img style="position:absolute;margin-top:{% if player.player.looktype in config.outfit_images_wrong_looktypes %}-20px;margin-left:-0px;{% else %}-45px;margin-left:-25px;{% endif %}" src="{{ player.outfit }}" alt="player outfit"/></td>
{% endif %}
<td>{{ player.name|raw }}{{ player.skull }}</td>
<td>{{ player.level }}</td>
@@ -110,4 +110,4 @@
</tr>
{% endfor %}
</table>
{% endif %}
{% endif %}

View File

@@ -28,17 +28,9 @@
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>
{% endif %}
<form action="{{ getLink('spells') }}" method="post">
<table border="0" cellspacing="1" cellpadding="4" width="100%">
<tr bgcolor="{{ config.vdarkborder }}">
@@ -68,13 +60,13 @@
<div class="ts_Spells">
<input type="radio" name="ts_Spells" id="tab_instant" aria-controls="instant" checked>
<label for="tab_instant">Instant</label>
<label for="tab_instant" class="white">Instant</label>
<input type="radio" name="ts_Spells" id="tab_conjure" aria-controls="conjure">
<label for="tab_conjure">Conjure</label>
<label for="tab_conjure" class="white">Conjure</label>
<input type="radio" name="ts_Spells" id="tab_rune" aria-controls="rune">
<label for="tab_rune">Rune</label>
<label for="tab_rune" class="white">Rune</label>
<div class="tab-panels">
<section id="instant" class="tab-panel">
@@ -198,4 +190,4 @@
</table>
</section>
</div>
</div>
</div>

View File

@@ -0,0 +1,24 @@
<div class="TableContainer">
<div class="CaptionContainer">
<div class="CaptionInnerContainer">
<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
<div class="Text" >{{ title|raw }}</div>
<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
</div>
</div>
<table class="Table1" cellpadding="0" cellspacing="0" style="background-color: {{ config.lightborder }}">
<tr>
<td>
<div class="InnerTableContainer">
{{ content|raw }}
</div>
</td>
</tr>
</table>
</div>

View File

@@ -1,19 +1,18 @@
<div class="TableContainer">
<table class="Table1" cellpadding="0" cellspacing="0" style="background-color: {{ config.lightborder }}">
<div class="CaptionContainer">
<div class="CaptionInnerContainer">
<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
<div class="Text" >Support in game</div>
<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
</div>
<div class="CaptionContainer">
<div class="CaptionInnerContainer">
<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
<div class="Text" >Support in game</div>
<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
</div>
</div>
<table class="Table1" cellpadding="0" cellspacing="0" style="background-color: {{ config.lightborder }}">
<tr>
<td>
<div class="InnerTableContainer">
@@ -60,11 +59,11 @@
{% for member in group.members|reverse %}
{% set i = i + 1 %}
<tr bgcolor="{{ getStyle(i) }}" style="height: 32px;">
<td>{{ group.group_name }}</td>
<td>{{ group.group_name|capitalize }}</td>
{% if config.team_display_outfit %}
<td>
<img style="position: absolute; margin-top: {% if member.player.looktype in [75, 266, 302] %}-16px;margin-left:-0px;{% else %} -45px; margin-left: -30px;{% endif %}" src="{{ member.outfit }}" alt="player outfit"/>
<img style="position: absolute; margin-top: {% if member.player.looktype in config.outfit_images_wrong_looktypes %}-16px;margin-left:-0px;{% else %} -45px; margin-left: -30px;{% endif %}" src="{{ member.outfit }}" alt="player outfit"/>
</td>
{% endif %}
@@ -104,7 +103,7 @@
{% elseif config.team_style == 2 %}
{% for group in groupmember|reverse %}
{% if group.members is not empty %}
<div style="text-align:center"><h2>{{ group.group_name }}</h2></div>
<div style="text-align:center"><h2>{{ group.group_name|capitalize }}</h2></div>
<table cellspacing="1" cellpadding="4" border="0" width="100%">
<tr bgcolor="{{ config.vdarkborder }}">
@@ -142,7 +141,7 @@
<tr bgcolor="{{ getStyle(i) }}" style="height: 32px;">
{% if config.team_display_outfit %}
<td>
<img style="position: absolute; margin-top: {% if member.player.looktype in [75, 266, 302] %}-16px;margin-left:-0px;{% else %} -45px; margin-left: -30px;{% endif %}" src="{{ member.outfit }}" alt="player outfit"/>
<img style="position: absolute; margin-top: {% if member.player.looktype in config.outfit_images_wrong_looktypes %}-16px;margin-left:-0px;{% else %} -45px; margin-left: -30px;{% endif %}" src="{{ member.outfit }}" alt="player outfit"/>
</td>
{% endif %}

View File

@@ -0,0 +1,21 @@
<meta charset="{{ charset }}">
<meta http-equiv="content-language" content="{{ config.language }}" />
<meta http-equiv="content-type" content="text/html; charset={{ charset }}" />
{% if not is_admin %}
<base href="{{ constant('BASE_URL') }}" />
<title>{{ title }}</title>
{% endif %}
<meta name="description" content="{{ config.meta_description }}" />
<meta name="keywords" content="{{ config.meta_keywords }}, myaac, wodzaac" />
<meta name="generator" content="MyAAC" />
<link rel="stylesheet" type="text/css" href="{{ constant('BASE_URL') }}tools/css/messages.css" />
<script type="text/javascript" src="{{ constant('BASE_URL') }}tools/js/jquery.min.js"></script>
<noscript>
<div class="warning" style="text-align: center; font-size: 14px;">
Your browser does not support JavaScript or its disabled!<br/>
Please turn it on, or be aware that some features on this website will not work correctly.
</div>
</noscript>
{% if config.recaptcha_enabled %}
<script src="https://www.google.com/recaptcha/api.js"></script>
{% endif %}