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,
        ],
      ];
    }
  }
} 

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

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