monster_menus-9.0.x-dev/modules/mm_media/src/Plugin/CKEditor5Plugin/MMMediaLibrary.php

modules/mm_media/src/Plugin/CKEditor5Plugin/MMMediaLibrary.php
<?php

namespace Drupal\mm_media\Plugin\CKEditor5Plugin;

use Drupal\ckeditor5\Plugin\CKEditor5Plugin\MediaLibrary;
use Drupal\Core\Url;
use Drupal\editor\EditorInterface;
use Drupal\media_library\MediaLibraryState;

/**
 * Defines the "mmmedialibrary" plugin.
 *
 * @internal
 */
class MMMediaLibrary extends MediaLibrary {

  /**
   * {@inheritdoc}
   */
  public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array {
    $media_type_ids = $this->mediaTypeStorage->getQuery()->execute();

    if ($editor->hasAssociatedFilterFormat()) {
      $media_embed_filter = $editor->getFilterFormat()->filters()->get('media_embed');
      // Optionally limit the allowed media types based on the MediaEmbed
      // setting. If the setting is empty, do not limit the options.
      if (!empty($media_embed_filter->settings['allowed_media_types'])) {
        $media_type_ids = array_intersect_key($media_type_ids, $media_embed_filter->settings['allowed_media_types']);
      }
    }
    if (in_array('image', $media_type_ids, TRUE)) {
      // Move image to first position.
      // This workaround can be removed once this issue is fixed:
      // @see https://www.drupal.org/project/drupal/issues/3073799
      array_unshift($media_type_ids, 'image');
      $media_type_ids = array_unique($media_type_ids);
    }

    $state = MediaLibraryState::create(
      'media_library.opener.editor',
      $media_type_ids,
      reset($media_type_ids),
      1,
      ['filter_format_id' => $editor->getFilterFormat()->id()],
    );

    mm_parse_args($mmtids, $oarg_list, $this_mmtid);
    $library_url = Url::fromRoute('mm_media_library.ui', ['mm_tree' => $this_mmtid ?: mm_home_mmtid(), 'editor' => $editor->id()]);
    $token = \Drupal::csrfToken()->get($library_url->getInternalPath());
    $library_url->setOption('query', $state->all() + ['token' => $token]);

    $dynamic_plugin_config = $static_plugin_config;
    $dynamic_plugin_config['MMMediaLibrary']['libraryURL'] = $library_url->toString();
    return $dynamic_plugin_config;
  }

}

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

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