1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- namespace Drupal\user;
- use Drupal\Core\Session\AccountProxyInterface;
- use Drupal\Core\StringTranslation\StringTranslationTrait;
- use Drupal\Core\Url;
- /**
- * ToolbarLinkBuilder fills out the placeholders generated in user_toolbar().
- */
- class ToolbarLinkBuilder {
- use StringTranslationTrait;
- /**
- * The current user.
- *
- * @var \Drupal\Core\Session\AccountProxyInterface
- */
- protected $account;
- /**
- * ToolbarHandler constructor.
- *
- * @param \Drupal\Core\Session\AccountProxyInterface $account
- * The current user.
- */
- public function __construct(AccountProxyInterface $account) {
- $this->account = $account;
- }
- /**
- * Lazy builder callback for rendering toolbar links.
- *
- * @return array
- * A renderable array as expected by the renderer service.
- */
- public function renderToolbarLinks() {
- $links = [
- 'account' => [
- 'title' => $this->t('View profile'),
- 'url' => Url::fromRoute('user.page'),
- 'attributes' => [
- 'title' => $this->t('User account'),
- ],
- ],
- 'account_edit' => [
- 'title' => $this->t('Edit profile'),
- 'url' => Url::fromRoute('entity.user.edit_form', ['user' => $this->account->id()]),
- 'attributes' => [
- 'title' => $this->t('Edit user account'),
- ],
- ],
- 'logout' => [
- 'title' => $this->t('Log out'),
- 'url' => Url::fromRoute('user.logout'),
- ],
- ];
- $build = [
- '#theme' => 'links__toolbar_user',
- '#links' => $links,
- '#attributes' => [
- 'class' => ['toolbar-menu'],
- ],
- '#cache' => [
- 'contexts' => ['user'],
- ],
- ];
- return $build;
- }
- /**
- * Lazy builder callback for rendering the username.
- *
- * @return array
- * A renderable array as expected by the renderer service.
- */
- public function renderDisplayName() {
- return [
- '#markup' => $this->account->getDisplayName(),
- ];
- }
- }
|