Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / user / src / ToolbarLinkBuilder.php
1 <?php
2
3 namespace Drupal\user;
4
5 use Drupal\Core\Session\AccountProxyInterface;
6 use Drupal\Core\StringTranslation\StringTranslationTrait;
7 use Drupal\Core\Url;
8
9 /**
10  * ToolbarLinkBuilder fills out the placeholders generated in user_toolbar().
11  */
12 class ToolbarLinkBuilder {
13
14   use StringTranslationTrait;
15
16   /**
17    * The current user.
18    *
19    * @var \Drupal\Core\Session\AccountProxyInterface
20    */
21   protected $account;
22
23   /**
24    * ToolbarHandler constructor.
25    *
26    * @param \Drupal\Core\Session\AccountProxyInterface $account
27    *   The current user.
28    */
29   public function __construct(AccountProxyInterface $account) {
30     $this->account = $account;
31   }
32
33   /**
34    * Lazy builder callback for rendering toolbar links.
35    *
36    * @return array
37    *   A renderable array as expected by the renderer service.
38    */
39   public function renderToolbarLinks() {
40     $links = [
41       'account' => [
42         'title' => $this->t('View profile'),
43         'url' => Url::fromRoute('user.page'),
44         'attributes' => [
45           'title' => $this->t('User account'),
46         ],
47       ],
48       'account_edit' => [
49         'title' => $this->t('Edit profile'),
50         'url' => Url::fromRoute('entity.user.edit_form', ['user' => $this->account->id()]),
51         'attributes' => [
52           'title' => $this->t('Edit user account'),
53         ],
54       ],
55       'logout' => [
56         'title' => $this->t('Log out'),
57         'url' => Url::fromRoute('user.logout'),
58       ],
59     ];
60     $build = [
61       '#theme' => 'links__toolbar_user',
62       '#links' => $links,
63       '#attributes' => [
64         'class' => ['toolbar-menu'],
65       ],
66       '#cache' => [
67         'contexts' => ['user'],
68       ],
69     ];
70
71     return $build;
72   }
73
74   /**
75    * Lazy builder callback for rendering the username.
76    *
77    * @return array
78    *   A renderable array as expected by the renderer service.
79    */
80   public function renderDisplayName() {
81     return [
82       '#markup' => $this->account->getDisplayName(),
83     ];
84   }
85
86 }