60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
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
 | 
						|
  
 | 
						|
  # 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 @item
 | 
						|
      render :text => parse_page(@item)
 | 
						|
    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
 | 
						|
  
 | 
						|
  def set_current_item
 | 
						|
    session[:current_page] = params[:id] || @item.id rescue nil
 | 
						|
  end
 | 
						|
 | 
						|
end
 |