foreman/app/controllers/filters_controller.rb @ 9d43fc71
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
|