diff options
author | Douwe Maan <douwe@gitlab.com> | 2015-04-04 14:23:32 +0200 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2015-04-04 14:23:32 +0200 |
commit | 45ca39e81bf857cdb58b1a184b8fab0e56c200f7 (patch) | |
tree | f6df41eab9f5f66ee4ff86196634bb331d9aff84 | |
parent | 124e7d5efc53cfacf6fb579328245e0619c73c9d (diff) | |
parent | 9925051ece7bd8758cda9179340b734f6f5c522f (diff) | |
download | gitlab-ce-45ca39e81bf857cdb58b1a184b8fab0e56c200f7.tar.gz |
Merge remote-tracking branch 'github.com/master'
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | app/controllers/help_controller.rb | 28 | ||||
-rw-r--r-- | app/views/help/show.html.haml | 2 | ||||
-rw-r--r-- | config/initializers/mime_types.rb | 1 | ||||
-rw-r--r-- | config/routes.rb | 2 | ||||
-rw-r--r-- | features/steps/dashboard/help.rb | 2 | ||||
-rw-r--r-- | spec/features/help_pages_spec.rb | 2 | ||||
-rw-r--r-- | spec/routing/routing_spec.rb | 38 |
8 files changed, 48 insertions, 28 deletions
diff --git a/CHANGELOG b/CHANGELOG index 7b410dfe85e..db3e5744b0e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -61,6 +61,7 @@ v 7.10.0 (unreleased) - Import GitHub, Bitbucket or GitLab.com projects owned by authenticated user into current namespace. - Project labels are now available over the API under the "tag_list" field (Cristian Medina) - Fixed link paths for HTTP and SSH on the admin project view (Jeremy Maziarz) + - Fix and improve help rendering (Sullivan Sénéchal) v 7.9.2 diff --git a/app/controllers/help_controller.rb b/app/controllers/help_controller.rb index c4d620d87b1..fbd9e67e6df 100644 --- a/app/controllers/help_controller.rb +++ b/app/controllers/help_controller.rb @@ -3,17 +3,35 @@ class HelpController < ApplicationController end def show - @category = params[:category] - @file = params[:file] + @filepath = params[:filepath] + @format = params[:format] - if File.exists?(Rails.root.join('doc', @category, @file + '.md')) - render 'show' + respond_to do |format| + format.md { render_doc } + format.all { send_file_data } + end + end + + def shortcuts + end + + private + + def render_doc + if File.exists?(Rails.root.join('doc', @filepath + '.md')) + render 'show.html.haml' else not_found! end end - def shortcuts + def send_file_data + path = Rails.root.join('doc', "#{@filepath}.#{@format}") + if File.exists?(path) + send_file(path, disposition: 'inline') + else + head :not_found + end end def ui diff --git a/app/views/help/show.html.haml b/app/views/help/show.html.haml index eca34dbff06..f22aa92caf7 100644 --- a/app/views/help/show.html.haml +++ b/app/views/help/show.html.haml @@ -1,2 +1,2 @@ .documentation.wiki - = markdown File.read(Rails.root.join('doc', @category, @file + '.md')).gsub("$your_email", current_user.email) + = markdown File.read(Rails.root.join('doc', @filepath + '.md')).gsub("$your_email", current_user.email) diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb index 8f8bef42bef..6978ad93024 100644 --- a/config/initializers/mime_types.rb +++ b/config/initializers/mime_types.rb @@ -6,3 +6,4 @@ Mime::Type.register_alias "text/plain", :diff Mime::Type.register_alias "text/plain", :patch +Mime::Type.register_alias 'text/html', :md diff --git a/config/routes.rb b/config/routes.rb index 388858d2670..c1b85b025b5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -39,9 +39,9 @@ Gitlab::Application.routes.draw do # Help get 'help' => 'help#index' - get 'help/:category/:file' => 'help#show', as: :help_page get 'help/shortcuts' get 'help/ui' => 'help#ui' + get 'help/:filepath' => 'help#show', as: :help_page, constraints: { filepath: /[^\.]+/ } # # Global snippets diff --git a/features/steps/dashboard/help.rb b/features/steps/dashboard/help.rb index ef433c57c6e..fa52e391f05 100644 --- a/features/steps/dashboard/help.rb +++ b/features/steps/dashboard/help.rb @@ -8,7 +8,7 @@ class Spinach::Features::DashboardHelp < Spinach::FeatureSteps end step 'I visit the "Rake Tasks" help page' do - visit help_page_path("raketasks", "maintenance") + visit help_page_path('raketasks/maintenance', format: 'md') end step 'I should see "Rake Tasks" page markdown rendered' do diff --git a/spec/features/help_pages_spec.rb b/spec/features/help_pages_spec.rb index 41088ce8271..28423eb8caa 100644 --- a/spec/features/help_pages_spec.rb +++ b/spec/features/help_pages_spec.rb @@ -6,7 +6,7 @@ describe 'Help Pages', feature: true do login_as :user end it 'replace the variable $your_email with the email of the user' do - visit help_page_path(category: 'ssh', file: 'README.md') + visit help_page_path(filepath: 'ssh/README', format: 'md') expect(page).to have_content("ssh-keygen -t rsa -C \"#{@user.email}\"") end end diff --git a/spec/routing/routing_spec.rb b/spec/routing/routing_spec.rb index d4915b51952..f5db548f97c 100644 --- a/spec/routing/routing_spec.rb +++ b/spec/routing/routing_spec.rb @@ -73,41 +73,41 @@ end # help_markdown GET /help/markdown(.:format) help#markdown # help_ssh GET /help/ssh(.:format) help#ssh # help_raketasks GET /help/raketasks(.:format) help#raketasks -describe HelpController, "routing" do - it "to #index" do - expect(get("/help")).to route_to('help#index') +describe HelpController, 'routing' do + it 'to #index' do + expect(get('/help')).to route_to('help#index') end - it "to #permissions" do - expect(get("/help/permissions/permissions")).to route_to('help#show', category: "permissions", file: "permissions") + it 'to #permissions' do + expect(get('/help/permissions/permissions')).to route_to('help#show', filepath: 'permissions/permissions') end - it "to #workflow" do - expect(get("/help/workflow/README")).to route_to('help#show', category: "workflow", file: "README") + it 'to #workflow' do + expect(get('/help/workflow/README')).to route_to('help#show', filepath: 'workflow/README') end - it "to #api" do - expect(get("/help/api/README")).to route_to('help#show', category: "api", file: "README") + it 'to #api' do + expect(get('/help/api/README')).to route_to('help#show', filepath: 'api/README') end - it "to #web_hooks" do - expect(get("/help/web_hooks/web_hooks")).to route_to('help#show', category: "web_hooks", file: "web_hooks") + it 'to #web_hooks' do + expect(get('/help/web_hooks/web_hooks')).to route_to('help#show', filepath: 'web_hooks/web_hooks') end - it "to #system_hooks" do - expect(get("/help/system_hooks/system_hooks")).to route_to('help#show', category: "system_hooks", file: "system_hooks") + it 'to #system_hooks' do + expect(get('/help/system_hooks/system_hooks')).to route_to('help#show', filepath: 'system_hooks/system_hooks') end - it "to #markdown" do - expect(get("/help/markdown/markdown")).to route_to('help#show',category: "markdown", file: "markdown") + it 'to #markdown' do + expect(get('/help/markdown/markdown')).to route_to('help#show',filepath: 'markdown/markdown') end - it "to #ssh" do - expect(get("/help/ssh/README")).to route_to('help#show', category: "ssh", file: "README") + it 'to #ssh' do + expect(get('/help/ssh/README')).to route_to('help#show', filepath: 'ssh/README') end - it "to #raketasks" do - expect(get("/help/raketasks/README")).to route_to('help#show', category: "raketasks", file: "README") + it 'to #raketasks' do + expect(get('/help/raketasks/README')).to route_to('help#show', filepath: 'raketasks/README') end end |