From 31e59219891cf755c9a71e145385af6da9d290b9 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Tue, 16 Jan 2018 16:07:47 +0000 Subject: Fix links to uploaded files on wiki pages --- changelogs/unreleased/42031-fix-links-to-uploads-in-wikis.yml | 5 +++++ lib/banzai/filter/wiki_link_filter/rewriter.rb | 4 ++++ spec/lib/banzai/filter/wiki_link_filter_spec.rb | 8 ++++++++ 3 files changed, 17 insertions(+) create mode 100644 changelogs/unreleased/42031-fix-links-to-uploads-in-wikis.yml diff --git a/changelogs/unreleased/42031-fix-links-to-uploads-in-wikis.yml b/changelogs/unreleased/42031-fix-links-to-uploads-in-wikis.yml new file mode 100644 index 00000000000..027cb414f23 --- /dev/null +++ b/changelogs/unreleased/42031-fix-links-to-uploads-in-wikis.yml @@ -0,0 +1,5 @@ +--- +title: Fix links to uploaded files on wiki pages +merge_request: 16499 +author: +type: fixed diff --git a/lib/banzai/filter/wiki_link_filter/rewriter.rb b/lib/banzai/filter/wiki_link_filter/rewriter.rb index e7a1ec8457d..072d24e5a11 100644 --- a/lib/banzai/filter/wiki_link_filter/rewriter.rb +++ b/lib/banzai/filter/wiki_link_filter/rewriter.rb @@ -9,6 +9,10 @@ module Banzai end def apply_rules + # Special case: relative URLs beginning with `/uploads/` refer to + # user-uploaded files and will be handled elsewhere. + return @uri.to_s if @uri.relative? && @uri.path.starts_with?('/uploads/') + apply_file_link_rules! apply_hierarchical_link_rules! apply_relative_link_rules! diff --git a/spec/lib/banzai/filter/wiki_link_filter_spec.rb b/spec/lib/banzai/filter/wiki_link_filter_spec.rb index 9596f004052..50d053011b3 100644 --- a/spec/lib/banzai/filter/wiki_link_filter_spec.rb +++ b/spec/lib/banzai/filter/wiki_link_filter_spec.rb @@ -10,15 +10,23 @@ describe Banzai::Filter::WikiLinkFilter do it "doesn't rewrite absolute links" do filtered_link = filter("Link", project_wiki: wiki).children[0] + expect(filtered_link.attribute('href').value).to eq('http://example.com:8000/') end + it "doesn't rewrite links to project uploads" do + filtered_link = filter("Link", project_wiki: wiki).children[0] + + expect(filtered_link.attribute('href').value).to eq('/uploads/a.test') + end + describe "invalid links" do invalid_links = ["http://:8080", "http://", "http://:8080/path"] invalid_links.each do |invalid_link| it "doesn't rewrite invalid invalid_links like #{invalid_link}" do filtered_link = filter("Link", project_wiki: wiki).children[0] + expect(filtered_link.attribute('href').value).to eq(invalid_link) end end -- cgit v1.2.3