From 8d84b94bc70716ade8776d3f49f72e7ef34aef3b Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Thu, 6 Oct 2016 19:01:48 -0600 Subject: [PATCH] Some cleanup and a working test --- system/src/Grav/Common/Helpers/Excerpts.php | 37 ++++++++++++++++++- .../unit/Grav/Common/Helpers/ExcerptsTest.php | 4 +- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/system/src/Grav/Common/Helpers/Excerpts.php b/system/src/Grav/Common/Helpers/Excerpts.php index 1cb2d5471..c1127f688 100644 --- a/system/src/Grav/Common/Helpers/Excerpts.php +++ b/system/src/Grav/Common/Helpers/Excerpts.php @@ -25,7 +25,19 @@ class Excerpts public static function processImageHtml($html, $page) { $excerpt = static::getExcerptFromHtml($html, 'img'); + + $original_src = $excerpt['element']['attributes']['src']; + $excerpt['element']['attributes']['href'] = $original_src; + + $excerpt = static::processLinkExcerpt($excerpt, $page, 'image'); + + $excerpt['element']['attributes']['src'] = $excerpt['element']['attributes']['href']; + unset ($excerpt['element']['attributes']['href']); + $excerpt = static::processImageExcerpt($excerpt, $page); + + $excerpt['element']['attributes']['data-src'] = $original_src; + $html = static::getHtmlFromExcerpt($excerpt); return $html; @@ -61,6 +73,12 @@ class Excerpts return $excerpt; } + /** + * Rebuild HTML tag from an excerpt array + * + * @param $excerpt + * @return string + */ public static function getHtmlFromExcerpt($excerpt) { $element = $excerpt['element']; @@ -86,6 +104,14 @@ class Excerpts return $html; } + /** + * Process a Link excerpt + * + * @param $excerpt + * @param $page + * @param string $type + * @return mixed + */ public static function processLinkExcerpt($excerpt, $page, $type = 'link') { $url = $excerpt['element']['attributes']['href']; @@ -151,6 +177,13 @@ class Excerpts return $excerpt; } + /** + * Process an image excerpt + * + * @param $excerpt + * @param $page + * @return mixed + */ public static function processImageExcerpt($excerpt, $page) { $url = $excerpt['element']['attributes']['src']; @@ -208,8 +241,8 @@ class Excerpts $medium->urlHash($url_parts['fragment']); } - $alt = $excerpt['element']['attributes']['alt'] ?: ''; - $title = $excerpt['element']['attributes']['title'] ?: ''; + $alt = isset($excerpt['element']['attributes']['alt']) ? $excerpt['element']['attributes']['alt'] : ''; + $title = isset($excerpt['element']['attributes']['title']) ? $excerpt['element']['attributes']['title'] : ''; $class = isset($excerpt['element']['attributes']['class']) ? $excerpt['element']['attributes']['class'] : ''; $id = isset($excerpt['element']['attributes']['id']) ? $excerpt['element']['attributes']['id'] : ''; diff --git a/tests/unit/Grav/Common/Helpers/ExcerptsTest.php b/tests/unit/Grav/Common/Helpers/ExcerptsTest.php index da3b6921b..dd0fde834 100644 --- a/tests/unit/Grav/Common/Helpers/ExcerptsTest.php +++ b/tests/unit/Grav/Common/Helpers/ExcerptsTest.php @@ -76,9 +76,7 @@ class ExcerptsTest extends \Codeception\TestCase\Test public function testProcessImageHtml() { - - - $this->assertSame('', + $this->assertRegexp('|Sample Image|', Excerpts::processImageHtml('Sample Image', $this->page)); }