[ticket/15538] Fixes unrelated to the error

PHPBB3-15538
This commit is contained in:
mrgoldy 2019-09-30 18:51:37 +02:00 committed by Marc Alexander
parent 971b905569
commit 23fae74bf2
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
6 changed files with 34 additions and 48 deletions

View file

@ -63,11 +63,15 @@ services:
template.twig.extensions.implode: template.twig.extensions.implode:
class: phpbb\template\twig\extension\implode class: phpbb\template\twig\extension\implode
tags:
- { name: twig.extension }
template.twig.extensions.macro: template.twig.extensions.macro:
class: phpbb\template\twig\extension\macro class: phpbb\template\twig\extension\macro
arguments: arguments:
- '@template.twig.environment' - '@template.twig.environment'
tags:
- { name: twig.extension }
template.twig.extensions.routing: template.twig.extensions.routing:
class: phpbb\template\twig\extension\routing class: phpbb\template\twig\extension\routing

View file

@ -15,7 +15,7 @@ namespace phpbb\template\twig\extension;
use phpbb\template\twig\environment; use phpbb\template\twig\environment;
abstract class icon extends \Twig\Extension\AbstractExtension class icon extends \Twig\Extension\AbstractExtension
{ {
/** @var \phpbb\user */ /** @var \phpbb\user */
protected $user; protected $user;
@ -48,7 +48,7 @@ abstract class icon extends \Twig\Extension\AbstractExtension
public function getFilters() public function getFilters()
{ {
return [ return [
new \Twig\TwigFilter('Png_path', [$this, 'png_path'], ['needs_environment' => true]), new \Twig\TwigFilter('png_path', [$this, 'png_path'], ['needs_environment' => true]),
]; ];
} }
@ -71,7 +71,7 @@ abstract class icon extends \Twig\Extension\AbstractExtension
* @param string $icon The icon name * @param string $icon The icon name
* @return string * @return string
*/ */
protected function png_path(environment $environment, $icon) public function png_path(environment $environment, $icon)
{ {
$board_url = defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH; $board_url = defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH;
$web_path = $board_url ? generate_board_url() . '/' : $environment->get_web_root_path(); $web_path = $board_url ? generate_board_url() . '/' : $environment->get_web_root_path();
@ -87,7 +87,7 @@ abstract class icon extends \Twig\Extension\AbstractExtension
* @param string $icon The icon name * @param string $icon The icon name
* @return string * @return string
*/ */
protected function svg_clean(environment $environment, $icon) public function svg_clean(environment $environment, $icon)
{ {
try try
{ {
@ -110,8 +110,10 @@ abstract class icon extends \Twig\Extension\AbstractExtension
return ''; return '';
} }
foreach ($doc->childNodes as $child) { foreach ($doc->childNodes as $child)
if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) { {
if ($child->nodeType === XML_DOCUMENT_TYPE_NODE)
{
$child->parentNode->removeChild($child); $child->parentNode->removeChild($child);
} }
} }

View file

@ -13,7 +13,7 @@
namespace phpbb\template\twig\extension; namespace phpbb\template\twig\extension;
abstract class implode extends \Twig\Extension\AbstractExtension class implode extends \Twig\Extension\AbstractExtension
{ {
/** /**
* Returns the name of this extension. * Returns the name of this extension.
@ -50,7 +50,7 @@ abstract class implode extends \Twig\Extension\AbstractExtension
* @param mixed $arguments * @param mixed $arguments
* @return string * @return string
*/ */
protected function implode_attributes(...$arguments) public function implode_attributes(...$arguments)
{ {
$string = ''; $string = '';
$attributes = []; $attributes = [];
@ -71,13 +71,17 @@ abstract class implode extends \Twig\Extension\AbstractExtension
} }
else if (is_array($value)) else if (is_array($value))
{ {
if (is_integer($key) && is_string($value)) foreach ($value as $k => $v)
{ {
$attributes[] = $value; if (is_integer($k) && is_string($v))
} {
else $attributes[] = $v;
{ }
$attributes[$key] = $value; else
{
$attributes[$k] = $v;
}
} }
} }
else else
@ -92,11 +96,13 @@ abstract class implode extends \Twig\Extension\AbstractExtension
{ {
if (is_string($attribute)) if (is_string($attribute))
{ {
$value = is_bool($value) ? ($value ? 'true' : 'false') : $value;
$string .= ' ' . $attribute . '="' . $value . '"'; $string .= ' ' . $attribute . '="' . $value . '"';
} }
else else
{ {
$string .= ' ' . $attribute; $string .= ' ' . $value;
} }
} }
@ -129,7 +135,7 @@ abstract class implode extends \Twig\Extension\AbstractExtension
* @param mixed $arguments * @param mixed $arguments
* @return string The classes string prepended with a space * @return string The classes string prepended with a space
*/ */
protected function implode_classes(...$arguments) public function implode_classes(...$arguments)
{ {
$classes = []; $classes = [];

View file

@ -15,7 +15,7 @@ namespace phpbb\template\twig\extension;
use phpbb\template\twig\environment; use phpbb\template\twig\environment;
abstract class macro extends \Twig\Extension\AbstractExtension implements \Twig\Extension\GlobalsInterface class macro extends \Twig\Extension\AbstractExtension implements \Twig\Extension\GlobalsInterface
{ {
/** @var environment */ /** @var environment */
protected $twig; protected $twig;
@ -37,7 +37,7 @@ abstract class macro extends \Twig\Extension\AbstractExtension implements \Twig\
*/ */
public function getName() public function getName()
{ {
return 'macro'; return 'macros';
} }
/** /**

View file

@ -1,33 +1,5 @@
{# Wrapper function #} {# Wrapper function #}
{% macro Icon(type, icon, classes = '', title = '', hidden = false, attributes = {}) %} {% macro Icon(type, icon, classes = '', title = '', hidden = false, attributes = {}) %}
{% set type = type|capitalize %} {% set type = type|capitalize %}
Hello
{% if type in ['Fa', 'Png', 'Svg'] %}
{{ attribute(_self, type, [icon, classes, title, hidden, attributes]) }}
{% endif %}
{% endmacro Icon %} {% endmacro Icon %}
{# FA icons #}
{% macro Fa(icon, classes = '', title = '', hidden = false, attributes = {}) %}
<i class="o-icon font fa-{{ icon ~ Implode_classes(classes) }}"{% if hidden %}{% if title %} title="{{ lang(title) }}"{% endif %} aria-hidden="true"{% endif %}{{ Implode_attributes(attributes) }}></i>
{% if title %}<span{% if hidden %} class="sr-only"{% endif %}>{{ lang(title) }}</span>{% endif %}
{% endmacro Fa %}
{# PNG icons #}
{% macro Png(icon, classes = '', title = '', hidden = false, attributes = {}) %}
<img class="o-icon png png-{{ icon ~ Implode_classes(classes) }}" src="{{ icon|png_path }}" alt="{{ lang(title) }}"{{ _self.attributes(attributes) }}
{% endmacro Png %}
{# SVG icons #}
{% macro Svg(icon, classes = '', title = '', hidden = false, attributes = {}) %}
{% set title_id = title ? title|lower|replace({' ': '_'}) ~ '-' ~ random() %}
<svg class="o-icon svg svg-{{ icon ~ Implode_classes(classes) }}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"{% if title %}{% if hidden %} aria-hidden="true"{% endif %} aria-labelledby="{{ title_id }}"{% endif %} role="img"{{ Implode_attributes(attributes) }}>
{% if title %}
<title id="{{ title_id }}">{{ lang(title) }}</title>
{% endif %}
{{ svg_clean(icon) }}
</svg>
{% endmacro Svg %}

View file

@ -11,6 +11,8 @@
<!-- ENDIF --> <!-- ENDIF -->
<!-- EVENT index_body_markforums_after --> <!-- EVENT index_body_markforums_after -->
Test: {{ macros.Icon('fa', 'phone') }}
<!-- INCLUDE forumlist_body.html --> <!-- INCLUDE forumlist_body.html -->
<!-- EVENT index_body_forumlist_body_after --> <!-- EVENT index_body_forumlist_body_after -->
@ -41,7 +43,7 @@
<!-- IF U_VIEWONLINE --><h3><a href="{U_VIEWONLINE}">{L_WHO_IS_ONLINE}</a></h3><!-- ELSE --><h3>{L_WHO_IS_ONLINE}</h3><!-- ENDIF --> <!-- IF U_VIEWONLINE --><h3><a href="{U_VIEWONLINE}">{L_WHO_IS_ONLINE}</a></h3><!-- ELSE --><h3>{L_WHO_IS_ONLINE}</h3><!-- ENDIF -->
<p> <p>
<!-- EVENT index_body_block_online_prepend --> <!-- EVENT index_body_block_online_prepend -->
{TOTAL_USERS_ONLINE} ({L_ONLINE_EXPLAIN})<br />{RECORD_USERS}<br /> {TOTAL_USERS_ONLINE} ({L_ONLINE_EXPLAIN})<br />{RECORD_USERS}<br />
<!-- IF U_VIEWONLINE --> <!-- IF U_VIEWONLINE -->
<br />{LOGGED_IN_USER_LIST} <br />{LOGGED_IN_USER_LIST}
<!-- IF LEGEND --><br /><em>{L_LEGEND}{L_COLON} {LEGEND}</em><!-- ENDIF --> <!-- IF LEGEND --><br /><em>{L_LEGEND}{L_COLON} {LEGEND}</em><!-- ENDIF -->