linkit_media_library-1.0.1/linkit_media_library.module

linkit_media_library.module
<?php

/**
 * @file
 * Main file for the linkit_media_library module.
 */

use Drupal\Core\Form\FormStateInterface;
use Drupal\media_library\MediaLibraryState;
use Drupal\media_library\Plugin\Field\FieldWidget\MediaLibraryWidget;

/**
 * Implements hook_form_FORM_ID_alter().
 */
function linkit_media_library_form_editor_link_dialog_alter(&$form, FormStateInterface $form_state) {

  if ($form['attributes']['href']['#type'] !== 'linkit') {
    return;
  }

  if (empty($form['attributes']['href']['#autocomplete_route_parameters']['linkit_profile_id'])) {
    return;
  }

  /** @var \Drupal\editor\EditorInterface $editor */
  $editor = \Drupal::routeMatch()->getParameter('editor');
  if (!$editor->hasAssociatedFilterFormat()) {
    return;
  }

  /** @var \Drupal\filter\FilterFormatInterface $filter_format */
  $filter_format = $editor->getFilterFormat();

  /** @var Drupal\filter\FilterPluginCollection $filters */
  $filters = $filter_format->filters();
  if (!$filters->has('linkit') || !$filters->get('linkit')->status === TRUE) {
    return;
  }

  $profile_id = $form['attributes']['href']['#autocomplete_route_parameters']['linkit_profile_id'];

  /** @var \Drupal\Linkit\ProfileInterface $linkit_profile */
  $profile = \Drupal::entityTypeManager()
    ->getStorage('linkit_profile')
    ->load($profile_id);

  $has_media = FALSE;
  $bundles = [];
  foreach ($profile->getMatchers() as $matcher) {
    if ($matcher->getPluginId() != 'entity:media') {
      continue;
    }
    $has_media = TRUE;
    $configuration = $matcher->getConfiguration();
    $bundles = $configuration['settings']['bundles'];
  }

  if (!$has_media) {
    return;
  }

  // If the types are not limited, we must load all media types.
  if (empty($bundles)) {
    $bundles = \Drupal::entityTypeManager()->getStorage('media_type')->getQuery()->execute();
  }

  /** @var \Drupal\media_library\MediaLibraryState $state */
  $state = MediaLibraryState::create(
    'linkit_media_library.opener.editor',
    $bundles,
    reset($bundles),
    1,
    ['filter_format_id' => $editor->getFilterFormat()->id()]
  );

  $form['attributes']['media_library'] = [
    '#type' => 'button',
    '#value' => t('Media Library'),
    '#weight' => ($form['attributes']['href']['#weight'] + 1),
    '#name' => 'linkit_media_library_opener',
    '#attributes' => [
      'class' => [
        'js-media-library-open-button',
      ],
      // The jQuery UI dialog automatically moves focus to the first :tabbable
      // element of the modal, so we need to disable refocus on the button.
      'data-disable-refocus' => 'true',
    ],
    '#media_library_state' => $state,
    '#ajax' => [
      'callback' => [MediaLibraryWidget::class, 'openMediaLibrary'],
      'progress' => [
        'type' => 'throbber',
        'message' => t('Opening media library.'),
      ],
    ],
    // Allow the media library to be opened even if there are form errors.
    '#limit_validation_errors' => [],
  ];

}

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

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