1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <?php
- 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;
- }
- }
|