function WorkspacesLazyBuilders::renderToolbarTab

Lazy builder callback for rendering the workspace toolbar tab.

Return value

array A render array.

File

core/modules/workspaces/src/WorkspacesLazyBuilders.php, line 33

Class

WorkspacesLazyBuilders
Defines a service for workspaces #lazy_builder callbacks.

Namespace

Drupal\workspaces

Code

public function renderToolbarTab() : array {
    $active_workspace = $this->workspaceManager
        ->getActiveWorkspace();
    $build = [
        '#type' => 'link',
        '#title' => $active_workspace ? $active_workspace->label() : $this->t('Live'),
        '#url' => Url::fromRoute('entity.workspace.collection', [], [
            'query' => \Drupal::destination()->getAsArray(),
        ]),
        '#attributes' => [
            'title' => t('Switch workspace'),
            'class' => [
                'toolbar-item',
                'toolbar-icon',
                'toolbar-icon-workspace',
                'use-ajax',
            ],
            'data-dialog-type' => 'dialog',
            'data-dialog-renderer' => 'off_canvas_top',
            'data-dialog-options' => Json::encode([
                'height' => 161,
                'classes' => [
                    'ui-dialog' => 'workspaces-dialog',
                ],
            ]),
        ],
        '#attached' => [
            'library' => [
                'workspaces/drupal.workspaces.toolbar',
            ],
        ],
        '#cache' => [
            'max-age' => 0,
        ],
    ];
    // The renderer has already added element defaults by the time the lazy
    // builder is run.
    // @see https://www.drupal.org/project/drupal/issues/2609250
    $build += $this->elementInfo
        ->getInfo('link');
    return $build;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.