class Hancock::RailsAdminConfiguration

Attributes

actions_list[R]
actions_visibility[R]

Public Class Methods

new() click to toggle source
# File lib/hancock/rails_admin_ext/config.rb, line 37
def initialize
  @actions_list ||= []
  @actions_visibility ||= {}

  action_unvisible_for(:custom_show_in_app, Proc.new { false })
  action_visible_for(:model_settings, Proc.new { false })

  if defined?(RailsAdminNestedSet)
    action_visible_for(:nested_set, Proc.new { false })
  end

  if defined?(RailsAdminMultipleFileUpload)
    action_visible_for(:multiple_file_upload, Proc.new { false })
    action_visible_for(:multiple_file_upload_collection, Proc.new { false })
  end

  if defined?(RailsAdminUserAbilities)
    action_visible_for(:user_abilities, Proc.new { false })
    action_visible_for(:model_accesses, Proc.new { false })
  end

  if defined?(RailsAdminComments)
    action_visible_for(:comments, Proc.new { false })
    action_visible_for(:model_comments, Proc.new { false })
  end

  action_visible_for(:sort_embedded, Proc.new { false })

end

Public Instance Methods

action_unvisible_for(action_name, model_name) click to toggle source
# File lib/hancock/rails_admin_ext/config.rb, line 90
def action_unvisible_for(action_name, model_name)
  action_name = action_name.to_sym
  add_action(action_name) unless @actions_list.include?(action_name)

  if model_name.is_a?(Proc)
    # @actions_visibility[action_name] = model_name
  else
    @actions_visibility[action_name] = [] if @actions_visibility[action_name].is_a?(Proc)
    @actions_visibility[action_name] ||= []
    @actions_visibility[action_name].delete model_name.to_s
  end
end
action_visible_for(action_name, model_name) click to toggle source
# File lib/hancock/rails_admin_ext/config.rb, line 77
def action_visible_for(action_name, model_name)
  action_name = action_name.to_sym
  add_action(action_name) unless @actions_list.include?(action_name)

  if model_name.is_a?(Proc)
    @actions_visibility[action_name] = model_name
  else
    @actions_visibility[action_name] = [] if @actions_visibility[action_name].is_a?(Proc)
    @actions_visibility[action_name] ||= []
    @actions_visibility[action_name] << model_name.to_s
  end
end
actions_config(rails_admin_actions) click to toggle source
# File lib/hancock/rails_admin_ext/config.rb, line 103
def actions_config(rails_admin_actions)

  @actions_list.each do |action|
    if rails_admin_actions.respond_to?(action) and !RailsAdmin::Config::Actions.all.map { |a| a.class.name.demodulize.underscore }.include?(action.to_s)
      rails_admin_actions.send(action) do
        visible do
          if !bindings or bindings[:abstract_model].blank?
            true
          else
            ret = false
            if bindings[:abstract_model].model.respond_to?(:rails_admin_visible_actions)
              ret = bindings[:abstract_model].model.rails_admin_visible_actions.include?(action.to_sym)
            else
              if visibility = Hancock.rails_admin_config.actions_visibility[action]
                if visibility.is_a?(Proc)
                  ret = visibility.call(self)
                else
                  ret = visibility.include? bindings[:abstract_model].model_name
                end
              end
            end # if bindings[:abstract_model].model.respond_to?(:rails_admin_visible_actions)
            _context = bindings[:controller] || bindings[:view]
            ret and _context and _context.can?(action, bindings[:abstract_model].model)
          end # !bindings or bindings[:abstract_model].blank?
        end # visible do
      end # rails_admin_actions.send(action) do
    end # if rails_admin_actions.respond_to?(action)
  end # @actions_list.each do |action|

end
add_action(action_name) click to toggle source
# File lib/hancock/rails_admin_ext/config.rb, line 67
def add_action(action_name)
  @actions_list << action_name.to_sym
  @actions_list.uniq
end
cancancan_admin_rules(ability_object) click to toggle source
# File lib/hancock/rails_admin_ext/config.rb, line 135
def cancancan_admin_rules(ability_object)
  Hancock.config.ability_admin_config.each do |config|
    _model = config[:model]
    _model = _model.constantize if _model.is_a?(String)
    ability_object.send(config[:method], config[:actions], _model)
  end
  Hancock::MODELS.each do |_model|
    ability_object.can    _model.admin_can_actions,     _model
    ability_object.cannot _model.admin_cannot_actions,  _model
  end
end
cancancan_manager_rules(ability_object) click to toggle source
# File lib/hancock/rails_admin_ext/config.rb, line 147
def cancancan_manager_rules(ability_object)
  Hancock.config.ability_manager_config.each do |config|
    _model = config[:model]
    _model = _model.constantize if _model.is_a?(String)
    ability_object.send(config[:method], config[:actions], _model)
  end
  Hancock::MODELS.each do |_model|
    ability_object.can    _model.manager_can_actions,     _model
    ability_object.cannot _model.manager_cannot_actions,  _model
  end
end
remove_action(action_name) click to toggle source
# File lib/hancock/rails_admin_ext/config.rb, line 72
def remove_action(action_name)
  @remove_action.delete remove_action.to_sym
  @actions_list.uniq
end