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';
}
}
}
