Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
14 / 14 |
ForumListingBreadcrumbBuilder | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
6 | |
100.00% |
14 / 14 |
applies | |
100.00% |
1 / 1 |
2 | |
100.00% |
1 / 1 |
|||
build | |
100.00% |
1 / 1 |
4 | |
100.00% |
13 / 13 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\forum\Breadcrumb\ForumListingBreadcrumbBuilder. | |
*/ | |
namespace Drupal\forum\Breadcrumb; | |
use Drupal\Core\Link; | |
use Drupal\Core\Routing\RouteMatchInterface; | |
/** | |
* Provides a breadcrumb builder base class for forum listing pages. | |
*/ | |
class ForumListingBreadcrumbBuilder extends ForumBreadcrumbBuilderBase { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function applies(RouteMatchInterface $route_match) { | |
return $route_match->getRouteName() == 'forum.page' && $route_match->getParameter('taxonomy_term'); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function build(RouteMatchInterface $route_match) { | |
$breadcrumb = parent::build($route_match); | |
$breadcrumb->addCacheContexts(['route']); | |
// Add all parent forums to breadcrumbs. | |
/** @var \Drupal\Taxonomy\TermInterface $term */ | |
$term = $route_match->getParameter('taxonomy_term'); | |
$term_id = $term->id(); | |
$breadcrumb->addCacheableDependency($term); | |
$parents = $this->forumManager->getParents($term_id); | |
if ($parents) { | |
foreach (array_reverse($parents) as $parent) { | |
if ($parent->id() != $term_id) { | |
$breadcrumb->addCacheableDependency($parent); | |
$breadcrumb->addLink(Link::createFromRoute($parent->label(), 'forum.page', [ | |
'taxonomy_term' => $parent->id(), | |
])); | |
} | |
} | |
} | |
return $breadcrumb; | |
} | |
} |