You are here

function inline_entity_form_reference_form in Inline Entity Form 7

Same name and namespace in other branches
  1. 8 inline_entity_form.module \inline_entity_form_reference_form()

Provides the form for adding existing entities through an autocomplete field.

Parameters

$entity_form: The form array that will receive the form.

$form_state: The form state of the parent form.

Return value

The form array containing the embedded form.

1 call to inline_entity_form_reference_form()
inline_entity_form_field_widget_form in ./inline_entity_form.module
Implements hook_field_widget_form().

File

./inline_entity_form.module, line 1034
Provides a widget for inline management (creation, modification, removal) of referenced entities. The primary use case is the parent -> children one (for example, order -> line items), where the child entities are never managed outside the…

Code

function inline_entity_form_reference_form($controller, $reference_form, &$form_state) {
  $labels = $controller
    ->labels();
  $ief_id = $reference_form['#ief_id'];
  $instance = $form_state['inline_entity_form'][$ief_id]['instance'];
  $autocomplete_path = 'inline_entity_form/autocomplete/' . $instance['entity_type'];
  $autocomplete_path .= '/' . $instance['field_name'] . '/' . $instance['bundle'];
  $reference_form['#title'] = t('Add existing @type_singular', array(
    '@type_singular' => $labels['singular'],
  ));
  $reference_form['entity_id'] = array(
    '#type' => 'textfield',
    '#title' => t('@label', array(
      '@label' => ucwords($labels['singular']),
    )),
    '#autocomplete_path' => $autocomplete_path,
    '#element_validate' => array(
      '_inline_entity_form_autocomplete_validate',
    ),
    '#required' => TRUE,
    '#maxlength' => 255,
  );

  // Add the actions
  $reference_form['actions'] = array(
    '#type' => 'container',
    '#weight' => 100,
  );
  $reference_form['actions']['ief_reference_save'] = array(
    '#type' => 'submit',
    '#value' => t('Add @type_singular', array(
      '@type_singular' => $labels['singular'],
    )),
    '#name' => 'ief-reference-submit-' . $reference_form['#ief_id'],
    '#limit_validation_errors' => array(
      $reference_form['#parents'],
    ),
    '#attributes' => array(
      'class' => array(
        'ief-entity-submit',
      ),
    ),
    '#ajax' => array(
      'callback' => 'inline_entity_form_get_element',
      'wrapper' => 'inline-entity-form-' . $reference_form['#ief_id'],
    ),
    '#submit' => array(
      'inline_entity_form_trigger_submit',
      'inline_entity_form_close_form',
    ),
  );
  $reference_form['actions']['ief_reference_cancel'] = array(
    '#type' => 'submit',
    '#value' => t('Cancel'),
    '#name' => 'ief-reference-cancel-' . $reference_form['#ief_id'],
    '#limit_validation_errors' => array(),
    '#ajax' => array(
      'callback' => 'inline_entity_form_get_element',
      'wrapper' => 'inline-entity-form-' . $reference_form['#ief_id'],
    ),
    '#submit' => array(
      'inline_entity_form_close_form',
    ),
  );
  $reference_form['#element_validate'][] = 'inline_entity_form_reference_form_validate';
  $reference_form['#ief_element_submit'][] = 'inline_entity_form_reference_form_submit';

  // Allow other modules to alter the form.
  drupal_alter('inline_entity_form_reference_form', $reference_form, $form_state);
  return $reference_form;
}