Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/banzai/filter/image_link_filter.rb')
-rw-r--r--lib/banzai/filter/image_link_filter.rb14
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