Project

General

Profile

Download (2.63 KB) Statistics
| Branch: | Tag: | Revision:
acfbc458 Marek Hulan
class FiltersController < ApplicationController
include Foreman::Controller::AutoCompleteSearch
12612809 Dominic Cleal
include Foreman::Controller::Parameters::Filter
acfbc458 Marek Hulan
df6a9f34 Dominic Cleal
before_action :find_role
before_action :setup_search_options, :only => :index
acfbc458 Marek Hulan
def index
e3047ef2 Shimon Shtein
@filters = resource_base.includes(:role, :permissions).search_for(params[:search], :order => params[:order])
9d43fc71 Michael Moll
@filters = @filters.paginate(:page => params[:page], :per_page => params[:per_page]) unless params[:paginate] == 'client'
acfbc458 Marek Hulan
@roles_authorizer = Authorizer.new(User.current, :collection => @filters.map(&:role_id))
end

def new
@filter = resource_base.build
end

def create
12612809 Dominic Cleal
@filter = Filter.new(filter_params)
acfbc458 Marek Hulan
if @filter.save
e1a24883 Joseph Magen
process_success :success_redirect => saved_redirect_url_or(filters_path(:role_id => @role))
acfbc458 Marek Hulan
else
process_error
end
end

def edit
@filter = resource_base.includes(:permissions).find(params[:id])
end

def update
@filter = resource_base.find(params[:id])
9ae8fa19 Michael Moll
if @filter.update(filter_params)
e1a24883 Joseph Magen
process_success :success_redirect => saved_redirect_url_or(filters_path(:role_id => @role))
acfbc458 Marek Hulan
else
process_error
end
end

def destroy
@filter = resource_base.find(params[:id])
if @filter.destroy
e1a24883 Joseph Magen
process_success :success_redirect => saved_redirect_url_or(filters_path(:role_id => @role))
acfbc458 Marek Hulan
else
process_error
end
end

f619eb4d Marek Hulan
def disable_overriding
@filter = resource_base.find(params[:id])
@filter.disable_overriding!
process_success :success_msg => _('Filter overriding has been disabled')
end

private

def action_permission
case params[:action]
when 'disable_overriding'
'edit'
else
super
end
end
acfbc458 Marek Hulan
def find_role
@role = Role.find_by_id(role_id)
end

def resource_base
c1c9649b Daniel Lobato
@resource_base ||= if @role.present?
@role.filters.authorized(current_permission)
else
02e4c535 Daniel Lobato
Filter.where(nil).authorized(current_permission)
c1c9649b Daniel Lobato
end
acfbc458 Marek Hulan
end

def role_id
params[:role_id]
end

def setup_search_options
@original_search_parameter = params[:search]
params[:search] ||= ""
params.keys.each do |param|
if param =~ /role_id$/
85021506 Michael Moll
if (role = Role.find_by_id(params[param])).present?
1e1c8575 Tomer Brisker
query = "role_id = #{role.id}"
acfbc458 Marek Hulan
params[:search] += query unless params[:search].include? query
end
elsif param =~ /(\w+)_id$/
85021506 Michael Moll
if params[param].present?
9e428144 Michael Moll
query = "#{Regexp.last_match(1)} = #{params[param]}"
acfbc458 Marek Hulan
params[:search] += query unless params[:search].include? query
end
end
end
end
end