myaac/system/templates/account.management.html.twig
Slawomir Boczek a72d1a3c9f
Feature: settings (#216)
* New admin panel Pages: Options + Config [WIP]

* Forgot the plugin example of options

* Rename to settings.php

* Add Settings Class

* New myaac_settings table

* Add $limit parameter to $db->select method

* Add $member var annotation

* Remove useless title_separator from config

* Move $menus to menus.php

Also fix active link when menu item has subpage

* Settings [WIP]

New Settings class
New Plugins::load() method
Move config.php to settings.php
MyAAC Settings will have plugin_name = 'core'
Add compat_config.php

* Change options.php to settings.php

* Change name to settings

* Add Settings menu

* Add Sections + Add setting($key) function

Reorganisation

* Add email + password fields as type

* Update 33.php

* add settings migration

* php 8 compatibility

* add missing hook

* Add categories in tabs, move more settings, revert back getPluginSettings

Categories and sections are now not numbered
Remove example settings plugin

* fix typo

* Update .gitignore

* Add 36th migration for settings table

* Execute migrations just after db connect

* Update plugins.php

* [WIP] Some work on settings

Add hidden settings
New method: parse, to parse settings from array
Move base html to twig template
Remove vocation loading from .xml, instead use predefined voc names

* Rename

* Fix path

* [WIP] More work on settings

Move more config to settings (mainly mail_* + some other)
Remove mail_admin, wasnt used anywhere
Add return type to some functions
Add Twig settings(key) function
Possibility to save setting to db

* Add min, max, step to number field option

* Re-enable plugin if disabled and already installed

* Add Settings menu, including all plugins with settings

One change included in previous commit, due to missclick

* Nothing important

* Better boolean detection

* More detailed error message in settings

* Lets call it settings.name instead

* Add new function: only_if, to hide fields when they are not enabled [WIP]

Not fully finished yet

* guild_management: show_if

* Hide section title on show_if

* Fix: check on page load if radio button is checked

* Add: show_if - account_mail_verify

* nothing important

* Rename team_* variables + add to deprecated

* Change variable name

* Extract Settings:save function

* Add settings.callbacks.get

* Move forum config to settings

* Move status config to settings

* Remove whitespaces

* More config to settings: account_types, genders, highscores, admin

* Move signature config to settings

* Move news config to settings

* Rename variable

* Save config.php in Settings

Egg and hen problem solved :)
* Test database connection on save settings -> prevents from making website unusable if connection is wrong
* Test server_path -> same
There is no config.php anymore, just config.local.php, which can be edited manually and also from admin panel

* Remove configs from previous commit

* Fix create account, if account_create_character_create is enabled

* Add more deprecated configs

* Add more info into comment

* Update 5-database.php

* Fix menu highlighting & opening

* Update template.php

* Enable script option

* Reword email settings + move two new settings

* add last_kills_limit + move shop

* google_analytics_id

* add mail_lost_account_interval

* Create character blocked words (by @gpedro), just moved to settings

* Fix google_analytics

* create character name config moved to settings

* Fix for install warning - min/max length

* New create character checks configurable: block monsters & spells names

* fixes

* Improve character npc name check

* New setting: donate_column + move donate config to settings

* Add super fancy No Refresh saving with a toast

* Add new possibility: to deny saving setting if condition is not met

* Move database settings to separate category

* Fix default value displaying

* Add database_hash setting

* add last_kills_limit to compat config

* Move create character blocked names down

* Every setting needs to have default

* Move rest of config to settings

Remove config.php completely
Add new settings category: Game
Fix account_login_by_email
Min textarea size = 2 + adjusted automatically
2023-08-05 21:00:45 +02:00

221 lines
7.5 KiB
Twig

