# The filters added to this controller will be run for all controllers in the application. # Likewese will all the methods added be available for all controllers. require 'login_engine' require 'term/ansicolor' class ApplicationController < ActionController::Base helper_method :filter include LoginEngine include Term::ANSIColor init_gettext "parlement" before_filter :set_login_from_cookie after_filter :fix_unicode_for_safari after_filter OutputCompressionFilter # automatically and transparently fixes utf-8 bug # with Safari when using xmlhttp def fix_unicode_for_safari if headers["Content-Type"] == "text/html; charset=utf-8" and request.env['HTTP_USER_AGENT'].to_s.include? 'AppleWebKit' then response.body = response.body.gsub(/([^\x00-\xa0])/u) { |s| "&#x%x;" % $1.unpack('U')[0] } end end def set_login_from_cookie unless session[:person] if (person = Person.find_by_name(cookies[:person_name])) and \ ((!person.user and !cookies[:salted_password]) \ or (person.user \ and person.user.salted_password == cookies[:salted_password])) logger.info yellow { bold { "#{person.name} is back" } } session[:person] = person session[:user] = person.user person.last_login = Time.now person.save end end end def filter if request.cookies['filter'] && request.cookies['filter'][0] filter = request.cookies['filter'][0].to_i - 1 filter = nil unless filter >= 0 else filter = 0 end filter end end