Sha256: 20ff88c7c381cae8f29594c64354f0ffa74dd76fa0d1c63c7ade2fd2b959b7ea

Contents?: true

Size: 1.45 KB

Versions: 9

Compression:

Stored size: 1.45 KB

Contents

module ActiveAdmin
  class ResourceController < ::InheritedResources::Base

    module Filters
      extend ActiveSupport::Concern

      included do
        helper_method :filters_config
      end

      module ClassMethods
        def filter(attribute, options = {})
          return false if attribute.nil?
          @filters ||= []
          @filters << options.merge(:attribute => attribute)
        end

        def filters_config
          @filters && @filters.any? ? @filters : default_filters_config
        end

        def reset_filters!
          @filters = []
        end

        # Returns a sane set of filters by default for the object
        def default_filters_config
          default_association_filters + default_content_filters
        end

        # Returns a default set of filters for the associations
        def default_association_filters
          if resource_class.respond_to?(:reflections)
            resource_class.reflections.collect{|name, r| { :attribute => name }}
          else
            []
          end
        end

        # Returns a default set of filters for the content columns
        def default_content_filters
          if resource_class.respond_to?(:content_columns)
            resource_class.content_columns.collect{|c| { :attribute => c.name.to_sym } }
          else
            []
          end
        end
      end

      protected

      def filters_config
        self.class.filters_config
      end
    end

  end
end

Version data entries

9 entries across 9 versions & 4 rubygems

Version Path
andrewroth_activeadmin-0.3.4 lib/active_admin/resource_controller/filters.rb
activeadmin-0.3.4 lib/active_admin/resource_controller/filters.rb
activeadmin-0.3.3 lib/active_admin/resource_controller/filters.rb
activeadmin-0.3.2 lib/active_admin/resource_controller/filters.rb
activeadmin-0.3.1 lib/active_admin/resource_controller/filters.rb
activeadmin-0.3.0 lib/active_admin/resource_controller/filters.rb
nsm-activeadmin-0.2.2 lib/active_admin/resource_controller/filters.rb
saulolso-activeadmin-0.2.2.1 lib/active_admin/resource_controller/filters.rb
saulolso-activeadmin-0.2.2 lib/active_admin/resource_controller/filters.rb