<style type="text/css">
#account-manage {
width: 100%;
margin: auto;
padding: 10px;
}
div#one {
width: 150px;
float: left;
}
div#two {
margin-left: 150px;
padding-left: 10px;
}
.vertical-menu a {
background-color: {{ config.lightborder }}; /* Grey background color */
color: black; /* Black text color */
display: block; /* Make the links appear below each other */
padding: 12px; /* Add some padding */
text-decoration: none; /* Remove underline from links */
}
.vertical-menu a:hover {
background-color: {{ config.darkborder }}; /* Dark grey background on mouse-over */
}
</style>
{% set menus = {
'Create Character': 'account/character/create','Delete Character': 'account/character/delete',
'Change Info': 'account/info', 'Change Password': 'account/password', 'Change Email': 'account/email'
} %}
<div id="account-manage">
<div id="one">
<div class="vertical-menu">
<a href="{{ getLink('account/manage') }}">My Account</a>
{% if recovery_key is empty %}
<a href="{{ getLink('account/register') }}">Register Account</a>
{% endif %}
{% for name, link in menus %}
<a href="{{ getLink(link) }}">{{ name }}</a>
{% endfor %}
{% if setting('core.account_change_character_name') %}
<a href="{{ getLink('account/character/name') }}">Change Name</a>
{% endif %}
{% if setting('core.account_change_character_sex') %}
<a href="{{ getLink('account/character/sex') }}">Change Sex</a>
{% endif %}
<a href="{{ getLink('account/logout') }}">Logout</a>
</div>
</div>
<div id="two">
<h1>My account</h1>
<p>Welcome to your account page, {{ account }}<br>
{% if config.lua.freePremium %}
You have unlimited Premium Account.
{% else %}
{% set premiumDays = account_logged.getPremDays() %}
{% if premiumDays == 0 %}
You don't have Premium Account
{% else %}
You have {{ premiumDays }} days remaining Premium Account.
{% endif %}
{% endif %}
</p>
{# if account dont have recovery key show hint #}
{% if recovery_key is empty %}
<div style="text-align:center">
You can register your account for increased protection. Click on "Register Account" and get your free recovery key today!<br/>
<form action="{{ getLink('account/register') }}" method="post">
{% set button_name = 'Register Account' %}
{% include('buttons.base.html.twig') %}
</form>
</div>
<br/>
{% endif %}
{% if email_request %}
<div style="text-align:center">
A request has been submitted to change the email address of this account to <b>{{ email_new }}</b>. After <b>{{ email_new_time|date("j F Y, G:i:s") }}</b> you can accept the new email address and finish the process. Please cancel the request if you do not want your email address to be changed! Also cancel the request if you have no access to the new email address!
<form action="{{ getLink('account/email') }}" method="post">
{% set button_name = 'Edit' %}
{% include('buttons.base.html.twig') %}
</form>
</div>
<br/><br/>
{% endif %}
<a name="General+Information"></a>
<h2>General Information</h2>
<table width="100%">
{% if not config.account_login_by_email or config.account_login_by_email_fallback %}
<tr style="background-color: {{ config.lightborder }};" >
<td style="width: 90px;">Account {% if constant('USE_ACCOUNT_NAME') %}Name{% else %}Number{% endif %}:</td>
<td>{{ account }}</td>
</tr>
{% endif %}
<tr style="background-color: {{ config.darkborder }};" >
<td style="width: 90px;">Email Address:</td>
<td>{{ account_email ~ email_change }}
<form action="{{ getLink('account/email') }}" method="post">
{% set button_name = 'Change Email' %}
{% include('buttons.base.html.twig') %}
</form>
</td>
</tr>
<tr style="background-color: {{ config.lightborder }};" >
<td>Created:</td>
<td>{{ account_created|date("j F Y, G:i:s") }}</td>
</tr>
<tr style="background-color: {{ config.darkborder }};" >
<td>Last Login:</td>
<td>{{ "now"|date("j F Y, G:i:s") }}</td>
</tr>
{% autoescape false %}
<tr style="background-color: {{ config.lightborder }};" >
<td>Account Status:</td>
<td>{{ account_status }}</td>
</tr>
<tr style="background-color: {{ config.darkborder }};" >
<td>Registered:</td>
<td>{{ account_registered }}</td>
</tr>
{% endautoescape %}
</table>
<br/>
<a name="Public+Information"></a>
<h2>Public Information</h2>
<table width="100%">
<tr style="background-color: {{ config.lightborder }};" >
<td style="width: 80px;">Real name:</td>
<td>{{ account_rlname }}</td>
</tr>
<tr style="background-color: {{ config.darkborder }};" >
<td style="width: 80px;">Location:</td>
<td >{{ account_location }}</td>
</tr>
</table>
<form action="{{ getLink('account/info') }}" method="post">
{% set button_name = 'Change Info' %}
{% include('buttons.base.html.twig') %}
</form>
<br/>
<a name="Account+Logs" ></a>
<h2>Action Log</h2>
<table>
<tr bgcolor="{{ config.vdarkborder }}" class="white">
<th>Action</th><th>Date</th><th>IP</th>
</tr>
{% autoescape false %}
{% set i = 0 %}
{% for action in actions %}
{% set i = i + 1 %}
<tr style="background-color: {{ getStyle(i) }}">
<td>{{ action.action }}</td>
<td>{{ action.date|date("jS F Y H:i:s") }}</td>
<td>{{ action.ip }}</td>
</tr>
{% endfor %}
{% endautoescape %}
</table>
<br/>
<a name="Characters" ></a>
<h2>Character list: {{ players|length }} characters.</h2>
<table>
<tr bgcolor="{{ config.vdarkborder }}" class="white">
<th>Name</th><th>Level</th><th>Vocation</th><th>Town</th><th>Last login</th><th>Status</th><th>Hide</th><th>Edit</th>
</tr>
{% set i = 0 %}
{% for player in players %}
{% set i = i + 1 %}
<tr bgcolor="{{ getStyle(i) }}">
<td>
<a href="{{ getLink('characters/' ~ player.getName()|urlencode) }}">{{ player.getName() }}</a>
</td>
<td>{{ player.getLevel() }}</td>
<td>{{ player.getVocationName() }}</td>
<td>{{ config.towns[player.getTownId()] }}</td>
<td>{% if player.getLastLogin() > 0 %}{{ player.getLastLogin|date('d F Y (H:i)') }}{% else %}Never.{% endif %}</td>
<td>{% if player.isOnline() %}<span style="color: green">ONLINE</span>{% else %}<span style="color: red">Offline</span>{% endif %}</td>
<td>{% if player.isHidden() %}Hidden{% else %}Visible{% endif %}</td>
<td>{% if not player.isDeleted() %}[<a href="{{ getLink('account/character/comment/' ~ player.getName|urlencode) }}" >Edit</a>]{% endif %}</td>
</tr>
{% endfor %}
</table>
<br/>
<table>
<tr>
<td>
<form action="{{ getLink('account/character/create') }}" method="post" >
{% set button_name = 'Create Character' %}
{% include('buttons.base.html.twig') %}
</form>
</td>
{% if setting('core.account_change_character_name') %}
<td>
<form action="{{ getLink('account/character/name') }}" method="post" >
{% set button_name = 'Change Name' %}
{% include('buttons.base.html.twig') %}
</form>
</td>
{% endif %}
{% if setting('core.account_change_character_sex') %}
<td>
<form action="{{ getLink('account/character/sex') }}" method="post" >
{% set button_name = 'Change Sex' %}
{% include('buttons.base.html.twig') %}
</form>
</td>
{% endif %}
<td>
<form action="{{ getLink('account/character/delete') }}" method="post">
{% set button_name = 'Delete Character' %}
{% include('buttons.base.html.twig') %}
</form>
</td>
</tr>
</table>
</div>
</div>