Sha256: f18965f4607278a9b6cd3dabd3e4d28698238282655dd97d736fdacb059fa458

Contents?: true

Size: 1.75 KB

Versions: 5

Compression:

Stored size: 1.75 KB

Contents

module ActiveAdmin
  module ViewHelpers
    module DisplayHelper

      # Attempts to call any known display name methods on the resource.
      # See the setting in `application.rb` for the list of methods and their priority.
      def display_name(resource)
        resource.send display_name_method_for resource if resource
      end

      # Looks up and caches the first available display name method.
      def display_name_method_for(resource)
        @@display_name_methods_cache ||= {}
        @@display_name_methods_cache[resource.class] ||= begin
          methods = active_admin_application.display_name_methods - association_methods_for(resource)
          methods.detect{ |method| resource.respond_to? method }
        end
      end

      # To prevent conflicts, we exclude any methods that happen to be associations.
      def association_methods_for(resource)
        return [] unless resource.class.respond_to? :reflect_on_all_associations
        resource.class.reflect_on_all_associations.map(&:name)
      end

      # Return a pretty string for any object
      # Date Time are formatted via #localize with :format => :long
      # ActiveRecord and Mongoid objects are formatted via #auto_link
      # We attempt to #display_name of any other objects
      def pretty_format(object)
        case object
        when String
          object
        when Arbre::Element
          object
        when Date, Time
          localize(object, :format => :long)
        when ->(obj){defined?(::ActiveRecord) && obj.is_a?(ActiveRecord::Base)}
          auto_link(object)
        when ->(obj){defined?(::Mongoid) && obj.class.included_modules.include?(Mongoid::Document)}
          auto_link(object)
        else
          display_name(object)
        end
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
yousty-activeadmin-1.0.4.pre lib/active_admin/view_helpers/display_helper.rb
yousty-activeadmin-1.0.3.pre lib/active_admin/view_helpers/display_helper.rb
yousty-activeadmin-1.0.2.pre lib/active_admin/view_helpers/display_helper.rb
yousty-activeadmin-1.0.1.pre lib/active_admin/view_helpers/display_helper.rb
yousty-activeadmin-1.0.0.pre lib/active_admin/view_helpers/display_helper.rb