public function ConfigurationForm::buildForm in URLs queuer 8
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 PluginConfigFormBase::buildForm
File
- src/
Form/ ConfigurationForm.php, line 66
Class
- ConfigurationForm
- Configuration form for the Url and Path queuer.
Namespace
Drupal\purge_queuer_url\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this
->config('purge_queuer_url.settings');
// Traffic collection.
$form['collection'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Traffic collection'),
];
$form['collection']['queue_paths'] = [
'#title' => $this
->t('Queue paths instead of URLs.'),
'#type' => 'checkbox',
'#description' => $this
->t("If checked this queues paths without the scheme and domain name."),
'#default_value' => $config
->get('queue_paths'),
];
$form['collection']['host_override'] = [
'#title' => $this
->t('Hostname'),
'#type' => 'checkbox',
'#description' => $this
->t("You can override the hostname of the URLs that are queued. When you do this, you will lose any gathered domain names that have been collected but do have full control over how the queued URLs look like."),
'#default_value' => $config
->get('host_override'),
'#states' => [
'visible' => [
':input[name="queue_paths"]' => [
'checked' => FALSE,
],
],
],
];
$form['collection']['host'] = [
'#type' => 'textfield',
'#size' => 30,
'#default_value' => $config
->get('host'),
'#states' => [
'visible' => [
':input[name="queue_paths"]' => [
'checked' => FALSE,
],
':input[name="host_override"]' => [
'checked' => TRUE,
],
],
],
];
$form['collection']['scheme_override'] = [
'#title' => $this
->t('Scheme'),
'#type' => 'checkbox',
'#description' => $this
->t("When checked, you can enforce a single scheme like https:// for all the queued URLs instead of logging the schemes that visitors used."),
'#default_value' => $config
->get('scheme_override'),
'#states' => [
'visible' => [
':input[name="queue_paths"]' => [
'checked' => FALSE,
],
],
],
];
$form['collection']['scheme'] = [
'#type' => 'select',
'#default_value' => $config
->get('scheme'),
'#options' => [
'http' => $this
->t('http://'),
'https' => $this
->t('https://'),
],
'#states' => [
'visible' => [
':input[name="queue_paths"]' => [
'checked' => FALSE,
],
':input[name="scheme_override"]' => [
'checked' => TRUE,
],
],
],
];
// Blacklist form elements (and ajax 'add more' logic).
$form['blacklist'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Blacklist'),
'#description' => $this
->t('All cacheable HTTP responses with status code 200 generated by Drupal will be collected in the traffic registry. This approach has the disadvantage that crawlers generating query parameters can pollute your database. Blacklisting allows you to put in any string that will get blocked from entering the registry. It is recommended to <b>contribute back</b> blacklisted strings that are likely to affect any user of this module.'),
];
// Retrieve the existing blacklist and initiatlize the counter.
$blacklist = $config
->get('blacklist');
if (is_null($form_state
->get('blacklist_items_count'))) {
if (empty($blacklist)) {
$form_state
->set('blacklist_items_count', 1);
}
else {
$form_state
->set('blacklist_items_count', count($blacklist));
}
}
// Define the fields based on whats stored in form state.
$max = $form_state
->get('blacklist_items_count');
$form['blacklist']['blacklist'] = [
'#tree' => TRUE,
'#prefix' => '<div id="blacklist-wrapper">',
'#suffix' => '</div>',
];
for ($delta = 0; $delta < $max; $delta++) {
if (!isset($form['blacklist']['blacklist'][$delta])) {
$element = [
'#type' => 'textfield',
'#default_value' => isset($blacklist[$delta]) ? $blacklist[$delta] : '',
];
$form['blacklist']['blacklist'][$delta] = $element;
}
}
// Define the add button.
$form['blacklist']['add'] = [
'#type' => 'submit',
'#name' => 'add',
'#value' => $this
->t('Add'),
'#submit' => [
[
$this,
'addMoreSubmit',
],
],
'#ajax' => [
'callback' => [
$this,
'addMoreCallback',
],
'wrapper' => 'blacklist-wrapper',
'effect' => 'fade',
],
];
// Define a clear button to allow clearing the registry.
$form['actions']['clear'] = [
'#type' => 'submit',
'#value' => $this
->t('Clear traffic history'),
'#weight' => 10,
'#button_type' => 'danger',
];
if ($this
->isDialog($form, $form_state)) {
$form['actions']['clear']['#ajax'] = [
'callback' => '::submitFormClear',
];
}
else {
$form['actions']['clear']['#submit'] = [
[
$this,
'submitFormClear',
],
];
}
return parent::buildForm($form, $form_state);
}