diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 03053b705..d2a037589 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -5,12 +5,11 @@ = "diaspora " = "- #{User.first.real_name}" if User.first %meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/ - %meta{"http-equiv"=> "X-UA-Compatible", :content =>"chrome=1" } = stylesheet_link_tag "blueprint/screen", :media => 'screen' = stylesheet_link_tag "application" /= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" - = javascript_include_tag 'jquery142', 'rails', 'view', 'publisher', 'http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js', 'google_a' + = javascript_include_tag 'jquery142', 'rails', 'view', 'publisher', 'google_a' = javascript_include_tag 'tiny_mce/tiny_mce', 'jquery.infieldlabel' = render 'js/websocket_js' diff --git a/config.ru b/config.ru index 10d1ee578..84859db97 100644 --- a/config.ru +++ b/config.ru @@ -2,4 +2,6 @@ require ::File.expand_path('../config/environment', __FILE__) #use Rack::FiberPool +require 'lib/chrome_frame' +use Rack::ChromeFrame run Diaspora::Application diff --git a/lib/chrome_frame.rb b/lib/chrome_frame.rb new file mode 100644 index 000000000..eeba58312 --- /dev/null +++ b/lib/chrome_frame.rb @@ -0,0 +1,63 @@ +module Rack + class ChromeFrame + + def initialize(app, options={}) + @app = app + @options = options + end + + def call(env) + + if env['HTTP_USER_AGENT'] =~ /MSIE/ + if env['HTTP_USER_AGENT'] =~ /chromeframe/ + status, headers, response = @app.call(env) + new_body = insert_tag(build_response_body(response)) + new_headers = recalculate_body_length(headers, new_body) + return [status, new_headers, new_body] + elsif @options[:minimum].nil? or ie_version(env['HTTP_USER_AGENT']) < @options[:minimum] + html = <<-HTML + + +
+ +