diff --git a/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php b/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php index 357c60c9b3..8e1d3c3e69 100644 --- a/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php +++ b/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php @@ -81,6 +81,7 @@ protected function loadContentModerationStateRevision(ContentEntityInterface $en // being reverted. ->condition('content_entity_revision_id', $entity->isNewRevision() ? $entity->getLoadedRevisionId() : $entity->getRevisionId()) ->condition('workflow', $moderation_info->getWorkflowForEntity($entity)->id()) + ->condition('langcode', $entity->language()->getId()) ->allRevisions() ->sort('revision_id', 'DESC') ->execute(); diff --git a/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php b/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php index df572ebe4c..cbed77685b 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php @@ -401,4 +401,33 @@ public function testWithExistingUnmoderatedContent() { $this->assertEquals('published', $translation->moderation_state->value); } + /** + * Test the field item list translation support with unmoderated content. + */ + public function testTranslationWithExistingUnmoderatedContent() { + $node = Node::create([ + 'title' => 'Published en', + 'langcode' => 'en', + 'type' => 'unmoderated', + ]); + $node->setPublished(); + $node->save(); + + $workflow = Workflow::load('editorial'); + $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'unmoderated'); + $workflow->save(); + + $translation = $node->addTranslation('de'); + $translation->moderation_state = 'draft'; + $translation->save(); + + $node_storage = $this->container->get('entity_type.manager')->getStorage('node'); + $node = $node_storage->loadRevision($node_storage->getLatestRevisionId($node->id())); + + $this->assertEquals('published', $node->moderation_state->value); + $this->assertEquals('draft', $translation->moderation_state->value); + $this->assertTrue($node->isPublished()); + $this->assertFalse($translation->isPublished()); + } + }