You are here

public function EditComponentForm::orphanedItemsElement in Layout Paragraphs 2.0.x

Form #process callback.

Builds the orphaned items form element for when a new layout's regions do not match the previous one's.

Parameters

array $element: The form element.

\Drupal\Core\Form\FormStateInterface $form_state: The form state object.

array $form: The complete form.

Return value

array The form element.

File

src/Form/EditComponentForm.php, line 94

Class

EditComponentForm
Class LayoutParagraphsComponentEditForm.

Namespace

Drupal\layout_paragraphs\Form

Code

public function orphanedItemsElement(array $element, FormStateInterface $form_state, array &$form) {
  $old_regions = $this
    ->getLayoutRegionNames($element['#old_layout']);
  $new_regions = $this
    ->getLayoutRegionNames($element['#new_layout']);
  $section = $this->layoutParagraphsLayout
    ->getLayoutSection($this->paragraph);
  $has_orphans = FALSE;
  foreach ($old_regions as $region_name => $region) {
    if ($section
      ->getComponentsForRegion($region_name) && empty($new_regions[$region_name])) {
      $has_orphans = TRUE;
      $element[$region_name] = [
        '#type' => 'select',
        '#options' => $new_regions,
        '#wrapper_attributes' => [
          'class' => [
            'container-inline',
          ],
        ],
        '#title' => $this
          ->t('Move items from "@region" to', [
          '@region' => $region,
        ]),
      ];
    }
  }
  if ($has_orphans) {
    $element += [
      '#type' => 'fieldset',
      '#title' => $this
        ->t('Move Orphaned Items'),
      '#description' => $this
        ->t('Choose where to move items for missing regions.'),
    ];
  }
  return $element;
}