summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-05-14 13:05:33 +0200
committerDouwe Maan <douwe@gitlab.com>2015-05-14 13:05:33 +0200
commitcd52cef1c0898230cb684ee294bd7a6c5b2f226a (patch)
treeeb55e471d7d5e3d626f266b77f6931c708e145d4
parent910794bae5a91479f41468ebc345db680a33b20e (diff)
downloadgitlab-ce-cd52cef1c0898230cb684ee294bd7a6c5b2f226a.tar.gz
Fix reference links in dashboard activity and ATOM feeds.dashboard-references
-rw-r--r--CHANGELOG1
-rw-r--r--app/helpers/events_helper.rb4
-rw-r--r--app/helpers/gitlab_markdown_helper.rb14
-rw-r--r--app/views/events/_event_issue.atom.haml2
-rw-r--r--app/views/events/_event_merge_request.atom.haml2
-rw-r--r--app/views/events/_event_note.atom.haml2
-rw-r--r--app/views/events/_event_push.atom.haml2
-rw-r--r--app/views/events/event/_note.html.haml2
-rw-r--r--lib/gitlab/markdown.rb16
-rw-r--r--lib/redcarpet/render/gitlab_html.rb5
-rw-r--r--spec/helpers/gitlab_markdown_helper_spec.rb2
11 files changed, 30 insertions, 22 deletions
diff --git a/CHANGELOG b/CHANGELOG
index a06509c7c79..890c154fede 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -58,6 +58,7 @@ v 7.11.0 (unreleased)
- Fix automatic blocking of auto-created users from Active Directory.
- Call merge request web hook for each new commits (Arthur Gautier)
- Use SIGKILL by default in Sidekiq::MemoryKiller
+ - Fix reference links in dashboard activity and ATOM feeds.
v 7.10.2
- Fix CI links on MR page
diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index 18c75a8726b..e55d729fa4f 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -168,8 +168,8 @@ module EventsHelper
end
end
- def event_note(text)
- text = first_line_in_markdown(text, 150)
+ def event_note(text, options = {})
+ text = first_line_in_markdown(text, 150, options)
sanitize(text, tags: %w(a img b pre code p span))
end
diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb
index c309f890d96..846aded4bda 100644
--- a/app/helpers/gitlab_markdown_helper.rb
+++ b/app/helpers/gitlab_markdown_helper.rb
@@ -19,7 +19,7 @@ module GitlabMarkdownHelper
escape_once(body)
end
- gfm_body = gfm(escaped_body, @project, html_options)
+ gfm_body = gfm(escaped_body, {}, html_options)
gfm_body.gsub!(%r{<a.*?>.*?</a>}m) do |match|
"</a>#{match}#{link_to("", url, html_options)[0..-5]}" # "</a>".length +1
@@ -32,11 +32,13 @@ module GitlabMarkdownHelper
unless @markdown && options == @options
@options = options
- # see https://github.com/vmg/redcarpet#darling-i-packed-you-a-couple-renderers-for-lunch
- rend = Redcarpet::Render::GitlabHTML.new(self, user_color_scheme_class, {
+ options.merge!(
# Handled further down the line by Gitlab::Markdown::SanitizationFilter
escape_html: false
- }.merge(options))
+ )
+
+ # see https://github.com/vmg/redcarpet#darling-i-packed-you-a-couple-renderers-for-lunch
+ rend = Redcarpet::Render::GitlabHTML.new(self, user_color_scheme_class, options)
# see https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
@markdown = Redcarpet::Markdown.new(rend,
@@ -58,8 +60,8 @@ module GitlabMarkdownHelper
# as Markdown. HTML tags in the parsed output are not counted toward the
# +max_chars+ limit. If the length limit falls within a tag's contents, then
# the tag contents are truncated without removing the closing tag.
- def first_line_in_markdown(text, max_chars = nil)
- md = markdown(text).strip
+ def first_line_in_markdown(text, max_chars = nil, options = {})
+ md = markdown(text, options).strip
truncate_visible(md, max_chars || md.length) if md.present?
end
diff --git a/app/views/events/_event_issue.atom.haml b/app/views/events/_event_issue.atom.haml
index 0edb61ea246..4259f64c191 100644
--- a/app/views/events/_event_issue.atom.haml
+++ b/app/views/events/_event_issue.atom.haml
@@ -1,3 +1,3 @@
%div{xmlns: "http://www.w3.org/1999/xhtml"}
- if issue.description.present?
- = markdown(issue.description, xhtml: true)
+ = markdown(issue.description, xhtml: true, reference_only_path: false, project: issue.project)
diff --git a/app/views/events/_event_merge_request.atom.haml b/app/views/events/_event_merge_request.atom.haml
index 1a8b62abeab..e8ed13df783 100644
--- a/app/views/events/_event_merge_request.atom.haml
+++ b/app/views/events/_event_merge_request.atom.haml
@@ -1,3 +1,3 @@
%div{xmlns: "http://www.w3.org/1999/xhtml"}
- if merge_request.description.present?
- = markdown(merge_request.description, xhtml: true)
+ = markdown(merge_request.description, xhtml: true, reference_only_path: false, project: merge_request.project)
diff --git a/app/views/events/_event_note.atom.haml b/app/views/events/_event_note.atom.haml
index b49c331ccf2..cfbfba50202 100644
--- a/app/views/events/_event_note.atom.haml
+++ b/app/views/events/_event_note.atom.haml
@@ -1,2 +1,2 @@
%div{xmlns: "http://www.w3.org/1999/xhtml"}
- = markdown(note.note, xhtml: true)
+ = markdown(note.note, xhtml: true, reference_only_path: false, project: note.project)
diff --git a/app/views/events/_event_push.atom.haml b/app/views/events/_event_push.atom.haml
index 5d14def8f75..42762e04b51 100644
--- a/app/views/events/_event_push.atom.haml
+++ b/app/views/events/_event_push.atom.haml
@@ -6,7 +6,7 @@
%i
at
= commit[:timestamp].to_time.to_s(:short)
- %blockquote= markdown(escape_once(commit[:message]), xhtml: true)
+ %blockquote= markdown(escape_once(commit[:message]), xhtml: true, reference_only_path: false, project: note.project)
- if event.commits_count > 15
%p
%i
diff --git a/app/views/events/event/_note.html.haml b/app/views/events/event/_note.html.haml
index 4ef18c09060..07bec1697f5 100644
--- a/app/views/events/event/_note.html.haml
+++ b/app/views/events/event/_note.html.haml
@@ -14,7 +14,7 @@
.event-note
.md
%i.fa.fa-comment-o.event-note-icon
- = event_note(event.target.note)
+ = event_note(event.target.note, project: event.project)
- note = event.target
- if note.attachment.url
- if note.attachment.image?
diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb
index cc68416d5fc..4b45f239ce5 100644
--- a/lib/gitlab/markdown.rb
+++ b/lib/gitlab/markdown.rb
@@ -24,10 +24,10 @@ module Gitlab
# Public: Parse the provided text with GitLab-Flavored Markdown
#
# text - the source text
- # project - the project
+ # options - options
# html_options - extra options for the reference links as given to link_to
- def gfm(text, project = @project, html_options = {})
- gfm_with_options(text, {}, project, html_options)
+ def gfm(text, options = {}, html_options = {})
+ gfm_with_options(text, options, html_options)
end
# Public: Parse the provided text with GitLab-Flavored Markdown
@@ -38,7 +38,7 @@ module Gitlab
# :reference_only_path - Use relative path for reference links
# project - the project
# html_options - extra options for the reference links as given to link_to
- def gfm_with_options(text, options = {}, project = @project, html_options = {})
+ def gfm_with_options(text, options = {}, html_options = {})
return text if text.nil?
# Duplicate the string so we don't alter the original, then call to_str
@@ -48,7 +48,9 @@ module Gitlab
options.reverse_merge!(
xhtml: false,
- reference_only_path: true
+ reference_only_path: true,
+ project: @project,
+ current_user: current_user
)
pipeline = HTML::Pipeline.new(filters)
@@ -62,9 +64,9 @@ module Gitlab
no_header_anchors: options[:no_header_anchors],
# ReferenceFilter
- current_user: current_user,
+ current_user: options[:current_user],
only_path: options[:reference_only_path],
- project: project,
+ project: options[:project],
reference_class: html_options[:class],
# RelativeLinkFilter
diff --git a/lib/redcarpet/render/gitlab_html.rb b/lib/redcarpet/render/gitlab_html.rb
index 15eb6effe08..7dcecc2ecf6 100644
--- a/lib/redcarpet/render/gitlab_html.rb
+++ b/lib/redcarpet/render/gitlab_html.rb
@@ -7,9 +7,12 @@ class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML
def initialize(template, color_scheme, options = {})
@template = template
@color_scheme = color_scheme
- @project = @template.instance_variable_get("@project")
@options = options.dup
+ @options.reverse_merge!(
+ project: @template.instance_variable_get("@project")
+ )
+
super(options)
end
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index 7d0335c2320..9f3e8cf585e 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -21,7 +21,7 @@ describe GitlabMarkdownHelper do
describe "#gfm" do
it "should forward HTML options to links" do
- expect(gfm("Fixed in #{commit.id}", @project, class: 'foo')).
+ expect(gfm("Fixed in #{commit.id}", { project: @project }, class: 'foo')).
to have_selector('a.gfm.foo')
end