From a656772622e91992b051f3cc12d99fe54132395b Mon Sep 17 00:00:00 2001 From: Jacques Distler Date: Thu, 8 Mar 2007 21:57:21 -0600 Subject: [PATCH] Deal with clients that don't send an HTTP_ACCEPT header. Cache S5, TeX and Print views. Temporary hack: don't cache list and recently_revised pages. --- app/controllers/application.rb | 2 +- app/controllers/cache_sweeping_helper.rb | 4 ++-- app/controllers/wiki_controller.rb | 5 +++-- app/models/page_set.rb | 2 +- app/models/wiki_reference.rb | 6 +++--- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/controllers/application.rb b/app/controllers/application.rb index 875a22f5..c45f8d00 100644 --- a/app/controllers/application.rb +++ b/app/controllers/application.rb @@ -149,7 +149,7 @@ class ApplicationController < ActionController::Base @response.headers['Content-Type'] = 'text/xml; charset=UTF-8' elsif %w(tex).include?(action_name) @response.headers['Content-Type'] = 'text/plain; charset=UTF-8' - elsif @request.env['HTTP_USER_AGENT'] =~ /MathPlayer|Validator/ or Mime::Type.parse(@request.env["HTTP_ACCEPT"]).include?(Mime::XHTML) + elsif @request.env['HTTP_USER_AGENT'] =~ /MathPlayer|Validator/ or @request.env.include?('HTTP_ACCEPT') && Mime::Type.parse(@request.env["HTTP_ACCEPT"]).include?(Mime::XHTML) @response.headers['Content-Type'] = 'application/xhtml+xml; charset=UTF-8' else @response.headers['Content-Type'] = 'text/html; charset=UTF-8' diff --git a/app/controllers/cache_sweeping_helper.rb b/app/controllers/cache_sweeping_helper.rb index 2bf3e9f8..bcb15649 100644 --- a/app/controllers/cache_sweeping_helper.rb +++ b/app/controllers/cache_sweeping_helper.rb @@ -2,7 +2,7 @@ module CacheSweepingHelper def expire_cached_page(web, page_name) expire_action :controller => 'wiki', :web => web.address, - :action => %w(show published), :id => page_name + :action => %w(show published s5 tex print), :id => page_name expire_action :controller => 'wiki', :web => web.address, :action => %w(show published), :id => page_name, :mode => 'diff' end @@ -20,4 +20,4 @@ module CacheSweepingHelper expire_fragment :controller => 'wiki', :web => web.address, :action => %w(rss_with_headlines rss_with_content) end -end \ No newline at end of file +end diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index 5117f4ed..1a9e2e23 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -8,7 +8,8 @@ require 'string_utils' class WikiController < ApplicationController before_filter :load_page - caches_action :show, :published, :authors, :recently_revised, :list + caches_action :show, :published, :authors, :tex, :s5, :print +# caches_action :show, :published, :authors, :tex. :s5, :print, :recently_revised, :list cache_sweeper :revision_sweeper layout 'default', :except => [:rss_feed, :rss_with_content, :rss_with_headlines, :tex, :pdf, :s5, :export_tex, :export_html] @@ -294,7 +295,7 @@ class WikiController < ApplicationController def s5 if @web.markup == :markdownMML or @web.markup == :markdown - @s5_content = sanitize_html(Maruku.new(@page.content.delete("\r"), + @s5_content = sanitize_html(Maruku.new(@page.content.delete("\r\x01-\x08\x0B\x0C\x0E-\x1F"), {:math_enabled => true, :math_numbered => ['\\[','\\begin{equation}'], :content_only => true, :author => @page.author, :title => @page.plain_name}).to_s5) end diff --git a/app/models/page_set.rb b/app/models/page_set.rb index 4ac08c00..318bca30 100644 --- a/app/models/page_set.rb +++ b/app/models/page_set.rb @@ -85,7 +85,7 @@ class PageSet < Array def wiki_words self.inject([]) { |wiki_words, page| - wiki_words + page.wiki_words + wiki_words + page.wiki_words }.flatten.uniq.sort end diff --git a/app/models/wiki_reference.rb b/app/models/wiki_reference.rb index 0616d173..9f125532 100644 --- a/app/models/wiki_reference.rb +++ b/app/models/wiki_reference.rb @@ -40,8 +40,8 @@ class WikiReference < ActiveRecord::Base def self.pages_in_category(category) query = - 'SELECT name FROM pages JOIN wiki_references ON pages.id = wiki_references.page_id ' + - 'WHERE wiki_references.referenced_name = ? ' + + "SELECT name FROM pages JOIN wiki_references ON pages.id = wiki_references.page_id " + + "WHERE wiki_references.referenced_name = ? " + "AND wiki_references.link_type = '#{CATEGORY}'" names = connection.select_all(sanitize_sql([query, category])).map { |row| row['name'] } end @@ -51,7 +51,7 @@ class WikiReference < ActiveRecord::Base "FROM wiki_references LEFT OUTER JOIN pages " + "ON wiki_references.page_id = pages.id " + "WHERE wiki_references.link_type = '#{CATEGORY}' " + - "AND pages.web_id = #{web.id}" + "AND pages.web_id = '#{web.id}'" connection.select_all(query).map { |row| row['referenced_name'] } end