module RailsAdmin::Config::Actions

Public Class Methods

add_action(key, parent_class, parent, &block) click to toggle source
# File lib/rails_admin/config/actions.rb, line 50
def add_action(key, parent_class, parent, &block)
  a = "RailsAdmin::Config::Actions::#{parent_class.to_s.camelize}".constantize.new
  a.instance_eval(%(
    #{parent} true
    def key
      :#{key}
    end
  ), __FILE__, __LINE__ - 5)
  add_action_custom_key(a, &block)
end
all(scope = nil, bindings = {}) click to toggle source
# File lib/rails_admin/config/actions.rb, line 7
def all(scope = nil, bindings = {})
  if scope.is_a?(Hash)
    bindings = scope
    scope = :all
  end
  scope ||= :all
  init_actions!
  actions =
    case scope
    when :all
      @@actions
    when :root
      @@actions.select(&:root?)
    when :collection
      @@actions.select(&:collection?)
    when :bulkable
      @@actions.select(&:bulkable?)
    when :member
      @@actions.select(&:member?)
    end

  actions = actions.collect { |action| action.with(bindings) }
  bindings[:controller] ? actions.select(&:visible?) : actions
end
collection(key, parent_class = :base, &block) click to toggle source
# File lib/rails_admin/config/actions.rb, line 38
def collection(key, parent_class = :base, &block)
  add_action key, parent_class, :collection, &block
end
find(custom_key, bindings = {}) click to toggle source
# File lib/rails_admin/config/actions.rb, line 32
def find(custom_key, bindings = {})
  init_actions!
  action = @@actions.detect { |a| a.custom_key == custom_key }.try(:with, bindings)
  bindings[:controller] ? (action.try(:visible?) && action || nil) : action
end
member(key, parent_class = :base, &block) click to toggle source
# File lib/rails_admin/config/actions.rb, line 42
def member(key, parent_class = :base, &block)
  add_action key, parent_class, :member, &block
end
register(name, klass = nil) click to toggle source
# File lib/rails_admin/config/actions.rb, line 65
def register(name, klass = nil)
  if klass.nil? && name.is_a?(Class)
    klass = name
    name = klass.to_s.demodulize.underscore.to_sym
  end

  instance_eval %{
    def #{name}(&block)
      action = #{klass}.new
      add_action_custom_key(action, &block)
    end
  }, __FILE__, __LINE__ - 5
end
reset() click to toggle source
# File lib/rails_admin/config/actions.rb, line 61
def reset
  @@actions = nil
end
root(key, parent_class = :base, &block) click to toggle source
# File lib/rails_admin/config/actions.rb, line 46
def root(key, parent_class = :base, &block)
  add_action key, parent_class, :root, &block
end

Private Class Methods

add_action_custom_key(action, &block) click to toggle source
# File lib/rails_admin/config/actions.rb, line 97
def add_action_custom_key(action, &block)
  action.instance_eval(&block) if block
  @@actions ||= []
  if action.custom_key.in?(@@actions.collect(&:custom_key))
    raise "Action #{action.custom_key} already exists. Please change its custom key."
  else
    @@actions << action
  end
end
init_actions!() click to toggle source
# File lib/rails_admin/config/actions.rb, line 81
def init_actions!
  @@actions ||= [
    Dashboard.new,
    Index.new,
    Show.new,
    New.new,
    Edit.new,
    Export.new,
    Delete.new,
    BulkDelete.new,
    HistoryShow.new,
    HistoryIndex.new,
    ShowInApp.new,
  ]
end