diff --git a/core/modules/content_moderation/src/Plugin/Field/FieldWidget/ModerationStateWidget.php b/core/modules/content_moderation/src/Plugin/Field/FieldWidget/ModerationStateWidget.php
index 72b47d0..d84758d 100644
--- a/core/modules/content_moderation/src/Plugin/Field/FieldWidget/ModerationStateWidget.php
+++ b/core/modules/content_moderation/src/Plugin/Field/FieldWidget/ModerationStateWidget.php
@@ -2,6 +2,8 @@
namespace Drupal\content_moderation\Plugin\Field\FieldWidget;
+use Drupal\Component\Utility\Html;
+use Drupal\content_moderation\Plugin\Field\ModerationStateFieldItemList;
use Drupal\Core\Entity\ContentEntityInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
@@ -132,7 +134,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
$transition_labels[$transition->to()->id()] = $transition->label();
}
- $description_id = 'state_' . random_int(1,9999);
+ $description_wrapper_id = Html::getUniqueId($this->fieldDefinition->getName() . '-state');
$element += [
'#type' => 'container',
'current' => [
@@ -146,11 +148,11 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
'#empty_option' => $this->t('- Select new state -'),
'#key_column' => $this->column,
'#transitions' => $transition_labels,
- '#description' => isset($transition_labels[$default->id()]) ? $this->t('
@transition when saved
', ['@id' => $description_id, '@transition' => $transition_labels[$default->id()]]) : '',
+ '#description' => isset($transition_labels[$default->id()]) ? $this->t('@transition when saved
', ['@id' => $description_wrapper_id, '@transition' => $transition_labels[$default->id()]]) : '',
'#ajax' => [
'callback' => [get_class($this), 'change'],
'event' => 'change',
- 'wrapper' => $description_id,
+ 'wrapper' => $description_wrapper_id,
'method' => 'html',
]
]
@@ -164,14 +166,17 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
* Ajax callback for the moderation state field description.
*
* @param array $element
+ * The form element.
* @param \Drupal\Core\Form\FormStateInterface $form_state
+ * The form state.
*
* @return array
+ * The render array to use for the field description.
*/
public static function change(array $element, FormStateInterface $form_state) {
$state = $form_state->getValue('moderation_state')[0]['value'];
$transition_labels = $element['moderation_state']['widget'][0]['state']['#transitions'];
- return ['#plain_text' => isset($transition_labels[$state]) ? t('@transition when saved', ['@transition' => $transition_labels[$state]]) : ''];
+ return ['#plain_text' => isset($transition_labels[$state]) ? \Drupal::translation()->translate('@transition when saved', ['@transition' => $transition_labels[$state]]) : ''];
}
/**
@@ -179,7 +184,7 @@ public static function change(array $element, FormStateInterface $form_state) {
*/
public static function validateElement(array $element, FormStateInterface $form_state) {
if (empty($element['state']['#value'])) {
- $form_state->setError($element, t('Please select a moderation state.'));
+ $form_state->setError($element, \Drupal::translation()->translate('Please select a moderation state.'));
return;
}
$form_state->setValueForElement($element, [$element['state']['#key_column'] => $element['state']['#value']]);
@@ -189,7 +194,7 @@ public static function validateElement(array $element, FormStateInterface $form_
* {@inheritdoc}
*/
public static function isApplicable(FieldDefinitionInterface $field_definition) {
- return $field_definition->getName() === 'moderation_state';
+ return $field_definition->getClass() === ModerationStateFieldItemList::class;
}
}