You are here

public function VarnishPurgerFormBase::buildFormTokensHelp in Varnish purger 8.2

Same name and namespace in other branches
  1. 8 src/Form/VarnishPurgerFormBase.php \Drupal\varnish_purger\Form\VarnishPurgerFormBase::buildFormTokensHelp()

Build the 'tokens' section of the form.

@todo This implementation depends on purge_tokens_token_info(), provided by the purge_token submodule. I'm aware this isn't the cleanest pattern but the most sensible way I can think of to get the supported token patterns.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

\Drupal\varnish_purger\Entity\VarnishPurgerSettings $settings: Configuration entity for the purger being configured.

1 call to VarnishPurgerFormBase::buildFormTokensHelp()
VarnishPurgerFormBase::buildForm in src/Form/VarnishPurgerFormBase.php
Form constructor.

File

src/Form/VarnishPurgerFormBase.php, line 376

Class

VarnishPurgerFormBase
Abstract form base for Varnish based configurable purgers.

Namespace

Drupal\varnish_purger\Form

Code

public function buildFormTokensHelp(array &$form, FormStateInterface $form_state, VarnishPurgerSettings $settings) {
  if (function_exists('purge_tokens_token_info')) {
    $tokens = purge_tokens_token_info()['tokens'];
    $form['tokens'] = [
      '#type' => 'details',
      '#group' => 'tabs',
      '#title' => $this
        ->t('Tokens'),
      '#description' => $this
        ->t('<p>Tokens are replaced for the <b>Path</b> and header <b>Value</b> fields.</p>'),
    ];
    $form['tokens']['table'] = [
      '#type' => 'table',
      '#responsive' => TRUE,
      '#header' => [
        'token' => [
          'data' => $this
            ->t('Token'),
          'class' => [
            RESPONSIVE_PRIORITY_MEDIUM,
          ],
        ],
        'description' => [
          'data' => $this
            ->t('Description'),
          'class' => [
            RESPONSIVE_PRIORITY_LOW,
          ],
        ],
      ],
    ];
    foreach ($this->tokenGroups as $token_group) {
      foreach (purge_tokens_token_info()['tokens'][$token_group] as $token => $info) {
        $token = sprintf('[%s:%s]', $token_group, $token);
        $form['tokens']['table'][$token]['token'] = [
          '#markup' => $this
            ->t('<b>@name</b><br /><code>@token</code>', [
            '@token' => $token,
            '@name' => $info['name'],
          ]),
        ];
        $form['tokens']['table'][$token]['description'] = [
          '#markup' => $info['description'],
        ];
      }
    }
  }
}