Fix URL rewritting in the Help section
Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
parent
507abdb773
commit
633538151b
4 changed files with 37 additions and 16 deletions
|
@ -7,8 +7,10 @@ class HelpController < ApplicationController
|
|||
@help_index = File.read(Rails.root.join('doc', 'README.md'))
|
||||
|
||||
# Prefix Markdown links with `help/` unless they are external links
|
||||
# See http://rubular.com/r/MioSrVLK3S
|
||||
@help_index.gsub!(%r{(\]\()(?!.+://)([^\)\(]+\))}, '\1/help/\2')
|
||||
# See http://rubular.com/r/X3baHTbPO2
|
||||
@help_index.gsub!(%r{(?<delim>\]\()(?!.+://)(?!/)(?<link>[^\)\(]+\))}) do
|
||||
"#{$~[:delim]}#{Gitlab.config.gitlab.relative_url_root}/help/#{$~[:link]}"
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Don't change relative URLs to absolute URLs in the Help page
|
||||
merge_request:
|
||||
author:
|
|
@ -8,26 +8,32 @@ describe HelpController do
|
|||
end
|
||||
|
||||
describe 'GET #index' do
|
||||
context 'when url prefixed without /help/' do
|
||||
it 'has correct url prefix' do
|
||||
stub_readme("[API](api/README.md)")
|
||||
context 'with absolute url' do
|
||||
it 'keeps the URL absolute' do
|
||||
stub_readme("[API](/api/README.md)")
|
||||
|
||||
get :index
|
||||
|
||||
expect(assigns[:help_index]).to eq '[API](/api/README.md)'
|
||||
end
|
||||
end
|
||||
|
||||
context 'with relative url' do
|
||||
it 'prefixes it with /help/' do
|
||||
stub_readme("[API](api/README.md)")
|
||||
|
||||
get :index
|
||||
|
||||
expect(assigns[:help_index]).to eq '[API](/help/api/README.md)'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when url prefixed with help' do
|
||||
it 'will be an absolute path' do
|
||||
stub_readme("[API](helpful_hints/README.md)")
|
||||
get :index
|
||||
expect(assigns[:help_index]).to eq '[API](/help/helpful_hints/README.md)'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when url is an external link' do
|
||||
it 'will not be changed' do
|
||||
it 'does not change it' do
|
||||
stub_readme("[external](https://some.external.link)")
|
||||
|
||||
get :index
|
||||
|
||||
expect(assigns[:help_index]).to eq '[external](https://some.external.link)'
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,9 +12,9 @@ describe 'Help Pages', feature: true do
|
|||
end
|
||||
|
||||
describe 'Get the main help page' do
|
||||
shared_examples_for 'help page' do
|
||||
shared_examples_for 'help page' do |prefix: ''|
|
||||
it 'prefixes links correctly' do
|
||||
expect(page).to have_selector('div.documentation-index > ul a[href="/help/api/README.md"]')
|
||||
expect(page).to have_selector(%(div.documentation-index > ul a[href="#{prefix}/help/api/README.md"]))
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -33,5 +33,14 @@ describe 'Help Pages', feature: true do
|
|||
|
||||
it_behaves_like 'help page'
|
||||
end
|
||||
|
||||
context 'with a relative installation' do
|
||||
before do
|
||||
stub_config_setting(relative_url_root: '/gitlab')
|
||||
visit help_path
|
||||
end
|
||||
|
||||
it_behaves_like 'help page', prefix: '/gitlab'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue