You are here

public function AdminToolbarVersionSettingsForm::buildForm in Admin Toolbar Version 1.0.x

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/AdminToolbarVersionSettingsForm.php, line 29

Class

AdminToolbarVersionSettingsForm

Namespace

Drupal\admin_toolbar_version\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form = parent::buildForm($form, $form_state);
  $config = $this
    ->config('admin_toolbar_version.settings');
  $form['#title'] = $this
    ->t('Admin Toolbar Version');
  $form['#tree'] = true;
  foreach ($config
    ->get('environments') as $id => $environment) {
    $form['environments'][$id] = [
      '#type' => 'details',
      '#title' => $environment['name'],
      '#open' => false,
      'name' => [
        '#type' => 'textfield',
        '#title' => 'Name',
        '#description' => 'The name that should be displayed in the toolbar',
        '#default_value' => $environment['name'],
      ],
      'domain' => [
        '#type' => 'textfield',
        '#title' => 'Domain',
        '#description' => 'Enter a preg_match pattern to match the host (eg. "/www\\.domain\\.com/" ).',
        '#default_value' => $environment['domain'],
      ],
      'variable' => [
        '#type' => 'textfield',
        '#title' => 'Variable',
        '#description' => 'Enter the value as available in $_ENV',
        '#default_value' => $environment['variable'],
      ],
      'color' => [
        '#type' => 'textfield',
        '#title' => 'Color',
        '#description' => 'Enter the css color for the background of the toolbar item (eg. #FF0000 or red)',
        '#default_value' => $environment['color'],
      ],
      'git' => [
        '#type' => 'textfield',
        '#title' => 'Git',
        '#description' => 'Path to the GIT HEAD file (relative to Drupal root), Leave empty to not show GIT info.',
        '#default_value' => $environment['git'],
      ],
    ];
  }
  $form['environments'][0] = [
    '#type' => 'details',
    '#open' => TRUE,
    '#title' => 'Add new environment',
    'name' => [
      '#type' => 'textfield',
      '#title' => 'Name',
      '#description' => 'The name that should be displayed in the toolbar. Leave empty to remove an environment.',
      '#default_value' => '',
    ],
    'domain' => [
      '#type' => 'textfield',
      '#title' => 'Domain',
      '#description' => 'Enter a preg_match pattern to match the host (eg. "/www\\.domain\\.com/" ).',
      '#default_value' => '',
    ],
    'variable' => [
      '#type' => 'textfield',
      '#title' => 'Variable',
      '#description' => 'Enter the value as available in $_ENV',
      '#default_value' => '',
    ],
    'color' => [
      '#type' => 'textfield',
      '#title' => 'Color',
      '#description' => 'Enter the css color for the background of the toolbar item (eg. #FF0000 or red)',
      '#default_value' => '',
    ],
    'git' => [
      '#type' => 'textfield',
      '#title' => 'Git',
      '#description' => 'Path to the GIT HEAD file (relative to Drupal root), Leave empty to not show GIT info.',
      '#default_value' => '/.git/HEAD',
    ],
  ];

  /** @var \Drupal\Core\Extension\ExtensionList $extension_list */
  $extension_list = \Drupal::service('extension.list.module');
  $list = $extension_list
    ->getList();
  $list_options = [];
  foreach ($list as $name => $item) {
    $list_options[$name] = $item
      ->getName();
  }
  $form['version_source'] = [
    '#type' => 'select',
    '#options' => $list_options,
    '#title' => 'Version source',
    '#description' => 'The module to grab the version information from.',
    '#default_value' => $config
      ->get('version_source') ?? \Drupal::installProfile(),
  ];
  return $form;
}