Allow additional paths for Twig Helper and add images/ to iTop webpage and block renderer paths

This commit is contained in:
Stephen Abello
2020-08-10 15:59:29 +02:00
parent 9be4743cf6
commit 8996117929
3 changed files with 19 additions and 4 deletions

View File

@@ -1139,7 +1139,7 @@ EOF
]
);
$oTwigEnv = TwigHelper::GetTwigEnvironment(APPROOT.'templates/');
$oTwigEnv = TwigHelper::GetTwigEnvironment(BlockRenderer::TWIG_BASE_PATH, BlockRenderer::TWIG_ADDITIONAL_PATHS);
// Send headers
if ($this->GetOutputFormat() === 'html')

View File

@@ -34,6 +34,9 @@ use ReflectionClass;
*/
class BlockRenderer
{
public const TWIG_BASE_PATH = APPROOT.'templates/';
public const TWIG_ADDITIONAL_PATHS = [APPROOT.'images/'];
/** @var \Twig_Environment $oTwigEnv Singleton used during rendering */
protected static $oTwigEnv;
@@ -72,7 +75,7 @@ class BlockRenderer
{
if(null === static::$oTwigEnv)
{
static::$oTwigEnv = TwigHelper::GetTwigEnvironment(APPROOT.'templates/');
static::$oTwigEnv = TwigHelper::GetTwigEnvironment(static::TWIG_BASE_PATH, static::TWIG_ADDITIONAL_PATHS);
}
$this->oBlock = $oBlock;

View File

@@ -39,6 +39,11 @@ class TwigHelper
* @since 2.8.0
*/
const ENUM_FILE_TYPE_CSS = 'css';
/**
* @var string ENUM_FILE_TYPE_SVG
* @since 2.8.0
*/
const ENUM_FILE_TYPE_SVG = 'svg';
/**
* @var string DEFAULT_FILE_TYPE
@@ -51,12 +56,19 @@ class TwigHelper
* This is not a singleton as we might want to use several instances with different base path.
*
* @param string $sViewPath
* @param array $aAdditionalPaths
*
* @return \Twig_Environment
* @throws \Twig\Error\LoaderError
*/
public static function GetTwigEnvironment($sViewPath)
public static function GetTwigEnvironment($sViewPath, $aAdditionalPaths = array())
{
$oLoader = new Twig_Loader_Filesystem($sViewPath);
foreach ($aAdditionalPaths as $sAdditionalPath)
{
$oLoader->addPath($sAdditionalPath);
}
$oTwig = new Twig_Environment($oLoader);
Extension::RegisterTwigExtensions($oTwig);
if (!utils::IsDevelopmentEnvironment())
@@ -64,7 +76,7 @@ class TwigHelper
// Disable the cache in development environment
$sLocalPath = utils::LocalPath($sViewPath);
$sLocalPath = str_replace('env-'.utils::GetCurrentEnvironment(), 'twig', $sLocalPath);
$sCachePath = utils::GetCachePath().$sLocalPath;
$sCachePath = utils::GetCachePath().'twig/'.$sLocalPath;
$oTwig->setCache($sCachePath);
}