function webform_node_preprocess_page_title in Webform 6.x
Same name and namespace in other branches
- 8.5 modules/webform_node/webform_node.module \webform_node_preprocess_page_title()
Implements hook_preprocess_HOOK() for page title templates.
File
- modules/
webform_node/ webform_node.module, line 206 - Provides a webform content type which allows webforms to be integrated into a website as nodes.
Code
function webform_node_preprocess_page_title(&$variables) {
$node = \Drupal::routeMatch()
->getParameter('node');
if ($node && is_string($node)) {
$node = Node::load($node);
}
if (!$node) {
return;
}
/** @var \Drupal\webform\WebformEntityReferenceManagerInterface $entity_reference_manager */
$entity_reference_manager = \Drupal::service('webform.entity_reference_manager');
// Only allow user to change webform for specific routes.
if (!$entity_reference_manager
->isUserWebformRoute($node)) {
return;
}
$webforms = $entity_reference_manager
->getWebforms($node);
if (count($webforms) > 1) {
$route_options = [
'query' => \Drupal::destination()
->getAsArray(),
];
$operations = [];
// Add current webform first.
$current_webform = $entity_reference_manager
->getWebform($node);
$operations[$current_webform
->id()] = [
'title' => $current_webform
->label(),
'url' => Url::fromRoute('entity.node.webform.entity_reference.set', [
'node' => $node
->id(),
'webform' => $current_webform
->id(),
], $route_options),
];
// Add remaining webforms.
foreach ($webforms as $webform) {
$operations[$webform
->id()] = [
'title' => $webform
->label(),
'url' => Url::fromRoute('entity.node.webform.entity_reference.set', [
'node' => $node
->id(),
'webform' => $webform
->id(),
], $route_options),
];
}
$variables['title_prefix']['webform_node'] = [
'#type' => 'operations',
'#links' => $operations,
'#prefix' => '<div class="webform-dropbutton webform-node-entity-references">',
'#suffix' => '</div>',
'#attached' => [
'library' => [
'webform_node/webform_node.entity_references',
],
],
];
}
}