class WebformTermsOfService in Webform 6.x
Same name in this branch
- 6.x src/Element/WebformTermsOfService.php \Drupal\webform\Element\WebformTermsOfService
- 6.x src/Plugin/WebformElement/WebformTermsOfService.php \Drupal\webform\Plugin\WebformElement\WebformTermsOfService
Same name and namespace in other branches
- 8.5 src/Element/WebformTermsOfService.php \Drupal\webform\Element\WebformTermsOfService
Provides a webform terms of service element.
Plugin annotation
@FormElement("webform_terms_of_service");
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface
- class \Drupal\Core\Render\Element\FormElement implements FormElementInterface
- class \Drupal\Core\Render\Element\Checkbox
- class \Drupal\webform\Element\WebformTermsOfService
- class \Drupal\Core\Render\Element\Checkbox
- class \Drupal\Core\Render\Element\FormElement implements FormElementInterface
- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of WebformTermsOfService
1 file declares its use of WebformTermsOfService
- WebformTermsOfService.php in src/
Plugin/ WebformElement/ WebformTermsOfService.php
1 #type use of WebformTermsOfService
- WebformExampleCustomFormSettingsForm::buildForm in modules/
webform_example_custom_form/ src/ Form/ WebformExampleCustomFormSettingsForm.php - Form constructor.
File
- src/
Element/ WebformTermsOfService.php, line 13
Namespace
Drupal\webform\ElementView source
class WebformTermsOfService extends Checkbox {
/**
* Display terms using slideout.
*
* @var string
*/
const TERMS_SLIDEOUT = 'slideout';
/**
* Display terms in modal.
*
* @var string
*/
const TERMS_MODAL = 'modal';
/**
* {@inheritdoc}
*/
public function getInfo() {
return [
'#return_value' => TRUE,
'#terms_type' => static::TERMS_MODAL,
'#terms_title' => '',
'#terms_content' => '',
] + parent::getInfo();
}
/**
* Sets the #checked property of a checkbox element.
*/
public static function processCheckbox(&$element, FormStateInterface $form_state, &$complete_form) {
$element = parent::processCheckbox($element, $form_state, $complete_form);
// Remove curly brackets from the {terms of service} title.
if (empty($element['#required_error'])) {
$title = empty($element['#title']) ? (string) t('I agree to the {terms of service}.') : $element['#title'];
$title = str_replace('{', '', $title);
$title = str_replace('}', '', $title);
$element['#required_error'] = t('@name field is required.', [
'@name' => $title,
]);
}
return $element;
}
/**
* {@inheritdoc}
*/
public static function preRenderCheckbox($element) {
$element = parent::preRenderCheckbox($element);
$id = 'webform-terms-of-service-' . implode('_', $element['#parents']);
if (empty($element['#title'])) {
$element['#title'] = (string) t('I agree to the {terms of service}.');
}
$element['#title'] = str_replace('{', '<a role="button" href="#terms">', $element['#title']);
$element['#title'] = str_replace('}', '</a>', $element['#title']);
// Change description to render array.
if (isset($element['#description'])) {
$element['#description'] = [
'description' => is_array($element['#description']) ? $element['#description'] : [
'#markup' => $element['#description'],
],
];
}
else {
$element['#description'] = [];
}
// Add terms to #description.
$element['#description']['terms'] = [
'#type' => 'container',
'#attributes' => [
'id' => $id . '--description',
'class' => [
'webform-terms-of-service-details',
'js-hide',
],
],
];
if (!empty($element['#terms_title'])) {
$element['#description']['terms']['title'] = [
'#type' => 'container',
'#markup' => $element['#terms_title'],
'#attributes' => [
'class' => [
'webform-terms-of-service-details--title',
],
],
];
}
if (!empty($element['#terms_content'])) {
$element['#description']['terms']['content'] = is_array($element['#terms_content']) ? $element['#terms_content'] : [
'#markup' => $element['#terms_content'],
];
$element['#description']['terms']['content'] += [
'#type' => 'container',
'#attributes' => [
'class' => [
'webform-terms-of-service-details--content',
],
],
];
}
// Add accessibility attributes to title and content.
if ($element['#type'] === static::TERMS_SLIDEOUT) {
}
// Set type to data attribute.
// @see Drupal.behaviors.webformTermsOfService.
$element['#wrapper_attributes']['data-webform-terms-of-service-type'] = $element['#terms_type'];
$element['#attached']['library'][] = 'webform/webform.element.terms_of_service';
// Change #type to checkbox so that element is rendered correctly.
$element['#type'] = 'checkbox';
$element['#wrapper_attributes']['class'][] = 'form-type-webform-terms-of-service';
$element['#wrapper_attributes']['class'][] = 'js-form-type-webform-terms-of-service';
$element['#element_validate'][] = [
get_called_class(),
'validateWebformTermsOfService',
];
return $element;
}
/**
* Webform element validation handler for webform terms of service element.
*/
public static function validateWebformTermsOfService(&$element, FormStateInterface $form_state, &$complete_form) {
$value = (bool) $form_state
->getValue($element['#parents'], []);
$element['#value'] = $value;
$form_state
->setValueForElement($element, $value);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Checkbox:: |
public static | function |
Determines how user input is mapped to an element's #value property. Overrides FormElement:: |
|
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | 2 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormElement:: |
public static | function | Adds autocomplete functionality to elements. | |
FormElement:: |
public static | function | #process callback for #pattern form element property. | |
FormElement:: |
public static | function | #element_validate callback for #pattern form element property. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
2 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 98 |
RenderElement:: |
public static | function | Adds Ajax information about an element to communicate with JavaScript. | |
RenderElement:: |
public static | function | Adds members of this group as actual elements for rendering. | |
RenderElement:: |
public static | function | Form element processing handler for the #ajax form property. | 1 |
RenderElement:: |
public static | function | Arranges elements into groups. | |
RenderElement:: |
public static | function |
Sets a form element's class attribute. Overrides ElementInterface:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
WebformTermsOfService:: |
public | function |
Returns the element properties for this element. Overrides Checkbox:: |
|
WebformTermsOfService:: |
public static | function |
Prepares a #type 'checkbox' render element for input.html.twig. Overrides Checkbox:: |
|
WebformTermsOfService:: |
public static | function |
Sets the #checked property of a checkbox element. Overrides Checkbox:: |
|
WebformTermsOfService:: |
constant | Display terms in modal. | ||
WebformTermsOfService:: |
constant | Display terms using slideout. | ||
WebformTermsOfService:: |
public static | function | Webform element validation handler for webform terms of service element. |