headless_cms-1.0.3/modules/headless_cms_preview_nats/headless_cms_preview_nats.module

modules/headless_cms_preview_nats/headless_cms_preview_nats.module
<?php

/**
 * @file
 * Module file.
 */

declare(strict_types=1);

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\nats\NatsClientManagerInterface;

/**
 * Implements hook_form_FORM_ID_alter().
 */
function headless_cms_preview_nats_form_headless_cms_preview_settings_alter(&$form, FormStateInterface $form_state, $form_id) {
  $config = \Drupal::config('headless_cms_preview_nats.settings');

  $options = [];
  foreach (\Drupal::service(NatsClientManagerInterface::class)->getAvailableClients() as $key) {
    $options[$key] = $key;
  }

  $form['nats'] = [
    '#type' => 'details',
    '#title' => new TranslatableMarkup('NATS Settings'),
    '#open' => TRUE,
  ];

  $form['nats']['enabled'] = [
    '#type' => 'checkbox',
    '#title' => new TranslatableMarkup('Enable NATS Integration'),
    '#description' => new TranslatableMarkup('Enable or disable the NATS integration for preview notifications.'),
    '#default_value' => $config->get('enabled'),
  ];

  $form['nats']['nats_client'] = [
    '#type' => 'select',
    '#title' => new TranslatableMarkup('NATS Client'),
    '#description' => new TranslatableMarkup('Select the NATS client to use for preview notifications.'),
    '#options' => $options,
    '#default_value' => $config->get('nats_client'),
    '#required' => TRUE,
  ];

  $form['nats']['topic_prefix'] = [
    '#type' => 'textfield',
    '#title' => new TranslatableMarkup('Topic Prefix'),
    '#description' => new TranslatableMarkup('The prefix to use for NATS topics.'),
    '#default_value' => $config->get('topic_prefix'),
    '#required' => TRUE,
  ];

  $form['#submit'][] = '_headless_cms_preview_nats_settings_submit';
}

/**
 * Submit handler for the headless_cms_preview settings form.
 */
function _headless_cms_preview_nats_settings_submit($form, FormStateInterface $form_state) {
  $config = \Drupal::configFactory()->getEditable('headless_cms_preview_nats.settings');
  $config
    ->set('enabled', (bool) $form_state->getValue('enabled'))
    ->set('nats_client', $form_state->getValue('nats_client'))
    ->set('topic_prefix', $form_state->getValue('topic_prefix'))
    ->save();
}

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

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