You are here

function field_group_field_ui_form_params in Field Group 8.3

Same name and namespace in other branches
  1. 8 includes/field_ui.inc \field_group_field_ui_form_params()
  2. 7.2 field_group.field_ui.inc \field_group_field_ui_form_params()
  3. 7 field_group.field_ui.inc \field_group_field_ui_form_params()

Helper function to get the form parameters to use while building the fields and display overview form.

Parameters

$form:

\Drupal\Core\Entity\EntityDisplayBase $display:

Return value

\stdClass

1 call to field_group_field_ui_form_params()
field_group_field_ui_display_form_alter in includes/field_ui.inc
Function to alter the display overview screens.

File

includes/field_ui.inc, line 30
Field_group.field_ui.inc is a file that contains most functions needed on the Fields UI Manage forms (display and fields).

Code

function field_group_field_ui_form_params($form, EntityDisplayBase $display) {
  $params = new stdClass();
  $params->entity_type = $display
    ->getTargetEntityTypeId();
  $params->bundle = $display
    ->getTargetBundle();
  $params->mode = $display
    ->getMode();
  $params->context = field_group_get_context_from_display($display);
  $params->groups = [];
  $params->groups = field_group_info_groups($params->entity_type, $params->bundle, $params->context, $params->mode);

  // Gather parenting data.
  $params->parents = [];
  foreach ($params->groups as $name => $group) {
    if (!empty($group->children)) {
      foreach ($group->children as $child) {

        // Field UI js sometimes can trigger an endless loop. Check if the parent
        // of this field is not a child.
        if ($child !== $group->parent_name) {
          $params->parents[$child] = $name;
        }
      }
    }
  }

  // Get possible regions.
  // TODO remove the field layout part when it's remove from in core.
  // see https://www.drupal.org/project/field_group/issues/3086019
  $ds_info = $display
    ->getThirdPartySettings('ds');
  $field_layout_info = $display
    ->getThirdPartySettings('field_layout');

  /** @var \Drupal\Core\Layout\LayoutDefinition $layout */
  if (!empty($field_layout_info) && isset($field_layout_info['id'])) {
    $layout = \Drupal::service('plugin.manager.core.layout')
      ->getDefinition($field_layout_info['id']);
    $params->available_regions = $layout
      ->getRegionNames();
    $params->default_region = $layout
      ->getDefaultRegion() ?: 'hidden';
  }
  elseif (!empty($ds_info['layout']['id'])) {
    $layout = \Drupal::service('plugin.manager.core.layout')
      ->getDefinition($ds_info['layout']['id']);
    $params->available_regions = $layout
      ->getRegionNames();

    // Hidden is an available region too, as weird as it may seems.
    $params->available_regions[] = 'hidden';
    $params->default_region = $layout
      ->getDefaultRegion() ?: 'hidden';
  }
  else {
    $params->available_regions = [
      'content',
      'hidden',
    ];
    $params->default_region = 'hidden';
  }
  return $params;
}