You are here

public function NegotiationLanguageSelectionPageForm::buildForm in Language Selection Page 8.2

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

src/Form/NegotiationLanguageSelectionPageForm.php, line 46

Class

NegotiationLanguageSelectionPageForm
Configure the Language Selection Page language negotiation method.

Namespace

Drupal\language_selection_page\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $this->config = $this
    ->config('language_selection_page.negotiation');
  $manager = $this->languageSelectionPageConditionManager;
  foreach ($manager
    ->getDefinitions() as $def) {
    $condition_plugin = $manager
      ->createInstance($def['id']);
    $form_state
      ->set([
      'conditions',
      $condition_plugin
        ->getPluginId(),
    ], $condition_plugin);
    $condition_plugin
      ->setConfiguration($condition_plugin
      ->getConfiguration() + (array) $this->config
      ->get());
    $condition_form = [];
    $condition_form['#markup'] = $condition_plugin
      ->getDescription();
    $condition_form += $condition_plugin
      ->buildConfigurationForm([], $form_state);
    if (!empty($condition_form[$condition_plugin
      ->getPluginId()])) {
      $condition_form['#type'] = 'details';
      $condition_form['#open'] = TRUE;
      $condition_form['#title'] = $condition_plugin
        ->getName();
      $condition_form['#weight'] = $condition_plugin
        ->getWeight();
      $form['conditions'][$condition_plugin
        ->getPluginId()] = $condition_form;
    }
  }
  return parent::buildForm($form, $form_state);
}