Mercurial > hg > cmmr2012-drupal-site
diff core/modules/comment/src/CommentBreadcrumbBuilder.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | 12f9dff5fda9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/comment/src/CommentBreadcrumbBuilder.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,65 @@ +<?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; + } + +}