You are here

token.pages.inc in Token 8

Same filename and directory in other branches
  1. 6 token.pages.inc
  2. 7 token.pages.inc

User page callbacks for the token module.

File

token.pages.inc
View source
<?php

/**
 * @file
 * User page callbacks for the token module.
 */
use Drupal\Component\Serialization\Json;
use Drupal\Component\Utility\DiffArray;
use Drupal\Core\Link;
use Drupal\Core\Url;

/**
 * Theme a link to a token tree shown as a dialog.
 */
function template_preprocess_token_tree_link(&$variables) {
  if (empty($variables['text'])) {
    $variables['text'] = t('Browse available tokens.');
  }
  $variables['#attached']['library'][] = 'core/drupal.dialog.ajax';
  $variables['#attached']['library'][] = 'token/token';
  $variables['options']['attributes']['class'][] = 'token-dialog';
  $variables['options']['attributes']['class'][] = 'use-ajax';
  $tree_variables = [
    'token_types' => [],
    'global_types' => TRUE,
    'click_insert' => TRUE,
    'show_restricted' => FALSE,
    'show_nested' => FALSE,
    'recursion_limit' => 3,
  ];
  $query_options = array_intersect_key($variables, $tree_variables);
  $query_options = DiffArray::diffAssocRecursive($query_options, $tree_variables);
  if (!isset($variables['options']['query']['options'])) {
    $variables['options']['query']['options'] = [];
  }
  $variables['options']['query']['options'] += $query_options;

  // Because PHP converts query strings with arrays into a different syntax on
  // the next request, the options have to be encoded with JSON in the query
  // string so that we can reliably decode it for token comparison.
  $variables['options']['query']['options'] = Json::encode($variables['options']['query']['options']);

  // Set the token tree to open in a separate window.
  $variables['options']['attributes'] += [
    'data-dialog-type' => 'dialog',
    'data-dialog-options' => json_encode([
      'dialogClass' => 'token-tree-dialog',
      'width' => 600,
      'height' => 400,
      'position' => [
        'my' => 'right bottom',
        'at' => 'right-10 bottom-10',
      ],
      'draggable' => TRUE,
      'autoResize' => FALSE,
    ]),
  ];
  $variables['link'] = Link::createFromRoute($variables['text'], 'token.tree', [], $variables['options'])
    ->toRenderable();
  $variables['url'] = new Url('token.tree', [], $variables['options']);
  $variables['attributes'] = $variables['options']['attributes'];
}

Functions

Namesort descending Description
template_preprocess_token_tree_link Theme a link to a token tree shown as a dialog.