function MediaLibraryUiBuilder::buildUi

Same name in other branches
  1. 9 core/modules/media_library/src/MediaLibraryUiBuilder.php \Drupal\media_library\MediaLibraryUiBuilder::buildUi()
  2. 8.9.x core/modules/media_library/src/MediaLibraryUiBuilder.php \Drupal\media_library\MediaLibraryUiBuilder::buildUi()
  3. 10 core/modules/media_library/src/MediaLibraryUiBuilder.php \Drupal\media_library\MediaLibraryUiBuilder::buildUi()

Build the media library UI.

Parameters

\Drupal\media_library\MediaLibraryState $state: (optional) The current state of the media library, derived from the current request.

Return value

array The render array for the media library.

File

core/modules/media_library/src/MediaLibraryUiBuilder.php, line 111

Class

MediaLibraryUiBuilder
Service which builds the media library.

Namespace

Drupal\media_library

Code

public function buildUi(?MediaLibraryState $state = NULL) {
    if (!$state) {
        $state = MediaLibraryState::fromRequest($this->request);
    }
    // When navigating to a media type through the vertical tabs, we only want
    // to load the changed library content. This is not only more efficient, but
    // also provides a more accessible user experience for screen readers.
    if ($state->get('media_library_content') === '1') {
        return $this->buildLibraryContent($state);
    }
    else {
        return [
            '#theme' => 'media_library_wrapper',
            '#attributes' => [
                'id' => 'media-library-wrapper',
            ],
            'menu' => $this->buildMediaTypeMenu($state),
            'content' => $this->buildLibraryContent($state),
            // Attach the JavaScript for the media library UI. The number of
            // available slots needs to be added to make sure users can't select
            // more items than allowed.
'#attached' => [
                'library' => [
                    'media_library/ui',
                ],
                'drupalSettings' => [
                    'media_library' => [
                        'selection_remaining' => $state->getAvailableSlots(),
                    ],
                ],
            ],
        ];
    }
}

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