Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 16 |
CommentBreadcrumbBuilder | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
42 | |
0.00% |
0 / 16 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
applies | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 2 |
|||
build | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 12 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\comment\CommentBreadcrumbBuilder. | |
*/ | |
namespace Drupal\comment; | |
use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface; | |
use Drupal\Core\Breadcrumb\Breadcrumb; | |
use Drupal\Core\Entity\EntityManagerInterface; | |
use Drupal\Core\Link; | |
use Drupal\Core\Routing\RouteMatchInterface; | |
use Drupal\Core\StringTranslation\StringTranslationTrait; | |
/** | |
* Class to define the comment breadcrumb builder. | |
*/ | |
class CommentBreadcrumbBuilder implements BreadcrumbBuilderInterface { | |
use StringTranslationTrait; | |
/** | |
* The comment storage. | |
* | |
* @var \Drupal\Core\Entity\EntityStorageInterface | |
*/ | |
protected $storage; | |
/** | |
* Constructs the CommentBreadcrumbBuilder. | |
* | |
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
* The entity manager. | |
*/ | |
public function __construct(EntityManagerInterface $entity_manager) { | |
$this->storage = $entity_manager->getStorage('comment'); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function applies(RouteMatchInterface $route_match) { | |
return $route_match->getRouteName() == 'comment.reply' && $route_match->getParameter('entity'); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function build(RouteMatchInterface $route_match) { | |
$breadcrumb = new Breadcrumb(); | |
$breadcrumb->addCacheContexts(['route']); | |
$breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '<front>')); | |
$entity = $route_match->getParameter('entity'); | |
$breadcrumb->addLink(new Link($entity->label(), $entity->urlInfo())); | |
$breadcrumb->addCacheableDependency($entity); | |
if (($pid = $route_match->getParameter('pid')) && ($comment = $this->storage->load($pid))) { | |
/** @var \Drupal\comment\CommentInterface $comment */ | |
$breadcrumb->addCacheableDependency($comment); | |
// Display link to parent comment. | |
// @todo Clean-up permalink in https://www.drupal.org/node/2198041 | |
$breadcrumb->addLink(new Link($comment->getSubject(), $comment->urlInfo())); | |
} | |
return $breadcrumb; | |
} | |
} |