You are here

function ief_table_view_mode_form_entity_view_display_edit_form_alter in Inline Entity Form Table View Mode 8.2

Same name and namespace in other branches
  1. 8 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 34
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, FormStateInterface $form_state, $form_id) {
  $string_translation = \Drupal::translation();

  /** @var \Drupal\field_ui\Form\EntityDisplayFormBase $formObject */
  $formObject = $form_state
    ->getFormObject();
  $entity = $formObject
    ->getEntity();
  if ($entity
    ->getMode() != EntityInlineTableViewModeForm::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'] = [
        '#prefix' => $string_translation
          ->translate('- Hidden -'),
        '#type' => 'hidden',
        '#value' => 'hidden',
      ];
    }
  }
  $entityTypeManager = \Drupal::service('entity_type.manager');
  $found_ief_fields = FALSE;
  $entity_type = $form['#entity_type'];
  $bundle = $form['#bundle'];
  $inlineHandler = $entityTypeManager
    ->getHandler($entity_type, 'inline_form');
  $table_fields = $inlineHandler
    ->getTableFields([
    $bundle,
  ]);
  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 = [
        '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'] = [
      '#markup' => '* ' . $string_translation
        ->translate('These fields come from the original definition of IEF.'),
    ];
  }
}