diff options
Diffstat (limited to 'lib/banzai/filter/upload_link_filter.rb')
-rw-r--r-- | lib/banzai/filter/upload_link_filter.rb | 19 |
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 |