mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-13 14:46:05 +10:00
Remove overridden link_to helper
The purpose for this override is now handled by `ExternalLinkFilter`.
This commit is contained in:
@@ -214,39 +214,6 @@ module ApplicationHelper
|
||||
Gitlab::MarkupHelper.asciidoc?(filename)
|
||||
end
|
||||
|
||||
# Overrides ActionView::Helpers::UrlHelper#link_to to add `rel="nofollow"` to
|
||||
# external links
|
||||
def link_to(name = nil, options = nil, html_options = {})
|
||||
if options.kind_of?(String)
|
||||
if !options.start_with?('#', '/')
|
||||
html_options = add_nofollow(options, html_options)
|
||||
end
|
||||
end
|
||||
|
||||
super
|
||||
end
|
||||
|
||||
# Add `"rel=nofollow"` to external links
|
||||
#
|
||||
# link - String link to check
|
||||
# html_options - Hash of `html_options` passed to `link_to`
|
||||
#
|
||||
# Returns `html_options`, adding `rel: nofollow` for external links
|
||||
def add_nofollow(link, html_options = {})
|
||||
begin
|
||||
uri = URI(link)
|
||||
|
||||
if uri && uri.absolute? && uri.host != Gitlab.config.gitlab.host
|
||||
rel = html_options.fetch(:rel, '')
|
||||
html_options[:rel] = (rel + ' nofollow').strip
|
||||
end
|
||||
rescue URI::Error
|
||||
# noop
|
||||
end
|
||||
|
||||
html_options
|
||||
end
|
||||
|
||||
def promo_host
|
||||
'about.gitlab.com'
|
||||
end
|
||||
|
||||
@@ -203,43 +203,6 @@ describe ApplicationHelper do
|
||||
end
|
||||
end
|
||||
|
||||
describe 'link_to' do
|
||||
it 'should not include rel=nofollow for internal links' do
|
||||
expect(link_to('Home', root_path)).to eq('<a href="/">Home</a>')
|
||||
end
|
||||
|
||||
it 'should include rel=nofollow for external links' do
|
||||
expect(link_to('Example', 'http://www.example.com')).
|
||||
to eq '<a href="http://www.example.com" rel="nofollow">Example</a>'
|
||||
end
|
||||
|
||||
it 'should include rel=nofollow for external links and honor existing html_options' do
|
||||
expect(link_to('Example', 'http://www.example.com', class: 'toggle', data: {toggle: 'dropdown'}))
|
||||
.to eq '<a class="toggle" data-toggle="dropdown" href="http://www.example.com" rel="nofollow">Example</a>'
|
||||
end
|
||||
|
||||
it 'should include rel=nofollow for external links and preserve other rel values' do
|
||||
expect(link_to('Example', 'http://www.example.com', rel: 'noreferrer'))
|
||||
.to eq '<a href="http://www.example.com" rel="noreferrer nofollow">Example</a>'
|
||||
end
|
||||
|
||||
it 'should not include rel=nofollow for external links on the same host as GitLab' do
|
||||
expect(Gitlab.config.gitlab).to receive(:host).and_return('example.foo')
|
||||
expect(link_to('Example', 'http://example.foo/bar')).
|
||||
to eq '<a href="http://example.foo/bar">Example</a>'
|
||||
end
|
||||
|
||||
it 'should not raise an error when given a bad URI' do
|
||||
expect { link_to('default', 'if real=1 RANDOM; if real>1 IDLHS; if real>500 LHS') }.
|
||||
not_to raise_error
|
||||
end
|
||||
|
||||
it 'should not raise an error when given a bad mailto URL' do
|
||||
expect { link_to('email', 'mailto://foo.bar@example.es?subject=Subject%20Line') }.
|
||||
not_to raise_error
|
||||
end
|
||||
end
|
||||
|
||||
describe 'render_markup' do
|
||||
let(:content) { 'Noël' }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user