diff --git a/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php b/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php index 679fca92db260a258bb393c9c4e7eeb9ae1a06db..7e717881cfd8a75da196b7457b71f626c359d664 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 0e74b1ae0e7315bca4d8fba58223b982c22b9f69..92423626c58096be50c640e551de4a31df965eb6 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); } + /** + * Tests 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()); + } + }