From d71e09759394396362daa9767b90c016170e7aba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Thu, 6 Apr 2017 20:33:32 -0300 Subject: [PATCH] Add Twig cache generator and bypass escape option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add script to generate cache files for all Twig templates - Add option in Twig extension that bypass autoescaping Signed-off-by: MaurĂ­cio Meneghini Fauth --- libraries/Template.php | 3 +- libraries/twig/I18nExtension.php | 2 +- libraries/twig/UrlExtension.php | 18 ++++++++--- libraries/twig/{ => i18n}/NodeTrans.php | 8 ++--- .../twig/{ => i18n}/TokenParserTrans.php | 8 ++--- scripts/generate-twig-cache | 31 +++++++++++++++++++ scripts/update-po | 3 ++ 7 files changed, 58 insertions(+), 15 deletions(-) rename libraries/twig/{ => i18n}/NodeTrans.php (96%) rename libraries/twig/{ => i18n}/TokenParserTrans.php (92%) create mode 100644 scripts/generate-twig-cache diff --git a/libraries/Template.php b/libraries/Template.php index 10c23fc616..a40df3a49d 100644 --- a/libraries/Template.php +++ b/libraries/Template.php @@ -58,8 +58,9 @@ class Template $loader = new Twig_Loader_Filesystem(static::BASE_PATH); $this->twig = new Twig_Environment($loader, array( - 'debug' => false, + 'auto_reload' => true, 'cache' => CACHE_DIR . 'twig', + 'debug' => false, )); $this->twig->addExtension(new I18nExtension()); $this->twig->addExtension(new UrlExtension()); diff --git a/libraries/twig/I18nExtension.php b/libraries/twig/I18nExtension.php index 1b7aeeb14c..cfe4734a7b 100644 --- a/libraries/twig/I18nExtension.php +++ b/libraries/twig/I18nExtension.php @@ -22,7 +22,7 @@ class I18nExtension extends Twig_Extensions_Extension_I18n */ public function getTokenParsers() { - return array(new TokenParserTrans()); + return array(new i18n\TokenParserTrans()); } /** diff --git a/libraries/twig/UrlExtension.php b/libraries/twig/UrlExtension.php index 56b0a5ecb8..35333dce7f 100644 --- a/libraries/twig/UrlExtension.php +++ b/libraries/twig/UrlExtension.php @@ -17,28 +17,36 @@ use Twig_SimpleFunction; */ class UrlExtension extends Twig_Extension { + /** + * {@inheritdoc} + */ public function getFunctions() { return array( new Twig_SimpleFunction( 'URL_getHiddenInputs', - 'PMA\libraries\URL::getHiddenInputs' + 'PMA\libraries\URL::getHiddenInputs', + array('is_safe' => array('html')) ), new Twig_SimpleFunction( 'URL_getHiddenFields', - 'PMA\libraries\URL::getHiddenFields' + 'PMA\libraries\URL::getHiddenFields', + array('is_safe' => array('html')) ), new Twig_SimpleFunction( 'URL_getCommon', - 'PMA\libraries\URL::getCommon' + 'PMA\libraries\URL::getCommon', + array('is_safe' => array('html')) ), new Twig_SimpleFunction( 'URL_getCommonRaw', - 'PMA\libraries\URL::getCommonRaw' + 'PMA\libraries\URL::getCommonRaw', + array('is_safe' => array('html')) ), new Twig_SimpleFunction( 'URL_getArgSeparator', - 'PMA\libraries\URL::getArgSeparator' + 'PMA\libraries\URL::getArgSeparator', + array('is_safe' => array('html')) ), ); } diff --git a/libraries/twig/NodeTrans.php b/libraries/twig/i18n/NodeTrans.php similarity index 96% rename from libraries/twig/NodeTrans.php rename to libraries/twig/i18n/NodeTrans.php index 3569012e45..717989a5b9 100644 --- a/libraries/twig/NodeTrans.php +++ b/libraries/twig/i18n/NodeTrans.php @@ -1,11 +1,11 @@ $tmpDir, + 'auto_reload' => true +)); +$twig->addExtension(new I18nExtension()); +$twig->addExtension(new UrlExtension()); + +// iterate over all templates +foreach (new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($tplDir), + RecursiveIteratorIterator::LEAVES_ONLY +) as $file) { + // force compilation + if ($file->isFile() && $file->getExtension() == 'twig') { + $twig->loadTemplate(str_replace($tplDir.'/', '', $file)); + } +} diff --git a/scripts/update-po b/scripts/update-po index 315a1e58b3..7f64d0ff6d 100755 --- a/scripts/update-po +++ b/scripts/update-po @@ -11,6 +11,9 @@ fi # Exit on failure set -e +# Generate Twig template cache +php ./scripts/generate-twig-cache + # Update pot (template), ensure that advisor is at the end LOCS=`ls po/*.po | sed 's@.*/\(.*\)\.po@\1@'` xgettext \