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; } }