Sha256: d4aad210f28587d5ceb52056831a2888cf57e92bb08bb0636026507ed501f25e

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

module RademadeAdmin::FormHelper

  def admin_form(record, model, &block)
    semantic_form_for(
      record,
      :url => record.new_record? ? admin_create_uri(model) : admin_update_uri(record),
      :as => :data,
      :html => {
        :multipart => true,
        :novalidate => true,
        :autocomplete => 'off',
        :class => (record.new_record? ? 'insert-item-form' : 'update-item-form') + ' form-horizontal',
      },
      &block
    )
  end

  def admin_field(form, name, params, model_info, record)
    attrs = admin_default_params(name).merge(admin_field_params(params))

    field = form.input(name, input_attr(attrs))

    if multiple_relation?(model_info, name)
      link = admin_field_link_to_list(name, model_info, record).to_s
    else
      link = ''
    end

    concat field + link
  end

  def admin_default_params(name)
    {:label => field_to_label(name)}
  end

  def admin_field_link_to_list(name, model_info, record)
    uri = admin_model_url_for(model_info.reflect_on_association(name).class_name, {
      :action => :index,
      :parent => model_info.model,
      :parent_id => record.id.to_s
    })
    link_to(field_to_label(name).pluralize + ' list', uri)
  end

  def admin_field_params(field_params)
    if field_params.is_a? Hash
      field_params
    else
      {:as => field_params}
    end
  end

  private

  def multiple_relation?(model_info, name)
    association = model_info.reflect_on_association(name)
    if association
      inner_model = association.class_name.to_s
      model_info.has_many.include? inner_model
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rademade_admin-0.0.1 app/helpers/rademade_admin/form_helper.rb