public function ParagraphsBackgroundPlugin::buildConfigurationForm

Overrides ParagraphsBehaviorBase::buildConfigurationForm

File

paragraphs_collection/modules/paragraphs_collection_demo/src/Plugin/paragraphs/Behavior/ParagraphsBackgroundPlugin.php, line 28

Class

ParagraphsBackgroundPlugin
Provides a background image feature plugin.

Namespace

Drupal\paragraphs_collection_demo\Plugin\paragraphs\Behavior

Code

public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
  $paragraphs_type = $form_state
    ->getFormObject()
    ->getEntity();
  if ($paragraphs_type
    ->isNew()) {
    return [];
  }
  $image_field_options = $this
    ->getFieldNameOptions($paragraphs_type, 'image');

  // Show Image select form only if this entity has at least one image field.
  if (count($image_field_options) > 0) {
    $form['background_image_field'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('Background field'),
      '#description' => $this
        ->t('Image field to be used as background.'),
      '#options' => $image_field_options,
      '#empty_value' => '',
      '#default_value' => count($image_field_options) == 1 ? key($image_field_options) : $this->configuration['background_image_field'],
    ];
  }
  else {
    $form['message'] = [
      '#type' => 'container',
      '#markup' => $this
        ->t('No image field type available. Please add at least one in the <a href=":link">Manage fields</a> page.', [
        ':link' => Url::fromRoute("entity.{$paragraphs_type->getEntityType()->getBundleOf()}.field_ui_fields", [
          $paragraphs_type
            ->getEntityTypeId() => $paragraphs_type
            ->id(),
        ])
          ->toString(),
      ]),
      '#attributes' => [
        'class' => [
          'messages messages--error',
        ],
      ],
    ];
  }
  return $form;
}