You are here

function ief_table_view_mode_form_entity_view_display_edit_form_alter in Inline Entity Form Table View Mode 8

Same name and namespace in other branches
  1. 8.2 ief_table_view_mode.module \ief_table_view_mode_form_entity_view_display_edit_form_alter()

Implements hook_form_FORM_ID_alter() for entity_view_display_edit_form() form.

File

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

Code

function ief_table_view_mode_form_entity_view_display_edit_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $formObject = $form_state
    ->getFormObject();
  $entity = $formObject
    ->getEntity();
  if ($entity
    ->getMode() != IEF_TABLE_VIEW_MODE_NAME) {
    return;
  }

  // It proceeds to hide a choice label.
  foreach (\Drupal\Core\Render\Element::children($form['fields']) as $field_name) {
    $field_row =& $form['fields'][$field_name];
    if ($field_row['#row_type'] == 'field') {
      $field_row['label'] = array(
        '#prefix' => \Drupal::translation()
          ->translate('- Hidden -'),
        '#type' => 'hidden',
        '#value' => 'hidden',
      );
    }
  }
  $entityManager = \Drupal::service('entity.manager');
  $found_ief_fields = FALSE;
  $entity_type = $form['#entity_type'];
  $bundle = $form['#bundle'];
  $extra_fields = $entityManager
    ->getExtraFields($entity_type, $bundle);
  $extra_fields = isset($extra_fields['display']) ? $extra_fields['display'] : array();
  $inlineHandler = $entityManager
    ->getHandler($entity_type, 'inline_form');
  $entityTypeBundleInfo = \Drupal::service('entity_type.bundle.info');
  $bundles = $entityTypeBundleInfo
    ->getBundleInfo($entity_type);
  $table_fields = $inlineHandler
    ->getTableFields(array_keys($bundles));
  foreach ($table_fields as $name => $table_field) {
    if (!in_array($name, $form['#fields']) || !in_array($name, $form['#extra'])) {
      $found_ief_fields = TRUE;
      $form['#extra'][] = $name;
      $display = array(
        'weight' => $table_field['weight'],
        'visible' => TRUE,
      );
      _ief_table_view_mode_add_extra_field($form['fields'], $name, $table_field, $display, $entity, $formObject);
    }
  }
  if ($found_ief_fields) {
    $form['ief_table_view_mode_info'] = array(
      '#markup' => '* ' . \Drupal::translation()
        ->translate('These fields come from the original definition of IEF.'),
    );
  }
}