You are here

protected function EntityExtraFieldForm::attachFieldTypeConditionForm in Entity Extra Field 8

Same name and namespace in other branches
  1. 2.0.x src/Form/EntityExtraFieldForm.php \Drupal\entity_extra_field\Form\EntityExtraFieldForm::attachFieldTypeConditionForm()

Attach field type condition form.

Parameters

array $form: An array of form elements.

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

\Drupal\Core\Plugin\Context\ContextDefinitionInterface $context: The context definition.

Return value

\Drupal\entity_extra_field\Form\EntityExtraFieldForm

Throws

\Drupal\Component\Plugin\Exception\PluginException

1 call to EntityExtraFieldForm::attachFieldTypeConditionForm()
EntityExtraFieldForm::form in src/Form/EntityExtraFieldForm.php
Gets the actual form array to be built.

File

src/Form/EntityExtraFieldForm.php, line 376

Class

EntityExtraFieldForm
Define entity extra field form.

Namespace

Drupal\entity_extra_field\Form

Code

protected function attachFieldTypeConditionForm(array &$form, FormStateInterface $form_state, ContextDefinitionInterface $context) {
  $parents = [
    'field_type_condition',
  ];
  $form['conditions'] = [
    '#type' => 'vertical_tabs',
    '#title' => $this
      ->t('Field Type Conditions'),
  ];
  $form['field_type_condition']['#tree'] = TRUE;
  foreach ($this
    ->getConditionDefinitionsByContext($context) as $plugin_id => $definition) {
    $form['field_type_condition'][$plugin_id] = [
      '#type' => 'details',
      '#title' => $definition['label'],
      '#group' => 'conditions',
    ];
    $subform_parents = array_merge($parents, [
      $plugin_id,
    ]);
    $configuration = $this
      ->getEntityFormStateValue($subform_parents, $form_state, []);

    /** @var \Drupal\Core\Condition\ConditionInterface $condition */
    $condition = $this->conditionPluginManager
      ->createInstance($plugin_id, $configuration);
    $subform = [
      '#parents' => $subform_parents,
    ];
    $form['field_type_condition'][$plugin_id] += $condition
      ->buildConfigurationForm($subform, SubformState::createForSubform($subform, $form, $form_state));

    /**
     * @todo Remove workaround once
     * https://www.drupal.org/project/drupal/issues/2783897 is fixed.
     */
    if ($plugin_id === 'current_theme') {
      $form['field_type_condition'][$plugin_id]['theme']['#empty_option'] = $this
        ->t('- None -');
    }
  }
  $form['field_conditions_all_pass'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('All Conditions Must Pass'),
    '#description' => $this
      ->t('If checked, then all conditions must evaluate true.'),
    '#default_value' => $this
      ->getEntityFormStateValue('field_conditions_all_pass', $form_state),
  ];
  return $this;
}