public function WebformBreadcrumbBuilder::build in Webform 8.5
Same name and namespace in other branches
- 6.x src/Breadcrumb/WebformBreadcrumbBuilder.php \Drupal\webform\Breadcrumb\WebformBreadcrumbBuilder::build()
Builds the breadcrumb.
Parameters
\Drupal\Core\Routing\RouteMatchInterface $route_match: The current route match.
Return value
\Drupal\Core\Breadcrumb\Breadcrumb A breadcrumb.
Overrides BreadcrumbBuilderInterface::build
File
- src/
Breadcrumb/ WebformBreadcrumbBuilder.php, line 153
Class
- WebformBreadcrumbBuilder
- Provides a webform breadcrumb builder.
Namespace
Drupal\webform\BreadcrumbCode
public function build(RouteMatchInterface $route_match) {
$route_name = $route_match
->getRouteName();
if ($this->type === 'webform_source_entity') {
$source_entity = $this->requestHandler
->getCurrentSourceEntity([
'webform',
'webform_submission',
]);
$entity_type = $source_entity
->getEntityTypeId();
$entity_id = $source_entity
->id();
$breadcrumb = new Breadcrumb();
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Home'), '<front>'));
$breadcrumb
->addLink($source_entity
->toLink());
if ($webform_submission = $route_match
->getParameter('webform_submission')) {
if (strpos($route_match
->getRouteName(), 'webform.user.submission') !== FALSE) {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Submissions'), "entity.{$entity_type}.webform.user.submissions", [
$entity_type => $entity_id,
]));
}
elseif ($source_entity
->access('webform_submission_view') || $webform_submission
->access('view_any')) {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Results'), "entity.{$entity_type}.webform.results_submissions", [
$entity_type => $entity_id,
]));
}
elseif ($webform_submission
->access('view_own')) {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Results'), "entity.{$entity_type}.webform.user.submissions", [
$entity_type => $entity_id,
]));
}
}
}
elseif ($this->type === 'webform_help') {
$breadcrumb = new Breadcrumb();
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Home'), '<front>'));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Administration'), 'system.admin'));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Help'), 'help.main'));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Webform'), 'help.page', [
'name' => 'webform',
]));
}
elseif ($this->type === 'webform_plugins_elements') {
$breadcrumb = new Breadcrumb();
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Home'), '<front>'));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Administration'), 'system.admin'));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Reports'), 'system.admin_reports'));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Elements'), 'webform.reports_plugins.elements'));
}
else {
$breadcrumb = new Breadcrumb();
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Home'), '<front>'));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Administration'), 'system.admin'));
if (!$this->configFactory
->get('webform.settings')
->get('ui.toolbar_item')) {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Structure'), 'system.admin_structure'));
}
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Webforms'), 'entity.webform.collection'));
switch ($this->type) {
case 'webform_config':
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Configuration'), 'webform.config'));
if (strpos($route_name, 'config_translation.item.') === 0 && $route_name !== 'config_translation.item.overview.webform.config') {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Translate'), 'config_translation.item.overview.webform.config'));
}
break;
case 'webform_options':
if ($route_name !== 'entity.webform_options.collection') {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Options'), 'entity.webform_options.collection'));
}
if (strpos($route_name, 'entity.webform_image_select_images') === 0) {
// @see webform_image_select.module.
if ($route_name !== 'entity.webform_image_select_images.collection') {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Images'), 'entity.webform_image_select_images.collection'));
}
}
elseif (strpos($route_name, 'entity.webform_options_custom') === 0) {
// @see webform_custom_options.module.
if ($route_name !== 'entity.webform_options_custom.collection') {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Custom'), 'entity.webform_options_custom.collection'));
}
}
break;
case 'webform_test':
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Testing'), 'webform_test.index'));
break;
case 'webform_template':
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Templates'), 'entity.webform.templates'));
break;
case 'webform_element':
/** @var \Drupal\webform\WebformInterface $webform */
$webform = $route_match
->getParameter('webform');
$breadcrumb
->addLink(Link::createFromRoute($webform
->label(), 'entity.webform.canonical', [
'webform' => $webform
->id(),
]));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Elements'), 'entity.webform.edit_form', [
'webform' => $webform
->id(),
]));
break;
case 'webform_handler':
/** @var \Drupal\webform\WebformInterface $webform */
$webform = $route_match
->getParameter('webform');
$breadcrumb
->addLink(Link::createFromRoute($webform
->label(), 'entity.webform.canonical', [
'webform' => $webform
->id(),
]));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Emails / Handlers'), 'entity.webform.handlers', [
'webform' => $webform
->id(),
]));
break;
case 'webform_variant':
/** @var \Drupal\webform\WebformInterface $webform */
$webform = $route_match
->getParameter('webform');
$breadcrumb
->addLink(Link::createFromRoute($webform
->label(), 'entity.webform.canonical', [
'webform' => $webform
->id(),
]));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Variants'), 'entity.webform.variants', [
'webform' => $webform
->id(),
]));
break;
case 'webform_submission':
/** @var \Drupal\webform\WebformSubmissionInterface $webform_submission */
$webform_submission = $route_match
->getParameter('webform_submission');
$webform = $webform_submission
->getWebform();
$breadcrumb
->addLink(Link::createFromRoute($webform
->label(), 'entity.webform.canonical', [
'webform' => $webform
->id(),
]));
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Results'), 'entity.webform.results_submissions', [
'webform' => $webform
->id(),
]));
break;
case 'webform_user_submissions':
case 'webform_user_drafts':
/** @var \Drupal\webform\WebformInterface $webform */
$webform = $route_match
->getParameter('webform');
$breadcrumb = new Breadcrumb();
$breadcrumb
->addLink(Link::createFromRoute($webform
->label(), 'entity.webform.canonical', [
'webform' => $webform
->id(),
]));
break;
case 'webform_user_submission':
/** @var \Drupal\webform\WebformSubmissionInterface $webform_submission */
$webform_submission = $route_match
->getParameter('webform_submission');
$webform = $webform_submission
->getWebform();
$breadcrumb = new Breadcrumb();
$breadcrumb
->addLink(Link::createFromRoute($webform
->label(), 'entity.webform.canonical', [
'webform' => $webform
->id(),
]));
if ($webform_submission
->access('view_own')) {
$breadcrumb
->addLink(Link::createFromRoute($this
->t('Submissions'), 'entity.webform.user.submissions', [
'webform' => $webform
->id(),
]));
}
break;
}
}
// This breadcrumb builder is based on a route parameter, and hence it
// depends on the 'route' cache context.
$breadcrumb
->addCacheContexts([
'route',
]);
return $breadcrumb;
}