Commit 4c5a5681ccec80e44ce1f0767ea9480eac43877b

Authored by Antonio Terceiro
1 parent b361aebc

Rails 2.3.5 support

  * Kept backwards compatibility with Rails 2.1.0, so Debian stable
    users are still good.
  * Should also work with newer versions from the 2.3.x series
app/controllers/application.rb
1 -# his is the application's main controller. Features defined here are  
2 -# available in all controllers.  
3 -class ApplicationController < ActionController::Base  
4 -  
5 - include ApplicationHelper  
6 - layout :get_layout  
7 - def get_layout  
8 - theme_option(:layout) || 'application'  
9 - end  
10 -  
11 - filter_parameter_logging :password  
12 -  
13 - def log_processing  
14 - super  
15 - return unless ENV['RAILS_ENV'] == 'production'  
16 - if logger && logger.info?  
17 - logger.info(" HTTP Referer: #{request.referer}")  
18 - logger.info(" User Agent: #{request.user_agent}")  
19 - logger.info(" Accept-Language: #{request.headers['HTTP_ACCEPT_LANGUAGE']}")  
20 - end  
21 - end  
22 -  
23 - helper :document  
24 - helper :language  
25 -  
26 - def boxes_editor?  
27 - false  
28 - end  
29 - protected :boxes_editor?  
30 -  
31 - def self.no_design_blocks  
32 - @no_design_blocks = true  
33 - end  
34 - def self.uses_design_blocks?  
35 - !@no_design_blocks  
36 - end  
37 - def uses_design_blocks?  
38 - !@no_design_blocks && self.class.uses_design_blocks?  
39 - end  
40 -  
41 - # Be sure to include AuthenticationSystem in Application Controller instead  
42 - include AuthenticatedSystem  
43 - include PermissionCheck  
44 -  
45 - def self.require_ssl(*options)  
46 - before_filter :check_ssl, *options  
47 - end  
48 - def check_ssl  
49 - return true if (request.ssl? || ENV['RAILS_ENV'] == 'development')  
50 - redirect_to_ssl  
51 - end  
52 - def redirect_to_ssl  
53 - if environment.enable_ssl  
54 - redirect_to(params.merge(:protocol => 'https://', :host => ssl_hostname))  
55 - true  
56 - else  
57 - false  
58 - end  
59 - end  
60 -  
61 - def self.refuse_ssl(*options)  
62 - before_filter :avoid_ssl, *options  
63 - end  
64 - def avoid_ssl  
65 - if (!request.ssl? || ENV['RAILS_ENV'] == 'development')  
66 - true  
67 - else  
68 - redirect_to(params.merge(:protocol => 'http://'))  
69 - false  
70 - end  
71 - end  
72 -  
73 - before_filter :set_locale  
74 - def set_locale  
75 - FastGettext.available_locales = Noosfero.available_locales  
76 - FastGettext.default_locale = Noosfero.default_locale  
77 - FastGettext.set_locale(params[:lang] || session[:lang] || Noosfero.default_locale || request.env['HTTP_ACCEPT_LANGUAGE'] || 'en')  
78 - if params[:lang]  
79 - session[:lang] = params[:lang]  
80 - end  
81 - end  
82 -  
83 - include NeedsProfile  
84 -  
85 - before_filter :detect_stuff_by_domain  
86 - attr_reader :environment  
87 -  
88 - before_filter :load_terminology  
89 -  
90 - # declares that the given <tt>actions</tt> cannot be accessed by other HTTP  
91 - # method besides POST.  
92 - def self.post_only(actions, redirect = { :action => 'index'})  
93 - verify :method => :post, :only => actions, :redirect_to => redirect  
94 - end  
95 -  
96 - protected  
97 -  
98 - # TODO: move this logic somewhere else (Domain class?)  
99 - def detect_stuff_by_domain  
100 - @domain = Domain.find_by_name(request.host)  
101 - if @domain.nil?  
102 - @environment = Environment.default  
103 - else  
104 - @environment = @domain.environment  
105 - @profile = @domain.profile  
106 - end  
107 - end  
108 -  
109 - def load_terminology  
110 - # cache terminology for performance  
111 - @@terminology_cache ||= {}  
112 - @@terminology_cache[environment.id] ||= environment.terminology  
113 - Noosfero.terminology = @@terminology_cache[environment.id]  
114 - end  
115 -  
116 - def render_not_found(path = nil)  
117 - @no_design_blocks = true  
118 - @path ||= request.path  
119 - render :template => 'shared/not_found.rhtml', :status => 404  
120 - end  
121 -  
122 - def render_access_denied(message = nil, title = nil)  
123 - @no_design_blocks = true  
124 - @message = message  
125 - @title = title  
126 - render :template => 'shared/access_denied.rhtml', :status => 403  
127 - end  
128 -  
129 - def user  
130 - current_user.person if logged_in?  
131 - end  
132 -  
133 - def load_category  
134 - unless params[:category_path].blank?  
135 - path = params[:category_path].join('/')  
136 - @category = environment.categories.find_by_path(path)  
137 - if @category.nil?  
138 - render_not_found(path)  
139 - end  
140 - end  
141 - end  
142 -  
143 -end 1 +require 'application_controller'
app/controllers/application_controller.rb 0 → 100644
@@ -0,0 +1,143 @@ @@ -0,0 +1,143 @@
  1 +# his is the application's main controller. Features defined here are
  2 +# available in all controllers.
  3 +class ApplicationController < ActionController::Base
  4 +
  5 + include ApplicationHelper
  6 + layout :get_layout
  7 + def get_layout
  8 + theme_option(:layout) || 'application'
  9 + end
  10 +
  11 + filter_parameter_logging :password
  12 +
  13 + def log_processing
  14 + super
  15 + return unless ENV['RAILS_ENV'] == 'production'
  16 + if logger && logger.info?
  17 + logger.info(" HTTP Referer: #{request.referer}")
  18 + logger.info(" User Agent: #{request.user_agent}")
  19 + logger.info(" Accept-Language: #{request.headers['HTTP_ACCEPT_LANGUAGE']}")
  20 + end
  21 + end
  22 +
  23 + helper :document
  24 + helper :language
  25 +
  26 + def boxes_editor?
  27 + false
  28 + end
  29 + protected :boxes_editor?
  30 +
  31 + def self.no_design_blocks
  32 + @no_design_blocks = true
  33 + end
  34 + def self.uses_design_blocks?
  35 + !@no_design_blocks
  36 + end
  37 + def uses_design_blocks?
  38 + !@no_design_blocks && self.class.uses_design_blocks?
  39 + end
  40 +
  41 + # Be sure to include AuthenticationSystem in Application Controller instead
  42 + include AuthenticatedSystem
  43 + include PermissionCheck
  44 +
  45 + def self.require_ssl(*options)
  46 + before_filter :check_ssl, *options
  47 + end
  48 + def check_ssl
  49 + return true if (request.ssl? || ENV['RAILS_ENV'] == 'development')
  50 + redirect_to_ssl
  51 + end
  52 + def redirect_to_ssl
  53 + if environment.enable_ssl
  54 + redirect_to(params.merge(:protocol => 'https://', :host => ssl_hostname))
  55 + true
  56 + else
  57 + false
  58 + end
  59 + end
  60 +
  61 + def self.refuse_ssl(*options)
  62 + before_filter :avoid_ssl, *options
  63 + end
  64 + def avoid_ssl
  65 + if (!request.ssl? || ENV['RAILS_ENV'] == 'development')
  66 + true
  67 + else
  68 + redirect_to(params.merge(:protocol => 'http://'))
  69 + false
  70 + end
  71 + end
  72 +
  73 + before_filter :set_locale
  74 + def set_locale
  75 + FastGettext.available_locales = Noosfero.available_locales
  76 + FastGettext.default_locale = Noosfero.default_locale
  77 + FastGettext.set_locale(params[:lang] || session[:lang] || Noosfero.default_locale || request.env['HTTP_ACCEPT_LANGUAGE'] || 'en')
  78 + if params[:lang]
  79 + session[:lang] = params[:lang]
  80 + end
  81 + end
  82 +
  83 + include NeedsProfile
  84 +
  85 + before_filter :detect_stuff_by_domain
  86 + attr_reader :environment
  87 +
  88 + before_filter :load_terminology
  89 +
  90 + # declares that the given <tt>actions</tt> cannot be accessed by other HTTP
  91 + # method besides POST.
  92 + def self.post_only(actions, redirect = { :action => 'index'})
  93 + verify :method => :post, :only => actions, :redirect_to => redirect
  94 + end
  95 +
  96 + protected
  97 +
  98 + # TODO: move this logic somewhere else (Domain class?)
  99 + def detect_stuff_by_domain
  100 + @domain = Domain.find_by_name(request.host)
  101 + if @domain.nil?
  102 + @environment = Environment.default
  103 + else
  104 + @environment = @domain.environment
  105 + @profile = @domain.profile
  106 + end
  107 + end
  108 +
  109 + def load_terminology
  110 + # cache terminology for performance
  111 + @@terminology_cache ||= {}
  112 + @@terminology_cache[environment.id] ||= environment.terminology
  113 + Noosfero.terminology = @@terminology_cache[environment.id]
  114 + end
  115 +
  116 + def render_not_found(path = nil)
  117 + @no_design_blocks = true
  118 + @path ||= request.path
  119 + render :template => 'shared/not_found.rhtml', :status => 404
  120 + end
  121 +
  122 + def render_access_denied(message = nil, title = nil)
  123 + @no_design_blocks = true
  124 + @message = message
  125 + @title = title
  126 + render :template => 'shared/access_denied.rhtml', :status => 403
  127 + end
  128 +
  129 + def user
  130 + current_user.person if logged_in?
  131 + end
  132 +
  133 + def load_category
  134 + unless params[:category_path].blank?
  135 + path = params[:category_path].join('/')
  136 + @category = environment.categories.find_by_path(path)
  137 + if @category.nil?
  138 + render_not_found(path)
  139 + end
  140 + end
  141 + end
  142 +
  143 +end
