image_to_media_swapper-2.x-dev/image_to_media_swapper.module

image_to_media_swapper.module
<?php

/**
 * @file
 * Contains image_to_media_swapper module hooks.
 */

use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function image_to_media_swapper_help($route_name, RouteMatchInterface $route_match): string {
  return match ($route_name) {
    'help.page.image_to_media_swapper' => '<p>' . t('Converts image tags and file links to media entities with security validation.') . '</p>',
    default => '',
  };
}

/**
 * Implements hook_page_attachments().
 */
function image_to_media_swapper_page_attachments(array &$attachments): void {
  // Only attach settings where CKEditor5 might be used.
  $route_match = \Drupal::routeMatch();
  $route_name = $route_match->getRouteName();

  // Add to content editing routes and admin forms.
  if (str_contains($route_name, 'node.') ||
      str_contains($route_name, 'entity.') ||
      str_contains($route_name, 'admin.')) {

    /** @var \Drupal\image_to_media_swapper\SwapperService $moduleSettings */
    $moduleSettings = \Drupal::service('image_to_media_swapper.service');
    // Add the supported file extensions to to any javascript that may use it.
    $attachments['#attached']['drupalSettings']['imageToMediaSwapper']['supportedExtensions'] = $moduleSettings->getAvailableExtensions();
  }
}

/**
 * Implements hook_library_info_alter().
 */
function image_to_media_swapper_library_info_alter(&$libraries, $extension): void {
  // Only alter our own module's libraries.
  if ($extension !== 'image_to_media_swapper') {
    return;
  }

  /** @var \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler */
  $moduleHandler = \Drupal::service('module_handler');

  // Conditionally add dependencies based on enabled modules.
  if (isset($libraries['image_to_media_swapper'])) {
    // Always require CKEditor5 as base dependency.
    if (!$moduleHandler->moduleExists('ckeditor5')) {
      // If CKEditor5 is not enabled, remove the library entirely.
      unset($libraries['image_to_media_swapper']);
      return;
    }

    // Add linkit dependency if available.
    if ($moduleHandler->moduleExists('linkit')) {
      $libraries['image_to_media_swapper']['dependencies'][] = 'linkit/linkit';
    }

    // Add media dependencies if available.
    if ($moduleHandler->moduleExists('media')) {
      $libraries['image_to_media_swapper']['dependencies'][] = 'media/media';
    }
  }
}

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

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