You are here

function maestro_toolbar in Maestro 3.x

Same name and namespace in other branches
  1. 8.2 maestro.module \maestro_toolbar()

Implements hook_toolbar() for adding the Maestro toolbar.

File

./maestro.module, line 441
Provides glue logic, hook implementation and core set process variable functions.

Code

function maestro_toolbar() {
  $items = [];
  $items['Maestro'] = [
    '#cache' => [
      'contexts' => [
        'user.permissions',
      ],
    ],
  ];

  // Need at least this permission to view the maestro toolbar.
  if (!\Drupal::currentUser()
    ->hasPermission('view maestro task console')) {
    return $items;
  }
  $items['Maestro'] += [
    '#type' => 'toolbar_item',
    '#weight' => 1,
    'tab' => [
      '#type' => 'link',
      '#title' => 'Maestro',
      '#url' => Url::fromRoute("<front>"),
      '#attributes' => [
        'title' => 'Maestro menu',
        'class' => [
          'toolbar-icon',
          'toolbar-icon-devel',
        ],
      ],
    ],
    'tray' => [
      'configuration' => [],
      '#attached' => [
        'library' => [
          'maestro/maestro-toolbar',
        ],
      ],
    ],
  ];
  if (\Drupal::moduleHandler()
    ->moduleExists('maestro_taskconsole')) {
    $items['Maestro']['tray']['configuration'][] = [
      '#type' => 'link',
      '#title' => 'Task Console',
      '#url' => Url::fromUri("internal:/taskconsole"),
    ];
  }

  // Add more toolbar menu items depending on access.
  if (\Drupal::currentUser()
    ->hasPermission('administer maestro templates')) {
    if (\Drupal::moduleHandler()
      ->moduleExists('maestro_template_builder')) {
      $items['Maestro']['tray']['configuration'][] = [
        '#type' => 'link',
        '#title' => 'Template Builder',
        '#url' => Url::fromUri("internal:/maestro/templates/list"),
      ];
    }
  }
  if (\Drupal::currentUser()
    ->hasPermission('administer maestro queue entities')) {
    $config = \Drupal::config('maestro.settings');
    $token = $config
      ->get('maestro_orchestrator_token');
    $items['Maestro']['tray']['configuration'][] = [
      '#type' => 'link',
      '#title' => 'Run Orchestrator',
      '#url' => Url::fromRoute("maestro.orchestrator", [
        'token' => $token,
      ]),
    ];
    $items['Maestro']['tray']['configuration'][] = [
      '#type' => 'link',
      '#title' => 'Outstanding Tasks',
      '#url' => Url::fromUri("internal:/outstanding-tasks"),
    ];
    $items['Maestro']['tray']['configuration'][] = [
      '#type' => 'link',
      '#title' => 'All Active Tasks',
      '#url' => Url::fromUri("internal:/maestro-all-in-production-tasks"),
    ];
    $items['Maestro']['tray']['configuration'][] = [
      '#type' => 'link',
      '#title' => 'Workflow History',
      '#url' => Url::fromUri("internal:/maestro-all-flows"),
    ];
  }
  return $items;
}