[ticket/15538] Readding macros and requested changes

PHPBB3-15538
This commit is contained in:
mrgoldy 2019-09-30 23:42:32 +02:00 committed by Marc Alexander
parent 23fae74bf2
commit 341266cc71
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
5 changed files with 50 additions and 30 deletions

View file

@ -23,7 +23,7 @@ class icon extends \Twig\Extension\AbstractExtension
/** /**
* Constructor. * Constructor.
* *
* @param \phpbb\user $user User object * @param \phpbb\user $user User object
*/ */
public function __construct(\phpbb\user $user) public function __construct(\phpbb\user $user)
{ {
@ -33,7 +33,7 @@ class icon extends \Twig\Extension\AbstractExtension
/** /**
* Returns the name of this extension. * Returns the name of this extension.
* *
* @return string The extension name * @return string The extension name
*/ */
public function getName() public function getName()
{ {
@ -43,7 +43,7 @@ class icon extends \Twig\Extension\AbstractExtension
/** /**
* Returns a list of filters to add to the existing list. * Returns a list of filters to add to the existing list.
* *
* @return \Twig\TwigFilter[] * @return \Twig\TwigFilter[] Array of twig filters
*/ */
public function getFilters() public function getFilters()
{ {
@ -55,7 +55,7 @@ class icon extends \Twig\Extension\AbstractExtension
/** /**
* Returns a list of functions to add to the existing list. * Returns a list of functions to add to the existing list.
* *
* @return \Twig\TwigFunction[] * @return \Twig\TwigFunction[] Array of twig functions
*/ */
public function getFunctions() public function getFunctions()
{ {
@ -77,7 +77,7 @@ class icon extends \Twig\Extension\AbstractExtension
$web_path = $board_url ? generate_board_url() . '/' : $environment->get_web_root_path(); $web_path = $board_url ? generate_board_url() . '/' : $environment->get_web_root_path();
$style_path = $this->user->style['style_path']; $style_path = $this->user->style['style_path'];
return "{$web_path}styles/{$style_path}/template/icons/png/{$icon}.png"; return "{$web_path}styles/{$style_path}/theme/icons/png/{$icon}.png";
} }
/** /**

View file

@ -18,7 +18,7 @@ class implode extends \Twig\Extension\AbstractExtension
/** /**
* Returns the name of this extension. * Returns the name of this extension.
* *
* @return string The extension name * @return string The extension name
*/ */
public function getName() public function getName()
{ {
@ -28,7 +28,7 @@ class implode extends \Twig\Extension\AbstractExtension
/** /**
* Returns a list of functions to add to the existing list. * Returns a list of functions to add to the existing list.
* *
* @return \Twig\TwigFunction[] * @return \Twig\TwigFunction[] Array of twig functions
*/ */
public function getFunctions() public function getFunctions()
{ {
@ -47,8 +47,8 @@ class implode extends \Twig\Extension\AbstractExtension
* Implode_attributes('checked', {'data-ajax': 'true'}) * Implode_attributes('checked', {'data-ajax': 'true'})
* Implode_attributes(['checked', {'data-ajax': 'true'}]) * Implode_attributes(['checked', {'data-ajax': 'true'}])
* *
* @param mixed $arguments * @param mixed $arguments Attributes to implode
* @return string * @return string The attributes string
*/ */
public function implode_attributes(...$arguments) public function implode_attributes(...$arguments)
{ {
@ -132,8 +132,8 @@ class implode extends \Twig\Extension\AbstractExtension
* 'hidden-class': S_POST_HIDDEN, * 'hidden-class': S_POST_HIDDEN,
* }]) * }])
* *
* @param mixed $arguments * @param mixed $arguments The classes to implode
* @return string The classes string prepended with a space * @return string The classes string prepended with a space
*/ */
public function implode_classes(...$arguments) public function implode_classes(...$arguments)
{ {

View file

@ -23,7 +23,7 @@ class macro extends \Twig\Extension\AbstractExtension implements \Twig\Extension
/** /**
* Constructor. * Constructor.
* *
* @param environment $twig Twig environment object * @param environment $twig Twig environment object
*/ */
public function __construct(environment $twig) public function __construct(environment $twig)
{ {
@ -33,7 +33,7 @@ class macro extends \Twig\Extension\AbstractExtension implements \Twig\Extension
/** /**
* Returns the name of this extension. * Returns the name of this extension.
* *
* @return string The extension name * @return string The extension name
*/ */
public function getName() public function getName()
{ {
@ -43,22 +43,13 @@ class macro extends \Twig\Extension\AbstractExtension implements \Twig\Extension
/** /**
* Returns a list of global variables to add to the existing list. * Returns a list of global variables to add to the existing list.
* *
* @return array An array of global variables * @throws \Twig\Error\Error
* @return array An array of global variables
*/ */
public function getGlobals() public function getGlobals()
{ {
$macros = null;
try
{
$macros = $this->twig->loadTemplate('macros.html');
}
catch (\Twig\Error\Error $e)
{
}
return [ return [
'macros' => $macros, 'macros' => $this->twig->loadTemplate('macros/macros.twig'),
]; ];
} }
} }

View file

@ -1,5 +0,0 @@
{# Wrapper function #}
{% macro Icon(type, icon, classes = '', title = '', hidden = false, attributes = {}) %}
{% set type = type|capitalize %}
Hello
{% endmacro Icon %}

View file

@ -0,0 +1,34 @@
{# Wrapper function #}
{% macro Icon(type, icon, classes = '', title = '', hidden = false, attributes = {}) %}
{% set type = type|capitalize %}
{% if type in ['Fa', 'Png', 'Svg'] %}
{{ attribute(_self, type, [icon, classes, title, hidden, attributes]) }}
{% endif %}
{% 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 %}
{% from _self import Icon as Icon %}