1 require_dependency 'radiant'
2
3 class ApplicationController < ActionController::Base
4 include LoginSystem
5
6 filter_parameter_logging :password, :password_confirmation
7
8 protect_from_forgery
9
10 before_filter :set_current_user
11 before_filter :set_timezone
12 before_filter :set_user_locale
13 before_filter :set_javascripts_and_stylesheets
14 before_filter :set_standard_body_style, :only => [:new, :edit, :update, :create]
15
16 attr_accessor :config, :cache
17 attr_reader :pagination_parameters
18 helper_method :pagination_parameters
19
20 def initialize
21 super
22 @config = Radiant::Config
23 end
24
25 # helpers to include additional assets from actions or views
26 helper_method :include_stylesheet, :include_javascript
27
28 def include_stylesheet(sheet)
29 @stylesheets << sheet
30 end
31
32 def include_javascript(script)
33 @javascripts << script
34 end
35
36 def template_name
37 case self.action_name
38 when 'index'
39 'index'
40 when 'new','create'
41 'new'
42 when 'show'
43 'show'
44 when 'edit', 'update'
45 'edit'
46 when 'remove', 'destroy'
47 'remove'
48 else
49 self.action_name
50 end
51 end
52
53 def rescue_action_in_public(exception)
54 case exception
55 when ActiveRecord::RecordNotFound, ActionController::UnknownController, ActionController::UnknownAction, ActionController::RoutingError
56 render :template => "site/not_found", :status => 404
57 else
58 super
59 end
60 end
61
62 private
63
64 def set_current_user
65 UserActionObserver.instance.current_user = current_user
66 end
67
68 def set_user_locale
69 I18n.locale = current_user && !current_user.locale.blank? ? current_user.locale : Radiant::Config['default_locale']
70 end
71
72 def set_timezone
73 Time.zone = Radiant::Config['local.timezone'] || Time.zone_default
74 end
75
76 def set_javascripts_and_stylesheets
77 @stylesheets ||= []
78 @stylesheets.concat %w(admin/main)
79 @javascripts ||= []
80 end
81
82 def set_standard_body_style
83 @body_classes ||= []
84 @body_classes.concat(%w(reversed))
85 end
86
87 end