From aeeaeb1eaeeb2b702634a34d864d25721b0066cb Mon Sep 17 00:00:00 2001 From: bootstraponline Date: Tue, 29 May 2012 16:32:39 -0600 Subject: [PATCH 1/2] Fall back to old edit mode for browsers that are not officially supported by Ace. --- gollum.gemspec | 1 + lib/gollum/frontend/app.rb | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gollum.gemspec b/gollum.gemspec index 86751793..cd03bc2c 100644 --- a/gollum.gemspec +++ b/gollum.gemspec @@ -32,6 +32,7 @@ Gem::Specification.new do |s| s.add_dependency('mustache', [">= 0.11.2", "< 1.0.0"]) s.add_dependency('sanitize', "~> 2.0.0") s.add_dependency('nokogiri', "~> 1.4") + s.add_dependency('useragent', "~> 0.4.9") s.add_development_dependency('RedCloth') s.add_development_dependency('mocha') diff --git a/lib/gollum/frontend/app.rb b/lib/gollum/frontend/app.rb index ff41b692..d149f8c3 100644 --- a/lib/gollum/frontend/app.rb +++ b/lib/gollum/frontend/app.rb @@ -2,6 +2,7 @@ require 'cgi' require 'sinatra' require 'gollum' require 'mustache/sinatra' +require 'useragent' require 'gollum/frontend/views/layout' require 'gollum/frontend/views/editable' @@ -25,6 +26,14 @@ module Precious dir = File.dirname(File.expand_path(__FILE__)) + # Detect unsupported browsers. + @@supported_browsers = ['Firefox', 'Chrome', 'Safari'] + + def is_supported( user_agent ) + browser = UserAgent.parse( user_agent ).browser + @@supported_browsers.include? browser + end + # We want to serve public assets for now set :public_folder, "#{dir}/public/gollum" set :static, true @@ -67,7 +76,7 @@ module Precious @name = params[:splat].first wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options) if page = wiki.page(@name) - if page.format.to_s.include?('markdown') + if page.format.to_s.include?('markdown') && is_supported( request.user_agent ) redirect '/livepreview/index.html?page=' + encodeURIComponent(@name) else @page = page From e1b28f0805d25dca03a54c8624f5700157cc1f8b Mon Sep 17 00:00:00 2001 From: bootstraponline Date: Tue, 29 May 2012 18:28:19 -0600 Subject: [PATCH 2/2] Rename is_supported to supported_useragent?. --- lib/gollum/frontend/app.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/gollum/frontend/app.rb b/lib/gollum/frontend/app.rb index d149f8c3..d2261355 100644 --- a/lib/gollum/frontend/app.rb +++ b/lib/gollum/frontend/app.rb @@ -29,7 +29,7 @@ module Precious # Detect unsupported browsers. @@supported_browsers = ['Firefox', 'Chrome', 'Safari'] - def is_supported( user_agent ) + def supported_useragent?( user_agent ) browser = UserAgent.parse( user_agent ).browser @@supported_browsers.include? browser end @@ -76,7 +76,7 @@ module Precious @name = params[:splat].first wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options) if page = wiki.page(@name) - if page.format.to_s.include?('markdown') && is_supported( request.user_agent ) + if page.format.to_s.include?('markdown') && supported_useragent?(request.user_agent) redirect '/livepreview/index.html?page=' + encodeURIComponent(@name) else @page = page