FIX: secure_media stripping on lightboxes, non-image links (#11121)

- Fixes stripping of lightboxes with empty srcset attribute
- Does not fail when email has links with secure media URLs but no child image elements
This commit is contained in:
Penar Musaraj
2020-11-04 15:45:50 -05:00
committed by GitHub
parent 3397e0e38b
commit c1f3bd6a1c
2 changed files with 35 additions and 4 deletions

View File

@@ -414,12 +414,18 @@ module PrettyText
target = non_image_media ? a.parent : a
next if target.to_s.include?('stripped-secure-view-media')
next if a.css('img[src]').empty? && !non_image_media
if a.classes.include?('lightbox')
# we are using the first image from the srcset here so we get the
# optimized image instead of the possibly huge original
img = a.css('img[src]').first
srcset = img.attributes['srcset'].value
url = srcset.split(',').first
srcset = img&.attributes['srcset']&.value
if srcset
# if available, use the first image from the srcset here
# so we get the optimized image instead of the possibly huge original
url = srcset.split(',').first
else
url = img['src']
end
a.add_next_sibling secure_media_placeholder(doc, url, width: img['width'], height: img['height'])
a.remove
else