#encoding: utf-8

# -*- encoding : utf-8 -*-

class ApplicationController < ActionController::Base

  helper :all
  protect_from_forgery

  helper_method :current_user_session, :current_user, :menu_pages, :menu_maps_array

  rescue_from 'Acl9::AccessDenied', :with => :access_denied

  rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found

  protected

  def render_error exception
    Rails.logger.error(exception)
    render :template => "errors/500", :status => "500", :locals => {:e => exception}
  end


  def render_not_found exception
    Rails.logger.error(exception)
    render :template => "errors/404", :status => "404", :locals => {:exception => exception}
  end


  private


  def store_location
    session[:return_to] = request.fullpath
  end

  def access_denied
    if current_user
      render :template => 'shared/_not_public'
    else
      flash[:notice] = 'Pardon, diese Seite ist nicht öffentlich. Bitte logge dich ein.'
      redirect_to login_path
    end
  end

  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.user
  end

  def require_user
    unless current_user
      flash[:notice] = "Sie müssen sich anmelden!"
      redirect_to login_url
      return false
    end
  end

  def menu_pages
    return pages = Page.find(:all,  :order => "sorting ASC", :conditions => ["navtitle <> '' AND public = ?", true])
  end

  def menu_maps_array
    map_urls = []
    map_urls << ["Auswählen...",""]
    map_selected = ""
    if current_user && (current_user.has_role? :admin)
      maps = Map.all
    else
      maps = Map.find_all_by_public(true)
    end


    maps.each do |m|
      map_urls << [m.title,map_url(m)]
      if (params[:controller] == "maps") && (params[:id] == "#{m.id}-#{m.title.parameterize}")
        map_selected = map_url(m)
      end
    end
    return map_urls, map_selected
  end

end
