unused_media_filter-1.0.x-dev/unused_media_filter.module

unused_media_filter.module
<?php

/**
 * @file
 *
 * Shows unused media.
 */

use Drupal\filter\Render\FilteredMarkup;

/**
 * Implements hook_theme_registry_alter().
 */
function unused_media_filter_theme_registry_alter(&$theme_registry) {
  $theme_registry['views_view']['preprocess functions'] = array_diff($theme_registry['views_view']['preprocess functions'], ['unused_media_filter_preprocess_views_view']);
  $theme_registry['views_view']['preprocess functions'][] = 'unused_media_filter_preprocess_views_view';
}

/**
 * Implements hook_views_data_alter().
 */
function unused_media_filter_views_data_alter(array &$data) {
  $data['media']['unused_media'] = [
    'title' => t('Unused'),
    'filter' => [
      'title' => t('Unused'),
      'field' => 'mid',
      'id' => 'unused_media',
    ],
  ];

  return $data;
}

function unused_media_filter_preprocess_views_view(&$variables) {
  /** @var \Drupal\views\ViewExecutable $view */
  $view = $variables['view'];
  if ($view->id() === 'media') {
    // Check if the specific filter value is present.
    $filters = $view->getExposedInput();
    if (!empty($filters['unused_media'])) {
      $note = FilteredMarkup::create('<p style="color:red;">' . t('Please note that the "unused" filter does not account for media being used inside CKEditor.') . '</p>');
      $variables['exposed']['#suffix'] = $note;

      // views_ui_preprocess_views_view() adds a title for when using a
      // live_preview which we remove again here.
      $variables['title'] = '';
    }
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc