Sha256: 50bcac5103b2be3d88bc36574cfc54ce95645a78926d70ff20828d49b35f68d7

Contents?: true

Size: 1.9 KB

Versions: 8

Compression:

Stored size: 1.9 KB

Contents

module Manage
  module ResourceHelper
    def index_fields
      list_index_fields
    end

    def edit_fields
      list_edit_fields
    end

    def attributes
      resource_class.attribute_names - %w(id created_at updated_at)
    end

    def field_value(scope, field_data)
      Fields::Reader.field_value(scope, field_data).to_s
    end

    def field_title(resource_class, field_data)
      Fields::Reader.field_title(resource_class, field_data)
    end

    def action_link(scope, link_data)
      value = nil

      if link_data.is_a? (Hash)
        relation = link_data.keys.first
        entity = Fields::Reader.field_value(scope, relation)
        unless entity.present?
          return ''
        end
        if link_data[relation][:label_field].present?
          value = field_value(scope, link_data[relation][:label_field])
        elsif link_data[relation][:label].present?
          value = link_data[relation][:label]
        end

        path = entity.class.name.dasherize.pluralize.downcase
        return  link_to value, [scope.public_send(relation)]
      end

      if link_data.is_a? (Symbol) or link_data.is_a?(String)
        relation = link_data.to_s
        if scope.class.reflect_on_association(link_data.to_sym).options[:class_name].present?
          rel_name = scope.class.reflect_on_association(link_data.to_sym).options[:class_name]
          relation = rel_name.downcase.dasherize.pluralize
        end
        if scope.class.reflect_on_association(link_data.to_sym).options[:as].present?
          key = scope.class.reflect_on_association(link_data.to_sym).options[:as].to_s + '_id'
        else
          key = scope.class.name.downcase.dasherize + '_id'
        end
        return "<a href=\"#{relation}?f%5B#{key}%5D=#{scope.id}\">#{resource_class.human_attribute_name(link_data.to_s)}</a>".html_safe
      end

      unless value
        raise 'Unsupported link data'
      end

    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
manage-1.3.7 app/helpers/manage/resource_helper.rb
manage-1.3.6 app/helpers/manage/resource_helper.rb
manage-1.3.5 app/helpers/manage/resource_helper.rb
manage-1.3.4 app/helpers/manage/resource_helper.rb
manage-1.3.3 app/helpers/manage/resource_helper.rb
manage-1.3.2 app/helpers/manage/resource_helper.rb
manage-1.3.1 app/helpers/manage/resource_helper.rb
manage-1.3.0 app/helpers/manage/resource_helper.rb