class ApplicationController < ActionController::Base protect_from_forgery include Parser helper :all before_filter :set_locale, :set_site # Find the parent for the given item def find_parent_item @parent_item = Item.first(:conditions => { :id => BSON::ObjectId(params[:parent_id]) }) rescue nil end # Clean the link back # Remove the locale but keep all the other params def get_go_back begin if env['REQUEST_URI'].include?('locale=') session[:last_page] else target = env['HTTP_REFERER'].split('?') vars = target[1].split('&') vars.delete_if {|var| var.include? 'locale=' } if vars.size > 0 target[0].to_s + '?' + vars.join('&') else target[0].to_s end end rescue nil end end # Check if the current_user is admin def is_admin? redirect_to root_url unless current_user.admin? end # Render the page def render_page if @page render :text => parse_page(@page) else render :text => '404 Not Found' end end # Set I18n.locale def set_locale # update session if passed session[:locale] = params[:locale] if params[:locale] # set locale based on session or default begin # check if locale is valid for non site pages if LIST[:forbidden_item_names].include?(env['PATH_INFO'].split('/')[1].to_s) && !VALID_LOCALES.include?(session[:locale]) I18n.locale = I18n.default_locale else I18n.locale = session[:locale] end rescue I18n.locale = I18n.default_locale end end # Set the site variables def set_site # set site if exist or create site @site = Site.first || Site.create({:valid_locales => [], :in_use_locales => []}) session[:site] = @site.id @site_in_use_locales = @site.in_use_locales @site_valid_locales = @site.valid_locales end end