' . t('About') . ''; $output .= '
' . t('The Media library module overrides the /admin/content/media view to provide a rich visual interface for performing administrative operations on media. For more information, see the online documentation for the Media library module.', [':media' => 'https://www.drupal.org/docs/8/core/modules/media']) . '
'; return $output; } } /** * Implements hook_theme(). */ function media_library_theme() { return [ 'media__media_library' => [ 'base hook' => 'media', ], ]; } /** * Implements hook_views_post_render(). */ function media_library_views_post_render(ViewExecutable $view, &$output, CachePluginBase $cache) { if ($view->id() === 'media_library') { $output['#attached']['library'][] = 'media_library/view'; } } /** * Implements hook_preprocess_media(). */ function media_library_preprocess_media(&$variables) { if ($variables['view_mode'] === 'media_library') { /** @var \Drupal\media\MediaInterface $media */ $media = $variables['media']; $variables['#cache']['contexts'][] = 'user.permissions'; $rel = $media->access('edit') ? 'edit-form' : 'canonical'; $variables['url'] = $media->toUrl($rel, [ 'language' => $media->language(), ]); $variables['preview_attributes'] = new Attribute(); $variables['preview_attributes']->addClass('media-library-item__preview', 'js-click-to-select__trigger'); $variables['metadata_attributes'] = new Attribute(); $variables['metadata_attributes']->addClass('media-library-item__attributes'); $variables['status'] = $media->isPublished(); } } /** * Alter the bulk form to add a more accessible label. * * @param array $form * An associative array containing the structure of the form. * @param \Drupal\Core\Form\FormStateInterface $form_state * The current state of the form. * * @todo Remove in https://www.drupal.org/project/drupal/issues/2969660 */ function media_library_form_views_form_media_library_page_alter(array &$form, FormStateInterface $form_state) { if (isset($form['media_bulk_form']) && isset($form['output'])) { $form['#attributes']['class'][] = 'media-library-page-form'; $form['header']['#attributes']['class'][] = 'media-library-page-form__header'; /** @var \Drupal\views\ViewExecutable $view */ $view = $form['output'][0]['#view']; foreach (Element::getVisibleChildren($form['media_bulk_form']) as $key) { if (isset($view->result[$key])) { $media = $view->field['media_bulk_form']->getEntity($view->result[$key]); $form['media_bulk_form'][$key]['#title'] = t('Select @label', [ '@label' => $media->label(), ]); } } } } /** * Implements hook_local_tasks_alter(). * * Removes tasks for the Media library if the view display no longer exists. */ function media_library_local_tasks_alter(&$local_tasks) { /** @var \Symfony\Component\Routing\RouteCollection $route_collection */ $route_collection = \Drupal::service('router')->getRouteCollection(); foreach (['media_library.grid', 'media_library.table'] as $key) { if (isset($local_tasks[$key]) && !$route_collection->get($local_tasks[$key]['route_name'])) { unset($local_tasks[$key]); } } }