class WebformMessage in Webform 6.x
Same name in this branch
- 6.x src/Element/WebformMessage.php \Drupal\webform\Element\WebformMessage
- 6.x src/Plugin/WebformElement/WebformMessage.php \Drupal\webform\Plugin\WebformElement\WebformMessage
Same name and namespace in other branches
- 8.5 src/Element/WebformMessage.php \Drupal\webform\Element\WebformMessage
Provides a render element for message.
Plugin annotation
@FormElement("webform_message");
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\webform\Element\WebformMessage
- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of WebformMessage
39 files declare their use of WebformMessage
- Captcha.php in src/
Plugin/ WebformElement/ Captcha.php - DateBase.php in src/
Plugin/ WebformElement/ DateBase.php - EmailWebformHandler.php in src/
Plugin/ WebformHandler/ EmailWebformHandler.php - OptionsLimitWebformHandler.php in modules/
webform_options_limit/ src/ Plugin/ WebformHandler/ OptionsLimitWebformHandler.php - RemotePostWebformHandler.php in src/
Plugin/ WebformHandler/ RemotePostWebformHandler.php
93 #type uses of WebformMessage
- Captcha::form in src/
Plugin/ WebformElement/ Captcha.php - Gets the actual configuration webform array to be built.
- DateBase::form in src/
Plugin/ WebformElement/ DateBase.php - Gets the actual configuration webform array to be built.
- DateTime::form in src/
Plugin/ WebformElement/ DateTime.php - Gets the actual configuration webform array to be built.
- DelimitedWebformExporter::buildConfigurationForm in src/
Plugin/ WebformExporter/ DelimitedWebformExporter.php - Form constructor.
- EmailWebformHandler::buildConfigurationForm in src/
Plugin/ WebformHandler/ EmailWebformHandler.php - Form constructor.
File
- src/
Element/ WebformMessage.php, line 14
Namespace
Drupal\webform\ElementView source
class WebformMessage extends RenderElement {
/**
* Storage none.
*/
const STORAGE_NONE = '';
/**
* Storage local.
*/
const STORAGE_LOCAL = 'local';
/**
* Storage session.
*/
const STORAGE_SESSION = 'session';
/**
* Storage user (data).
*/
const STORAGE_USER = 'user';
/**
* Storage state (API).
*/
const STORAGE_STATE = 'state';
/**
* Storage custom.
*
* @see hook_webform_message_custom()
*/
const STORAGE_CUSTOM = 'custom';
/**
* {@inheritdoc}
*/
public function getInfo() {
$class = get_class($this);
return [
'#message_type' => 'status',
'#message_message' => '',
'#message_close' => FALSE,
'#message_close_effect' => 'slide',
'#message_id' => '',
'#message_storage' => '',
'#status_headings' => [],
'#pre_render' => [
[
$class,
'preRenderWebformMessage',
],
],
'#theme_wrappers' => [
'webform_message',
],
];
}
/**
* Create status message for rendering.
*
* @param array $element
* An associative array containing the properties and children of the
* element.
*
* @return array
* The modified element with status message.
*/
public static function preRenderWebformMessage(array $element) {
$message_type = $element['#message_type'];
$message_close = $element['#message_close'];
$message_close_effect = $element['#message_close_effect'];
$message_id = $element['#message_id'];
$message_storage = $element['#message_storage'];
$message_message = $element['#message_message'];
$element['#attributes']['class'][] = 'webform-message';
$element['#attributes']['class'][] = 'js-webform-message';
// Ignore 'user' and 'state' storage is current user is anonymous.
if (\Drupal::currentUser()
->isAnonymous() && in_array($message_storage, [
static::STORAGE_USER,
static::STORAGE_STATE,
static::STORAGE_CUSTOM,
])) {
$message_storage = '';
}
// Build the messages render array.
$messages = [];
// Add close button as the first message.
if ($message_close) {
$element['#attributes']['data-message-close-effect'] = $message_close_effect;
$element['#attributes']['class'][] = 'webform-message--close';
$element['#attributes']['class'][] = 'js-webform-message--close';
$close_attributes = [
'aria-label' => t('close'),
'class' => [
'js-webform-message__link',
'webform-message__link',
],
];
if (in_array($message_storage, [
static::STORAGE_USER,
static::STORAGE_STATE,
static::STORAGE_CUSTOM,
])) {
$close_url = Url::fromRoute('webform.element.message.close', [
'storage' => $message_storage,
'id' => $message_id,
]);
}
else {
$close_url = Url::fromRoute('<none>', [], [
'fragment' => 'close',
]);
}
$messages[] = [
'#type' => 'link',
'#title' => '×',
'#url' => $close_url,
'#attributes' => $close_attributes,
];
// Add close attributes and check is message is closed.
if ($message_storage && $message_id) {
$element['#attributes']['data-message-id'] = $message_id;
$element['#attributes']['data-message-storage'] = $message_storage;
$element['#attributes']['class'][] = 'js-webform-message--close-storage';
if (static::isClosed($message_storage, $message_id)) {
$element['#closed'] = TRUE;
}
}
}
// Add messages to container children.
$messages[] = !is_array($message_message) ? [
'#markup' => $message_message,
] : $message_message;
foreach (Element::children($element) as $key) {
$messages[] = $element[$key];
unset($element[$key]);
}
// Add status messages as the message.
$element['#message'] = [
'#theme' => 'status_messages',
'#message_list' => [
$message_type => [
$messages,
],
],
'#status_headings' => $element['#status_headings'] + [
'status' => t('Status message'),
'error' => t('Error message'),
'warning' => t('Warning message'),
],
];
$element['#attached']['library'][] = 'webform/webform.element.message';
return $element;
}
/****************************************************************************/
// Manage closed functions.
/****************************************************************************/
/**
* Is message closed via User Data, State API, or Custom.
*
* @param string $storage
* The storage mechanism to check if a message is closed.
* @param string $id
* The ID of the message.
*
* @return bool
* TRUE if the message is closed.
*/
public static function isClosed($storage, $id) {
$account = \Drupal::currentUser();
$namespace = 'webform.element.message';
switch ($storage) {
case static::STORAGE_STATE:
/** @var \Drupal\Core\State\StateInterface $state */
$state = \Drupal::service('state');
$values = $state
->get($namespace, []);
return isset($values[$id]) ? TRUE : FALSE;
case static::STORAGE_USER:
/** @var \Drupal\user\UserDataInterface $user_data */
$user_data = \Drupal::service('user.data');
$values = $user_data
->get('webform', $account
->id(), $namespace) ?: [];
return isset($values[$id]) ? TRUE : FALSE;
case static::STORAGE_CUSTOM:
$result = \Drupal::moduleHandler()
->invokeAll('webform_message_custom', [
'closed',
$id,
]);
return array_filter($result) ? TRUE : FALSE;
}
return FALSE;
}
/**
* Set message closed via User Data, State API, or Custom.
*
* @param string $storage
* The storage mechanism save message closed.
* @param string $id
* The ID of the message.
*
* @see \Drupal\webform\Controller\WebformElementController::close
*/
public static function setClosed($storage, $id) {
$account = \Drupal::currentUser();
$namespace = 'webform.element.message';
switch ($storage) {
case static::STORAGE_STATE:
/** @var \Drupal\Core\State\StateInterface $state */
$state = \Drupal::service('state');
$values = $state
->get($namespace, []);
$values[$id] = TRUE;
$state
->set($namespace, $values);
break;
case static::STORAGE_USER:
/** @var \Drupal\user\UserDataInterface $user_data */
$user_data = \Drupal::service('user.data');
$values = $user_data
->get('webform', $account
->id(), $namespace) ?: [];
$values[$id] = TRUE;
$user_data
->set('webform', $account
->id(), $namespace, $values);
break;
case static::STORAGE_CUSTOM:
\Drupal::moduleHandler()
->invokeAll('webform_message_custom', [
'close',
$id,
]);
break;
}
}
/**
* Reset message closed via User Data, State API, or Custom.
*
* @param string $storage
* The storage mechanism save message closed.
* @param string $id
* The ID of the message.
*
* @see \Drupal\webform\Controller\WebformElementController::close
*/
public static function resetClosed($storage, $id) {
$account = \Drupal::currentUser();
$namespace = 'webform.element.message';
switch ($storage) {
case static::STORAGE_STATE:
/** @var \Drupal\Core\State\StateInterface $state */
$state = \Drupal::service('state');
$values = $state
->get($namespace, []);
unset($values[$id]);
$state
->set($namespace, $values);
break;
case static::STORAGE_USER:
/** @var \Drupal\user\UserDataInterface $user_data */
$user_data = \Drupal::service('user.data');
$values = $user_data
->get('webform', $account
->id(), $namespace) ?: [];
unset($values[$id]);
$user_data
->set('webform', $account
->id(), $namespace, $values);
break;
case static::STORAGE_CUSTOM:
\Drupal::moduleHandler()
->invokeAll('webform_message_custom', [
'reset',
$id,
]);
break;
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | 2 | |
DependencySerializationTrait:: |
public | function | 2 | |
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. | |
WebformMessage:: |
public | function |
Returns the element properties for this element. Overrides ElementInterface:: |
|
WebformMessage:: |
public static | function | Is message closed via User Data, State API, or Custom. | |
WebformMessage:: |
public static | function | Create status message for rendering. | |
WebformMessage:: |
public static | function | Reset message closed via User Data, State API, or Custom. | |
WebformMessage:: |
public static | function | Set message closed via User Data, State API, or Custom. | |
WebformMessage:: |
constant | Storage custom. | ||
WebformMessage:: |
constant | Storage local. | ||
WebformMessage:: |
constant | Storage none. | ||
WebformMessage:: |
constant | Storage session. | ||
WebformMessage:: |
constant | Storage state (API). | ||
WebformMessage:: |
constant | Storage user (data). |