Sha256: 6fdad23a0598292bd5d2d28c5d93962a4e7acb8eb084679b25074f2f2df9f4f4

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

require 'active_admin/helpers/optional_display'

module ActiveAdmin
  module ActionItems

    def self.included(base)
      base.send :extend, ClassMethods
      base.class_inheritable_accessor :action_items
      base.action_items = []
    end

    module ClassMethods
      def action_item(options = {}, &block)
        self.action_items << ActiveAdmin::ActionItems::ActionItem.new(options, &block)
      end

      def clear_action_items!
        self.action_items = []
      end

      def action_items_for(action)
        action_items.select{|item| item.display_on?(action) }
      end
    end

    class ActionItem
      include ActiveAdmin::OptionalDisplay

      attr_accessor :block

      def initialize(options = {}, &block)
        @options, @block = options, block
        normalize_display_options!
      end
    end

    class Renderer < ActiveAdmin::Renderer
      def to_html(action_items)
        content_tag :div, :class => 'action_items' do
          action_items.collect do |action_item|
            instance_eval(&action_item.block)
          end.join(" ")
        end
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activeadmin-0.1.1 lib/active_admin/action_items.rb
activeadmin-0.1.0 lib/active_admin/action_items.rb