summaryrefslogtreecommitdiff
path: root/lib/banzai/filter/upload_link_filter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/banzai/filter/upload_link_filter.rb')
-rw-r--r--lib/banzai/filter/upload_link_filter.rb19
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/banzai/filter/upload_link_filter.rb b/lib/banzai/filter/upload_link_filter.rb
index 2572481c8fc..b110c59a4f1 100644
--- a/lib/banzai/filter/upload_link_filter.rb
+++ b/lib/banzai/filter/upload_link_filter.rb
@@ -45,13 +45,15 @@ module Banzai
return
end
- html_attr.value =
+ path =
if context[:only_path]
path
else
Addressable::URI.join(Gitlab.config.gitlab.base_url, path).to_s
end
+ replace_html_attr_value(html_attr, path)
+
if html_attr.name == 'href'
html_attr.parent.set_attribute('data-link', 'true')
end
@@ -59,6 +61,21 @@ module Banzai
html_attr.parent.add_class('gfm')
end
+ def replace_html_attr_value(html_attr, path)
+ if path != html_attr.value
+ preserve_original_link(html_attr, html_attr.parent)
+ end
+
+ html_attr.value = path
+ end
+
+ def preserve_original_link(html_attr, node)
+ return if html_attr.blank?
+ return if node.value?('data-canonical-src')
+
+ node.set_attribute('data-canonical-src', html_attr.value)
+ end
+
def group
context[:group]
end