panier_app/app/controllers/application_controller.rb
Nicolas Bally d744a04b28 initial
2020-10-30 22:26:40 +01:00

245 lines
5.0 KiB
Ruby

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
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
def auth_p_customer
if !current_p_customer
redirect_to new_public_p_customer_auth_path
end
end
private
def current_p_customer
@current_p_customer ||= PCustomer.where(:auth_token => cookies[:p_customer_auth_token]).first if cookies[:p_customer_auth_token]
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, :current_p_customer
end