Moved Twig functions and filters into an Extension class.
This commit is contained in:
parent
485749c997
commit
366ea2710a
11 changed files with 80 additions and 47 deletions
31
misuzu.php
31
misuzu.php
|
@ -267,37 +267,6 @@ MIG;
|
||||||
'site_url' => config_get('Site', 'url'),
|
'site_url' => config_get('Site', 'url'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
tpl_add_filter('json_decode');
|
|
||||||
tpl_add_filter('byte_symbol');
|
|
||||||
tpl_add_filter('html_link');
|
|
||||||
tpl_add_filter('html_colour');
|
|
||||||
tpl_add_filter('url_construct');
|
|
||||||
tpl_add_filter('country_name', 'get_country_name');
|
|
||||||
tpl_add_filter('flip', 'array_flip');
|
|
||||||
tpl_add_filter('first_paragraph');
|
|
||||||
tpl_add_filter('colour_get_css');
|
|
||||||
tpl_add_filter('colour_get_css_contrast');
|
|
||||||
tpl_add_filter('colour_get_inherit');
|
|
||||||
tpl_add_filter('colour_get_red');
|
|
||||||
tpl_add_filter('colour_get_green');
|
|
||||||
tpl_add_filter('colour_get_blue');
|
|
||||||
tpl_add_filter('parse_line');
|
|
||||||
tpl_add_filter('parse_text');
|
|
||||||
tpl_add_filter('asset_url');
|
|
||||||
tpl_add_filter('vsprintf');
|
|
||||||
tpl_add_filter('perms_check');
|
|
||||||
tpl_add_filter('bg_settings', 'user_background_settings_strings');
|
|
||||||
|
|
||||||
tpl_add_function('get_browser');
|
|
||||||
tpl_add_function('git_commit_hash');
|
|
||||||
tpl_add_function('git_tag');
|
|
||||||
tpl_add_function('csrf_token');
|
|
||||||
tpl_add_function('csrf_input', 'csrf_html');
|
|
||||||
tpl_add_function('startup_time', function (float $time = MSZ_STARTUP) {
|
|
||||||
return microtime(true) - $time;
|
|
||||||
});
|
|
||||||
tpl_add_function('sql_query_count', 'db_query_count');
|
|
||||||
|
|
||||||
tpl_add_path(MSZ_ROOT . '/templates');
|
tpl_add_path(MSZ_ROOT . '/templates');
|
||||||
|
|
||||||
$misuzuBypassLockdown = !empty($misuzuBypassLockdown);
|
$misuzuBypassLockdown = !empty($misuzuBypassLockdown);
|
||||||
|
|
|
@ -112,6 +112,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tpl_add_filter('log_format', function (string $text, string $json): string {
|
||||||
|
return vsprintf($text, json_decode($json));
|
||||||
|
});
|
||||||
|
|
||||||
$sessions = [
|
$sessions = [
|
||||||
'list' => [],
|
'list' => [],
|
||||||
'active' => user_session_current('session_id'),
|
'active' => user_session_current('session_id'),
|
||||||
|
|
43
src/TwigMisuzu.php
Normal file
43
src/TwigMisuzu.php
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
namespace Misuzu;
|
||||||
|
|
||||||
|
use Twig_Extension;
|
||||||
|
use Twig_Filter;
|
||||||
|
use Twig_Function;
|
||||||
|
|
||||||
|
final class TwigMisuzu extends Twig_Extension
|
||||||
|
{
|
||||||
|
public function getFilters()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
new Twig_Filter('html_colour', 'html_colour'),
|
||||||
|
new Twig_Filter('country_name', 'get_country_name'),
|
||||||
|
new Twig_Filter('first_paragraph', 'first_paragraph'),
|
||||||
|
new Twig_Filter('byte_symbol', 'byte_symbol'),
|
||||||
|
new Twig_Filter('html_link', 'html_link'),
|
||||||
|
new Twig_Filter('url_construct', 'url_construct'),
|
||||||
|
new Twig_Filter('parse_line', 'parse_line'),
|
||||||
|
new Twig_Filter('parse_text', 'parse_text'),
|
||||||
|
new Twig_Filter('asset_url', 'asset_url'),
|
||||||
|
new Twig_Filter('perms_check', 'perms_check'),
|
||||||
|
new Twig_Filter('bg_settings', 'user_background_settings_strings'),
|
||||||
|
new Twig_Filter('colour_contrast', 'colour_get_css_contrast'),
|
||||||
|
new Twig_Filter('colour_props', 'colour_get_properties'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFunctions()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
new Twig_Function('get_browser', 'get_browser'),
|
||||||
|
new Twig_Function('git_commit_hash', 'git_commit_hash'),
|
||||||
|
new Twig_Function('git_tag', 'git_tag'),
|
||||||
|
new Twig_Function('csrf_token', 'csrf_token'),
|
||||||
|
new Twig_Function('csrf_input', 'csrf_html'),
|
||||||
|
new Twig_Function('sql_query_count', 'db_query_count'),
|
||||||
|
new Twig_Function('startup_time', function (float $time = MSZ_STARTUP) {
|
||||||
|
return microtime(true) - $time;
|
||||||
|
}),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
|
@ -139,3 +139,14 @@ function colour_from_hex(int &$colour, string $hex): bool
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function colour_get_properties(int $colour): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'red' => colour_get_red($colour),
|
||||||
|
'green' => colour_get_green($colour),
|
||||||
|
'blue' => colour_get_blue($colour),
|
||||||
|
'inherit' => colour_get_inherit($colour),
|
||||||
|
'luminance' => colour_get_luminance($colour),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
use Misuzu\Twig;
|
use Misuzu\Twig;
|
||||||
|
use Misuzu\TwigMisuzu;
|
||||||
|
|
||||||
define('MSZ_TPL_FILE_EXT', '.twig');
|
define('MSZ_TPL_FILE_EXT', '.twig');
|
||||||
define('MSZ_TPL_VARS_STORE', '_msz_tpl_vars');
|
define('MSZ_TPL_VARS_STORE', '_msz_tpl_vars');
|
||||||
|
@ -18,6 +19,7 @@ function tpl_init(array $options = []): void
|
||||||
$loader = new Twig_Loader_Filesystem;
|
$loader = new Twig_Loader_Filesystem;
|
||||||
$twig = new Twig($loader, $options);
|
$twig = new Twig($loader, $options);
|
||||||
$twig->addExtension(new Twig_Extensions_Extension_Date);
|
$twig->addExtension(new Twig_Extensions_Extension_Date);
|
||||||
|
$twig->addExtension(new TwigMisuzu);
|
||||||
}
|
}
|
||||||
|
|
||||||
function tpl_var(string $key, $value): void
|
function tpl_var(string $key, $value): void
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="changelog__change" id="#c{{ change.change_id }}">
|
<div class="changelog__change" id="#c{{ change.change_id }}">
|
||||||
<div class="changelog__change__line"
|
<div class="changelog__change__line"
|
||||||
style="{{ change.action_colour|html_colour('--accent-colour') }}">
|
style="{{ change.action_colour|html_colour('--accent-colour') }}">
|
||||||
<div class="changelog__change__action {{ change.action_class is defined and change.action_class is not null ? ' changelog__change__action--' ~ change.action_class : '' }} changelog__change__action--{{ change.action_colour|colour_get_css_contrast }}"
|
<div class="changelog__change__action {{ change.action_class is defined and change.action_class is not null ? ' changelog__change__action--' ~ change.action_class : '' }} changelog__change__action--{{ change.action_colour|colour_contrast }}"
|
||||||
style="{{ change.action_colour|html_colour('--accent-colour') }}">
|
style="{{ change.action_colour|html_colour('--accent-colour') }}">
|
||||||
{{ change.action_name }}
|
{{ change.action_name }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="changelog__action{{ change.action_class is defined and change.action_class is not null ? ' changelog__action--' ~ change.action_class : '' }} changelog__action--{{ change.action_colour|colour_get_css_contrast }}"
|
<a class="changelog__action{{ change.action_class is defined and change.action_class is not null ? ' changelog__action--' ~ change.action_class : '' }} changelog__action--{{ change.action_colour|colour_contrast }}"
|
||||||
href="{{ change_url|format(change.change_id) }}"
|
href="{{ change_url|format(change.change_id) }}"
|
||||||
{% if change.action_colour is defined %}style="{{ change.action_colour|html_colour('--action-colour') }}"{% endif %}>
|
{% if change.action_colour is defined %}style="{{ change.action_colour|html_colour('--action-colour') }}"{% endif %}>
|
||||||
<div class="changelog__action__text">
|
<div class="changelog__action__text">
|
||||||
|
|
|
@ -25,31 +25,33 @@
|
||||||
|
|
||||||
<h2 class="container__subtitle">Colour</h2>
|
<h2 class="container__subtitle">Colour</h2>
|
||||||
|
|
||||||
|
{% set colour_props = edit_action.action_colour|default(constant('MSZ_COLOUR_INHERIT'))|colour_props %}
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Inherit Colour</div>
|
<div class="form__label__text">Inherit Colour</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_checkbox('action[colour][inherit]', '', edit_action is defined and edit_action.action_colour|colour_get_inherit) }}
|
{{ input_checkbox('action[colour][inherit]', '', colour_props.inherit) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Red</div>
|
<div class="form__label__text">Red</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('action[colour][red]', '', edit_action is defined ? edit_action.action_colour|colour_get_red : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('action[colour][red]', '', colour_props.red, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Green</div>
|
<div class="form__label__text">Green</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('action[colour][green]', '', edit_action is defined ? edit_action.action_colour|colour_get_green : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('action[colour][green]', '', colour_props.green, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Blue</div>
|
<div class="form__label__text">Blue</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('action[colour][blue]', '', edit_action is defined ? edit_action.action_colour|colour_get_blue : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('action[colour][blue]', '', colour_props.blue, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
|
|
@ -43,31 +43,33 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
{{ container_title('Colour') }}
|
{{ container_title('Colour') }}
|
||||||
|
|
||||||
|
{% set colour_props = edit_role.role_colour|default(constant('MSZ_COLOUR_INHERIT'))|colour_props %}
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Inherit Colour</div>
|
<div class="form__label__text">Inherit Colour</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_checkbox('role[colour][inherit]', '', edit_role is defined and edit_role.role_colour|colour_get_inherit) }}
|
{{ input_checkbox('role[colour][inherit]', '', colour_props.inherit) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Red</div>
|
<div class="form__label__text">Red</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('role[colour][red]', '', edit_role is defined ? edit_role.role_colour|colour_get_red : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('role[colour][red]', '', colour_props.red, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Green</div>
|
<div class="form__label__text">Green</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('role[colour][green]', '', edit_role is defined ? edit_role.role_colour|colour_get_green : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('role[colour][green]', '', colour_props.green, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Blue</div>
|
<div class="form__label__text">Blue</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('role[colour][blue]', '', edit_role is defined ? edit_role.role_colour|colour_get_blue : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('role[colour][blue]', '', colour_props.blue, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
|
|
@ -109,33 +109,33 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
{{ container_title('Colour') }}
|
{{ container_title('Colour') }}
|
||||||
|
|
||||||
{% set colour_is_defined = view_user is defined and view_user.user_colour is not null and not view_user.user_colour|colour_get_inherit %}
|
{% set colour_props = view_user.user_colour|default(constant('MSZ_COLOUR_INHERIT'))|colour_props %}
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Custom Colour</div>
|
<div class="form__label__text">Custom Colour</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_checkbox('colour[enable]', '', colour_is_defined) }}
|
{{ input_checkbox('colour[enable]', '', colour_props.inherit) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Red</div>
|
<div class="form__label__text">Red</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('colour[red]', '', colour_is_defined ? view_user.user_colour|colour_get_red : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('colour[red]', '', colour_props.red, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Green</div>
|
<div class="form__label__text">Green</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('colour[green]', '', colour_is_defined ? view_user.user_colour|colour_get_green : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('colour[green]', '', colour_props.green, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="form__label">
|
<label class="form__label">
|
||||||
<div class="form__label__text">Blue</div>
|
<div class="form__label__text">Blue</div>
|
||||||
<div class="form__label__input">
|
<div class="form__label__input">
|
||||||
{{ input_text('colour[blue]', '', colour_is_defined ? view_user.user_colour|colour_get_blue : '0', 'number', '', false, {'min':0,'max':255}) }}
|
{{ input_text('colour[blue]', '', colour_props.blue, 'number', '', false, {'min':0,'max':255}) }}
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -259,7 +259,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="settings__log__column__value">
|
<div class="settings__log__column__value">
|
||||||
{% if log.log_action in logs.strings|keys %}
|
{% if log.log_action in logs.strings|keys %}
|
||||||
{{ logs.strings[log.log_action]|vsprintf(log.log_params|json_decode) }}
|
{{ logs.strings[log.log_action]|log_format(log.log_params) }}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ log.log_action }}({{ log.log_params }})
|
{{ log.log_action }}({{ log.log_params }})
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
Loading…
Add table
Reference in a new issue