You are here

function ief_table_view_mode_form_field_ui_display_overview_form_alter in Inline Entity Form Table View Mode 7

Implements hook_form_FORM_ID_alter().

File

./ief_table_view_mode.module, line 113
Defines a view mode to set up the columns of the table for the IEF widget.

Code

function ief_table_view_mode_form_field_ui_display_overview_form_alter(&$form, &$form_state) {
  if ($form['#view_mode'] != IEF_TABLE_VIEW_MODE_NAME) {
    return;
  }

  // It proceeds to hide a choice label.
  foreach (element_children($form['fields']) as $field_name) {
    $field_row =& $form['fields'][$field_name];
    if ($field_row['#row_type'] == 'field') {
      $field_row['label'] = array(
        '#prefix' => check_plain(t('<Hidden>')),
        '#type' => 'hidden',
        '#value' => 'hidden',
      );
    }
  }
  $found_ief_fields = FALSE;
  $entity_type = $form['#entity_type'];
  $bundle = $form['#bundle'];
  $entity_info = entity_get_info($entity_type);
  $settings = field_bundle_settings($entity_type, $bundle);
  $extra_fields = $settings['extra_fields']['display'];
  if (isset($entity_info['inline entity form']) && isset($entity_info['inline entity form']['controller'])) {
    $controller = new $entity_info['inline entity form']['controller']($entity_type, array());
    $table_fields = $controller
      ->tableFields(array(
      $bundle,
    ));
    foreach ($table_fields as $name => $table_field) {
      if ($table_field['type'] == 'property' && !in_array($name, $form['#extra'])) {
        $found_ief_fields = TRUE;
        $form['#extra'][] = $name;
        $display = isset($extra_fields[$name]) ? $extra_fields[$name][IEF_TABLE_VIEW_MODE_NAME] : array(
          'weight' => $table_field['weight'],
          'visible' => 'visible',
        );
        _ief_table_view_mode_add_extra_field($form['fields'], $name, $table_field, $display);
      }
    }
  }
  if ($found_ief_fields) {
    $form['ief_table_view_mode_info'] = array(
      '#markup' => '* ' . t('These fields come from the original definition of IEF.'),
    );
  }
}