function MediaLibraryUiBuilder::buildUi

Same name and namespace 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. 11.x 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.