aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/template
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2013-07-30 01:06:11 +0200
committerJoas Schilling <nickvergessen@gmx.de>2013-07-30 01:06:11 +0200
commit91392c728826c38fd625a80c4e855d373b6866e1 (patch)
tree96b25a8d6198ef058cc32cd78f81ed0ebbc294b5 /phpBB/phpbb/template
parent5f3f41d6d6fb5c997ab7b70482fef542a5534b6a (diff)
parent09de06cf15071fd88a1bf3554007aab2a4faadf4 (diff)
downloadforums-91392c728826c38fd625a80c4e855d373b6866e1.tar
forums-91392c728826c38fd625a80c4e855d373b6866e1.tar.gz
forums-91392c728826c38fd625a80c4e855d373b6866e1.tar.bz2
forums-91392c728826c38fd625a80c4e855d373b6866e1.tar.xz
forums-91392c728826c38fd625a80c4e855d373b6866e1.zip
Merge remote-tracking branch 'phpbb/develop' into ticket/11574
* phpbb/develop: (130 commits) [ticket/11638] Changed the layout to match the other similar commits [ticket/11640] removed the space that I wonder what it was doing there. [ticket/11749] Move event after all template data has been defined [ticket/10917] Variable used only once so delete it [ticket/10917] Revert use of phpbb wrapper [ticket/11749] Template events for topic_list_row_pre/append [ticket/11749] PHP Events for viewforum.php [ticket/11749] PHP Events for search.php [ticket/11740] Update FAQ to include Ideas Centre [ticket/11062] If user's language is english there is no further work needed [ticket/11062] Load new strings from user's language file if provided [ticket/10917] Using phpbb wrapper [ticket/10917] Fixed notice that files are out of date when updating to an unreleased version [ticket/11741] Fix empty brackets and remove bullet [ticket/11638] Removed the unneeded reset. [ticket/11638] Use the $parse_flags like the other commits [ticket/11638] Reverted to use the $parse tags way as the other ones [ticket/11638] Updated: bitwise $parse_flags use optionset() [ticket/11656] Made the check for the bitfield just like other PR's [ticket/11667] Use @inheritdoc ...
Diffstat (limited to 'phpBB/phpbb/template')
-rw-r--r--phpBB/phpbb/template/twig/lexer.php21
-rw-r--r--phpBB/phpbb/template/twig/node/includeasset.php17
-rw-r--r--phpBB/phpbb/template/twig/node/includecss.php9
-rw-r--r--phpBB/phpbb/template/twig/node/includejs.php9
4 files changed, 39 insertions, 17 deletions
diff --git a/phpBB/phpbb/template/twig/lexer.php b/phpBB/phpbb/template/twig/lexer.php
index 46412ad048..4f88147542 100644
--- a/phpBB/phpbb/template/twig/lexer.php
+++ b/phpBB/phpbb/template/twig/lexer.php
@@ -126,10 +126,14 @@ class phpbb_template_twig_lexer extends Twig_Lexer
{
$callback = function($matches)
{
- // Remove any quotes that may have been used in different implementations
- // E.g. DEFINE $TEST = 'blah' vs INCLUDE foo
- // Replace {} with start/end to parse variables (' ~ TEST ~ '.html)
- $matches[2] = str_replace(array('"', "'", '{', '}'), array('', '', "' ~ ", " ~ '"), $matches[2]);
+ // Remove matching quotes at the beginning/end if a statement;
+ // E.g. 'asdf'"' -> asdf'"
+ // E.g. "asdf'"" -> asdf'"
+ // E.g. 'asdf'" -> 'asdf'"
+ $matches[2] = preg_replace('#^([\'"])?(.+?)\1$#', '$2', $matches[2]);
+
+ // Replace template variables with start/end to parse variables (' ~ TEST ~ '.html)
+ $matches[2] = preg_replace('#{([a-zA-Z0-9_\.$]+)}#', "'~ \$1 ~'", $matches[2]);
// Surround the matches in single quotes ('' ~ TEST ~ '.html')
return "<!-- {$matches[1]} '{$matches[2]}' -->";
@@ -219,19 +223,20 @@ class phpbb_template_twig_lexer extends Twig_Lexer
{
$callback = function($matches)
{
+ $inner = $matches[2];
// Replace $TEST with definition.TEST
- $matches[1] = preg_replace('#\s\$([a-zA-Z_0-9]+)#', ' definition.$1', $matches[1]);
+ $inner = preg_replace('#\s\$([a-zA-Z_0-9]+)#', ' definition.$1', $inner);
// Replace .test with test|length
- $matches[1] = preg_replace('#\s\.([a-zA-Z_0-9\.]+)#', ' $1|length', $matches[1]);
+ $inner = preg_replace('#\s\.([a-zA-Z_0-9\.]+)#', ' $1|length', $inner);
- return '<!-- IF' . $matches[1] . '-->';
+ return "<!-- {$matches[1]}IF{$inner}-->";
};
// Replace our "div by" with Twig's divisibleby (Twig does not like test names with spaces)
$code = preg_replace('# div by ([0-9]+)#', ' divisibleby($1)', $code);
- return preg_replace_callback('#<!-- IF((.*)[\s][\$|\.|!]([^\s]+)(.*))-->#', $callback, $code);
+ return preg_replace_callback('#<!-- (ELSE)?IF((.*)[\s][\$|\.|!]([^\s]+)(.*))-->#', $callback, $code);
}
/**
diff --git a/phpBB/phpbb/template/twig/node/includeasset.php b/phpBB/phpbb/template/twig/node/includeasset.php
index 990b1c984f..1cab416c79 100644
--- a/phpBB/phpbb/template/twig/node/includeasset.php
+++ b/phpBB/phpbb/template/twig/node/includeasset.php
@@ -7,7 +7,7 @@
*
*/
-class phpbb_template_twig_node_includeasset extends Twig_Node
+abstract class phpbb_template_twig_node_includeasset extends Twig_Node
{
/** @var Twig_Environment */
protected $environment;
@@ -57,4 +57,19 @@ class phpbb_template_twig_node_includeasset extends Twig_Node
->raw("\n');\n")
;
}
+
+ /**
+ * Get the definition name
+ *
+ * @return string (e.g. 'SCRIPTS')
+ */
+ abstract public function get_definition_name();
+
+ /**
+ * Append the output code for the asset
+ *
+ * @param Twig_Compiler A Twig_Compiler instance
+ * @return null
+ */
+ abstract protected function append_asset(Twig_Compiler $compiler);
}
diff --git a/phpBB/phpbb/template/twig/node/includecss.php b/phpBB/phpbb/template/twig/node/includecss.php
index 01fda44aad..a9d9b46d69 100644
--- a/phpBB/phpbb/template/twig/node/includecss.php
+++ b/phpBB/phpbb/template/twig/node/includecss.php
@@ -9,16 +9,17 @@
class phpbb_template_twig_node_includecss extends phpbb_template_twig_node_includeasset
{
+ /**
+ * {@inheritdoc}
+ */
public function get_definition_name()
{
return 'STYLESHEETS';
}
/**
- * Compiles the node to PHP.
- *
- * @param Twig_Compiler A Twig_Compiler instance
- */
+ * {@inheritdoc}
+ */
public function append_asset(Twig_Compiler $compiler)
{
$compiler
diff --git a/phpBB/phpbb/template/twig/node/includejs.php b/phpBB/phpbb/template/twig/node/includejs.php
index fdf2bea3ed..2b4b55fb0a 100644
--- a/phpBB/phpbb/template/twig/node/includejs.php
+++ b/phpBB/phpbb/template/twig/node/includejs.php
@@ -9,16 +9,17 @@
class phpbb_template_twig_node_includejs extends phpbb_template_twig_node_includeasset
{
+ /**
+ * {@inheritdoc}
+ */
public function get_definition_name()
{
return 'SCRIPTS';
}
/**
- * Compiles the node to PHP.
- *
- * @param Twig_Compiler A Twig_Compiler instance
- */
+ * {@inheritdoc}
+ */
protected function append_asset(Twig_Compiler $compiler)
{
$config = $this->environment->get_phpbb_config();