function webform_examples_accessibility_webform_submission_form_alter in Webform 8.5
Same name and namespace in other branches
- 6.x modules/webform_examples_accessibility/webform_examples_accessibility.module \webform_examples_accessibility_webform_submission_form_alter()
Implements hook_webform_submission_form_alter().
Adds button to disable/enable HTML client-side validation without have to change any webform settings.
The link is only applicable to webform ids that are prefix with examples_accessibility_*.
File
- modules/
webform_examples_accessibility/ webform_examples_accessibility.module, line 30 - Provides example webforms for reviewing and testing accessibility.
Code
function webform_examples_accessibility_webform_submission_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
if (strpos($form['#webform_id'], 'example_accessibility_') !== 0 && !preg_match('/^issue_\\d+$/', $form['#webform_id']) && strpos($form['#webform_id'], 'test_') !== 0) {
return;
}
$form['accessibility'] = [
'#suffix' => '<hr/>',
'#weight' => -1000,
];
/****************************************************************************/
// Accessibility.
/****************************************************************************/
// Get query without ajax parameters.
$query = \Drupal::request()->query
->all();
unset($query['ajax_form'], $query['_wrapper_format']);
$accessibility = \Drupal::request()->query
->get('accessibility') === '1' ? TRUE : FALSE;
$form['accessibility']['accessibility'] = [
'#type' => 'link',
'#title' => $accessibility ? t('Hide accessibility') : t('Show accessibility'),
'#url' => Url::fromRoute('<current>', [], [
'query' => [
'accessibility' => $accessibility ? 0 : 1,
] + $query,
]),
];
/****************************************************************************/
// Required.
/****************************************************************************/
$form['accessibility'][] = [
'#markup' => ' | ',
];
if (\Drupal::request()->query
->get('required') === '1') {
$required = TRUE;
}
elseif (\Drupal::request()->query
->get('required') === '0') {
$required = FALSE;
}
else {
$required = NULL;
}
$form['accessibility']['required'] = [
'#type' => 'link',
'#title' => $required ? t('Disabled required') : t('Enable required'),
'#url' => Url::fromRoute('<current>', [], [
'query' => [
'required' => $required ? 0 : 1,
] + $query,
]),
];
if ($required !== NULL) {
$elements =& WebformArrayHelper::flattenAssoc($form);
foreach ($elements as &$element) {
if (is_array($element) && isset($element['#type'])) {
$element['#required'] = $required;
}
}
}
/****************************************************************************/
// No validate.
/****************************************************************************/
$form['accessibility'][] = [
'#markup' => ' | ',
];
if (\Drupal::request()->query
->get('novalidate') === '1') {
$form['#attributes']['novalidate'] = TRUE;
$novalidate = TRUE;
}
else {
unset($form['#attributes']['novalidate']);
$novalidate = FALSE;
}
$form['accessibility']['novalidate'] = [
'#type' => 'link',
'#title' => $novalidate ? t('Enable client-side validation') : t('Disable client-side validation'),
'#url' => Url::fromRoute('<current>', [], [
'query' => [
'novalidate' => $novalidate ? 0 : 1,
] + $query,
]),
];
/****************************************************************************/
// Inline form error.
/****************************************************************************/
if (\Drupal::moduleHandler()
->moduleExists('inline_form_errors')) {
$form['accessibility'][] = [
'#markup' => ' | ',
];
if (\Drupal::request()->query
->get('disable_inline_form_errors') === '1') {
$form['#disable_inline_form_errors'] = TRUE;
$disable_inline_form_errors = TRUE;
}
else {
unset($form['#disable_inline_form_errors']);
$disable_inline_form_errors = FALSE;
}
$form['accessibility']['disable_inline_form_errors'] = [
'#type' => 'link',
'#title' => $disable_inline_form_errors ? t('Enable inline form errors') : t('Disable inline form errors'),
'#url' => Url::fromRoute('<current>', [], [
'query' => [
'disable_inline_form_errors' => $disable_inline_form_errors ? 0 : 1,
] + $query,
]),
];
}
}