function ConfigForm::buildForm

File

webprofiler/src/Form/ConfigForm.php, line 68

Class

ConfigForm
Class ConfigForm

Namespace

Drupal\webprofiler\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config('webprofiler.config');
    $form['purge_on_cache_clear'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Purge on cache clear'),
        '#description' => $this->t('Deletes all profiler files during cache clear.'),
        '#default_value' => $config->get('purge_on_cache_clear'),
    ];
    $storages = $this->storageManager
        ->getStorages();
    $form['storage'] = [
        '#type' => 'select',
        '#title' => $this->t('Storage backend'),
        '#description' => $this->t('Choose were to store profiler data.'),
        '#options' => $storages,
        '#default_value' => $config->get('storage'),
    ];
    $form['exclude'] = [
        '#type' => 'textarea',
        '#title' => $this->t('Exclude'),
        '#default_value' => $config->get('exclude'),
        '#description' => $this->t('Paths to exclude for profiling. One path per line.'),
    ];
    $form['active_toolbar_items'] = [
        '#type' => 'checkboxes',
        '#title' => $this->t('Active toolbar items'),
        '#options' => $this->getCollectors(),
        '#description' => $this->t('Choose which items to show into the toolbar.'),
        '#default_value' => $config->get('active_toolbar_items'),
    ];
    $form['ide_settings'] = [
        '#type' => 'details',
        '#title' => $this->t('IDE settings'),
        '#open' => FALSE,
    ];
    $form['ide_settings']['ide_link'] = [
        '#type' => 'textfield',
        '#title' => $this->t('IDE link'),
        '#description' => $this->t('IDE link for open files.'),
        '#default_value' => $config->get('ide_link'),
    ];
    $form['ide_settings']['ide_link_remote'] = [
        '#type' => 'textfield',
        '#title' => $this->t('IDE link remote path'),
        '#description' => $this->t('The path of the remote docroot. Leave blank if the docroot is on the same machine of the IDE. No trailing slash.'),
        '#default_value' => $config->get('ide_link_remote'),
    ];
    $form['ide_settings']['ide_link_local'] = [
        '#type' => 'textfield',
        '#title' => $this->t('IDE link local path'),
        '#description' => $this->t('The path of the local docroot. Leave blank if the docroot is on the same machine of IDE. No trailing slash.'),
        '#default_value' => $config->get('ide_link_local'),
    ];
    $form['database'] = [
        '#type' => 'details',
        '#title' => $this->t('Database settings'),
        '#open' => FALSE,
        '#states' => array(
            'visible' => array(
                array(
                    'input[name="active_toolbar_items[database]"]' => array(
                        'checked' => TRUE,
                    ),
                ),
            ),
        ),
    ];
    $form['database']['query_sort'] = [
        '#type' => 'radios',
        '#title' => $this->t('Sort query log'),
        '#options' => [
            'source' => 'by source',
            'duration' => 'by duration',
        ],
        '#description' => $this->t('The query table can be sorted in the order that the queries were executed or by descending duration.'),
        '#default_value' => $config->get('query_sort'),
    ];
    $form['database']['query_highlight'] = [
        '#type' => 'number',
        '#title' => $this->t('Slow query highlighting'),
        '#description' => $this->t('Enter an integer in milliseconds. Any query which takes longer than this many milliseconds will be highlighted in the query log. This indicates a possibly inefficient query, or a candidate for caching.'),
        '#default_value' => $config->get('query_highlight'),
        '#min' => 0,
    ];
    $storageId = $this->config('webprofiler.config')
        ->get('storage');
    $storage = $this->storageManager
        ->getStorage($storageId);
    $form['purge'] = [
        '#type' => 'details',
        '#title' => $this->t('Purge profiles'),
        '#open' => FALSE,
    ];
    $form['purge']['actions'] = [
        '#type' => 'actions',
    ];
    $form['purge']['actions']['purge'] = [
        '#type' => 'submit',
        '#value' => $this->t('Purge'),
        '#submit' => [
            [
                $this,
                'purge',
            ],
        ],
    ];
    $form['purge']['purge-help'] = [
        '#type' => 'inline_template',
        '#template' => '<div class="form-item">{{ message }}</div>',
        '#context' => [
            'message' => $this->t('Purge %storage profiles.', [
                '%storage' => $storage['title'],
            ]),
        ],
    ];
    return parent::buildForm($form, $form_state);
}