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();
}
