Always use full-app mode for user-enabled docs

Fixes #209.
pull/220/head
Thibaut 10 years ago
parent 10fc8cf779
commit 6ce3aa2667

@ -98,15 +98,19 @@ class App < Sinatra::Application
browser.ie? && %w(6 7 8 9).include?(browser.version) browser.ie? && %w(6 7 8 9).include?(browser.version)
end end
def doc_index_urls def docs
cookie = cookies[:docs] @docs ||= begin
cookie = cookies[:docs]
docs = if cookie.nil? || cookie.empty?
settings.default_docs docs = if cookie.nil? || cookie.empty?
else settings.default_docs
cookie.split('/') else
cookie.split('/')
end
end end
end
def doc_index_urls
docs.inject [] do |result, slug| docs.inject [] do |result, slug|
if doc = settings.docs[slug] if doc = settings.docs[slug]
result << File.join('', settings.docs_prefix, doc['index_path']) + "?#{doc['mtime']}" result << File.join('', settings.docs_prefix, doc['index_path']) + "?#{doc['mtime']}"
@ -212,6 +216,8 @@ class App < Sinatra::Application
redirect "/#{doc}#{type}/#{query_string_for_redirection}" redirect "/#{doc}#{type}/#{query_string_for_redirection}"
elsif rest.length > 1 && rest.end_with?('/') elsif rest.length > 1 && rest.end_with?('/')
redirect "/#{doc}#{type}#{rest[0...-1]}#{query_string_for_redirection}" redirect "/#{doc}#{type}#{rest[0...-1]}#{query_string_for_redirection}"
elsif docs.include?(doc) && browser.modern?
redirect "/##{request.path}", 302
else else
erb :other erb :other
end end

@ -95,8 +95,22 @@ class AppTest < MiniTest::Spec
end end
describe "/[doc]" do describe "/[doc]" do
it "works when the doc exists" do it "renders when the doc exists and isn't enabled" do
get '/html/' set_cookie('docs=css')
get '/html/', {}, 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0'
assert last_response.ok?
end
it "redirects to root when the doc exists and is enabled" do
set_cookie('docs=html')
get '/html/', {}, 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0'
assert last_response.redirect?
assert_equal 'http://example.org/#/html/', last_response['Location']
end
it "renders when the doc exists and is enabled, and the request is from Googlebot" do
set_cookie('docs=html')
get '/html/', {}, 'HTTP_USER_AGENT' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
assert last_response.ok? assert last_response.ok?
end end

Loading…
Cancel
Save