You are here

function update_helper_checklist_toolbar in Update helper 8

Same name and namespace in other branches
  1. 2.x modules/update_helper_checklist/update_helper_checklist.module \update_helper_checklist_toolbar()

Implements hook_toolbar().

File

modules/update_helper_checklist/update_helper_checklist.module, line 143
Update helper checklist hooks.

Code

function update_helper_checklist_toolbar() {
  $user = \Drupal::currentUser();

  /** @var Drupal\checklistapi\ChecklistapiChecklist $checklist */
  $checklist = checklistapi_checklist_load('update_helper_checklist');
  $items = [];

  // We are varying our cache by path and by permission.
  $items['update_helper_checklist'] = [
    '#cache' => [
      'keys' => [
        'toolbar',
        'updater_helper',
      ],
      'contexts' => [
        'user.permissions',
      ],
    ],
  ];

  /** @var \Drupal\checklistapi\Storage\StateStorage $state_storage */
  $state_storage = \Drupal::service('checklistapi_storage.state');
  \Drupal::service('renderer')
    ->addCacheableDependency($items['update_helper_checklist'], $state_storage
    ->setChecklistId($checklist->id)
    ->getSavedProgress());
  if ($checklist
    ->getPercentComplete() != 100 && $user
    ->hasPermission('view update_helper_checklist checklistapi checklist')) {
    $items['update_helper_checklist'] += [
      '#type' => 'toolbar_item',
      'tab' => [
        '#type' => 'link',
        '#title' => t('Pending updates'),
        '#url' => Url::fromRoute($checklist
          ->getRouteName()),
        '#attributes' => [
          'class' => [
            'toolbar-icon',
            'update-helper-checklist__toolbar-icon',
          ],
          'aria-pressed' => 'false',
        ],
      ],
      '#weight' => 500,
      '#attached' => [
        'library' => [
          'update_helper_checklist/toolbar-button',
        ],
      ],
    ];
  }
  return $items;
}