app/controllers/alchemy/base_controller.rb in alchemy_cms-2.1.12 vs app/controllers/alchemy/base_controller.rb in alchemy_cms-2.2.rc1

- old
+ new

@@ -1,158 +1,162 @@ # This is the main Alchemy controller all other controllers inheret from. module Alchemy - class BaseController < ApplicationController + class BaseController < ApplicationController - include Alchemy::Modules + include Alchemy::Modules - protect_from_forgery + protect_from_forgery - before_filter :set_language - before_filter :mailer_set_url_options + before_filter :set_language + before_filter :mailer_set_url_options - helper_method :current_server, :current_user, :t + helper_method :current_server, :current_user, :t - # Returns a host string with the domain the app is running on. - def current_server - # For local development server - if request.port != 80 - "http://#{request.host}:#{request.port}" - # For remote production server - else - "http://#{request.host}" - end - end + # Returns a host string with the domain the app is running on. + def current_server + # For local development server + if request.port != 80 + "http://#{request.host}:#{request.port}" + # For remote production server + else + "http://#{request.host}" + end + end - def configuration(name) - return Alchemy::Config.get(name) - end + def configuration(name) + return Alchemy::Config.get(name) + end - def multi_language? - Language.published.count > 1 - end + def multi_language? + Language.published.count > 1 + end - def current_user - return @current_user if defined?(@current_user) - @current_user = current_user_session && current_user_session.record - end + def current_user + return @current_user if defined?(@current_user) + @current_user = current_user_session && current_user_session.record + end - def current_user_session - return @current_user_session if defined?(@current_user_session) - @current_user_session = UserSession.find - end + def current_user_session + return @current_user_session if defined?(@current_user_session) + @current_user_session = UserSession.find + end - def logged_in? - !current_user.blank? - end + def logged_in? + !current_user.blank? + end - # Overriding +I18n+s default +t+ helper, so we can pass it through +Alchemy::I18n+ - def t(key, *args) - ::Alchemy::I18n.t(key, *args) - end + def raise_not_found_error + raise ActionController::RoutingError.new('Not Found') + end - private + # Overriding +I18n+s default +t+ helper, so we can pass it through +Alchemy::I18n+ + def t(key, *args) + ::Alchemy::I18n.t(key, *args) + end - # Sets the language for rendering pages in pages controller - def set_language - if params[:lang].blank? and session[:language_id].blank? - set_language_to_default - elsif !params[:lang].blank? - set_language_from(params[:lang]) - ::I18n.locale = params[:lang] - end - end + private - def set_language_from(language_code_or_id) - if language_code_or_id.is_a?(String) && language_code_or_id.match(/^\d+$/) - language_code_or_id = language_code_or_id.to_i - end - case language_code_or_id.class.name - when "String" - @language = Language.find_by_code(language_code_or_id) - when "Fixnum" - @language = Language.find(language_code_or_id) - end - store_language_in_session(@language) - end + # Sets the language for rendering pages in pages controller + def set_language + if params[:lang].blank? and session[:language_id].blank? + set_language_to_default + elsif !params[:lang].blank? + set_language_from(params[:lang]) + ::I18n.locale = params[:lang] + end + end - def set_language_to_default - @language = Language.get_default - if @language - store_language_in_session(@language) - else - raise "No Default Language found! Did you run `rake alchemy:db:seed` task?" - end - end + def set_language_from(language_code_or_id) + if language_code_or_id.is_a?(String) && language_code_or_id.match(/^\d+$/) + language_code_or_id = language_code_or_id.to_i + end + case language_code_or_id.class.name + when "String" + @language = Language.find_by_code(language_code_or_id) + when "Fixnum" + @language = Language.find(language_code_or_id) + end + store_language_in_session(@language) + end - def store_language_in_session(language) - if language - session[:language_code] = language.code - session[:language_id] = language.id - else - logger.warn "!!!! Language not found for #{language.inspect}. Setting to default!" - set_language_to_default - end - end + def set_language_to_default + @language = Language.get_default + if @language + store_language_in_session(@language) + else + raise "No Default Language found! Did you run `rake alchemy:db:seed` task?" + end + end - def store_location - session[:redirect_path] = request.path - end + def store_language_in_session(language) + if language + session[:language_code] = language.code + session[:language_id] = language.id + else + logger.warn "!!!! Language not found for #{language.inspect}. Setting to default!" + set_language_to_default + end + end - def mailer_set_url_options - ActionMailer::Base.default_url_options[:host] = request.host_with_port - end + def store_location + session[:redirect_path] = request.path + end - def hashified_options - return nil if params[:options].blank? - if params[:options].is_a?(String) - Rack::Utils.parse_query(params[:options]) - else - params[:options] - end - end + def mailer_set_url_options + ActionMailer::Base.default_url_options[:host] = request.host_with_port + end - def layout_for_page - if !params[:layout].blank? && params[:layout] != 'none' - params[:layout] - elsif File.exist?(Rails.root.join('app/views/layouts', 'application.html.erb')) - 'application' - else - 'alchemy/pages' - end - end + def hashified_options + return nil if params[:options].blank? + if params[:options].is_a?(String) + Rack::Utils.parse_query(params[:options]) + else + params[:options] + end + end - protected + def layout_for_page + if !params[:layout].blank? && params[:layout] != 'none' + params[:layout] + elsif File.exist?(Rails.root.join('app/views/layouts', 'application.html.erb')) + 'application' + else + 'alchemy/pages' + end + end - def permission_denied - if current_user - if current_user.role == 'registered' - redirect_to alchemy.root_path - else - if request.referer == alchemy.login_url - render :file => File.join(Rails.root.to_s, 'public', '422.html'), :status => 422, :layout => false - elsif request.xhr? - respond_to do |format| - format.js { - render :js => "Alchemy.growl('#{t('You are not authorized')}', 'warning'); Alchemy.enableButton('button.button, a.button, input.button');" - } - format.html { - render :partial => 'alchemy/admin/partials/flash', :locals => {:message => t('You are not authorized'), :flash_type => 'warning'} - } - end - else - flash[:error] = t('You are not authorized') - redirect_to alchemy.admin_dashboard_path - end - end - else - flash[:info] = t('Please log in') - if request.xhr? - render :action => :permission_denied - else - store_location - redirect_to alchemy.login_path - end - end - end + protected - end + def permission_denied + if current_user + if current_user.role == 'registered' + redirect_to alchemy.root_path + else + if request.referer == alchemy.login_url + render :file => File.join(Rails.root.to_s, 'public', '422.html'), :status => 422, :layout => false + elsif request.xhr? + respond_to do |format| + format.js { + render :js => "Alchemy.growl('#{t('You are not authorized')}', 'warning'); Alchemy.enableButton('button.button, a.button, input.button');" + } + format.html { + render :partial => 'alchemy/admin/partials/flash', :locals => {:message => t('You are not authorized'), :flash_type => 'warning'} + } + end + else + flash[:error] = t('You are not authorized') + redirect_to alchemy.admin_dashboard_path + end + end + else + flash[:info] = t('Please log in') + if request.xhr? + render :action => :permission_denied + else + store_location + redirect_to alchemy.login_path + end + end + end + + end end