You are here

public function DevelopmentToolsAssemblerForm::buildForm in Varbase: The Ultimate Drupal CMS Starter Kit (Bootstrap Ready) 8.5

Same name and namespace in other branches
  1. 8.8 src/Form/DevelopmentToolsAssemblerForm.php \Drupal\varbase\Form\DevelopmentToolsAssemblerForm::buildForm()
  2. 8.4 src/Form/DevelopmentToolsAssemblerForm.php \Drupal\varbase\Form\DevelopmentToolsAssemblerForm::buildForm()
  3. 8.6 src/Form/DevelopmentToolsAssemblerForm.php \Drupal\varbase\Form\DevelopmentToolsAssemblerForm::buildForm()
  4. 8.7 src/Form/DevelopmentToolsAssemblerForm.php \Drupal\varbase\Form\DevelopmentToolsAssemblerForm::buildForm()
  5. 9.0.x src/Form/DevelopmentToolsAssemblerForm.php \Drupal\varbase\Form\DevelopmentToolsAssemblerForm::buildForm()

Return value

array Development tools modules.

Overrides FormInterface::buildForm

File

src/Form/DevelopmentToolsAssemblerForm.php, line 82

Class

DevelopmentToolsAssemblerForm
Defines form for selecting extra compoennts for the assembler to install.

Namespace

Drupal\varbase\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, array &$install_state = NULL) {
  $form['#title'] = $this
    ->t('Development tools');
  $form['development_tools_introduction'] = [
    '#weight' => -1,
    '#prefix' => '<p>',
    '#markup' => $this
      ->t("If you're only evaluating Varbase, you don't need to install these tools. These tools are needed if you're a developer and you're installing Varbase to build a new site."),
    '#suffix' => '</p>',
  ];

  // Development tools.
  $developmentTools = ConfigBit::getList('configbit/development.tools.varbase.bit.yml', 'show_development_tools', TRUE, 'dependencies', 'profile', 'varbase');
  if (count($developmentTools)) {
    $form['development_tools'] = [
      '#type' => 'fieldset',
    ];
    foreach ($developmentTools as $development_tool_key => $development_tool_info) {
      $checkbox_title = '';
      $checkbox_description = '';
      $checkbox_selected = FALSE;
      if (isset($development_tool_info['title'])) {
        $checkbox_title = $development_tool_info['title'];
      }
      if (isset($development_tool_info['description'])) {
        $checkbox_description = $development_tool_info['description'];
      }
      if (isset($development_tool_info['selected'])) {
        $checkbox_selected = $development_tool_info['selected'];
      }

      // Have a checkbox to enable this development tool.
      $form['development_tools'][$development_tool_key] = [
        '#type' => 'checkbox',
        '#title' => $checkbox_title,
        '#description' => $checkbox_description,
        '#default_value' => $checkbox_selected,
      ];

      // If config_form is ture for this development tool.
      if (isset($development_tool_info['config_form']) && $development_tool_info['config_form'] == TRUE) {
        $form['development_tools'][$development_tool_key . '_config'] = [
          '#type' => 'fieldset',
          '#title' => $checkbox_title,
          '#states' => [
            'visible' => [
              ':input[name="' . $development_tool_key . '"]' => [
                'checked' => TRUE,
              ],
            ],
            'invisible' => [
              ':input[name="' . $development_tool_key . '"]' => [
                'checked' => FALSE,
              ],
            ],
          ],
        ];
        if (isset($development_tool_info['formbit'])) {
          $formbit_file_name = drupal_get_path('profile', 'varbase') . '/' . $development_tool_info['formbit'];
          if (file_exists($formbit_file_name)) {
            include_once $formbit_file_name;

            // Add configuration form element in the formbit position.
            call_user_func_array($development_tool_key . "_build_formbit", array(
              &$form['development_tools'][$development_tool_key . '_config'],
              &$form_state,
              &$install_state,
            ));
          }
        }
      }
    }
  }
  $form['actions'] = [
    'continue' => [
      '#type' => 'submit',
      '#value' => $this
        ->t('Continue'),
      '#button_type' => 'primary',
    ],
    '#type' => 'actions',
    '#weight' => 5,
  ];
  return $form;
}