lib/active_admin/resource/action_items.rb in yousty-activeadmin-1.0.4.pre vs lib/active_admin/resource/action_items.rb in yousty-activeadmin-1.0.5.pre
- old
+ new
@@ -16,19 +16,24 @@
@action_items ||= []
end
# Add a new action item to a resource
#
+ # @param [Symbol] name
# @param [Hash] options valid keys include:
# :only: A single or array of controller actions to display
# this action item on.
# :except: A single or array of controller actions not to
# display this action item on.
- def add_action_item(options = {}, &block)
- self.action_items << ActiveAdmin::ActionItem.new(options, &block)
+ def add_action_item(name, options = {}, &block)
+ self.action_items << ActiveAdmin::ActionItem.new(name, options, &block)
end
+ def remove_action_item(name)
+ self.action_items.delete_if { |item| item.name == name }
+ end
+
# Returns a set of action items to display for a specific controller action
#
# @param [String, Symbol] action the action to retrieve action items for
#
# @return [Array] Array of ActionItems for the controller actions
@@ -49,25 +54,25 @@
private
# Adds the default action items to each resource
def add_default_action_items
# New link on index
- add_action_item only: :index do
+ add_action_item :new, only: :index do
if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
link_to I18n.t('active_admin.new_model', model: active_admin_config.resource_label), new_resource_path
end
end
# Edit link on show
- add_action_item only: :show do
+ add_action_item :show, only: :show do
if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
link_to I18n.t('active_admin.edit_model', model: active_admin_config.resource_label), edit_resource_path(resource)
end
end
# Destroy link on show
- add_action_item only: :show do
+ add_action_item :destroy, only: :show do
if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
link_to I18n.t('active_admin.delete_model', model: active_admin_config.resource_label), resource_path(resource),
method: :delete, data: {confirm: I18n.t('active_admin.delete_confirmation')}
end
end
@@ -78,13 +83,15 @@
# Model class to store the data for ActionItems
class ActionItem
include ActiveAdmin::OptionalDisplay
- attr_accessor :block
+ attr_accessor :block, :name
- def initialize(options = {}, &block)
- @options, @block = options, block
+ def initialize(name, options = {}, &block)
+ @name = name
+ @options = options
+ @block = block
normalize_display_options!
end
end
end