You are here

public function MenuManipulatorSettingsForm::buildForm in Menu Manipulator 8

Same name and namespace in other branches
  1. 8.2 src/Form/MenuManipulatorSettingsForm.php \Drupal\menu_manipulator\Form\MenuManipulatorSettingsForm::buildForm()
  2. 3.0.x src/Form/MenuManipulatorSettingsForm.php \Drupal\menu_manipulator\Form\MenuManipulatorSettingsForm::buildForm()
  3. 2.0.x src/Form/MenuManipulatorSettingsForm.php \Drupal\menu_manipulator\Form\MenuManipulatorSettingsForm::buildForm()

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/MenuManipulatorSettingsForm.php, line 78

Class

MenuManipulatorSettingsForm
Configure custom settings for Menu Manipulators.

Namespace

Drupal\menu_manipulator\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('menu_manipulator.settings');
  $menus_options = [];
  foreach ($this->menus as $menu) {
    $menus_options[$menu
      ->id()] = $menu
      ->label();
  }

  // Quick intro.
  $form['intro'] = [
    '#type' => 'markup',
    '#markup' => '<p>' . $this
      ->t('Configure custom Menu Manipulator settings here.') . '</p>',
    '#weight' => 0,
  ];

  // Global settings.
  $form['global'] = [
    '#type' => 'details',
    '#open' => TRUE,
    '#title' => $this
      ->t('Global'),
    '#weight' => 0,
  ];
  $form['global']['preprocess_menus_title'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t("Add menus' title in Twig"),
    '#description' => $this
      ->t('You can then use {{ menu_title }} in your menu.html.twig files.'),
    '#default_value' => $config
      ->get('preprocess_menus_title'),
    '#weight' => 0,
  ];

  // Language settings.
  $form['language'] = [
    '#type' => 'details',
    '#open' => TRUE,
    '#title' => $this
      ->t('Language'),
    '#weight' => 1,
  ];
  $form['language']['preprocess_menus_language'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t("Automatically filter menus by current's user language"),
    '#default_value' => $config
      ->get('preprocess_menus_language'),
    '#weight' => 1,
  ];
  $form['language']['preprocess_menus_language_list'] = [
    '#type' => 'checkboxes',
    '#options' => $menus_options,
    '#title' => $this
      ->t("Select menus to be filtered by language"),
    '#description' => $this
      ->t("If none selected, all menus will be filtered by language."),
    '#default_value' => !empty($config
      ->get('preprocess_menus_language_list')) ? $config
      ->get('preprocess_menus_language_list') : [],
    '#states' => [
      'visible' => [
        ':input[name="preprocess_menus_language"]' => [
          'checked' => TRUE,
        ],
      ],
    ],
    '#weight' => 1,
  ];

  // Custom icons.
  $form['theming'] = [
    '#type' => 'details',
    '#open' => TRUE,
    '#title' => $this
      ->t('Theming'),
    '#weight' => 1,
  ];
  $form['theming']['preprocess_menus_icon'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t("Process menu items to display icons"),
    '#default_value' => $config
      ->get('preprocess_menus_icon'),
    '#weight' => 1,
  ];
  $form['theming']['preprocess_menus_icon_list'] = [
    '#type' => 'checkboxes',
    '#options' => $menus_options,
    '#title' => $this
      ->t("Select menus with icons"),
    '#default_value' => !empty($config
      ->get('preprocess_menus_icon_list')) ? $config
      ->get('preprocess_menus_icon_list') : [],
    '#states' => [
      'visible' => [
        ':input[name="preprocess_menus_icon"]' => [
          'checked' => TRUE,
        ],
      ],
    ],
    '#weight' => 1,
    '#description' => $this
      ->t("If none selected, all menus will be processed to expose icon in Twig."),
  ];
  $form['theming']['menu_link_icon_list'] = [
    '#type' => 'textarea',
    '#title' => $this
      ->t("List of available icons"),
    '#default_value' => !empty($config
      ->get('menu_link_icon_list')) ? $config
      ->get('menu_link_icon_list') : '',
    '#states' => [
      'visible' => [
        ':input[name="preprocess_menus_icon"]' => [
          'checked' => TRUE,
        ],
      ],
    ],
    '#weight' => 1,
    '#description' => $this
      ->t("One value per line (e.g `facebook|Facebook`)."),
  ];
  return parent::buildForm($form, $form_state);
}