diff options
Diffstat (limited to 'lib/banzai/filter/image_link_filter.rb')
-rw-r--r-- | lib/banzai/filter/image_link_filter.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/banzai/filter/image_link_filter.rb b/lib/banzai/filter/image_link_filter.rb index ed0a01e6277..44acc7805b4 100644 --- a/lib/banzai/filter/image_link_filter.rb +++ b/lib/banzai/filter/image_link_filter.rb @@ -8,11 +8,17 @@ module Banzai # Find every image that isn't already wrapped in an `a` tag, create # a new node (a link to the image source), copy the image as a child # of the anchor, and then replace the img with the link-wrapped version. + # + # If `link_replaces_image` context parameter is provided, the image is going + # to be replaced with a link to an image. def call doc.xpath('descendant-or-self::img[not(ancestor::a)]').each do |img| + link_replaces_image = !!context[:link_replaces_image] + html_class = link_replaces_image ? 'with-attachment-icon' : 'no-attachment-icon' + link = doc.document.create_element( 'a', - class: 'no-attachment-icon', + class: html_class, href: img['data-src'] || img['src'], target: '_blank', rel: 'noopener noreferrer' @@ -21,7 +27,11 @@ module Banzai # make sure the original non-proxied src carries over to the link link['data-canonical-src'] = img['data-canonical-src'] if img['data-canonical-src'] - link.children = img.clone + link.children = if link_replaces_image + img['alt'] || img['data-src'] || img['src'] + else + img.clone + end img.replace(link) end |