You are here

public function DropdownLanguage::blockForm in Dropdown Language 8.2

Same name and namespace in other branches
  1. 8.3 src/Plugin/Block/DropdownLanguage.php \Drupal\dropdown_language\Plugin\Block\DropdownLanguage::blockForm()
  2. 8 src/Plugin/Block/DropdownLanguage.php \Drupal\dropdown_language\Plugin\Block\DropdownLanguage::blockForm()
  3. 3.0.x src/Plugin/Block/DropdownLanguage.php \Drupal\dropdown_language\Plugin\Block\DropdownLanguage::blockForm()

Overrides BlockPluginTrait::blockForm

File

src/Plugin/Block/DropdownLanguage.php, line 231

Class

DropdownLanguage
Provides an alternative language switcher block.

Namespace

Drupal\dropdown_language\Plugin\Block

Code

public function blockForm($form, FormStateInterface $form_state) {
  $form = parent::blockForm($form, $form_state);
  $form['#attached']['library'][] = 'dropdown_language/dropdown-language-admin';
  $general_config = $this->configFactory
    ->get('dropdown_language.setting');
  $display_language_id = $general_config
    ->get('display_language_id');
  $current_path = Url::fromRoute('<current>')
    ->toString();
  $general_settings = [
    '#type' => 'link',
    '#title' => $this
      ->t('General Settings for all Dropdown Language Blocks'),
    '#url' => Url::fromRoute('dropdown_language.setting', [
      [
        'destination' => $current_path,
      ],
    ]),
    '#attributes' => [
      'class' => [
        'dropdown-general-settings',
      ],
    ],
  ];
  if ($display_language_id == 3) {
    $block_config = $this
      ->getConfiguration();
    $languages = $this->languageManager
      ->getLanguages();
    $form['labels'] = [
      '#type' => 'details',
      '#title' => $this
        ->t('Custom Labels for Language Names'),
      '#open' => TRUE,
      '#tree' => TRUE,
    ];
    foreach ($languages as $lid => $item) {
      $form['labels'][$lid] = [
        '#type' => 'textfield',
        '#required' => TRUE,
        '#title' => $this
          ->t('Label for <q>@lng</q>', [
          '@lng' => $item
            ->getName(),
        ]),
        '#default_value' => isset($block_config['labels'][$lid]) ? $block_config['labels'][$lid] : $item
          ->getName(),
      ];
    }
    $form['labels']['translation-note'] = [
      '#type' => 'inline_template',
      '#template' => '<dl class="dropdown-language-help"><dt>{{ title }}</dt><dd>{{ text }}</dd></dl>',
      '#context' => [
        'title' => $this
          ->t('How to translate custom labels'),
        'text' => $this
          ->t('Create a unique block instance for each language then assign via Language Visibility per block.  This is due to the general idea that you are now changing labels that were otherwise normally translatable strings by using these Custom Labels.'),
      ],
    ];
    $form['labels']['setting-link'] = $general_settings;
  }
  else {
    $form['setting-link'] = $general_settings;
  }
  return $form;
}