You are here

function webform_node_preprocess_page_title in Webform 6.x

Same name and namespace in other branches
  1. 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',
        ],
      ],
    ];
  }
}