config/environment.rb
@@ -85,7 +85,7 @@ Rails::Initializer.run do |config| @@ -85,7 +85,7 @@ Rails::Initializer.run do |config|
85 end 85 end
86 end 86 end
87 extra_controller_dirs.each do |item| 87 extra_controller_dirs.each do |item|
88 - Dependencies.load_paths << item 88 + (ActiveSupport.const_defined?('Dependencies') ? ActiveSupport::Dependencies : ::Dependencies).load_paths << item
89 end 89 end
90 90
91 # Add new inflection rules using the following format 91 # Add new inflection rules using the following format
lib/noosfero/i18n.rb
@@ -153,8 +153,8 @@ module ActionController::Caching::Fragments @@ -153,8 +153,8 @@ module ActionController::Caching::Fragments
153 alias_method_chain :expire_fragment, :fast_gettext 153 alias_method_chain :expire_fragment, :fast_gettext
154 end 154 end
155 155
156 -FileUtils.mkdir_p(Rails.root + '/locale')  
157 -Dir.glob(Rails.root + '/locale/*').each do |dir| 156 +FileUtils.mkdir_p(File.join(Rails.root, 'locale'))
  157 +Dir.glob(File.join(Rails.root, 'locale/*')).each do |dir|
158 lang = File.basename(dir) 158 lang = File.basename(dir)
159 FileUtils.mkdir_p("#{Rails.root}/locale/#{lang}/LC_MESSAGES") 159 FileUtils.mkdir_p("#{Rails.root}/locale/#{lang}/LC_MESSAGES")
160 ['iso_3166', 'rails'].each do |domain| 160 ['iso_3166', 'rails'].each do |domain|
@@ -174,9 +174,9 @@ Dir.glob(Rails.root + &#39;/locale/*&#39;).each do |dir| @@ -174,9 +174,9 @@ Dir.glob(Rails.root + &#39;/locale/*&#39;).each do |dir|
174 end 174 end
175 175
176 repos = [ 176 repos = [
177 - FastGettext::TranslationRepository.build('noosfero', :type => 'mo', :path => Rails.root + '/locale'),  
178 - FastGettext::TranslationRepository.build('iso_3166', :type => 'mo', :path => Rails.root + '/locale'),  
179 - FastGettext::TranslationRepository.build('rails', :type => 'mo', :path => Rails.root + '/locale'), 177 + FastGettext::TranslationRepository.build('noosfero', :type => 'mo', :path => File.join(Rails.root, 'locale')),
  178 + FastGettext::TranslationRepository.build('iso_3166', :type => 'mo', :path => File.join(Rails.root, 'locale')),
  179 + FastGettext::TranslationRepository.build('rails', :type => 'mo', :path => File.join(Rails.root, 'locale')),
180 ] 180 ]
181 181
182 FastGettext.add_text_domain 'noosferofull', :type => :chain, :chain => repos 182 FastGettext.add_text_domain 'noosferofull', :type => :chain, :chain => repos