function media_library_post_update_add_buttons_to_page_view

Add edit and delete button to media library view page display.

File

core/modules/media_library/media_library.post_update.php, line 315

Code

function media_library_post_update_add_buttons_to_page_view() {
  $view = Views::getView('media_library');
  if (!$view) {
    return;
  }
  $display =& $view->storage
    ->getDisplay('page');
  if ($display) {
    // Fetch the fields from the page display, if the fields are not yet
    // overridden, get the fields from the default display.
    if (empty($display['display_options']['fields'])) {
      $defaults = $view->storage
        ->getDisplay('default');
      $display['display_options']['fields'] = $defaults['display_options']['fields'];
      // Override the fields for the page display.
      $display['display_options']['defaults']['fields'] = FALSE;
    }
    $fields = $display['display_options']['fields'];
    // Check if the name field already exists and add if it doesn't.
    if (!isset($fields['name'])) {
      $fields['name'] = [
        'id' => 'name',
        'table' => 'media_field_data',
        'field' => 'name',
        'relationship' => 'none',
        'group_type' => 'group',
        'admin_label' => '',
        'label' => '',
        'exclude' => TRUE,
        'alter' => [
          'alter_text' => FALSE,
          'text' => '',
          'make_link' => FALSE,
          'path' => '',
          'absolute' => FALSE,
          'external' => FALSE,
          'replace_spaces' => FALSE,
          'path_case' => 'none',
          'trim_whitespace' => FALSE,
          'alt' => '',
          'rel' => '',
          'link_class' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'nl2br' => FALSE,
          'max_length' => 0,
          'word_boundary' => TRUE,
          'ellipsis' => TRUE,
          'more_link' => FALSE,
          'more_link_text' => '',
          'more_link_path' => '',
          'strip_tags' => FALSE,
          'trim' => FALSE,
          'preserve_tags' => '',
          'html' => FALSE,
        ],
        'element_type' => '',
        'element_class' => '',
        'element_label_type' => '',
        'element_label_class' => '',
        'element_label_colon' => FALSE,
        'element_wrapper_type' => '',
        'element_wrapper_class' => '',
        'element_default_classes' => TRUE,
        'empty' => '',
        'hide_empty' => FALSE,
        'empty_zero' => FALSE,
        'hide_alter_empty' => TRUE,
        'click_sort_column' => 'value',
        'type' => 'string',
        'settings' => [
          'link_to_entity' => FALSE,
        ],
        'group_column' => 'value',
        'group_columns' => [],
        'group_rows' => TRUE,
        'delta_limit' => 0,
        'delta_offset' => 0,
        'delta_reversed' => FALSE,
        'delta_first_last' => FALSE,
        'multi_type' => 'separator',
        'separator' => ', ',
        'field_api_classes' => FALSE,
        'entity_type' => 'media',
        'entity_field' => 'name',
        'plugin_id' => 'field',
      ];
    }
    // Check if the edit link field already exists and add if it doesn't.
    if (!isset($fields['edit_media'])) {
      $fields['edit_media'] = [
        'id' => 'edit_media',
        'table' => 'media',
        'field' => 'edit_media',
        'relationship' => 'none',
        'group_type' => 'group',
        'admin_label' => '',
        'label' => '',
        'exclude' => FALSE,
        'alter' => [
          'alter_text' => TRUE,
          'text' => 'Edit {{ name }}',
          'make_link' => TRUE,
          'path' => '',
          'absolute' => FALSE,
          'external' => FALSE,
          'replace_spaces' => FALSE,
          'path_case' => 'none',
          'trim_whitespace' => FALSE,
          'alt' => 'Edit {{ name }}',
          'rel' => '',
          'link_class' => 'media-library-item__edit',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'nl2br' => FALSE,
          'max_length' => 0,
          'word_boundary' => TRUE,
          'ellipsis' => TRUE,
          'more_link' => FALSE,
          'more_link_text' => '',
          'more_link_path' => '',
          'strip_tags' => FALSE,
          'trim' => FALSE,
          'preserve_tags' => '',
          'html' => FALSE,
        ],
        'element_type' => '',
        'element_class' => '',
        'element_label_type' => '',
        'element_label_class' => '',
        'element_label_colon' => FALSE,
        'element_wrapper_type' => '0',
        'element_wrapper_class' => '',
        'element_default_classes' => FALSE,
        'empty' => '',
        'hide_empty' => FALSE,
        'empty_zero' => FALSE,
        'hide_alter_empty' => TRUE,
        'text' => 'Edit',
        'output_url_as_text' => FALSE,
        'absolute' => FALSE,
        'entity_type' => 'media',
        'plugin_id' => 'entity_link_edit',
      ];
    }
    // Check if the delete link field already exists and add if it doesn't.
    if (!isset($fields['delete_media'])) {
      $fields['delete_media'] = [
        'id' => 'delete_media',
        'table' => 'media',
        'field' => 'delete_media',
        'relationship' => 'none',
        'group_type' => 'group',
        'admin_label' => '',
        'label' => '',
        'exclude' => FALSE,
        'alter' => [
          'alter_text' => TRUE,
          'text' => 'Delete {{ name }}',
          'make_link' => TRUE,
          'path' => '',
          'absolute' => FALSE,
          'external' => FALSE,
          'replace_spaces' => FALSE,
          'path_case' => 'none',
          'trim_whitespace' => FALSE,
          'alt' => 'Delete {{ name }}',
          'rel' => '',
          'link_class' => 'media-library-item__remove',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'nl2br' => FALSE,
          'max_length' => 0,
          'word_boundary' => TRUE,
          'ellipsis' => TRUE,
          'more_link' => FALSE,
          'more_link_text' => '',
          'more_link_path' => '',
          'strip_tags' => FALSE,
          'trim' => FALSE,
          'preserve_tags' => '',
          'html' => FALSE,
        ],
        'element_type' => '',
        'element_class' => '',
        'element_label_type' => '',
        'element_label_class' => '',
        'element_label_colon' => FALSE,
        'element_wrapper_type' => '0',
        'element_wrapper_class' => '',
        'element_default_classes' => FALSE,
        'empty' => '',
        'hide_empty' => FALSE,
        'empty_zero' => FALSE,
        'hide_alter_empty' => TRUE,
        'text' => 'Delete',
        'output_url_as_text' => FALSE,
        'absolute' => FALSE,
        'entity_type' => 'media',
        'plugin_id' => 'entity_link_delete',
      ];
    }
    // Move the rendered entity field to the last position for accessibility.
    $rendered_entity = $fields['rendered_entity'];
    unset($fields['rendered_entity']);
    $fields['rendered_entity'] = $rendered_entity;
    $display['display_options']['fields'] = $fields;
    $view->storage
      ->save(TRUE);
  }
}

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