phpbb/phpBB/includes/template/twig/node/includejs.php
Nathaniel Guse 59d13d0535 [feature/twig] INCLUDEJS behavior now supports local relative paths
This was done because T_TEMPLATE_PATH is not always correct for js files
(e.g. the inheriting style does not include these). Now we use the Twig
Loader to find the correct file to link to (most specific file first, then
parent styles). Also allows using @namespace convention

PHPBB3-11598
2013-07-02 11:07:12 -05:00

47 lines
1.3 KiB
PHP

<?php
/**
*
* @package phpBB3
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
class phpbb_template_twig_node_includejs extends Twig_Node
{
/** @var Twig_Environment */
protected $environment;
public function __construct(Twig_Node_Expression $expr, phpbb_template_twig_environment $environment, $lineno, $tag = null)
{
$this->environment = $environment;
parent::__construct(array('expr' => $expr), array(), $lineno, $tag);
}
/**
* Compiles the node to PHP.
*
* @param Twig_Compiler A Twig_Compiler instance
*/
public function compile(Twig_Compiler $compiler)
{
$compiler->addDebugInfo($this);
$config = $this->environment->get_phpbb_config();
$compiler
->write("\$js_file = ")
->subcompile($this->getNode('expr'))
->raw(";\n")
->write("if (!file_exists(\$js_file)) {\n")
->indent()
->write("\$js_file = \$this->getEnvironment()->getLoader()->getCacheKey(\$js_file);\n")
->outdent()
->write("}\n")
->write("\$context['definition']->append('SCRIPTS', '<script type=\"text/javascript\" src=\"' . ")
->raw("\$js_file")
->raw(" . '?assets_version=" . $config['assets_version'] . "\"></script>\n');\n")
;
}
}