Sha256: 0fbec25ffcbe07fd5646b6e459372367db2c1da3563d79ca915610bf1ffdb594

Contents?: true

Size: 1.46 KB

Versions: 2

Compression:

Stored size: 1.46 KB

Contents

require 'digest'

module Administrate
  module ApplicationHelper
    PLURAL_MANY_COUNT = 2.1

    def gravatar_for_email(email, size = 120)
      hash = Digest::MD5.hexdigest(email)

      "//www.gravatar.com/avatar/#{hash}?s=#{size}"
    end

    def render_field(field, locals = {})
      locals.merge!(field: field)
      render locals: locals, partial: field.to_partial_path
    end

    def class_from_resource(resource_name)
      resource_name.to_s.classify.constantize
    end

    def display_resource_name(resource_name)
      class_from_resource(resource_name).
        model_name.
        human(
          count: PLURAL_MANY_COUNT,
          default: resource_name.to_s.pluralize.titleize,
        )
    end

    def sort_order(order)
      case order
      when "asc" then "ascending"
      when "desc" then "descending"
      else "none"
      end
    end

    def resource_index_route_key(resource_name)
      ActiveModel::Naming.route_key(class_from_resource(resource_name))
    end

    def sanitized_order_params(page, current_field_name)
      collection_names = page.association_includes + [current_field_name]
      association_params = collection_names.map do |assoc_name|
        { assoc_name => %i[order direction page per_page] }
      end
      params.permit(:search, :id, :page, :per_page, association_params)
    end

    def clear_search_params
      params.except(:search, :page).permit(
        :per_page, resource_name => %i[order direction]
      )
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
semantic-administrate-0.10.1 app/helpers/administrate/application_helper.rb
semantic-administrate-0.10.0 app/helpers/administrate/application_helper.rb