annotate core/modules/user/src/ToolbarLinkBuilder.php @ 5:12f9dff5fda9 tip

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