alt_text_generator-1.0.3/alt_text_generator.module
alt_text_generator.module
<?php
/**
* @file
* Contains hook implementations for Alt Text Generator.
*/
declare(strict_types=1);
use Drupal\Core\Form\FormStateInterface;
use Drupal\image\Plugin\Field\FieldWidget\ImageWidget;
/**
* Implements hook_field_widget_single_element_form_alter().
*/
function alt_text_generator_field_widget_single_element_form_alter(&$element, &$form_state, $context) {
// Only image based field widgets are supported.
if ($context['widget'] instanceof ImageWidget) {
// Only run if alt text field is enabled.
if (empty($element['#alt_field'])) {
return;
}
// Attach JS.
$element['#attached']['library'][] = 'alt_text_generator/alt_text_generator';
// Get the entities language or the sites default language.
$form_object = $form_state->getFormObject();
$config = \Drupal::config('alt_text_generator.settings');
$lang = method_exists($form_object, 'getEntity') ? $form_object->getEntity()->language()->getId() : \Drupal::languageManager()->getDefaultLanguage()->getId();
// Pass settings to JavaScript
$element['#attached']['drupalSettings']['altTextGenerator'] = [
'lang' => $lang,
'apiKey' => $config->get('api_key'),
'defaultLanguage' => $config->get('default_language') ?: 'english',
];
// Only show button if an image is uploaded.
if (!empty($element['#default_value']['fids'])) {
$element['alt_text_generator'][$context['delta']] = [
'#type' => 'button',
'#value' => t('Generate Alt Text'),
'#prefix' => '<div class="alt-text-generator-wrapper">',
'#suffix' => '</div>',
'#attributes' => [
'class' => ['alt-text-generator-button', 'button--primary'],
'data-file-id' => $element['#default_value']['fids'][0] ?? 0,
],
];
}
}
} 