You are here

public function AccordionMenusConfigForm::buildForm in Accordion Menus 8.4

Same name and namespace in other branches
  1. 8 src/Form/AccordionMenusConfigForm.php \Drupal\accordion_menus\Form\AccordionMenusConfigForm::buildForm()
  2. 8.2 src/Form/AccordionMenusConfigForm.php \Drupal\accordion_menus\Form\AccordionMenusConfigForm::buildForm()
  3. 8.3 src/Form/AccordionMenusConfigForm.php \Drupal\accordion_menus\Form\AccordionMenusConfigForm::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/AccordionMenusConfigForm.php, line 37

Class

AccordionMenusConfigForm
Configure accordion menus settings.

Namespace

Drupal\accordion_menus\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config(static::SETTINGS);

  // Get list of menus.
  $menus = menu_ui_get_menus();
  $form['accordion_menus'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Accordion Menus'),
    '#options' => $menus,
    '#description' => $this
      ->t('Select menu to make them accordion menu.'),
    '#default_value' => !empty($config
      ->get('accordion_menus')) ? $config
      ->get('accordion_menus') : [],
  ];
  $form['accordion_advanced'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Advanced settings'),
    '#open' => FALSE,
  ];
  $form['accordion_advanced']['accordion_menus_no_submenus'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Accordion without sub menu item'),
    '#options' => $menus,
    '#description' => $this
      ->t('Menus which have no sub menu item, will show also in accordion menu.'),
    '#default_value' => !empty($config
      ->get('accordion_menus_no_submenus')) ? $config
      ->get('accordion_menus_no_submenus') : [],
  ];
  $form['accordion_advanced']['accordion_menus_default_closed'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Accordion menu closed by default'),
    '#options' => $menus,
    '#description' => $this
      ->t('Allow all trees closed at beginning.'),
    '#default_value' => !empty($config
      ->get('accordion_menus_default_closed')) ? $config
      ->get('accordion_menus_default_closed') : [],
  ];
  $form['accordion_advanced']['default_tab'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Default tab'),
    '#description' => $this
      ->t('Consider all first level menu item and value will start from 0. Example for first menu item, it will be 0, for second it will be 1 and so on.'),
    '#open' => TRUE,
  ];
  foreach ($menus as $menu_name => $menu) {
    $form['accordion_advanced']['default_tab']['accordion_menus_active_tab_' . $menu_name] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t($menu . ': Active menu tab'),
      '#attributes' => [
        'type' => 'number',
      ],
      '#maxlength' => 3,
      '#default_value' => !empty($config
        ->get('accordion_menus_active_tab_' . $menu_name)) ? $config
        ->get('accordion_menus_active_tab_' . $menu_name) : 0,
    ];
  }
  return parent::buildForm($form, $form_state);
}