webform_test_third_party_settings.webform.inc in Webform 6.x
Same filename and directory in other branches
Integrates third party settings for the Webform module.
File
tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.webform.incView source
<?php
/**
* @file
* Integrates third party settings for the Webform module.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Messenger\MessengerInterface;
/**
* Implements hook_webform_admin_third_party_settings_form_alter().
*/
function webform_test_third_party_settings_webform_admin_third_party_settings_form_alter(&$form, FormStateInterface $form_state) {
/** @var \Drupal\webform\WebformThirdPartySettingsManagerInterface $third_party_settings_manager */
$third_party_settings_manager = \Drupal::service('webform.third_party_settings_manager');
$form['third_party_settings']['webform_test_third_party_settings'] = [
'#type' => 'details',
'#title' => t('Webform test third party admin settings'),
'#open' => TRUE,
];
$form['third_party_settings']['webform_test_third_party_settings']['message'] = [
'#type' => 'textfield',
'#title' => t('Display the below message on every webform'),
'#default_value' => $third_party_settings_manager
->getThirdPartySetting('webform_test_third_party_settings', 'message'),
];
$form['third_party_settings']['webform_test_third_party_settings']['error'] = [
'#type' => 'checkbox',
'#title' => t('Display as error'),
'#default_value' => $third_party_settings_manager
->getThirdPartySetting('webform_test_third_party_settings', 'error'),
'#return_value' => TRUE,
'#states' => [
'visible' => [
':input[name="third_party_settings[webform_test_third_party_settings][message]"]' => [
'filled' => TRUE,
],
],
],
];
$form['#validate'][] = '_webform_test_third_party_settings_form_validate';
}
/**
* Implements hook_webform_third_party_settings_form_alter().
*/
function webform_test_third_party_settings_webform_third_party_settings_form_alter(&$form, FormStateInterface $form_state) {
/** @var \Drupal\webform\WebformInterface $webform */
$webform = $form_state
->getFormObject()
->getEntity();
$form['third_party_settings']['webform_test_third_party_settings'] = [
'#type' => 'details',
'#title' => t('Webform test third party settings'),
'#open' => TRUE,
];
$form['third_party_settings']['webform_test_third_party_settings']['message'] = [
'#type' => 'textfield',
'#title' => t('Display the below message'),
'#default_value' => $webform
->getThirdPartySetting('webform_test_third_party_settings', 'message'),
];
$form['third_party_settings']['webform_test_third_party_settings']['error'] = [
'#type' => 'checkbox',
'#title' => t('Display as error'),
'#default_value' => $webform
->getThirdPartySetting('webform_test_third_party_settings', 'error'),
'#return_value' => TRUE,
'#states' => [
'visible' => [
':input[name="third_party_settings[webform_test_third_party_settings][message]"]' => [
'filled' => TRUE,
],
],
],
];
$form['#validate'][] = '_webform_test_third_party_settings_form_validate';
}
/**
* Validate callback; Cleans up third party settings.
*/
function _webform_test_third_party_settings_form_validate(&$form, FormStateInterface $form_state) {
$third_party_settings = $form_state
->getValue('third_party_settings');
if (empty($third_party_settings['webform_test_third_party_settings']['message'])) {
$third_party_settings['webform_test_third_party_settings'] = NULL;
}
$form_state
->setValue('third_party_settings', $third_party_settings);
}
/**
* Implements hook_webform_submission_form_alter().
*/
function webform_test_third_party_settings_webform_submission_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if (!empty($_POST)) {
return;
}
/** @var \Drupal\webform\WebformThirdPartySettingsManagerInterface $third_party_settings_manager */
$third_party_settings_manager = \Drupal::service('webform.third_party_settings_manager');
/** @var \Drupal\webform\WebformSubmissionInterface $webform_submission */
$webform_submission = $form_state
->getFormObject()
->getEntity();
$webform = $webform_submission
->getWebform();
// Get message from the webform settings or the webform admin settings.
$message = $webform
->getThirdPartySetting('webform_test_third_party_settings', 'message') ?: $third_party_settings_manager
->getThirdPartySetting('webform_test_third_party_settings', 'message');
$error = $webform
->getThirdPartySetting('webform_test_third_party_settings', 'error') ?: $third_party_settings_manager
->getThirdPartySetting('webform_test_third_party_settings', 'error');
// If a message is set, display it.
if ($message) {
\Drupal::messenger()
->addMessage($message, $error ? MessengerInterface::TYPE_ERROR : MessengerInterface::TYPE_STATUS);
}
}
Functions
Name![]() |
Description |
---|---|
webform_test_third_party_settings_webform_admin_third_party_settings_form_alter | Implements hook_webform_admin_third_party_settings_form_alter(). |
webform_test_third_party_settings_webform_submission_form_alter | Implements hook_webform_submission_form_alter(). |
webform_test_third_party_settings_webform_third_party_settings_form_alter | Implements hook_webform_third_party_settings_form_alter(). |
_webform_test_third_party_settings_form_validate | Validate callback; Cleans up third party settings. |