class ApplicationController < ActionController::Base protect_from_forgery 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 # Parse and render the pages with liquid def render_liquid_page if @page @layout = @page.layout @page_options ||= {} @page_content = Liquid::Template.parse( @page.content ).render(@page_options) @layout_content = (@page.layout)? @layout.content : "{{page_content}}" render :text => Liquid::Template.parse(@layout_content).render( 'page_content' => @page_content ) 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