mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-10 18:54:08 +02:00
[feature/twig] Replace phpBB template code with Twig syntax, then parse w/Twig
Fixing begin token/node, adding includejs token/node PHPBB3-11598
This commit is contained in:
@@ -31,40 +31,41 @@ class phpbb_template_twig_node_begin extends Twig_Node
|
||||
public function compile(Twig_Compiler $compiler)
|
||||
{
|
||||
$compiler
|
||||
->write("if (!isset(\$blocks)) {\n")
|
||||
->write("if (!isset(\$loops)) {\n")
|
||||
->indent()
|
||||
->write("\$blocks = array();")
|
||||
->write("\$loops = array();")
|
||||
->write("\$nestingLevel = 0;")
|
||||
->outdent()
|
||||
->write("}\n")
|
||||
->write("\$blocks[\$nestingLevel] = array();\n")
|
||||
->write("\$loops[\$nestingLevel] = array();\n")
|
||||
;
|
||||
|
||||
if (null !== $this->getNode('else')) {
|
||||
$compiler->write("\$blocks[\$nestingLevel]['iterated'] = false;\n");
|
||||
$compiler->write("\$loops[\$nestingLevel]['iterated'] = false;\n");
|
||||
}
|
||||
|
||||
$compiler
|
||||
->write("foreach (\$context['_phpbb_blocks']['")
|
||||
->write("if (isset(\$context['loop'])) {")
|
||||
->write("foreach (\$context['loop']['")
|
||||
->write($this->getAttribute('beginName'))
|
||||
->write("'] as \$blocks[\$nestingLevel]['i'] => \$blocks[\$nestingLevel]['values']) {")
|
||||
->write("'] as \$loops[\$nestingLevel]['i'] => \$loops[\$nestingLevel]['values']) {")
|
||||
->indent()
|
||||
;
|
||||
|
||||
$compiler->subcompile($this->getNode('body'));
|
||||
|
||||
if (null !== $this->getNode('else')) {
|
||||
$compiler->write("\$blocks[\$nestingLevel]['iterated'] = true;\n");
|
||||
$compiler->write("\$loops[\$nestingLevel]['iterated'] = true;\n");
|
||||
}
|
||||
|
||||
$compiler
|
||||
->outdent()
|
||||
->write("}\n")
|
||||
->write("}}\n")
|
||||
;
|
||||
|
||||
if (null !== $this->getNode('else')) {
|
||||
$compiler
|
||||
->write("if (!\$blocks[\$nestingLevel]['iterated']) {\n")
|
||||
->write("if (!\$loops[\$nestingLevel]['iterated']) {\n")
|
||||
->indent()
|
||||
->subcompile($this->getNode('else'))
|
||||
->outdent()
|
||||
|
50
phpBB/includes/template/twig/node/includejs.php
Normal file
50
phpBB/includes/template/twig/node/includejs.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Twig.
|
||||
*
|
||||
* (c) 2009 Fabien Potencier
|
||||
* (c) 2009 Armin Ronacher
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Represents an include node.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class phpbb_template_twig_node_includejs extends Twig_Node_Include
|
||||
{
|
||||
/**
|
||||
* Compiles the node to PHP.
|
||||
*
|
||||
* @param Twig_Compiler A Twig_Compiler instance
|
||||
*/
|
||||
public function compile(Twig_Compiler $compiler)
|
||||
{
|
||||
$compiler->addDebugInfo($this);
|
||||
|
||||
$compiler
|
||||
->write("try {\n")
|
||||
->indent()
|
||||
;
|
||||
|
||||
$this->addGetTemplate($compiler);
|
||||
|
||||
$compiler->raw('->display(');
|
||||
|
||||
$this->addTemplateArguments($compiler);
|
||||
|
||||
$compiler->raw(");\n");
|
||||
|
||||
$compiler
|
||||
->write("} catch (Twig_Error_Loader \$e) {\n")
|
||||
->indent()
|
||||
->write("// ignore missing template\n")
|
||||
->outdent()
|
||||
->write("}\n\n")
|
||||
;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user