class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception def cell_type_from_value(v) if v.is_a?(Date) :date elsif v.is_a?(String) :string elsif v.is_a?(Time) :time elsif v.is_a?(TrueClass) || v.is_a?(FalseClass) :boolean elsif v.to_s =~ /\A[+-]?\d+?\Z/ #numeric :integer elsif v.to_s =~ /\A[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\Z/ #float :float # \A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9]) # T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)? # (Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?\Z elsif v.to_s =~/\A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?\Z/ :iso_8601 else :string end end before_action :set_locale before_action :time_stats def time_stats @gen_past_time = Time.now end before_action :popups before_action :debug_translation before_action :get_sorting def get_sorting( column_default=nil, direction_default="desc") sorting_direction = %w[asc desc].include?(params[:direction]) ? params[:direction] : direction_default sorting_column = params[:column] ? params[:column] : column_default if sorting_direction and sorting_column @sorting = [sorting_column, sorting_direction] end end before_action :set_qi_order def set_qi_order params[:search] = params[:search] || {} session[:qi_sort_string] = session[:qi_sort_string] || {} if params[:qi_sort_string].to_s != "" and params[:qi_sort_string][:class] if current_admin if ap = current_admin.admin_preferences.where(:key => "sort_table_"+params[:qi_sort_string][:class]).first ap.value = params[:qi_sort_string][:list].to_s ap.save else current_admin.admin_preferences.create(:key => "sort_table_"+params[:qi_sort_string][:class], :value => params[:qi_sort_string][:list].to_s) end else session[:qi_sort_string][params[:qi_sort_string][:class]] = params[:qi_sort_string][:list].to_s end else end if params[:qi_sort_string].to_s != "" and params[:qi_sort_string][:nbr_colonnes].to_s != "" if current_admin if ap = current_admin.admin_preferences.where(:key => "sort_table_"+params[:qi_sort_string][:class]+"_nbr_col").first ap.value = params[:qi_sort_string][:nbr_colonnes].to_s ap.save else current_admin.admin_preferences.create(:key => "sort_table_"+params[:qi_sort_string][:class]+"_nbr_col", :value => params[:qi_sort_string][:nbr_colonnes].to_s) end else session[:qi_sort_string][params[:qi_sort_string][:class]+"_nbr_col"] = params[:qi_sort_string][:nbr_colonnes].to_s end else end end def sort_by_sorting(var, default=nil) if @sorting klass = var.klass.to_s if eval(klass).valid_sort.include?(@sorting[0]) if @sorting[0].split(",").size > 0 order_text = "" i = 0 @sorting[0].split(",").each do |s| order_text += "#{s} #{@sorting[1]}" order_text += "," if i < (@sorting[0].split(",").size - 1 ) i+=1 end var = var.order(order_text) else var = var.order("#{@sorting[0]} #{@sorting[1]}") end end elsif default var = var.order(default) end return var end def debug_translation if params[:debug_translation] if current_admin @debug_translation = true end end end def popups end def get_public_layout "public" end def set_locale # if params[:locale] is nil then I18n.default_locale will be used #I18n.locale = params[:locale]#"fr" # I18n.locale = params[:lang] || :fr @lang = LangSite.find_by_slug I18n.locale.to_s end def default_url_options(options={}) { :lang => I18n.locale } # end private def auth_admin if !current_admin redirect_to new_admin_admin_auth_path end end def current_admin if cookies[:admin_remember_token] if @current_admin = Admin.find_by_remember_token(cookies[:admin_remember_token]) @current_admin = Admin.find_by_remember_token(cookies[:admin_remember_token]) else cookies[:admin_remember_token] =nil end end end def get_specific_pref(key="") sp = SpecificPreference.where(:key => key).first if sp return sp.value else return "" end end def has_permission?(permission) if current_admin and current_admin.has_permission?(permission) true else redirect_to "/admin" end end def is_super_admin if current_admin and current_admin.super_admin true else redirect_to "/admin" end end helper_method :current_admin, :get_specific_pref, :sort_by_sorting end