From 618a59921a1c4b54fdcf22ccffbc11aace912701 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Fri, 9 Aug 2019 18:23:05 -0600 Subject: [PATCH] make markdown more page context aware --- CHANGELOG.md | 1 + system/src/Grav/Common/Twig/TwigExtension.php | 7 ++++--- system/src/Grav/Common/Utils.php | 8 +++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79f101e48..c416d0fd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ 1. [](#improved) * Use new `Utils::getSupportedPageTypes()` to enforce `html,htm` at the front of the list [#2531](https://github.com/getgrav/grav/issues/2531) * Updated vendor libraries + * Markdown filter is now page-aware so that it works with modular references [admin#1731](https://github.com/getgrav/grav-plugin-admin/issues/1731) 1. [](#bugfix) * Fixed some potential issues when `$grav['user']` is not set * Fixed error when calling `Media::add($name, null)` diff --git a/system/src/Grav/Common/Twig/TwigExtension.php b/system/src/Grav/Common/Twig/TwigExtension.php index e5d4fa821..cf24f7643 100644 --- a/system/src/Grav/Common/Twig/TwigExtension.php +++ b/system/src/Grav/Common/Twig/TwigExtension.php @@ -84,7 +84,7 @@ class TwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsIn new \Twig_SimpleFilter('fieldName', [$this, 'fieldNameFilter']), new \Twig_SimpleFilter('ksort', [$this, 'ksortFilter']), new \Twig_SimpleFilter('ltrim', [$this, 'ltrimFilter']), - new \Twig_SimpleFilter('markdown', [$this, 'markdownFunction'], ['is_safe' => ['html']]), + new \Twig_SimpleFilter('markdown', [$this, 'markdownFunction'], ['needs_context' => true, 'is_safe' => ['html']]), new \Twig_SimpleFilter('md5', [$this, 'md5Filter']), new \Twig_SimpleFilter('base32_encode', [$this, 'base32EncodeFilter']), new \Twig_SimpleFilter('base32_decode', [$this, 'base32DecodeFilter']), @@ -616,9 +616,10 @@ class TwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsIn * @param bool $block Block or Line processing * @return mixed|string */ - public function markdownFunction($string, $block = true) + public function markdownFunction($context = false, $string, $block = true) { - return Utils::processMarkdown($string, $block); + $page = $context['page'] ?? null; + return Utils::processMarkdown($string, $block, $page); } /** diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 056c7a64d..56b2d891b 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -1526,13 +1526,15 @@ abstract class Utils * * @param string $string * - * @param bool $block Block or Line processing + * @param bool $block Block or Line processing + * @param null $page * @return string + * @throws \Exception */ - public static function processMarkdown($string, $block = true) + public static function processMarkdown($string, $block = true, $page = null) { $grav = Grav::instance(); - $page = $grav['page'] ?? null; + $page = $page ?? $grav['page'] ?? null; $defaults = [ 'markdown' => $grav['config']->get('system.pages.markdown', []), 'images' => $grav['config']->get('system.images', [])