[], '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']; }