diff --git a/system/src/Grav/Common/Markdown/Markdown.php b/system/src/Grav/Common/Markdown/Markdown.php new file mode 100644 index 000000000..f90cd0694 --- /dev/null +++ b/system/src/Grav/Common/Markdown/Markdown.php @@ -0,0 +1,13 @@ +page = $page; + } + +} diff --git a/system/src/Grav/Common/Markdown/MarkdownExtra.php b/system/src/Grav/Common/Markdown/MarkdownExtra.php new file mode 100644 index 000000000..b85516f5a --- /dev/null +++ b/system/src/Grav/Common/Markdown/MarkdownExtra.php @@ -0,0 +1,13 @@ +page = $page; + } +} diff --git a/system/src/Grav/Common/Markdown/MarkdownGravLinkTrait.php b/system/src/Grav/Common/Markdown/MarkdownGravLinkTrait.php new file mode 100644 index 000000000..fdad102ca --- /dev/null +++ b/system/src/Grav/Common/Markdown/MarkdownGravLinkTrait.php @@ -0,0 +1,83 @@ + $params) { + // ignore any url or html actions + if (!in_array($action, ['html','url'])) + $command .= '->' . $action . '(' . $params . ')'; + } + } + + // if there is no host set but there is a path, the file is local + if (!isset($url['host']) && isset($url['path'])) { + // get the media objects for this page + $media = $this->page->media(); + + // if there is a media file that matches the path referenced.. + if (isset($media->images()[$url['path']])) { + // get the medium object + $medium = $media->images()[$url['path']]; + + // unless one of the actions is lightbox method get the url + if (!isset($actions['lightbox'])) { + $command .= '->url()'; + } else { + $command .= '->lightboxRaw()'; + } + + // evaluate the commands to run against the media object + eval ('$src = $medium'.$command.';'); + + // set the src element with the new generated url + if (!isset($actions['lightbox']) && !is_array($src)) { + $Excerpt['element']['attributes']['src'] = $src; + } else { + + // Create the custom lightbox element + $Element = array( + 'name' => 'a', + 'attributes' => array('rel' => $src['a_rel'], 'href' => $src['a_url']), + 'handler' => 'element', + 'text' => array( + 'name' => 'img', + 'attributes' => array('src' => $src['img_url'], 'alt' => $alt, 'title' => $title) + ), + ); + + // Set the lightbox element on the Excerpt + $Excerpt['element'] = $Element; + } + } + } + } + return $Excerpt; + } +} diff --git a/system/src/Grav/Common/Page/Medium.php b/system/src/Grav/Common/Page/Medium.php index 7cd97ccb6..d9f3b5d06 100644 --- a/system/src/Grav/Common/Page/Medium.php +++ b/system/src/Grav/Common/Page/Medium.php @@ -202,6 +202,15 @@ class Medium extends Data return $this->link($width, $height); } + public function lightboxRaw($width = null, $height = null) + { + $url = $this->url(); + $this->link($width, $height); + $lightbox_url = self::$grav['config']->get('system.base_url_relative') . '/'. $this->linkTarget; + + return array('a_url' => $lightbox_url, 'a_rel' => 'lightbox', 'img_url' => $url); + } + /** * Return link HTML for the medium. * diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 21472ac1b..8d68d8c82 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -12,6 +12,8 @@ use Grav\Common\Data; use Grav\Common\Uri; use Grav\Common\Grav; use Grav\Common\Taxonomy; +use Grav\Common\Markdown\Markdown; +use Grav\Common\Markdown\MarkdownExtra; use Grav\Component\EventDispatcher\Event; use Symfony\Component\Yaml\Yaml; @@ -272,6 +274,9 @@ class Page // If no content, process it if ($this->content === null) { + // Get media + $this->media(); + // Load cached content /** @var Cache $cache */ $cache = self::$grav['cache']; @@ -319,7 +324,6 @@ class Page $this->content = $content; - $this->media(); } return $this->content; @@ -1514,9 +1518,9 @@ class Page /** @var Config $config */ $config = self::$grav['config']; if ($config->get('system.pages.markdown_extra')) { - $parsedown = new \ParsedownExtra(); + $parsedown = new MarkdownExtra($this); } else { - $parsedown = new \Parsedown(); + $parsedown = new Markdown($this); } $content = $parsedown->parse($content); return $content; diff --git a/vendor/autoload.php b/vendor/autoload.php index 8b440acf7..14456ffc2 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer' . '/autoload_real.php'; -return ComposerAutoloaderInit7a18ce01239c69086e27f1d973d24372::getLoader(); +return ComposerAutoloaderInit647726739e1bb1c8f9d4883b25b63e16::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 52ac1cbd2..e41627fa6 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -48,6 +48,9 @@ return array( 'Grav\\Common\\GravTrait' => $baseDir . '/system/src/Grav/Common/GravTrait.php', 'Grav\\Common\\Inflector' => $baseDir . '/system/src/Grav/Common/Inflector.php', 'Grav\\Common\\Iterator' => $baseDir . '/system/src/Grav/Common/Iterator.php', + 'Grav\\Common\\Markdown\\Markdown' => $baseDir . '/system/src/Grav/Common/Markdown/Markdown.php', + 'Grav\\Common\\Markdown\\MarkdownExtra' => $baseDir . '/system/src/Grav/Common/Markdown/MarkdownExtra.php', + 'Grav\\Common\\Markdown\\MarkdownGravLinkTrait' => $baseDir . '/system/src/Grav/Common/Markdown/MarkdownGravLinkTrait.php', 'Grav\\Common\\Page\\Collection' => $baseDir . '/system/src/Grav/Common/Page/Collection.php', 'Grav\\Common\\Page\\Media' => $baseDir . '/system/src/Grav/Common/Page/Media.php', 'Grav\\Common\\Page\\Medium' => $baseDir . '/system/src/Grav/Common/Page/Medium.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 70f77eb71..c8f6d58be 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit7a18ce01239c69086e27f1d973d24372 +class ComposerAutoloaderInit647726739e1bb1c8f9d4883b25b63e16 { private static $loader; @@ -19,9 +19,9 @@ class ComposerAutoloaderInit7a18ce01239c69086e27f1d973d24372 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit7a18ce01239c69086e27f1d973d24372', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit647726739e1bb1c8f9d4883b25b63e16', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit7a18ce01239c69086e27f1d973d24372', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit647726739e1bb1c8f9d4883b25b63e16', 'loadClassLoader')); $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -42,14 +42,14 @@ class ComposerAutoloaderInit7a18ce01239c69086e27f1d973d24372 $includeFiles = require __DIR__ . '/autoload_files.php'; foreach ($includeFiles as $file) { - composerRequire7a18ce01239c69086e27f1d973d24372($file); + composerRequire647726739e1bb1c8f9d4883b25b63e16($file); } return $loader; } } -function composerRequire7a18ce01239c69086e27f1d973d24372($file) +function composerRequire647726739e1bb1c8f9d4883b25b63e16($file) { require $file; }