You are here

public function LanguageSwitcherExtendedSettingsForm::buildForm in Language Switcher Extended 8

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/LanguageSwitcherExtendedSettingsForm.php, line 35

Class

LanguageSwitcherExtendedSettingsForm
Configure language_switcher_extended settings for this site.

Namespace

Drupal\language_switcher_extended\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('language_switcher_extended.settings');
  $form['mode'] = [
    '#type' => 'radios',
    '#title' => $this
      ->t('Language Switcher Mode'),
    '#description' => $this
      ->t('Choose the preferred Language Switcher behavior.'),
    '#default_value' => $config
      ->get('mode'),
    '#options' => [
      'default' => $this
        ->t('Default core'),
      'always_link_to_front' => $this
        ->t('Always link to the frontpage'),
      'process_untranslated' => $this
        ->t('Alter the language switcher for untranslated content entities'),
    ],
    'default' => [
      '#description' => $this
        ->t('Use the default core processor.'),
    ],
    'always_link_to_front' => [
      '#description' => $this
        ->t('Always link all language switcher items to their corresponding frontpage.'),
    ],
    'process_untranslated' => [
      '#description' => $this
        ->t('Choose between different processor methods for resolving untranslated languages for the current content entity.'),
    ],
    '#required' => TRUE,
  ];
  $form['untranslated_handler'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Untranslated Handler'),
    '#description' => $this
      ->t('How should an untranslated language switcher item be resolved.'),
    '#default_value' => $config
      ->get('untranslated_handler'),
    '#options' => [
      'hide_link' => $this
        ->t('Hide the language switcher link'),
      'link_to_front' => $this
        ->t('Link to the frontpage'),
      'no_link' => $this
        ->t('Display the language without link'),
    ],
    '#states' => [
      'visible' => [
        ':input[name="mode"]' => [
          'value' => 'process_untranslated',
        ],
      ],
      'required' => [
        ':input[name="mode"]' => [
          'value' => 'process_untranslated',
        ],
      ],
    ],
  ];
  $form['hide_single_link'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Hide single link'),
    '#description' => $this
      ->t('Hide the remaining language switcher links, if non existing translations were hidden.'),
    '#default_value' => $config
      ->get('hide_single_link'),
    '#states' => [
      'visible' => [
        ':input[name="mode"]' => [
          'value' => 'process_untranslated',
        ],
        'select[name="untranslated_handler"]' => [
          'value' => 'hide_link',
        ],
      ],
    ],
  ];
  $form['hide_single_link_block'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Hide single link block'),
    '#description' => $this
      ->t('Hide the block when the single link is hidden.'),
    '#default_value' => $config
      ->get('hide_single_link_block'),
    '#states' => [
      'visible' => [
        ':input[name="hide_single_link"]' => [
          'checked' => TRUE,
        ],
      ],
    ],
  ];
  $form['current_language_mode'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Current language mode'),
    '#description' => $this
      ->t('How should a current language switcher item be resolved.'),
    '#default_value' => $config
      ->get('current_language_mode'),
    '#options' => [
      'default' => $this
        ->t('Use the default core processor.'),
      'hide_link' => $this
        ->t('Hide the language switcher link'),
      'no_link' => $this
        ->t('Display the language without link'),
    ],
    '#states' => [
      'invisible' => [
        ':input[name="mode"]' => [
          'value' => 'default',
        ],
      ],
    ],
  ];
  $form['show_langcode'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Show language code'),
    '#description' => $this
      ->t('Display the switcher options in language code instead of the full language name.'),
    '#default_value' => $config
      ->get('show_langcode'),
  ];
  return parent::buildForm($form, $form_state);
}