diff --git a/Gemfile.lock b/Gemfile.lock index 517466f3d1a..a9b71fec133 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -241,7 +241,7 @@ GEM html-pipeline (1.11.0) activesupport (>= 2) nokogiri (~> 1.4) - html-pipeline-gitlab (0.1.4) + html-pipeline-gitlab (0.1.5) actionpack (~> 4) gitlab_emoji (~> 0.0.1) html-pipeline (~> 1.11.0) diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb index d3e9bafb06c..ddcce7557a0 100644 --- a/lib/gitlab/markdown.rb +++ b/lib/gitlab/markdown.rb @@ -78,9 +78,14 @@ module Gitlab HTML::Pipeline::Gitlab::GitlabEmojiFilter ] + markdown_context = { + asset_root: Gitlab.config.gitlab.url, + asset_host: Gitlab::Application.config.asset_host + } + markdown_pipeline = HTML::Pipeline::Gitlab.new(filters).pipeline - result = markdown_pipeline.call(text) + result = markdown_pipeline.call(text, markdown_context) text = result[:output].to_html(save_with: 0) allowed_attributes = ActionView::Base.sanitized_allowed_attributes diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb index 15033f07432..26908abc30a 100644 --- a/spec/helpers/gitlab_markdown_helper_spec.rb +++ b/spec/helpers/gitlab_markdown_helper_spec.rb @@ -576,9 +576,21 @@ describe GitlabMarkdownHelper do end it "should generate absolute urls for emoji" do - markdown(":smile:").should include("src=\"#{url_helper('emoji/smile')}") + markdown(":smile:").should include("src=\"http://localhost/assets/emoji/smile.png") end + it "should generate absolute urls for emoji if relative url is present" do + Gitlab.config.gitlab.stub(:url).and_return('http://localhost/gitlab/root') + markdown(":smile:").should include("src=\"http://localhost/gitlab/root/assets/emoji/smile.png") + end + + it "should generate absolute urls for emoji if asset_host is present" do + Gitlab::Application.config.stub(:asset_host).and_return("https://cdn.example.com") + ActionView::Base.any_instance.stub_chain(:config, :asset_host).and_return("https://cdn.example.com") + markdown(":smile:").should include("src=\"https://cdn.example.com/assets/emoji/smile.png") + end + + it "should handle relative urls for a file in master" do actual = "[GitLab API doc](doc/api/README.md)\n" expected = "

GitLab API doc

\n"