You are here

public function NodeTooltip::settingsForm in Glossify 8

Generates a filter's settings form.

Parameters

array $form: A minimally prepopulated form array.

\Drupal\Core\Form\FormStateInterface $form_state: The state of the (entire) configuration form.

Return value

array The $form array with additional form elements for the settings of this filter. The submitted form values should match $this->settings.

Overrides FilterBase::settingsForm

File

modules/glossify_node/src/Plugin/Filter/NodeTooltip.php, line 32

Class

NodeTooltip
Filter to find and process found taxonomy terms in the fields value.

Namespace

Drupal\glossify_node\Plugin\Filter

Code

public function settingsForm(array $form, FormStateInterface $form_state) {
  $ntype_options = [];

  // Get all node types.
  $node_types = NodeType::loadMultiple();
  foreach ($node_types as $id => $node_type) {
    $ntype_options[$id] = $node_type
      ->get('name');
  }
  $form['glossify_node_case_sensitivity'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Case sensitive'),
    '#description' => $this
      ->t('Whether or not the match is case sensitive.'),
    '#default_value' => $this->settings['glossify_node_case_sensitivity'],
  ];
  $form['glossify_node_first_only'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('First match only'),
    '#description' => $this
      ->t('Match and link only the first occurance per field.'),
    '#default_value' => $this->settings['glossify_node_first_only'],
  ];
  $form['glossify_node_type'] = [
    '#type' => 'radios',
    '#title' => $this
      ->t('Type'),
    '#required' => TRUE,
    '#options' => [
      'tooltips' => $this
        ->t('Tooltips'),
      'links' => $this
        ->t('Links'),
      'tooltips_links' => $this
        ->t('Tooltips and links'),
    ],
    '#description' => $this
      ->t('How to show matches in content. Description as HTML5 tooltip (abbr element), link to description or both.'),
    '#default_value' => $this->settings['glossify_node_type'],
  ];
  $form['glossify_node_bundles'] = [
    '#type' => 'checkboxes',
    '#multiple' => TRUE,
    '#element_validate' => [
      [
        get_class($this),
        'validateNodeBundles',
      ],
    ],
    '#title' => $this
      ->t('Node types'),
    '#description' => $this
      ->t('Select the node types you want to use titles from to link to their node page.'),
    '#options' => $ntype_options,
    '#default_value' => explode(';', $this->settings['glossify_node_bundles']),
  ];
  $form['glossify_node_urlpattern'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('URL pattern'),
    '#description' => $this
      ->t('Url pattern, used for linking matched words. Accepts "[id]" as token. Example: "/node/[id]"'),
    '#default_value' => $this->settings['glossify_node_urlpattern'],
  ];
  return $form;
}