blob: 62a4e13fab055120fb4911b580f55143fa61bbec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale, :initialize_pages
if Rails.env == 'production'
rescue_from Exception, :with => :render_500
rescue_from ActionController::RoutingError, :with => :render_404
end
protected
##
## LOCALIZATION
##
#
# ensure that the locale is encoded as the url prefix and I18n.locale is set.
#
def set_locale
if params[:locale].nil? || !AVAILABLE_LANGUAGES.include?(params[:locale])
locale = HttpAcceptLanguage::compatible_language_from(request.headers['HTTP_ACCEPT_LANGUAGE'], AVAILABLE_LANGUAGES) || DEFAULT_LOCALE
locale = locale.to_s.sub('-', '_').sub(/_\w\w/, '')
if request.path == '/'
url = '/' + locale
else
url = url_for(params.merge(:locale => locale))
end
redirect_to url
else
I18n.locale = params[:locale]
self.default_url_options[:locale] = params[:locale]
end
end
#def default_url_options
# {:locale => locale }
#end
##
## RENDERING
##
def render_500
render :template => 'errors/error', :status => 500
end
def render_404
render :template => 'errors/not_found', :status => 404
end
#
# renders the content of a static page
#
def render_page(page)
begin
render :template => page.template_path
rescue ActionView::MissingTemplate => exc
begin
render :template => page.template_path(DEFAULT_LOCALE)
rescue
raise exc
end
end
end
##
## INITIALIZATION
##
#
# run every time in development mode, run once in production mode
#
def initialize_pages
run_once(:unless => Rails.env.development?) do
StaticPage.load(PAGE_DIRECTORY)
Menu.load(PAGE_DIRECTORY + '/menu.txt')
end
end
def run_once(options={})
if !@run_once || !options[:unless]
yield
end
@run_once = true
end
end
|