You are here

function field_collection_table_field_attach_form in Field Collection Table 7

Implements hook_field_attach_form().

File

./field_collection_table.module, line 435
Module implementing a field-collection table formatter.

Code

function field_collection_table_field_attach_form($entity_type, $entity, &$form, &$form_state, $langcode) {
  list(, , $bundle) = entity_extract_ids($entity_type, $entity);

  // Host entity edit.
  foreach (field_info_instances($entity_type, $bundle) as $field_name => $instance) {
    if (isset($form[$field_name]) && $instance['widget']['type'] === 'field_collection_table') {
      $language = $form[$field_name]['#language'];
      $form[$field_name][$language]['#theme'] = 'field_collection_table_multiple_value_fields';
      $form[$field_name][$language]['#custom_settings'] = $instance['widget']['settings'];
      $form[$field_name][$language]['#pre_render'][] = 'field_collection_table_pre_render_multiple_fields';
    }
    $field = field_info_field($field_name);
    if ($field['type'] === 'field_collection' && isset($form[$field_name]) && $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED && empty($form_state['programmed']) && $instance['widget']['type'] === 'field_collection_table' && field_access('edit', $field, $entity_type)) {
      $element_langcode = $form[$field_name]['#language'];
      $element_wrapper = $form[$field_name][$element_langcode]['add_more']['#ajax']['wrapper'];
      for ($i = 0; $i <= $form[$field_name][$element_langcode]['#max_delta']; $i++) {
        if (isset($form[$field_name][$element_langcode][$i]['remove_button'])) {
          $form[$field_name][$element_langcode][$i]['remove_button']['#ajax']['wrapper'] = $element_wrapper;
        }
      }
    }
  }

  // Individual field collection item edit.
  if ($entity_type === 'field_collection_item') {
    $instance = $entity
      ->instanceInfo();
    if ($instance['widget']['type'] === 'field_collection_table') {
      $form['#theme'] = 'field_collection_table_multiple_value_field';
      $form['#pre_render'][] = 'field_collection_table_pre_render_field';
    }
  }
}