Sha256: 2bf7539c88b19e6d22d1afa3d78f641e7c7edb07ecb38aa0100f36a277f7d4a1

Contents?: true

Size: 1.51 KB

Versions: 24

Compression:

Stored size: 1.51 KB

Contents

module ActiveAdmin
  class Resource
    module Scopes

      # Return an array of scopes for this resource
      def scopes
        @scopes ||= []
      end

      # Returns a scope for this object by its identifier
      def get_scope_by_id(id)
        id = id.to_s
        scopes.find{|s| s.id == id }
      end

      def default_scope(context = nil)
        scopes.detect do |scope|
          if scope.default_block.is_a?(Proc)
            render_in_context(context, scope.default_block)
          else
            scope.default_block
          end
        end
      end

      # Create a new scope object for this resource.
      # If you want to internationalize the scope name, you can add
      # to your i18n files a key like "active_admin.scopes.scope_method".
      def scope(*args, &block)
        default_options = {show_count: namespace.scopes_show_count}
        options = default_options.merge(args.extract_options!)
        title = args[0] rescue nil
        method = args[1] rescue nil

        options[:localizer] ||= ActiveAdmin::Localizers.resource(self)
        scope = ActiveAdmin::Scope.new(title, method, options, &block)

        # Finds and replaces a scope by the same name if it already exists
        existing_scope_index = scopes.index{|existing_scope| existing_scope.id == scope.id }
        if existing_scope_index
          scopes.delete_at(existing_scope_index)
          scopes.insert(existing_scope_index, scope)
        else
          self.scopes << scope
        end

        scope
      end

    end
  end
end

Version data entries

24 entries across 24 versions & 4 rubygems

Version Path
activeadmin-rails-1.7.2 lib/active_admin/resource/scopes.rb
activeadmin-rails-1.7.1 lib/active_admin/resource/scopes.rb
activeadmin-rails-1.7.0 lib/active_admin/resource/scopes.rb
activeadmin-rb-1.6.0 lib/active_admin/resource/scopes.rb
activeadmin-rb-1.5.2 lib/active_admin/resource/scopes.rb
activeadmin-rb-1.5.1 lib/active_admin/resource/scopes.rb
activeadmin-rb-1.5.0 lib/active_admin/resource/scopes.rb
activeadmin_addons-1.7.1 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/resource/scopes.rb
activeadmin-rb-1.4.0 lib/active_admin/resource/scopes.rb
activeadmin_addons-1.7.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/resource/scopes.rb
activeadmin-1.4.3 lib/active_admin/resource/scopes.rb
activeadmin-1.4.2 lib/active_admin/resource/scopes.rb
activeadmin-1.4.1 lib/active_admin/resource/scopes.rb
activeadmin-1.4.0 lib/active_admin/resource/scopes.rb
activeadmin-1.3.1 lib/active_admin/resource/scopes.rb
activeadmin_addons-1.6.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/resource/scopes.rb
activeadmin_addons-1.5.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/resource/scopes.rb
activeadmin-1.3.0 lib/active_admin/resource/scopes.rb
activeadmin_addons-1.4.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/resource/scopes.rb
activeadmin_addons-1.3.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/resource/scopes.rb