- # extend caches_action to include the parameters, locale and logged in
- # status in all cache keys
- def self.caches_action(*actions)
- options = actions.extract_options!
- cache_path = options[:cache_path] || Hash.new
-
- options[:unless] = case options[:unless]
- when NilClass then Array.new
- when Array then options[:unless]
- else unlessp = [ options[:unless] ]
- end
-
- options[:unless].push(Proc.new do |controller|
- controller.params.include?(:page)
- end)
-
- options[:cache_path] = Proc.new do |controller|
- cache_path.merge(controller.params).merge(:host => SERVER_URL, :locale => I18n.locale)
- end
-
- actions.push(options)
-
- super *actions
- end
-
- ##
- # extend expire_action to expire all variants
- def expire_action(options = {})
- I18n.available_locales.each do |locale|
- super options.merge(:host => SERVER_URL, :locale => locale)
- end
- end
-
- ##
- # is the requestor logged in?
- def logged_in?
- !@user.nil?
- end
-
- ##
- # ensure that there is a "this_user" instance variable
- def lookup_this_user
- unless @this_user = User.active.find_by_display_name(params[:display_name])
- render_unknown_user params[:display_name]
- end