Mercurial > hg > cmmr2012-drupal-site
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\comment; | |
4 | |
5 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface; | |
6 use Drupal\Core\Breadcrumb\Breadcrumb; | |
7 use Drupal\Core\Entity\EntityManagerInterface; | |
8 use Drupal\Core\Link; | |
9 use Drupal\Core\Routing\RouteMatchInterface; | |
10 use Drupal\Core\StringTranslation\StringTranslationTrait; | |
11 | |
12 /** | |
13 * Class to define the comment breadcrumb builder. | |
14 */ | |
15 class CommentBreadcrumbBuilder implements BreadcrumbBuilderInterface { | |
16 use StringTranslationTrait; | |
17 | |
18 /** | |
19 * The comment storage. | |
20 * | |
21 * @var \Drupal\Core\Entity\EntityStorageInterface | |
22 */ | |
23 protected $storage; | |
24 | |
25 /** | |
26 * Constructs the CommentBreadcrumbBuilder. | |
27 * | |
28 * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
29 * The entity manager. | |
30 */ | |
31 public function __construct(EntityManagerInterface $entity_manager) { | |
32 $this->storage = $entity_manager->getStorage('comment'); | |
33 } | |
34 | |
35 /** | |
36 * {@inheritdoc} | |
37 */ | |
38 public function applies(RouteMatchInterface $route_match) { | |
39 return $route_match->getRouteName() == 'comment.reply' && $route_match->getParameter('entity'); | |
40 } | |
41 | |
42 /** | |
43 * {@inheritdoc} | |
44 */ | |
45 public function build(RouteMatchInterface $route_match) { | |
46 $breadcrumb = new Breadcrumb(); | |
47 $breadcrumb->addCacheContexts(['route']); | |
48 $breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '<front>')); | |
49 | |
50 $entity = $route_match->getParameter('entity'); | |
51 $breadcrumb->addLink(new Link($entity->label(), $entity->urlInfo())); | |
52 $breadcrumb->addCacheableDependency($entity); | |
53 | |
54 if (($pid = $route_match->getParameter('pid')) && ($comment = $this->storage->load($pid))) { | |
55 /** @var \Drupal\comment\CommentInterface $comment */ | |
56 $breadcrumb->addCacheableDependency($comment); | |
57 // Display link to parent comment. | |
58 // @todo Clean-up permalink in https://www.drupal.org/node/2198041 | |
59 $breadcrumb->addLink(new Link($comment->getSubject(), $comment->urlInfo())); | |
60 } | |
61 | |
62 return $breadcrumb; | |
63 } | |
64 | |
65 } |