summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2015-09-23 17:20:37 +0000
committerRobert Speicher <robert@gitlab.com>2015-09-23 17:20:37 +0000
commit0175769aa88704dac400fb811d8d6433d29b2d16 (patch)
treece84632e88b0e064688ca5d35b40a3988942c270
parent3f2c0e94dfbba060ea2c35fc73a2d07bf4988ae3 (diff)
parenta7b0ee3fd17d4e2afd427606b002d3a9f7c6673d (diff)
downloadgitlab-ce-0175769aa88704dac400fb811d8d6433d29b2d16.tar.gz
Merge branch 'fix-markdown-truncation-removing-links' into 'master'
Fix cases where Markdown did not render links in activity feed HTML would be stripped in `truncate_if_block` when a comment had multiple lines and the first wasn't long enough to be truncated. The use of `node.content` would strip all HTML tags. Using `node.inner_html` retains these tags and puts the "..." in between paragraph tags. Closes #2586 See merge request !1401
-rw-r--r--CHANGELOG1
-rw-r--r--app/helpers/gitlab_markdown_helper.rb2
-rw-r--r--spec/helpers/gitlab_markdown_helper_spec.rb20
3 files changed, 22 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG
index db5ef402ad5..1a3b102f4e1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,7 @@ v 8.1.0 (unreleased)
- Automatically enable CI when push .gitlab-ci.yml file to repository
v 8.0.1
+ - Fix cases where Markdown did not render links in activity feed (Stan Hu)
- Improve CI migration procedure and documentation
- Make commit graphs responsive to window width changes (Stan Hu)
diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb
index 78bf25f55e7..153a44870f6 100644
--- a/app/helpers/gitlab_markdown_helper.rb
+++ b/app/helpers/gitlab_markdown_helper.rb
@@ -165,7 +165,7 @@ module GitlabMarkdownHelper
# and return true. Otherwise return false.
def truncate_if_block(node, truncated)
if node.element? && node.description.block? && !truncated
- node.content = "#{node.content}..." if node.next_sibling
+ node.inner_html = "#{node.inner_html}..." if node.next_sibling
true
else
truncated
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index b8101ae77ec..be0e0c747b7 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -146,4 +146,24 @@ describe GitlabMarkdownHelper do
expect(random_markdown_tip).to eq 'Random tip'
end
end
+
+ describe '#first_line_in_markdown' do
+ let(:text) { "@#{user.username}, can you look at this?\nHello world\n"}
+
+ it 'truncates Markdown properly' do
+ actual = first_line_in_markdown(text, 100, project: project)
+
+ doc = Nokogiri::HTML.parse(actual)
+
+ # Make sure we didn't create invalid markup
+ expect(doc.errors).to be_empty
+
+ # Leading user link
+ expect(doc.css('a').length).to eq(1)
+ expect(doc.css('a')[0].attr('href')).to eq user_path(user)
+ expect(doc.css('a')[0].text).to eq "@#{user.username}"
+
+ expect(doc.content).to eq "@#{user.username}, can you look at this?..."
+ end
+ end
end